温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
8051
单片机
LED
动态
显示
汇编程序
设计
张少玉
46 电子技术 第 52 卷 第 4 期(总第 557 期)2023 年 4 月Computer Engineering计算机工程0 引言将CPU、存储器、I/O接口等主要部件集中到一块芯片上,构成了芯片级的计算机系统,即单片机1。单片机自1971年问世以来,由于其体积小、价格低等优势,被广泛应用于智能家电、仪表测控、工业控制、航空航天、国防军事等领域,为我们的生产和生活带来了方便。51单片机是在1980年由Intel公司生产的,现在所说的51单片机是包括8031、8051、8751等一系列单片机的总称,其中8051单片机是比较典型的产品,所以在我们的教学中常以8051单片机为例来进行学习。本文也以8051单片机为例,向初学者简单介绍基于8051单片机的LED显示器动态显示的汇编程序,为单片机与输入、输出设备的接口设计及编程打下基础。1 汇编语言 汇编语言是第二代程序设计语言,是机器语言便于记忆的书写格式2,是最接近于机器码的低级语言。汇编语言是用助记符表示的指令,通常由操作码和操作数组成,如INC R3,其中INC为操作码,R3为操作数。汇编语言虽然可读性和移植性较差,但是执行效率高、占用资源少,而且也比较适合初学者,因为它是针对系统的硬件环境编程,一条指令就对应一条机器码,能清楚地知道每一步的执行动作,能贴切地表达单片机寄存器间的逻辑转移关系,能帮助初学者更加透彻地理解单片机。2 LED显示器及发光原理LED显示器是常用的输出设备之一,可以用来显示图像、视频、文字等多种信息,已被广泛使用在各种场所,如车站、广场、工厂、会议室等。按外观来分,LED显示器可以分为七段数码管、点阵块、米字型数码管等。本文采用的是七段数码管,如图1所示,由于小数点不常用,所以称为七段数码管。此类数码管是由8个发光二极管构成(为了便于说明给每个段标上字母),按照公共端的连接方式可以分为共阴极数码管和共阳极数码管,共阴极数码管就是数码管内8个发光二极管的阴极连在一起引出一个公共端,如图2(a)所示,共阳极数码管就是数码管内8个发光二极管的阳极连在一起引出一个公共端,如图2(b)所示。由于发光二极管的单向导电性所致,共阴极数码管需要在相应字段加上高电平才会发光。同理,共阳极数码管需要在相应字段加上低电平才会发光。若按图1所示的是1个共阴极数码管,那么让其作者简介:张少玉,运城师范高等专科学校,硕士;研究方向:软件开发,计算机教学,单片机技术及应用。收稿日期:2022-07-27;修回日期:2023-04-12。摘要:阐述8051单片机的应用,LED显示器动态显示原理,及与单片机的接口设计,分析LED显示器动态显示的汇编语言程序,并进行模拟仿真。关键词:8051单片机,LED显示器,动态显示,汇编程序。中图分类号:TP368.1文章编号:1000-0755(2023)04-0046-03文献引用格式:张少玉.基于8051单片机的LED动态显示汇编程序设计J.电子技术,2023,52(04):46-48.基于8051单片机的LED动态显示汇编程序设计张少玉(运城师范高等专科学校,山西 044000)Abstract the application of 8051 microcontroller,the principle of LED display dynamic display,and the interface design with microcontroller.It analyzes the assembly language program of LED display dynamic display and conducts simulation.Index Terms 8051 microcontroller,LED display,dynamic display,assembler.Design of LED Dynamic Display Assembly Program Based on 8051 MicrocontrollerZHANG Shaoyu(Yuncheng Normal College,Shanxi 044000,China.)图1 数码显示器件 图2 数码显示电路电子技术 第 52 卷 第 4 期(总第 557 期)2023 年 4 月 47Computer Engineering计算机工程显示出数字2时,就要给A、B、G、E、D段加上高电平,其余段加上低电平。在应用系统中,如果想要数码管显示相应的数字或字符,单片机需要输出相应的字形编码。在此,以共阳极数码管为例进行介绍。由上可知,共阳极数码管某个段发光需要给其加上低电平,所以可得表1。由表1可知,在单片机控制系统中,共阳极数码管的段选端与单片机的一组I/O口相连后,若单片机输出C0H,则数码管显示数字0,输出F9H,则显示数字1,输出90H显示数字9。同理,可推出共阴极数码管的字形编码。3 动态显示方法由于静态显示占用I/O口较多,而且对于多位一体的数码管也不适用于静态显示,所以就需要采用动态显示。3.1 显示原理动态显示是指每个数码管轮流显示,并在一起的段选线由单片机的一组I/O口连接进行控制,位选线则由另一组I/O口连接进行控制。在动态显示时,某一位数码管被选中,即位选信号有效时,由单片机控制段选的I/O口输出相应的字形编码,该数码管才会显示相应的数字。然后,下一位数码管被选中,输出的字形编码使得下一位数码管点亮,如此轮流显示。3.2 接口设计这里采用6位一体的共阳极数码管,8051单片机的P0口连接数码管的段选端(P0.0连接A段,P0.1连接B段,P0.2连接C段,P0.3连接D段,P0.4连接E段,P0.5连接F段,P0.6连接G段,小数点DP段不用则悬空),用于输出字形编码,控制显示的数字,P2口连接数码管的位选端(P2.0连接第1位,P2.1连接第2位,P2.2连接第3位,P2.3连接第4位,P2.4连接第5位,P2.5连接第6位),用于控制位选,用由英国Labcenter Electronics 公司开发的Proteus软件进行模拟仿真,如图3所示。4 汇编程序编写这里使得6位一体的数码管,从左至右依次显示数字16,循环往复。采用由美国Keil Software公司出品的Keil C51软件进行汇编程序的编写和调试,调试无误后将生成的HEX文件下载到用Proteus仿真的电路系统中。由动态显示原理可知,在某一时刻只有一个数码管发光,所以在位选端首先选中左边第1位数码管,然后在共阳极字段16字形码表中找到第1位数码管即数字1的字形编码,通过P0口送至数码管的段选端,让第1位数码管显示数字1,调用延时程序显示一定的时间,然后通过循环左移指令RL A使得第二位数码管被选中,同理,让第2位数码管显示数字2,直到第6位数码管显示出数字6之后,又从第1位开始显示,无限循环。具体程序如下。ORG 0000HMAIN:;主程序MOV DPTR,#TAB;将字形编码首地址送给数据指针DPTRMOV R0,#0 ;将0送给寄存器R0MOV A,#01H ;将01H送给累加器ADISPLAY:;显示子程序MOV P2,A ;将累加器A中的内容送至单片机P2口MOV A,R0 ;将寄存器R0中内容送给累加器AMOVC A,A+DPTR;获取字形编码送给累加器AMOV P0,A ;将累加器A中的内容送至单片机P0口ACALL DELAY;调用延时子程序MOV A,P2 ;将P2口内容送给累加器A RL A ;将累加器A中内容循环左移一位INC R0 ;将R0中内容加1CJNE R0,#06H,DISPLAY;判断R0是否等于6,若为6说明1-6已经显示完,程序向下执行,若不为6则跳转至DISPLAY执行MOV R0,#0 ;R0再次为0MOV A,#01H ;累加器A再次为01H AJMP DISPLAY;跳到DISPLAY子程序再次显示1-6;表1 共阳极数码管字形编码图3 模拟仿真线路48 电子技术 第 52 卷 第 4 期(总第 557 期)2023 年 4 月Computer Engineering计算机工程TAB:DB 0F9H,0A4H,0B0H,99H,92H,82H;DELAY:MOV R5,#20LOOP1:MOV R6,#20LOOP2:MOV R7,#230DJNZ R7,$DJNZ R6,LOOP2DJNZ R5,LOOP1RETEND通过以上代码的编译运行后生成一个HEX文件,把HEX文件下载到仿真系统中运行后,我们可以看到运行结果如图4所示,在某一时刻只亮了一个数码管。但是在实际应用中,我们希望动态显示时可以同时看到所有数码管都点亮,这就需要利用人眼的“视觉暂留”效应,即光作用消失后视觉形象不会立马消失,除此之外,还要控制好每个数码管显示的延时时间,显示时间过长则会浪费时间,过短则会出现重影,不能显示出正确的结果。在此把上面的延时时间改为延时10ms,如下所示。DELAY:MOV R5,#1LOOP1:MOV R6,#20LOOP2:MOV R7,#230DJNZ R7,$DJNZ R6,LOOP2DJNZ R5,LOOP1RET再次编译运行,可以看到虽然是动态显示,但是多个数码管却是“同时”点亮的,如图5所示。5 结语本文以8051单片机、LED显示器中的多位一体数码管为例,介绍了LED显示器动态显示原理,给出并解释了一个让LED数码管动态显示的汇编语言程序,而且用Proteus软件进行了模拟仿真,最后修改程序中的延时程序让动态显示的数码管达到“同时”点亮的效果。在后续的工作中会持续进行此方面的研究,为初学者提供帮助和借鉴。参考文献1 朱芙菁,田影.单片机原理及应用技术M.北京:航空工业出版社,2010.2 王爽.汇编语言(第4版)M.北京:清华大学出版社,2019.图4 动态显示结果1图5 动态显示结果2