单片机学习之项目1流水灯2定时器.ppt

上传人:牧羊曲112 文档编号:5937901 上传时间:2023-09-06 格式:PPT 页数:39 大小:1.59MB
返回 下载 相关 举报
单片机学习之项目1流水灯2定时器.ppt_第1页
第1页 / 共39页
单片机学习之项目1流水灯2定时器.ppt_第2页
第2页 / 共39页
单片机学习之项目1流水灯2定时器.ppt_第3页
第3页 / 共39页
单片机学习之项目1流水灯2定时器.ppt_第4页
第4页 / 共39页
单片机学习之项目1流水灯2定时器.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《单片机学习之项目1流水灯2定时器.ppt》由会员分享,可在线阅读,更多相关《单片机学习之项目1流水灯2定时器.ppt(39页珍藏版)》请在三一办公上搜索。

1、任务三 利用硬件定时实现流水灯,常用延时方法,非精确延时For(i=0;i)利用定时器进行定时,定时/计数器(Timer/Counter,简称T/C),80C51有2个16位定时/计数器:T0、T1 80C52有3个16位定时/计数器:T0、T1、T2,定时/计数器(Timer/Counter,简称T/C),定时器:来一个机器脉冲计数器的值加1。当计数器值溢出(全1)时回0,定时时间到,中断标志TF置1.1个机器周期=12*1/振荡频率计数器:在机器周期内采样T0(或T1)脉冲的下降沿,来一个下降沿计数器的值加1。当计数器值溢出(全1)时回0,中断标志TF置1.,1。定时器知识(1)定时器/计

2、数器的内部结构及工作原理 单片机内部设有2个16位的可编程的定时器/计数器。简称为定时器0(T0)、定时器1(T1)。可编程是指其功能(如工作模式、定时时间等)均可通过指令来确定或改变。,单片机定时器/计数器结构图,定时器的工作原理:定时器/计数器是一个加“1”计数器,来一个脉冲即进行加1计数,直至计数器的各位全为“1”,再来一个脉冲,计数器回0(即溢出),且使TF0(定时器0)或TF1(定时器1)置1,表示时间到,计数值乘以脉冲周期就是定时时间。输入的脉冲来源有2个:一个是单片机晶体振荡器经12分频;另一个是T0/T1端的外部输入脉冲。作定时器用时,应采用晶体振荡器经12分频的脉冲。,定时器

3、功能,两个寄存器:TMOD和TCON4个计数寄存器:TH0,TL0;TH1,TL1方式1:定时时间=(65536-初值)*12/振荡频率 初值=65536-定时时间*振荡频率/12,例如定时1ms:,初值=65536-1s*12*103Hz/12=65536-1000=64536=0 xFC18,TMOD寄存器,GATE,C/T,M1,M0,GATE,C/T,M1,M0,控制T1,控制T0,M1M0:00:方式001:方式110:方式211:方式3,GATE:0:软件控制定时器工作1:外部中断控制定时器工作,不可位寻址,GATE:门控位,控制计数器的启动/停止操作方式。当GATE=0时,外部中

4、断信号不参与控制,计数器只有TR0和TR1位软件控制启动和停止。TR1、TR0为1时,计数器启动开始工作;为0时,计数器停止工作。当GATE=1时,计数器的启动要由外部中断信号和TR0、和TR1共同控制。只有当外部中断引脚为高电平,TR0/TR1置1时才能启动计数器工作。,:功能选择位。当=0时选择定时功能,计数脉冲由内部提供,计数周期等于机器周期。当=1时选择为计数功能,计数脉冲为外部引脚T0、T1引入的外部脉冲信号。,M1和M0:T0和T1工作方式控制位。定时/计数器的工作方式有M1M0两位状态决定,这两位有四种编码方式,对应于四种工作方式。四种方式定义如表所示:,TCON,TF1,TR1

5、,TF0,TR0,IE1,IP1,IE0,IP0,可位寻址,也可字节寻址,M1M0,00:方式0,13位计数寄存器01:方式1,16位计数寄存器,用于定时和计数10:方式2,自动重装载8位计数寄存器,用于波特率发生器11:方式3,2个8位计数寄存器,定时器使用步骤,1.设置TMOD,使之工作在需求状态;TMOD=0 x01;或TMOD=0 x10;2.设置计数寄存器初值,精确设定好定时时间;TH0=0 xff;TL0=0 x00;或TH1=0 xff;TL1=0 x00;3.设置TCON,打开TR使定时器工作;TR0=1;或TR1=1;4.检测定时器溢出(TF=1),溢出时:复位TF,计数寄存

6、器赋初值,定时到触发的动作。if(1=TF0)TH0=0 xff;TL0=0 x00;TF0=0;P1_0=P1_0;,或if(1=TF1)TH1=0 xfc;TL1=0 x18;TF1=0;P1_0=P1_0;,定时1ms 初值=65536-1000=0 xFC18,#includesbit P1_0=P10;void main()TMOD=0 x01;TH0=0 xfc;TL0=0 x18;TR0=1;/此位可位操作 while(1)if(1=TF0)TH0=0 xfc;TL0=0 x18;TF0=0;/此位可位操作 P1_0=P1_0;/此位可位操作,定时时间=(65536-初值)*12

7、/振荡频率65536s,#includesbit P1_0=P10;void main()TMOD=0 x01;TH0=0;TL0=0;TR0=1;/此位可位操作 while(1)if(1=TF0)/TH0=0;TL0=0;TF0=0;/此位可位操作 P1_0=P1_0;/此位可位操作,定时1s,#includesbit P1_0=P10;void main()unsigned int counter;TMOD=0 x01;TH0=0 xb1;TL0=0 xe0;TR0=1;/此位可位操作 while(1)if(1=TF0)TH0=0 xb1;TL0=0 xe0;TF0=0;counter+;

8、if(50=counter)counter=0;P1_0=P1_0;,=50*20ms,20ms 初值=45536=0 xB1E0,复习,定时器定时功能的使用TMOD:选择T0还是T1TCON:选择方式1设置初值放置于TH0,TL0或TH1,TL1中,方式1:定时时间=(65536-初值)*机器周期 初值=65536-定时时间/机器周期,时间间隔0.5s=10*50ms的流水灯;,#includevoid main()unsigned int i,j,value,dec;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;/此位可位操作 while(1)value=254

9、;dec=1;for(i=0;i8;i+)P1=value;for(j=0;j10;j+)/10次*50ms/次 while(TF0!=1);TH0=0 x3c;TL0=0 xb0;TF0=0;value=value-dec;dec=dec*2;,50ms 初值=15536=0 x3CB0,书上程序,操作练习1,请用定时器0实现:时间间隔50ms的流水灯;时间间隔1s的流水灯;,操作练习2,请用硬件定时器实现:任选三个LED灯,分别作为红、黄、绿交通灯,实现绿灯亮1s,然后黄灯快闪3次,再红灯亮2s,黄灯快闪3次,绿灯亮1s,,#includevoid main()unsigned int i

10、,value,dec;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;/此位可位操作 while(1)value=254;dec=1;for(i=0;i8;i+)while(TF0!=1);TH0=0 x3c;TL0=0 xb0;TF0=0;P1=value;value=value-dec;dec=dec*2;,时间间隔50ms的流水灯;,50ms 初值=15536=0 x3CB0,书上方法,时间间隔1s=20*50ms的流水灯;,#includevoid main()unsigned int i,j,value,dec;TMOD=0 x01;TH0=0 x3c;TL

11、0=0 xb0;TR0=1;/此位可位操作 while(1)value=254;dec=1;for(i=0;i8;i+)for(j=0;j20;j+)/20次*50ms/次 while(TF0!=1);TH0=0 x3c;TL0=0 xb0;TF0=0;P1=value;value=value-dec;dec=dec*2;,50ms 初值=15536=0 x3CB0,书上方法,时间间隔1s的双向流水灯;,#includevoid main()unsigned char i,j,value,dec;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;/此位可位操作 whil

12、e(1)value=254;dec=1;for(i=0;i14;i+)for(j=0;j20;j+)/20次*50ms/次 while(TF0!=1);TH0=0 x3c;TL0=0 xb0;TF0=0;P1=value;if(i7)value=value-dec;dec=dec*2;else dec=dec/2;value=value+dec;,书上方法,#includevoid main()unsigned int i,value;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;/此位可位操作 while(1)value=0 x01;for(i=0;i8;i+)w

13、hile(TF0!=1);TH0=0 x3c;TL0=0 xb0;TF0=0;P1=value;value=value1;,时间间隔50ms的流水灯;,50ms 初值=15536=0 x3CB0,方法2,#includevoid main()unsigned int i,j,value;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;/此位可位操作 while(1)value=0 x01;for(i=0;i8;i+)for(j=0;j20;j+)/20次*50ms/次 while(TF0!=1);TH0=0 x3c;TL0=0 xb0;TF0=0;P1=value;v

14、alue=value1;,时间间隔1s=20*50ms的流水灯;,50ms 初值=15536=0 x3CB0,方法2,#includevoid main()unsigned int i,j,value;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;/此位可位操作 while(1)value=0 x01;for(i=0;i1;,时间间隔1s的双向流水灯;,50ms 初值=15536=0 x3CB0,方法2,#includevoid main()unsigned int value=0 x01;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;/

15、此位可位操作 while(1)if(1=TF0)TH0=0 x3c;TL0=0 xb0;TF0=0;P1=value;value=value1;if(value=256)value=0 x01;,时间间隔50ms的流水灯;,50ms 初值=15536=0 x3CB0,方法3,#includevoid main()unsigned int counter,value=0 x01;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;/此位可位操作 while(1)if(1=TF0)TH0=0 x3c;TL0=0 xb0;TF0=0;counter+;if(20=counter

16、)counter=0;P1=value;value=value1;if(value=256)value=0 x01;,时间间隔1s=20*50ms的流水灯;,50ms 初值=15536=0 x3CB0,方法3,#includevoid main()unsigned int i=0,value=0 x01;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;/此位可位操作 while(1)if(1=TF0)TH0=0 x3c;TL0=0 xb0;TF0=0;P1=value;i+;if(i1;if(i=15)value=0 x01;i=0;,时间间隔50ms的双向流水灯;,

17、50ms 初值=15536=0 x3CB0,方法3,时间间隔1s=20*50ms的流水灯;,#includevoid main()unsigned int counter,x=0;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;/此位可位操作 while(1)if(1=TF0)TH0=0 x3c;TL0=0 xb0;TF0=0;counter+;if(20=counter)counter=0;P1=(1x+);if(x=8)x=0;,50ms 初值=15536=0 x3CB0,方法4,操作练习2,请用硬件定时器实现:任选三个LED灯,分别作为红、黄、绿交通灯,实现绿灯

18、亮1s,然后黄灯快闪3次,再红灯亮2s,黄灯快闪3次,绿灯亮1s,,#includevoid main()unsigned int i,j,a;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;while(1)P1=0 xfe;TR0=1;for(j=0;j20;j+)/绿灯亮20次*50ms/次 while(TF0!=1);TH0=0 x3c;TL0=0 xb0;TF0=0;TR0=0;P1=0 xff;for(i=0;i10000;i+);for(a=0;a3;a+)/黄灯闪三次 P1=0 xfd;for(i=0;i10000;i+);P1=0 xff;for(i=0;i100

19、00;i+);/P1=0 xfb;TR0=1;for(j=0;j40;j+)/红灯亮40次*50ms/次 while(TF0!=1);TH0=0 x3c;TL0=0 xb0;TF0=0;TR0=0;P1=0 xff;for(i=0;i10000;i+);for(a=0;a3;a+)/黄灯闪三次 P1=0 xfd;for(i=0;i10000;i+);P1=0 xff;for(i=0;i10000;i+);,作业,P52 2、3,#includevoid main()unsigned int value,dec;value=254;dec=1;TMOD=0 x01;TH0=0 x3c;TL0=0

20、 xb0;TR0=1;/此位可位操作 while(1)if(1=TF0)TH0=0 x3c;TL0=0 xb0;TF0=0;P1=value;value=value-dec;dec=dec*2;if(dec=256)value=254;dec=1;,时间间隔50ms的流水灯;,50ms 初值=15536=0 x3CB0,任务四、拓展训练,以前面流水灯程序为基础,增加新的功能一、增加显示花式目的:使学生深入理解硬件电路原理以及应用能力,学会用程序增加其功能。(1)花式1:流水灯从一端显示到另一端,然后反过来,显示从终端到始端。(2)花式2:流水灯从两端同时向中间显示,到中间后再分别往两端显示回去。(3)花式3:流水灯从一端依次亮起到另一端,然后从另一端依次熄灭到开始端。,二、改变闪烁频率目的:掌握对定时器的工作原理理解及应用能力。(1)时间控制方式1:流水灯从一端显示到另一端,灯显示的速度越来越快(用定时器实现)。(2)时间控制方式2:分别用定时器工作方式0、1、2实现定时间隔0.5S流水灯。(3)时间控制方式3:编程使P1.0,P1.2,P1.4引脚上的三个发光管的闪烁时间为1s,2s,6s。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号