书签 分享 收藏 举报 版权申诉 / 30
上传文档赚钱

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

  • 上传人(卖家):三亚风情
  • 文档编号:3594001
  • 上传时间:2022-09-22
  • 格式:PPT
  • 页数:30
  • 大小:375KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《单片机第7章-秒表计数器设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    单片机 秒表 计数器 设计 课件
    资源描述:

    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)

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:单片机第7章-秒表计数器设计课件.ppt
    链接地址:https://www.163wenku.com/p-3594001.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库