单片机第7章-秒表计数器设计课件.ppt

上传人(卖家):三亚风情 文档编号:3594001 上传时间:2022-09-22 格式:PPT 页数:30 大小:375KB
下载 相关 举报
单片机第7章-秒表计数器设计课件.ppt_第1页
第1页 / 共30页
单片机第7章-秒表计数器设计课件.ppt_第2页
第2页 / 共30页
单片机第7章-秒表计数器设计课件.ppt_第3页
第3页 / 共30页
单片机第7章-秒表计数器设计课件.ppt_第4页
第4页 / 共30页
单片机第7章-秒表计数器设计课件.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、第第7章章 秒表计数器设计秒表计数器设计数码管动态显示数码管动态显示7.1 功能要求功能要求7.2 任务分析任务分析 7.3 LED动态显示工作原理动态显示工作原理7.3.1 采用动态显示的原因采用动态显示的原因7.3.2动态显示的工作原理动态显示的工作原理 7.4 数码管动态显示程序设计方法数码管动态显示程序设计方法7.4.1 显示班机学号的双位数显示班机学号的双位数7.4.2 秒表计数器显示秒表计数器显示0059 7.1功能要求功能要求 一基本要求一基本要求动态数码计数显示器能显示本人完整的双位学号。二发挥部分二发挥部分每隔1秒,在二个LED数码管上进行加“1”计数,显示0059,实现秒钟

2、计数,为设计时钟电路打下基础。回目录回目录 7.2 任务分析任务分析 要完成此任务,主要需解决如下四方面的问题:要完成此任务,主要需解决如下四方面的问题:1.为什么要采用数码管动态显示2.LED动态显示的工作原理;3.LED数码管与单片机动态显示接口电路的设计方法;4.LED数码管动态显示程序的设计方法。回目录回目录7.3.1 7.3.1 采用数码管动态显示的原因采用数码管动态显示的原因 从上一章的数码管静态显示工作原理可知,要使数码管能正常的显示数字,必须根据数码管的类型(共阴或共阳)给数码管的各段(a、b、c、d、e、f、g与一个小数点dp)输入和显示数字相对应的高低电平,既进行段控制;同

3、时还要给数码管公共端所接的三极管输入相应的高低电平,使其导通给数码管供电,控制整个数码管的亮灭,既进行位控制。因此数码管的有效控制包括二个方面,其一是控制整个数码管的亮灭,既位控制,需要一位单片机I/O端口;另一方面控制数码管具体显示什么数据,既段控制,需要八位单片机I/O端口。7.3 LED动态显示工作原理动态显示工作原理 回目录回目录7.3.1 7.3.1 采用数码管动态显示的原因采用数码管动态显示的原因 本项目中显示的数据为双位学号,因此必须采用二个数码管分别显示学号的个位和十位,如果依然采用静态显示的方案,分别对个位和十位的数码管单独采用位控制和段控制,进行位控制需要二位单片机I/O端

4、口,而段控制则需要十六位单片机I/O端口。而在很多设备中,显示的数据可能达到4位、6位、8位甚至更多,如果依然采用静态显示的方法,所需的I/O端口可达到几十位之多,而在单片机中,I/O端口的数量是非常有限的,如89C51单片机的I/O端口只有32位(P0、P1、P2、P3),而89C2051才16位I/O端口(P1、P3),而且大部分的I/O端口还具有第二功能,如89C51中的P3、P2、P0。因此,如果采用静态显示的方案,将占有太多的I/O资源,甚至根本无法实现,必须采用其它的显示方案,既数码管的动态显示。回目录回目录7.3.2 LED7.3.2 LED数码管动态显示的工作原理数码管动态显示

5、的工作原理 上面在讨论数码管的静态显示问题时,知道静态显示的最大缺点是占用太多的I/O端口,因此我们必须设法减少I/O端口的占用。如果我们在多位数码管显示数据时,将各数码管相同的段并联在一起,如所有的a段都连在一起,既共用段控制端口,这样每增加一个数码管,只需要增加一个位控制端口即可,从而大量地减少了I/O端口的占用,如图71所示。图中数码管DLED1和数码管DLED2连接的各段分别连接在一起,共用段控制端口P1,而位控制分别由端口P2.7和P2.6分别控制,从而大量的减少了I/O端口的占用。回目录回目录图71 共阳数码管动态显示接口电路 1显示个位数据显示个位数据2 2位控制:要在个位数码管

6、DLED2上显示数据2,即要使DLED2亮,而DLED1灭,相应的要使三极管Q2导通,Q1截止,而三极管为PNP型管,在发射极为高电平的情况下,基极必须为低电平才能导通,所以位控制端口P2.6要接低电平,P2.7接高电平。段控制:要使共阳数码管显示数据2,即a、b、d、e、g段亮,而c、f、dp段要灭,即a、b、d、e、g段需接低电平,而c、f、dp段接高电平(也可查表51得到共阳数码管的笔段码A4H),因此必须给其段控制端口P1送笔段码A4H(10100100B)。显示个位数字2的控制电平和显示效果如下图所示。显示个位数字显示个位数字2 2的控制电平和显示效果的控制电平和显示效果 2显示十位

7、数字显示十位数字1 1位控制:同理,要在十位数码管DLED1上显示数据1,即要使DLED1亮,而DLED2灭,所以位控制端口P2.6要接高电平,P2.7接低电平。段控制:要使共阳数码管显示数据1,即b、c二段亮,而其它各段要灭,既b、c二段接低电平,而其它段接高电平,也可查表51得到共阳数码管的笔段码F9H,因此必须给其段控制端口P1送笔段码F9H(11111001B)。显示十位数字的控制电平和显示效果如下图所示。显示十位数字显示十位数字1 1的控制电平和显示效果的控制电平和显示效果 3二数码管不断交替显示二数码管不断交替显示重复以上步骤1和步骤2,只要交替显示的速度足够快(每秒循环显示48次

8、以上),利用人眼的视觉残留特性,人眼在数码管看到的就是完整的数字12,而不会有闪烁感,如下图所示。回目录回目录7.4.1 7.4.1 显示班级学号的双位数显示班级学号的双位数本任务要求固定的显示某一个数(即班级学号,如12),此程序设计较简单,只要先显示个位数字2,延时一定时间,再显示十位数字1,又延时一定时间,然后交替循环显示即可。程序流程图如右图所示:7.4 数码管动态显示程序设计方法数码管动态显示程序设计方法 程序开始个位数码管位控制个位数码管段控制(查表取个位段码)延时十位数码管位控制十位数码管段控制(查表取十位段码)延时回目录回目录显示数据显示数据12的完整程序清单(的完整程序清单(

9、1)ORG 0000H ;伪指令,规定下面的指令保存在程序存储器的0000H单元 AJMP MAIN ;跳转到主程序,以保留0003H开始的中断入口地址 ORG 0050H ;伪指令MAIN:SETB P2.7 ;十位数码管熄灭 CLR P2.6 ;个位数码管亮 MOV A,02H ;个位要显示的数据送累加器A MOV DPTR,#TABLE1 ;DPTR用于保存表的首地址 MOVC A,A+DPTR ;查表指令,取出DPTR所对应表中的第A个数据(此处A为累加器,同时应注意数据的序号从0开始编号),即取出要显示数据的段码A4H MOV P1,A ;将取得的段码A4H送到P1口显示 ACALL

10、 DELAY ;调用延时程序 SETB P2.6 ;个位数码管熄灭 CLR P2.7 ;十位数码管亮 MOV A,01H ;十位要显示的数据送累加器A MOV DPTR,#TABLE1 ;DPTR用于保存表的首地址(即到哪一个表中取数)MOVC A,A+DPTR ;查表指令,取出DPTR所对应的表中的第A个数据(此处A为累加器,同时应注意数据的序号从0开始编号),即取出要显示数据的段码F9H 显示数据显示数据12的完整程序清单(的完整程序清单(2)MOV P1,A ;将取得的段码F9H送到P1口显示 ACALL DELAY ;调用延时程序 AJMP MAIN ;跳回交替继续显示DELAY:MO

11、V R7,#0FH ;二层循环延时程序LOOP2:MOV R6,#0FFHLOOP1:DJNZ R6,LOOP1 DJNZ R7,LOOP2 RET 0 1 2 3 4 5 6 7 8 9 TABLE1:DB 0COH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H 共阳数码管段码表 显示数据显示数据12的完整程序清单(的完整程序清单(3)提示:程序调试时可以调节延时时间(延时程序中R7的数据大小),逐步由大到小,观察数码管的显示效果:当数据较大时,延时较长,可以明显看到二数码管交替显示的情况;当数据足够小时,人眼将看不到数码管交替显示产生的闪烁感,从效果上看好

12、像二个数码管同时显示一样。程序改进程序改进 以上程序要改变显示的数据时,必须个位和十位分别修改,很不方便,为了提高程序的灵活性,我们可以设置显示缓冲区,当要显示数据时,只需将要显示的数据放在显示缓冲区中即可。同时从以上程序可看出,个位、十位的查表指令相同,可以写出子程序的形式,可以进一步简化程序,流程图如右图所示。程序开始个位数码管位控制个位数码管段控制(调用查表子程序取个位数段码)延时十位数码管位控制十位数码管段控制(调用查表子程序取十位数段码)延时取出显示单元数据个位取出显示单元数据十位 ORG 0000H ;伪指令 AJMP MAIN ;跳转到主程序 ORG 0050H ;伪指令MAIN

13、:;主程序 MOV 30H,#12H ;30H显示缓冲区,保存需显示的数据(含个位和十位)程序改进(程序改进(1)程序中设30H单元为显示缓冲区,低四位二进制数(B3-B0)为显示数据的BCD码个位,高四位二进制数(B7-B4)为显示数据的BCD码十位,程序中仍以显示数据12为例。HUI:SETB P2.7 ;第二个数码管亮 CLR P2.6 ;第一个数码管熄灭 MOV A,30H ;取出显示数据 ANL A,#0FH ;取出显示值的个位(即低四位)ACALL CHABIAO ;调用查表显示程序 ACALL DELAY ;调用延时程序 SETB P2.6 ;第二个数码管灭 CLR P2.7 ;

14、第一个数码管熄亮 MOV A,30H ;取出显示数据 ANL A,#0F0H ;取出显示值的十位(即高四位)SWAP A ;高、低四位对调,以便于查表取段码 ACALL CHABIAO ;调用查表显示程序 ACALL DELAY ;调用延时程序 AJMP HUI ;继续显示 程序改进程序改进(2)CHABIAO:;查表子程序 MOV DPTR,#TABLE1 ;DPTR用于保存表的首地址 MOVC A,A+DPTR ;查表指令 MOV P1,A ;将取得的段码送到P1口显示 RET ;查表子程序返回DELAY:;延时子程序 MOV R7,#0FH ;二层循环延时程序LOOP2:MOV R6,#

15、0FFHLOOP1:DJNZ R6,LOOP1 DJNZ R7,LOOP2 RETTABLE1:DB 0COH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共阳数码管段码表 程序改进程序改进(3)回目录回目录7.4.2 7.4.2 秒表计数器显示秒表计数器显示“000059”59”一、任务分析一、任务分析 这个任务比上个任务难度有所增加,需多考虑如下两点:首先,要求定时,定时间隔为一秒;其次,随着计数值的变化,需要改变显示内容,显示内容在数字0059之间变化,因此需要对计数值进行判断。1如何定时如何定时?本程序要求精确定时一秒,定时精度高,定时的时间也较长

16、,在定时的同时还要求显示数据,所以采用软件延时的方法已无法满足要求,必须采用定时器/计数器的方法进行定时,该方法虽然软件编程稍复杂些,但不占用单片机运行时间,效率高,定时精确,并且可产生中断。回目录回目录 2定时器的初始化定时器的初始化 经过分析,我们可采用定时器T0模式1进行定时,由于晶振频率fosc=6MHz,定时时间无法直接定时1s,我们采用定时10ms,然后累加100次的方法定时1s,用T0定时10ms计数初值计算过程为:振荡周期1/fosc us机器周期12振荡周期 us121us定时时间10ms10000us计数值定时时间/机器周期10000us/1us10000定时器初值最大计数

17、值计数值655365000060536化为十六进制:60536EC78H,因此TH0=ECH,TL0=78H61061121121T0定时10ms的初始化程序为:MOV TMOD,#01H ;T0模式1,定时 MOV TH0,#0D8H ;装入T0计数值高八位MOV TL0,#0F0H ;装入T0计数值低八位SETB TR0 ;启动T0 3定时中断的初始化定时中断的初始化由于T0定时10ms使用中断,所以必须进行中断的初始化SETB ET0 ;T0开中断SETB EA ;开总中断 二、程序流程图二、程序流程图 主程序开始设置T0中断入口地址和T0中断跳转T0初始化启动T0开T0中断秒单元清零调

18、用显示子程序显示单元、秒计数单元、中断次数累加单元清零将秒送显示单元Y是否计满60秒N保护现场重装初值中断次数累加中断次数累加单元清零秒单元加1Y恢复现场T0中断程序开始N是否计满100次中断返回秒表计数程序秒表计数程序(1)程序中30H单元为显示缓冲区,保存需显示的数据,R2用于中断10ms次数的累加寄存器,31H单元用于秒计数单元。ORG 0000H ;伪指令 AJMP MAIN ;跳转到主程序 ORG 000BH ;T0中断入口 AJMP T0ZD ;跳转到T0中断程序 ORG 0050H MAIN:;主程序 MOV 30H,#00H ;30H显示缓冲区赋初值 MOV 31H,#00H

19、;31H秒计数单元赋初值 MOV R2,#00H ;中断次数累加寄存器赋初值 MOV TMOD,#01H ;T0模式1,定时 MOV TL0,#0F0H ;装入T0计数值低八位 MOV TH0,#0D8H ;装入T0计数值高八位 SETB TR0 ;启动T0 SETB ET0 ;T0开中断 SETB EA ;开总中断HUI:MOV A,31H CJNE A,#60H,DAOXS ;未记满60秒,将秒单元数值送显示子程序显示 MOV 31H,#00H ;记满60秒,秒单元清零,重新累计 (如果在完整的时钟程序中,该处可添加分单元计数累加)DAOXS:MOV 30H,31H ;秒计数值送显示缓冲单

20、元 ACALL XIANSHI ;调显示子程序 AJMP HUI ;继续比较、显示 秒表计数程序秒表计数程序(2)XIANSHI:;显示子程序 SETB P2.7 ;第二个数码管亮 CLR P2.6 ;第一个数码管熄灭 MOV A,30H ;取出显示数据 ANL A,#0FH ;取出显示值的个位(即低四位)ACALL CHABIAO ;调用查表显示程序 ACALL DELAY ;调用延时程序 SETB P2.6 ;第二个数码管灭 CLR P2.7 ;第一个数码管熄亮 MOV A,30H ;取出显示数据 ANL A,#0F0H ;取出显示值的十位(即高四位)SWAP A ;高、低四位对调,以便于

21、查表取段码 ACALL CHABIAO ;调用查表显示程序 ACALL DELAY ;调用延时程序 RET ;显示子程序返回秒表计数程序(秒表计数程序(3)CHABIAO:;查表子程序 MOV DPTR,#TABLE1 ;DPTR用于保存表的首地址 MOVC A,A+DPTR ;查表指令 MOV P1,A ;将取得的段码送到P1口显示 RET ;查表子程序返回DELAY:;二层循环延时子程序 MOV R7,#0FH LOOP2:MOV R6,#0FFHLOOP1:DJNZ R6,LOOP1 DJNZ R7,LOOP2 RET ;延时子程序返回TABLE1:DB 0COH,0F9H,0A4H,0

22、B0H,99H,92H,82H,0F8H,80H,90H ;共阳数码管段码表 秒表计数程序(秒表计数程序(4)T0ZD:;T0中断程序 PUSH PSW PUSH ACC ;保护现场 MOV TL0,#0F0H ;重装T0计数值低八位 MOV TH0,#0D8H ;重装T0计数值高八位 INC R2 ;中断次数累加 CJNE R2,#64H,ZDHUI ;比较是否到100次,MOV A,31H ;满100次,秒计数单元加1 ADD A,#01H DA A ;BCD码十进制调整 MOV 31H,A MOV R2,#00H ;中断次数累加寄存器清零ZDHUI:POP ACC POP PSW RETI ;T0中断返回 秒表计数程序(秒表计数程序(5)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(单片机第7章-秒表计数器设计课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|