历史上的今天
返回首页

历史上的今天

今天是:2025年01月03日(星期五)

正在发生

2018年01月03日 | 单片机教程实战5 动态扫描显示接口

2018-01-03 来源:eefocus

动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
  在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
  下图所示就是我们的实验板上的动态扫描接口。由89C51的P0口能灌入较大的电流,所以我们采用共阳的数码管,并且不用限流电阻,而只是用两只1N4004进行降压后给数码管供电,这里仅用了两只,实际上还可以扩充。它们的公共端则由PNP型三极管8550控制,显然,如果8550导通,则相应的数码管就可以亮,而如果8550截止,则对应的数码管就不可能亮,8550是由P2.7,P2.6控制的。这样我们就可以通过控制P27、P26达到控制某个数码管亮或灭的目的。
  下面的这个程序,就是用实验板上的数码管显示0和1。
FIRST EQU P2.7 ;第一位数码管的位控制
SECOND EQU P2.6 ;第二位数码管的位控制
DISPBUFF EQU 5AH ;显示缓冲区为5AH和5BH
ORG 0000H
AJMP START
ORG 30H
START:
MOV SP,#5FH ;设置堆栈
MOV P1,#0FFH
MOV P0,#0FFH
MOV P2,#0FFH ;初始化,所显示器,LED灭
MOV DISPBUFF,#0 ;第一位显示0
MOV DISPBUFF+1,#1 ;第二握显示1
LOOP:
LCALL DISP ;调用显示程序
AJMP LOOP
;主程序到此结束
DISP:
PUSH ACC ;ACC入栈
PUSH PSW ;PSW入栈
MOV A,DISPBUFF ;取第一个待显示数
MOV DPTR,#DISPTAB ;字形表首地址
MOVC A,@A+DPTR ;取字形码
MOV P0,A ;将字形码送P0位(段口)
CLR FIRST ;开第一位显示器位口
LCALL DELAY ;延时1毫秒
SETB FIRST ;关闭第一位显示器(开始准备第二位的数据)
MOV A,DISPBUFF+1 ;取显示缓冲区的第二位
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR
MOV P0,A ;将第二个字形码送P0口
CLR SECOND ;开第二位显示器
LCALL DELAY ;延时
SETB SECOND ;关第二位显示
POP PSW
POP ACC
RET
DELAY: ;延时1毫秒
PUSH PSW
SETB RS0
MOV R7,#50
D1: MOV R6,#10
D2: DJNZ R6,$
DJNZ R7,D1
POP PSW
RET
DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H
END
  从上面的例子中可以看出,动态扫描显示必须由CPU不断地调用显示程序,才能保证持续不断的显示。
  上面的这个程序可以实现数字的显示,但不太实用,为什么呢?这里仅是显示两个数字,并没有做其他的工作,因此,两个数码管轮流显示1毫秒,没有问题,实际的工作中,当然不可能只显示两个数字,还是要做其他的事情的,这样在二次调用显示程序之间的时间间隔就不一不定了,如果时间间隔比较长,就会使显示不连续。而实际工作中是很难保证所有工作都能在很短时间内完成的。况且这个显示程序也有点“浪费”,每个数码管显示都要占用1个毫秒的时间,这在很多合是不允许的,怎么办呢?我们可以借助于定时器,定时时间一到,产生中断,点亮一个数码管,然后马上返回,这个数码管就会一直亮到下一次定时时间到,而不用调用延时程序了,这段时间可以留给主程序干其他的事。到下一次定时时间到则显示下一个数码管,这样就很少浪费了。
Counter EQU 59H ;计数器,显示程序通过它得知现正显示哪个数码管
FIRST EQU P2.7 ;第一位数码管的位控制
SECOND EQU P2.6 ;第二位数码管的位控制
DISPBUFF EQU 5AH ;显示缓冲区为5AH和5BH
ORG 0000H
AJMP START
ORG 000BH ;定时器T0的入口
AJMP DISP ;显示程序
ORG 30H
START:
MOV SP,#5FH ;设置堆栈
MOV P1,#0FFH
MOV P0,#0FFH
MOV P2,#0FFH ;初始化,所显示器,LED灭
MOV TMOD,#00000001B ;定时器T0工作于模式1(16位定时/计数模式)
MOV TH0,#HIGH(65536-2000)
MOV TL0,#LOW(65536-2000)
SETB TR0
SETB EA
SETB ET0
MOV Counter,#0 ;计数器初始化
MOV DISPBUFF,#0 ;第一位始终显示0
MOV A,#0
LOOP:
MOV DISPBUFF+1,A ;第二位轮流显示0-9
INC A
LCALL DELAY
CJNE A,#10,LOOP
MOV A,#0
AJMP LOOP ;在此中间可以按排任意程序,这里仅作示范。
;主程序到此结束
DISP: ;定时器T0的中断响应程序
PUSH ACC ;ACC入栈
PUSH PSW ;PSW入栈
MOV TH0,#HIGH(65536-2000) ;定时时间为2000个周期,约2170微秒(11.0592M)
MOV TL0,#LOW(65536-2000)
SETB FIRST
SETB SECOND ;关显示
MOV A,#DISPBUFF ;显示缓冲区首地址
ADD A,Counter
MOV R0,A
MOV A,@R0 ;根据计数器的值取相应的显示缓冲区的值
MOV DPTR,#DISPTAB ;字形表首地址
MOVC A,@A+DPTR ;取字形码
MOV P0,A ;将字形码送P0位(段口)
MOV A,Counter ;取计数器的值
JZ DISPFIRST ;如果是0则显示第一位
CLR SECOND ;否则显示第二位
AJMP DISPNEXT
DISPFIRST:
CLR FIRST ;显示第一位
DISPNEXT:
INC Counter ;计数器加1
MOV A,Counter
DEC A ;如果计数器计到2,则让它回0
DEC A
JZ RSTCOUNT
AJMP DISPEXIT
RSTCOUNT:
MOV Counter,#0 ;计数器的值只能是0或1
DISPEXIT:
POP PSW
POP ACC
RETI
DELAY: ;延时130毫秒
PUSH PSW
SETB RS0
MOV R7,#255
D1: MOV R6,#255
D2: NOP
NOP
NOP
NOP
DJNZ R6,D2
DJNZ R7,D1
POP PSW
RET
DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H
END
  从上面的程序可以看出,和静态显示相比,动态扫描的程序稍有点复杂,不过,这是值得的。这个程序有一定的通用性,只要改变端口的值及计数器的值就可以显示更多位数了。下面给出显示程序的流程图。
  第二十四课 动态扫描显示接口
第二十四课 动态扫描显示接口

推荐阅读

史海拾趣

EETools公司的发展小趣事

EETools始终坚持以客户为中心的服务理念。公司深入了解不同行业客户的需求和痛点,为他们提供定制化的嵌入式系统解决方案。无论是医疗设备、汽车电子还是工业自动化等领域,EETools都能为客户提供高效、可靠的嵌入式开发工具和服务。这种以客户需求为导向的服务模式不仅赢得了客户的信任和好评,还为公司赢得了更多的商业机会。

远阳(FLYOUNG)公司的发展小趣事

人才是企业发展的根本。国光新业深知这一点,因此始终注重人才的引进与培养。公司推出了“国新力”人才计划专项,构建了一支优秀人才梯队。目前,企业的技术团队中科技人员占比超过30%,其中拥有工程师以上职称的比例更是超过六成。这些高素质的人才为公司的技术创新与产品研发提供了源源不断的动力。

Defense Logistics Agency公司的发展小趣事

在成功整合供应链之后,DLA开始拓展其业务领域。除了为美军提供后勤保障服务外,DLA还开始向各州、当地政府组织、外国政府和国际组织提供后勤保障服务。这一拓展不仅拓宽了DLA的业务范围,也增强了其国际影响力。

Amphenol(安费诺)公司的发展小趣事

Defense Logistics Agency(DLA)于1961年成立,是美国国防部(DOD)的一个独立作战支援机构。在成立初期,DLA就明确了其战略定位:为全球范围内的美军及国防部其他部门提供统一、高效的后勤保障服务。这一战略定位的确立,为DLA的后续发展指明了方向。

APX Technologies公司的发展小趣事

APX Technologies在追求经济效益的同时,也积极履行社会责任。公司注重环保和可持续发展,致力于研发和生产低能耗、低污染的电子产品。此外,APX Technologies还积极参与社会公益活动,为社会的和谐发展贡献自己的力量。这些举措不仅提升了公司的品牌形象,也赢得了社会各界的广泛赞誉。

以上五个故事均基于虚构的APX Technologies公司的发展情况,旨在展示一个电子行业公司可能经历的不同发展阶段和面临的挑战。这些故事并不代表任何真实情况,仅供参考和启发。

G24 Innovations公司的发展小趣事

在快速发展的同时,远阳公司始终不忘履行社会责任。公司积极参与公益事业,通过捐款捐物、志愿服务等方式,回馈社会、关爱弱势群体。此外,远阳还注重环境保护和可持续发展,积极推广绿色生产、节能减排等环保理念。公司建立了完善的环境管理体系和能源管理体系,通过技术创新和管理优化,不断降低生产过程中的能耗和排放。这些举措不仅提升了远阳的企业形象和社会声誉,也为企业的长远发展奠定了坚实基础。

问答坊 | AI 解惑

(清华)嵌入式系统仿真环境-SkyEye.pdf

嵌入式系统仿真环境-SkyEye(清华).pdf…

查看全部问答>

反馈的概念及判断方法(一看就明白)

很不错的教材,看了就能理解四种反馈的判断方法。…

查看全部问答>

为什么我的排名越来越靠后呢?

晕了,这三天,天天逛论坛,天天回复,咋排名越来越靠后呢? 这不是打击我信心嘛?! 看来以后得练好技术再来了。。。。 唉。。。。。。…

查看全部问答>

请帮忙设计一个放大倍数为10的运放电路.急~谢谢

请帮忙设计一个放大倍数为10的运放电路.急~谢谢…

查看全部问答>

今天收团购的接近感应的板子了!

这个PCB设计的有意思直接加厚后,用做USB插头…

查看全部问答>

开发板android (4.5安装 ubuntu补丁)

xsltproc ia32-libs libgl1-mesa-dri:i386 lib32ncurses5-dev lib32z1-dev uboot-mkimage这个补丁安装不上,难道是安装包坏了,用WIFI下载的,最终导致IData无法实现(安装samba 让ubuntu12.04 和windows共享) …

查看全部问答>

MSP430入门课程之——Launchpad IDE开发工具的使用

Launchpad IDE开发工具支持在线调试,调试时可观察单片机的RAM,FLASH,寄存器,代码临时变量。可设置断点,查看程序运行情况。 …

查看全部问答>

LPC1549 Xpresso驱动下载

replyreload += \',\' + 1687224; 本帖最后由 wgsxsm 于 2014-5-30 08:48 编辑 中午拿到的板子,晚上一直在找驱动,终于找到了,隐藏的有点深,分享出来,避免童鞋们走弯路 Timson,如果您要查看本帖隐藏内容请回复 附加一个链接: http://www. ...…

查看全部问答>

转让闲置。

本帖最后由 zjbwxl 于 2014-11-3 19:28 编辑 1.http://2.taobao.com/item.htm?id= ... 0925.0.0.7tB1ae&mt=2.http://2.taobao.com/item.htm?id= ... 0925.0.0.7tB1ae&mt= 3.http://2.taobao.com/item.htm?id= ... 0925.0.0.7tB1ae&mt= 4.http:/ ...…

查看全部问答>

我在学cadence软件,但是无从下手,大神们都是怎么学的呢?

同标题,学习cadence,不知道如何入手,主要是想学习第三方导入网表,用cadence进行布局布线。是不是需要从cadence 的原理图设计开始呢?这个软件看起来比较复杂,大神们有没有什么推荐的视频以及书籍呢?谢谢啦…

查看全部问答>