单片机时间显示模块设计.

上传人:我** 文档编号:115795390 上传时间:2019-11-14 格式:PPT 页数:73 大小:679.50KB
返回 下载 相关 举报
单片机时间显示模块设计._第1页
第1页 / 共73页
单片机时间显示模块设计._第2页
第2页 / 共73页
单片机时间显示模块设计._第3页
第3页 / 共73页
单片机时间显示模块设计._第4页
第4页 / 共73页
单片机时间显示模块设计._第5页
第5页 / 共73页
点击查看更多>>
资源描述

《单片机时间显示模块设计.》由会员分享,可在线阅读,更多相关《单片机时间显示模块设计.(73页珍藏版)》请在金锄头文库上搜索。

1、单元4 时间显示模块设 计 回顾 1,8051单片机最小系统的组成? 2,单片机运行以什么单位计算时间? 3,单片机如何驱动LED? 本单元任务 p任务1 数码管显示设计 p任务2 定时器应用设计 p任务3 DS1302时钟设计 p任务4 按键计数设计 任务1 数码管显示设计 任务描述: 任务分析: LED数码管显示器作为嵌入式单片机应用产品中常用的廉价输出设备 ,更是单片机系统设计经常使用的显示设备。本任务要求设计时间显示模 块,模拟24小时制时间运行,时间初始为10点整。 模拟24小时运行,需用6位LED数码管(小时、分钟、秒各需2位) 进行显示。先将LED数码管安装在单片机I/O上,程序

2、设计初始时间为10: 00:00,每隔一定时间,单位秒加1,并进行秒、分钟、小时的正确进位 即可。 1,七段LED数码管工作原理 n七段LED数码管是由发光二级管排列构成.由(a g 7段)和1个圆点(dp)组成。LED数码管的的 连接方式有共阳极和共阴极两种。 q共阴极:把各段发光二极管的阴极连接在一起,然 后通过接地或低电平,如下图示,根据要求需点亮 发光二极管的阳极输入高电平,不需点亮的发光二 极管的阳极输入低电平。 q共阳极:把各段发光二极管的阳极连接在一起,然 后通过接电源或高电平,如下图示, 根据要求需点 亮发光二极管的阴极输入低电平,不需点亮的发光 二极管的阴极输入高电平。 通过

3、控制7段发光二极不同组合的亮灭,显示出 不同的数字与字母。例如你要用单片机控制数 码管显示3的数字,那就要分别点亮发光二极 管的a,b,c,d,g段,如下图示(共阳极) . n七段码LED显示器字形编码: n请同学们理解每个字符的编码由来 显示字符共阳极共阴极显示字符共阳极共阴极 00xC00x3FC0xC60x39 10xF90x06D0xA10x5E 20xA40x5BE0x860x79 30xB00x4FF0x8E0x71 40x990x66P0x8C0x73 50x920x6DU0xC10x3E 60x820x7DR0xCE0x31 70xF80x07Y0x910x6E 80x800x

4、7F亮0x000xFF 90x900x6F灭0xFF0x00 A0x880x77H0x890x76 B0x830x7CL0xC70x38 【例4-1】试设计驱动1位数码管显示8个流水灯 点亮的序号。 设计分析:流水LED灯和P1口相连,1位数码管 的段选线和P2相连,位选线直接和电源(高 电平)相连,使得数码管处于一直工作状态而 无需编程选中,如图4-5所示。当第一个LED 点亮时,编程驱动数码管显示“1”,当第二个 LED点亮时,编程驱动数码管显示“2”即数 码管的显示内容跟随着被点亮LED的序号而改 变。 void main() unsigned char i=0; while(1) P1

5、 = led_lighti;/点亮对应的LED P2 = seg7_lighti; /LED显示相应的数字 delay(); i+;/i自加1 if(i=8)i=0;/判断是否点亮最后一个LED ,是则重新点亮 2,数码管显示方式 n静态显示方式 q每位数码管的段选线和位选线是独立的,所以同一时刻 可以显示不同的字符,编程简单。但是这样很浪费单片 机的I/O口资源,N位静态数码管就要求有N8根I/O接 口线,所以适合数码管较少的场合。 n动态显示方式:动态显示方式的接口电路的连接是将 所有数码管的段选线(adp) 同名并联,如所有a段并 联,所有b段并联,然后有一个8位的I/O接口来 控制各个

6、段。而每位数码管的位选线由相应的I/O接 口控制,每一瞬间只有一位数码管的位选线被选中, 所以每一瞬间只能显示一位数码管,同样,下一瞬间 只选中另一位数码管的位选线,所以下一瞬间也只能 显示下一位数码管。等所有数码管都扫描完毕后,又 再进行下一轮的循环扫描。由于扫描时间很短,人眼的 视觉残留效应,所以看到的是所有数码管一起显示。 【例4-2】试设计驱动2位数码管动态显示“28”。 设计分析:2位数码管与单片机连接如图4-10所 示,其中段选线和P0口相连,位选线则分别 由P2.6、P2.7控制。根据数码管动态显示每 次只选中1位数码管工作的扫描原理,程序设 计上先扫描显示第1位数码管(只需位选

7、第1位 数码管P2=0xbf,“2”的编码赋值给段选线 P0=0xa4),接着扫描显示第2位数码管(只 需位选第2位数码管P2=0x7f,“8”的编码赋值 给段选线P0=0x80)。 void main() while(1) P2 = 0xbf;/位选数码管,即选中第一位数码管 P0= 0xa4;/段选数码管,“2”的编码赋值给P0 display_delay();/显示延时 P0=0xff;/关闭显示 P2 = 0x7f;/位选数码管,即选中第二位数码管 P0= 0x80;/段选数码管,“8”的编码赋值给P0 display_delay();/显示延时 P0=0xff;/关闭显示 n1. P

8、roteus电路设计 n2. Keil C51程序设计 n3. Proteus-Keil联合调试仿真 任务实施 硬件电路图 n(1)程序流程 初始时间为10点整。主程序循环扫描6个数 码管动态显示,由于扫描速度很快,因此在 程序设计上,考虑6个数码管动态扫描多次 (100)后,再进行显示加1。同时注意秒、 分钟、小时的进制进位。 n运行 Proteus-Keil联合调试仿真 任务2 定时器应用设计 任务描述: 任务分析: 任务1仿24小时制运行,其精度无法达到实用价值,本任务要求设计 实用的时钟,驱动六个数码管按24小时制显示运行。 嵌入式程序设计中经常定义函数实现延时,这对于要求不高、无需

9、精确的的情况下,尚无大碍。然而在某些场合对时间的精度要求比较高, 比如时钟设计,如果仍然采用延时程序进行秒、分钟、小时的延时设计, 随着运行时间的增加,其累积误差就会很大,甚至导致项目设计的失败。 另一方面由于单片机系统一般是多任务系统,延时程序运行的同时将使单 片机CPU无法快速执行其他代码,从而不符合设计要求。本任务学习单片 机定时/计数器部件,其定时功能满足对时间有严格要求的场合。 1.定时/计数器结构 2.定时器如何计算时间 n在“内部计时器” 功能下,每个机器周期定时器 的值增1。因此,可以说此时的定时器是在计 数机器周期。一个机器周期由12个晶振周期组 成。当晶振频率为12MHz时

10、: 12,000,000/12=1,000,000 就是每秒钟有1,000,000个机器周期,即每个 机器周期的时间是1s。定时器的值是在每个 机器周期下(1us)增1; n课堂思考: (1)当晶振频率为6MHz时,定时器的值多长 时间加1? (2)12MHz晶振频率下,要求一次溢出定时 时间为10us,请问定时寄存器THx/TLx计数多 少次产生溢出?如果将晶振频率改为6MHz呢 ? 定时器工作模式需要在定时器模式寄存器TMOD(Timer Mode Control Register)中进行编程设定。定时器模式寄存器TMOD不可以位寻址。 位符号功能说说明 7GATE 定时器1门控制位(Ti

11、mer 1 Gating Control Bit) 当TCON中的TR0设定为1,并且GATE=1,定时器1(Time1)只在 INT1引脚为高电 平时计时 (或计数) 当GATE=0时,定时器1(Time1)只在TCON中的TR0设定为1时计时 (或计数) 6C/T 定时器1定时、计数功能选择 位(Timer 1 Counter/Timer Select Bit) C/T=0时,定时器1(Time1)工作于计时 方式 C/T=1时,定时器1(Time1)工作于计数方式 5M1定时器1工作模式选择 位(Timer 1 Mode Select Bit) 4M0定时器1工作模式选择 位(Timer

12、 1 Mode Select Bit) 3GATE 定时器0门控制位(Timer 0 Gating Control Bit) 当TCON中的TR0设定为1,并且GATE=1,定时器0(Time0)只在 INT0引脚为高电 平时计时 (或计数) 当GATE=0时,定时器0(Time0)只在TCON中的TR0设定为1时计时 (或计数) 2C/T 定时、计数功能选择 位(Timer 0 Counter/Timer Select Bit ) C/T=0时,定时器0(Time0)工作于计时 方式 C/T=1时,定时器0(Time0)工作于计数方式 1M1定时器0工作模式选择 位(Timer 0 Mode

13、 Select Bits) 0M0定时器0工作模式选择 位(Timer 0 Mode Select Bits) 3. 定时器专用寄存器 MODEM1M0模式说说明 00013位定时器 10116位定时器 2108位定时器;自动加载 311 TL0为8位计时(或计数)器,由T0控制; TH0为另一计时(或计数)器,由T1控制; TL1、TH1此时不使用。 n特殊功能寄存器TCOD也称为定时器控制寄存 器。 n定时寄存器(Timer Register) 定时器由两个8位寄存器组成,分别是高字节寄存 器(High Byte Register)和低字节寄存器(Low Byte Register)。对于

14、定时器0分别对应TH0寄存 器(TH0 Register)和TL0寄存器(TL0 Register),对 于定时器1则分别对应TH1寄存器和TL1寄存器。这 两个寄存器在模式0、模式1时组合成字数据寄存器 使用,在模式2时分别使用,定时器0模式3分别使 用,定时器1模式3不使用 。 nTR0:定时时器0运行控制位(Timer 0 Run Control Bit) 由软件置1或清0。置1时时定时时器0启动动,清0时时定 时时器0停止 nET0:定时时器0中断控制位(Timer 0 interrupt Control Bit) 由软件置1或清0。置1时时允许许定时时器0中断,清0 时时关闭闭定时时

15、器0中断 4.定时器工作方式 n通过设置TMOD寄存器的M1、M0位,可以构 成定时器的4种工作方式。 n(1)方式0 n(2)方式1 n(3)方式2 n(4)方式3 5.定时器的设置与控制 n初始设置 8051单片机内部的定时器/计数器是可编程的,其工 作方式和工作过程均可通过程序进行设定和控制,需 要初始设置的内容如下: q先给定时器方式寄存器TMOD送一个方式控制字,设定使用 哪个定时器及相应的工作方式; q给定时寄存器(THx,TLx)送定时初值,确定需要定时的 时间; q根据需要给中断允许寄存器IE送中断控制字,给中断优先级 寄存器IP送优先级控制字,以开放相应中断和设定中断优先 级

16、; q给定时器控制寄存器TCON送命令字,启/停定时器运行。 n【例4-4】 晶振频率为12Mhz,选择T0定时 1ms,在只依靠软件控制定时器计数开关的情 况下,请设置正确的T0的相关寄存器? n分析:选择定时器T0,即需设置T0相关寄存 器TMOD、TH0、TL0 、TCON。 n(1)晶振频率12Mhz情况下,每个机器周期是1s, 定时1ms即是1000us。而方式2、3为8位计数器,一 次溢出最长时间为256us,需要多次溢出才能达到 1ms的定时要求,这样将增加编程复杂性。如果采用 方式0、方式1,它们一次溢出最长时间分别为 8193us、65536us,即一次溢出范围内即可实现定时 1000us。因此可设置采用T0方式1进行定时,由于只 依靠软件控制定时启/停,即GATE应为0。TMOD的 高4位用来控制T1,可全部清“0”,只需设置TMOD低 4位 TMOD用字节指令赋值为: TMOD=0x01; n(2)由于12MHz晶振频率下的机器周器为1us,因 此周期定时1ms需要

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号