《51单片机实战指南》课件_第6章 定时器与数码管显示.ppt

上传人(卖家):kld 文档编号:8170068 上传时间:2024-12-19 格式:PPT 页数:39 大小:1.39MB
下载 相关 举报
《51单片机实战指南》课件_第6章 定时器与数码管显示.ppt_第1页
第1页 / 共39页
《51单片机实战指南》课件_第6章 定时器与数码管显示.ppt_第2页
第2页 / 共39页
《51单片机实战指南》课件_第6章 定时器与数码管显示.ppt_第3页
第3页 / 共39页
《51单片机实战指南》课件_第6章 定时器与数码管显示.ppt_第4页
第4页 / 共39页
《51单片机实战指南》课件_第6章 定时器与数码管显示.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、第第6章章 定时器与数码管显示定时器与数码管显示51单片机实战指南本章内容:51单片机的定时器单片机的定时器/计数器基本知识计数器基本知识1定时器定时器/计数器工作方式计数器工作方式2定时器定时器/计数器的应用计数器的应用3数码管的显示原理及实现数码管的显示原理及实现46.1 516.1 51单片机的定时器单片机的定时器/计数器基本知识计数器基本知识 定时器是对单片机的内部时钟计数。计数器则是对外部输入事件进行计数。本质上都是计数,只是计数的对象不同。51基本型有2个16位加1计数器,T0和T1。6.1.1 定时/计数器结构图6-1 定时/计数器基本结构作为定时器使用时,是对单片机内部机器周期

2、计数,因其内部频率为晶振频率的1/12,如果晶振频率为12MHz,则定时器每接收一个输入脉冲的时间为1s。当用作对外部事件进行计数时,接相应的外部输入引脚T0(P3.4)或T1(P3.5),当检测到输入引脚上的电平由高跳变到低时,计数器加1。6.1.1 定时/计数器结构1.工作方式寄存器TMOD(89H)工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。6.1.2 特殊功能寄存器2.控制寄存器TCONTCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。6.1.2 特殊功能寄存器6.2.2 方式16.2 定时器

3、/计数器工作方式(方式1和2)6.2.3 方式26.2 定时器/计数器工作方式(方式1和2)6.3.1 定时器/计数器的初始化1.初始化步骤在使用定时器的时候,应对它进行初始化编程。通常需要完成以下几个步骤:1)设置特殊功能寄存器TMOD,配置好工作方式。2)设置计数寄存器TH和TL的初值。3)定时/计数器在中断方式工作时,需编程IE寄存器,开CPU中断和源中断。4)设置TCON,通过TR0或TR1置1来让定时器启动计数。另外,如定时/计数器工作在查询方式时,则在程序执行过程中还需判断TCON寄存器的TF0位,监测定时器的溢出情况。6.3 定时器/计数器的应用6.3.1 定时器/计数器的初始化

4、2.计数初值的计算如果设定定时器计数初值为X,机器周期为Tc,定时器定时时间为Td,则Td=(2n-X)Tc,那么定时器的初值为X=2n-Td/Tc得到X初值后,则可根据定时器的工作方式来装载TH与TL。TH=(65536-N)/256;TL=(65536-N)%256;或TH=-N/256;TL=-N%256;TH=TL=256-N;或TH=TL=-N;6.3 定时器/计数器的应用【例6-1】如图6-6所示,P0.1口输出频率为0.5Hz的方波,为了便于观察,可以通过P0.1口接的LED灯的亮灭来观察现象,即LED亮灭各1s。6.3.2 应用举例1.查询方式#include/*端口定义*/s

5、bit Wave=P01;/位定义,Wave 即代表P0.1sbit LSC=P17;/特殊功能寄存器的位定义,sbit LSB=P16;/3-8译码器的输入端,sbit LSA=P15;/控制三极管Q2Q6的导通void main()/主函数unsigned char cnt=0;/记录 T0 溢出次数LSA=0;LSB=0;LSC=0;6.3.2 应用举例Wave=0;/初始化P1.0=0TMOD=0 x01;/设置定时器T0工作方式1 TL0 =-18432/256;/计数器初值TH0 =-18432%256;TR0 =1;while(1)/主循环if(TF0=1)/判断T0是否溢出 T

6、F0=0;/清零中断标志TL0 =-18432/256;/计数器初值 TH0 =-18432%256;6.3.2 应用举例 cnt+;/计数值自加 1 if(cnt=50)/1s到?cnt=0;/计数值清零 Wave=Wave;/Wave 取反 6.3.2 应用举例2.中断方式#include/端口定义sbit Wave=P01;sbit LSC=P17;sbit LSB=P16;sbit LSA=P15;unsigned char cnt=0;6.3.2 应用举例void main()LSA=0;LSB=0;LSC=0;Wave=0;TMOD=0 x01;TL0=-18432/256;TH0

7、=-18432%256;TR0=1;ET0=1;EA=1;/开中断while(1);/模拟主程序其它工作 6.3.2 应用举例/*T0中断服务程序*/void Timer0(void)interrupt 1/定时器 T0 中断响应 TL0 =-18432/256;TH0 =-18432%256;cnt+;if(cnt=50)cnt=0;Wave=Wave;6.3.2 应用举例【例6-2】定时器T0外接按键KEY2用于模拟计数输入,工作于计数模式,当5个计数值满,P0.1口发光二极管取反。#include sbit LED=P01;/位定义,LED 即代表P0.1sbit LSA=P15;sbi

8、t LSB=P16;sbit LSC=P17;6.3.2 应用举例void main()LSA=0;LSB=0;LSC=0;TMOD=0 x06;/定时器T0工作方式2计数TL0=-5;/计数器初值TH0 =-5;TR0=1;/启动定时器ET0=1;/开中断EA=1;while(1);/主循环 6.3.2 应用举例/*T0中断服务程序*/void Timer0(void)interrupt 1/T0 中断响应 LED=LED;/反向 6.3.2 应用举例 脉冲宽度调制PWM(Pulse Width Modulation)是利用微处理器的数字输出来对模拟电路进行控制的一种技术手段。就是调节一个周

9、期中高电平所占的百分比,也就是调节占空比。比如可以通过调节占空比来控制直流电机的通电时间,以达到调速的目的,或通过调节占空比控制加热时间,进行温度控制等。6.3.3 用定时器实现PWM控制【例6-3】利用定时器T0产生PWM来控制P0口LED灯的亮度,原理图见图6-6所示。#include sbit LSA=P15;sbit LSB=P16;sbit LSC=P17;unsigned char HighRH=0;/高电平重载值的高字节unsigned char HighRL=0;/高电平重载值的低字节unsigned char LowRH=0;/低电平重载值的高字节unsigned char

10、LowRL=0;/低电平重载值的低字节void ConfigPWM(unsigned int fr,unsigned char dc);void ClosePWM();6.3.3 用定时器实现PWM控制void main()unsigned int i;EA=1;/开总中断LSA=0;LSB=0;LSC=0;while(1)ConfigPWM(100,10);/频率100Hz,占空比10%for(i=0;i40000;i+);ClosePWM();ConfigPWM(100,40);/频率100Hz,占空比40%6.3.3 用定时器实现PWM控制for(i=0;i40000;i+);Close

11、PWM();ConfigPWM(100,90);/频率100Hz,占空比90%for(i=0;i40000;i+);ClosePWM();/关闭 PWM,相当于占空比 100%for(i=0;i8);/高电平拆分HighRL=(unsigned char)high;LowRH=(unsigned char)(low8);/低电平拆分LowRL=(unsigned char)low;TMOD&=0 xF0;/清零 T0 的控制位TMOD|=0 x01;/配置 T0 为模式 1TH0=HighRH;/加载 T0 重载值TL0=HighRL;ET0=1;/使能 T0 中断TR0=1;/启动 T0P0

12、=0 xff;/输出高电平6.3.3 用定时器实现PWM控制/*关闭 PWM*/void ClosePWM()TR0=0;/停止定时器ET0=0;/禁止中断P0=0 xff;/输出高电平6.3.3 用定时器实现PWM控制/*T0中断服务函数,产生PWM输出*/void Timer0()interrupt 1if(P0=0 xff)/当前输出为高,装载并输出低电平TH0=LowRH;TL0=LowRL;P0=0 x00;else/当前输出为低时,装载并输出高电平TH0=HighRH;TL0=HighRL;P0=0 xff;6.3.3 用定时器实现PWM控制6.4.1 数码管显示原理6.4数码管的

13、显示原理及实现图6-8 数码管的结构和原理6.4.1 数码管显示原理6.4数码管的显示原理及实现表6-2 数码管显示代码表【例6-4】利用图6-9所示电路,在数码管最低位显示字型“0”。6.4.2 数码管静态显示静态显示原理#include /端口定义sbit LSC=P17;/特殊功能寄存器的位定义,sbit LSB=P16;/3-8译码器的输入端,sbit LSA=P15;/控制三极管Q2Q6的导通unsigned char code smgduan =/共阳极的显示代码表090 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x

14、90;void main()LSC=0;LSB =0;LSA=1;P0=smgduan0;/显示代码经P0口输出while(1);6.4.2 数码管静态显示【例6-5】在上例基础上,在数码管最低位间隔一秒循环显示字型“0”“9”。和例题4.1比较可以看出,只需在程序中采用循环查表的方式,将表格中的显示代码依次经P0口输出,并延时1秒即可实现功能要求,具体程序可自行在上例基础上修改。但在本例中采用不同的编程方式,采用结构化的编程方法,主程序的代码并不会因为功能的增加而过于复杂,也便于程序的修改和移植。led.h文件led.c文件主程序main.c(延时)主程序main.c(定时器)6.4.2 数

15、码管静态显示图6-10 项目文件6.4.2 数码管静态显示【例6-6】利用图6-9所示电路,实现4个数码管从低到高依次显示“1”“2”“3”“4”。表6-3 译码器输入与数码管选通表6.4.3 数码管动态显示led.h文件led.c文件主程序main.c动态显示原理动态显示的一般过程如下:1)依次送位选码,将要显示该字型的数码管选通,未选通的数码管不会显示该字型;2)送段选码,一般通过查表方式将数码管显示代码经相应的I/O口输出,此时,实际上所有的数码管都被送了相同的显示代码,但只有位选选通的数码管会显示;3)延时一段时间;4)消隐,所有的位选均无效,数码管均熄灭;5)返回步骤1),持续显示。6.4.3 数码管动态显示【例6-7】设计60秒倒计时的计时器。原理图见图6-9。led.h文件led.c文件主程序main.c以上代码只能显示6001的秒倒计时,如果要显示6000的秒倒计时,需把指令if(sec=0)改为if(sec 0),但是这样会在第二次循环显示中出错,原因在于主程序中把秒变量sec定义为无符号字符型unsigned char,也就是说变量sec是正值,因此只需把sec定义为signed char即可实现6000的秒倒计时。从这个简单的例子也可以看出,我们在定义一个变量时,一定要考虑变量的正负和可能的取值范围。6.4.3 数码管动态显示

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

当前位置:首页 > 大学
版权提示 | 免责声明

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


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

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


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