简易加减计数器和交通信号灯设计概述课件.ppt

上传人(卖家):三亚风情 文档编号:3033098 上传时间:2022-06-24 格式:PPT 页数:98 大小:3.69MB
下载 相关 举报
简易加减计数器和交通信号灯设计概述课件.ppt_第1页
第1页 / 共98页
简易加减计数器和交通信号灯设计概述课件.ppt_第2页
第2页 / 共98页
简易加减计数器和交通信号灯设计概述课件.ppt_第3页
第3页 / 共98页
简易加减计数器和交通信号灯设计概述课件.ppt_第4页
第4页 / 共98页
简易加减计数器和交通信号灯设计概述课件.ppt_第5页
第5页 / 共98页
点击查看更多>>
资源描述

1、单片机原理及应用任务任务1 简易简易加减计数器加减计数器的设计的设计1. 1. 技能要求技能要求 单片机输出口接单片机输出口接3 3位数码管和三个独立按键,这位数码管和三个独立按键,这3 3位数码管分别显示一位数码管分别显示一个变量的个位、十位和百位,三个按键分别作为个变量的个位、十位和百位,三个按键分别作为“加加”、“减减”和和“清零清零”功能,当按下功能,当按下“加加”键时,数码管显示的变量加键时,数码管显示的变量加1 1,当按下,当按下“减减”键时,键时,数码管显示的变量减数码管显示的变量减1 1,当按下,当按下“清零清零”键时,数码管显示和变量为键时,数码管显示和变量为0 0。知识链接

2、一知识链接一 键盘接口电路键盘接口电路独立联接式无编码键盘独立联接式无编码键盘 独立联接式编码键盘独立联接式编码键盘 1、键盘键盘的分的分类与类与结构结构独立联接式键盘独立联接式键盘矩阵联接式键盘矩阵联接式键盘屏幕键盘屏幕键盘( (触摸屏)触摸屏)无编码键盘无编码键盘编码键盘编码键盘无编码,简单有效,键数较少时采用无编码,简单有效,键数较少时采用编码,节省编码,节省I/OI/O口线,键数较多时采用口线,键数较多时采用任务任务1 简易简易加减计数器加减计数器的设计的设计1 1键盘的工作原理及去抖动键盘的工作原理及去抖动 对应任何按键来说,由于机械触点的弹性作用,触点在闭对应任何按键来说,由于机械

3、触点的弹性作用,触点在闭合和断开瞬间的电接触情况不稳定,造成了电压信号的抖动现合和断开瞬间的电接触情况不稳定,造成了电压信号的抖动现象,象,如图如图所示。按键的抖动时间一般为所示。按键的抖动时间一般为5ms5ms10ms10ms。这种现象会。这种现象会引起单片机对于一次键操作进行多次处理,因此必须设法消除引起单片机对于一次键操作进行多次处理,因此必须设法消除键接通或断开时的抖动现象。常用的去抖动方法有硬件和软件键接通或断开时的抖动现象。常用的去抖动方法有硬件和软件两种。两种。闭合稳定理想波形实际波形前沿抖动后沿抖动任务任务1 简易简易加减计数器加减计数器的设计的设计a a)硬件去抖)硬件去抖

4、硬件消抖可以采用硬件消抖可以采用R-SR-S触发器或单稳电路构成去抖电路,分别如触发器或单稳电路构成去抖电路,分别如图所示。图所示。 硬件消抖因为要增加硬件开销,硬件消抖因为要增加硬件开销, 造成电路复杂,除了在数字电造成电路复杂,除了在数字电路里使用外,在单片机系统中不太采用。路里使用外,在单片机系统中不太采用。 任务任务1 简易简易加减计数器加减计数器的设计的设计o b b)软件去抖)软件去抖 在检测到有键按下时,执行一个在检测到有键按下时,执行一个10ms10ms的延时程序后,再确认该键是否保持闭的延时程序后,再确认该键是否保持闭合状态。另外一种方法是连续判断按键合状态。另外一种方法是连

5、续判断按键所在线路的电平,如果连续所在线路的电平,如果连续100100次(甚至次(甚至更多)都出现低电平(一般按键都是低更多)都出现低电平(一般按键都是低电平表示按下),就认为按键已经稳定,电平表示按下),就认为按键已经稳定,可以进行识别,这是企业实际开发产品可以进行识别,这是企业实际开发产品中常用的方法。中常用的方法。以以P1.0P1.0所接按键为例,所接按键为例,其编程流程图如图所示其编程流程图如图所示. . 任务任务1 简易简易加减计数器加减计数器的设计的设计sbit key=P10;key=1; /P1.0置置“1”,作输入口,作输入口if (key=0) /判断按键是否按下判断按键是

6、否按下delay10ms(); /延时延时10msif (key=0) /再次判断按键是否按下再次判断按键是否按下 a+; /按键功能代码(变量按键功能代码(变量a加加“1”操作)操作)while(key=0); /等待按键释放等待按键释放任务任务1 简易简易加减计数器加减计数器的设计的设计 以单片机为基础的电子产品设计中,键盘是一以单片机为基础的电子产品设计中,键盘是一种最为常见的人机交互设备。通常,键数较少、种最为常见的人机交互设备。通常,键数较少、键盘的功能简单。键盘的功能简单。1 1简单键盘的扫描程序设计简单键盘的扫描程序设计 键盘扫描程序嵌入键盘扫描程序嵌入到主程序循环之中,与到主程

7、序循环之中,与主程序一起构成主循环主程序一起构成主循环套。套。 键敲击速度约几次键敲击速度约几次/S, ,设计键盘扫描程序设计键盘扫描程序时时, ,必须保证约必须保证约100mS内就要循环扫描内就要循环扫描1次次。任务任务1 简易简易加减计数器加减计数器的设计的设计任务任务1 简易简易加减计数器加减计数器的设计的设计任务任务1 简易简易加减计数器加减计数器的设计的设计读取值读取值输出值输出值键键码码键名键名P1.7P1.7 P1.6P1.6 P1.5P1.5 P1.4P1.4 P1.3P1.3 P1.2P1.2 P1.1P1.1 P1.0P1.01 11 11 10 01 11 11 10 0

8、EEHEEH1#1#1 11 10 01 11 11 11 10 0DEHDEH2 21 10 01 11 11 11 11 10 0BEHBEH3 30 01 11 11 11 11 11 10 07EH7EH4 41 11 11 10 01 11 10 01 1EDHEDH5 51 11 10 01 11 11 10 01 1DDHDDH6 61 10 01 11 11 11 10 01 1BDHBDH7 70 01 11 11 11 11 10 01 17DH7DH8 81 11 11 10 01 10 01 11 1EBHEBH9 91 11 10 01 11 10 01 11 1DB

9、HDBH10101 10 01 11 11 10 01 11 1BBHBBH11110 01 11 11 11 10 01 11 17BH7BH12121 11 11 10 00 01 11 11 1E7HE7H13131 11 10 01 10 01 11 11 1D7HD7H14141 10 01 11 10 01 11 11 1B7HB7H15150 01 11 11 10 01 11 11 177H77H16161 11 11 11 1F FH H无键无键 按键数量进一步增加时按键数量进一步增加时, , 采用矩采用矩阵联接式键盘可节省更多的口线阵联接式键盘可节省更多的口线, , 接接口

10、电路也更简单。口电路也更简单。 1.1.21.1.2矩阵连接键盘矩阵连接键盘u 键盘扫描程序的编写键盘扫描程序的编写(1)(1)判别有无键按下。判别有无键按下。(2) (2) 延时。延时。(3) (3) 键盘扫描取得闭合键的行、列值键盘扫描取得闭合键的行、列值键值键值。(4) (4) 用计算法或查表法得到用计算法或查表法得到键号键号。* *(5) (5) 判断闭合键是否释放,如没释放则继续等待。判断闭合键是否释放,如没释放则继续等待。(6) (6) 将闭合键将闭合键键号键号保存保存, , 然后返回。然后返回。键盘扫描程序一般流程:键盘扫描程序一般流程:任务任务1 简易简易加减计数器加减计数器的

11、设计的设计 矩阵式键盘的工作原理矩阵式键盘的工作原理 当键盘有键按下时,要逐行或逐列扫描,以判断是哪一当键盘有键按下时,要逐行或逐列扫描,以判断是哪一个键按下。通常扫描方式有两种:扫描法和反转法。个键按下。通常扫描方式有两种:扫描法和反转法。任务任务1 简易简易加减计数器加减计数器的设计的设计u矩阵连接键盘扫描矩阵连接键盘扫描 开开始始 P1.0-P1.3 置置零零 P1.3-P.17 置置高高 判判断断是是否否 有有键键按按下下? 延延时时去去抖抖 判判断断是是否否 有有键键按按下下? 置置扫扫描描初初值值 输输出出行行扫扫描描信信号号 有有键键按按下下? 修修改改行行扫扫描描信信号号 最最

12、后后一一行行? 确确定定键键值值 返返回回键键值值 N Y Y N Y N Y N 知识链接二:数码管显示技术知识链接二:数码管显示技术任务任务1 简易简易加减计数器加减计数器的设计的设计1.2.11.2.1七段七段LEDLED显示器显示器 通常的通常的7 7段段LEDLED显示块中有显示块中有8 8个发光二极管,故也叫做个发光二极管,故也叫做8 8段显示器。其中段显示器。其中7 7个发光二极管构成七笔字形个发光二极管构成七笔字形“8 8”,一个发光二极管构成小数点。,一个发光二极管构成小数点。1. LED1. LED显示器的结构与原理显示器的结构与原理任务任务1 简易简易加减计数器加减计数器

13、的设计的设计2.LED2.LED显示器的显示方式显示器的显示方式(1 1)LEDLED静态显示方式静态显示方式每一位显示都占用单独的具有锁存功能的每一位显示都占用单独的具有锁存功能的I/O接口,接口,com端连接在一起。端连接在一起。(2 2)LEDLED动态显示方式动态显示方式 是将所有数码管的是将所有数码管的“a,b,c,d,e,f,g,dp ”的同名端连在一起,的同名端连在一起,每个数码管的每个数码管的COM为各自独立的位选信号为各自独立的位选信号。即在某一时刻,只让某一位的位选线处于选通即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态状态,而其他各位的位选线

14、处于关闭状态。任务任务1 简易简易加减计数器加减计数器的设计的设计P0.0P1.0P1.5P1.1P1.2P1.3P1.4P1.5P1.4P1.3P1.2P1.1P1.0P0.3P0.4P0.5P0.2P0.6P0.1P0.6P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.0P0.1P0.2P0.3P0.4P0.5XTAL218XTAL119ALE30EA31

15、PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRY

16、STALC130pFC230pFC310uFR910kVCCGNDA02B018A13B117A24B216A35B315A46B414A57B513A68B612A79B711CE19AB/BA1U274LS245R120R220R320R420R520R62012U3:A74LS0534U3:B74LS0556U3:C74LS0598U3:D74LS051110U3:E74LS051312U3:F74LS05u 显示器由显示器由6个共阴极个共阴极LED数码管构成;数码管构成;P0口输出显示段码,经由一片口输出显示段码,经由一片74LS245驱动输出给驱动输出给LED管;管;P1口输出位码(

17、片选),经由口输出位码(片选),经由74LS05输出给输出给LED管。管。 u动态扫描过程动态扫描过程任务任务1 简易简易加减计数器加减计数器的设计的设计u 首先从段选线上送出字型编码,再控制位选端,字符就首先从段选线上送出字型编码,再控制位选端,字符就显示在指定数码管上,其他位选端无效的数码管都处于显示在指定数码管上,其他位选端无效的数码管都处于熄灭状态,持续熄灭状态,持续1.5ms时间,然后关闭所有显示;时间,然后关闭所有显示;u 接下来又送出新的字型编码,按照上述过程又显示在另接下来又送出新的字型编码,按照上述过程又显示在另外一位数码管上,直到每一位数码管都扫描完为止,外一位数码管上,直

18、到每一位数码管都扫描完为止,这这一过程即为动态扫描显示一过程即为动态扫描显示。u 数码管其实是轮流依次点亮的,但由于数码管其实是轮流依次点亮的,但由于人的视觉驻留效人的视觉驻留效应,应,因此当每个数码管点亮的时间小到一定程度时,人因此当每个数码管点亮的时间小到一定程度时,人就感觉不出字符的移动或闪烁,觉得每位数码管都一直就感觉不出字符的移动或闪烁,觉得每位数码管都一直在显示,达到一种稳定的视觉效果。在显示,达到一种稳定的视觉效果。 任务任务1 简易简易加减计数器加减计数器的设计的设计u 参考程序如下:参考程序如下:#include unsigned char code Tab=0 x3F,0

19、x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C;unsigned char code Col=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf;void Delay() unsigned char i; for(i=0;i250;i+);void main() / 同时显示同时显示123456 unsigned char j; while(1) for(j=1;j7;j+) P0=Tabj; P1=Colj-1; /开第一个(共阴)数码管开第一个(共阴)数码管 Delay(); P1=0 xf

20、f; /关数码管关数码管 Delay(); 任务任务1 简易简易加减计数器加减计数器的设计的设计1.31.3数码管显示数码管显示4 44 4键盘编号键盘编号1. 1. 技能要求技能要求单片机单片机P2P2接接1 1位数码管,位数码管,P1P1口接由口接由1616个个按键组成的按键组成的4 44 4行列键盘。当按下这行列键盘。当按下这1616个按键的其中之一时,数码管显示该按个按键的其中之一时,数码管显示该按键对应的键盘编号。键对应的键盘编号。 行行 0 行行 1 行行 2 行行 3 列列 0 列列 1 列列 2 列列 3 P1.4 P1.5 P1.6 P1.7 P1.0 P1.1 P1.2 P

21、1.3 5V 任务任务1 简易简易加减计数器加减计数器的设计的设计u. . 仿真电路图仿真电路图 数码管显示数码管显示4 44 4键盘编号的电路图如键盘编号的电路图如下下图图所示,电路中的轻触按所示,电路中的轻触按键使用元件库中的键使用元件库中的“button”button”元件,特别元件,特别注意注意1616个按键的连接关系及个按键的连接关系及其和单片机之间的连接关系。其和单片机之间的连接关系。任务任务1 简易简易加减计数器加减计数器的设计的设计u . 程序设计与调试程序设计与调试程序采用线翻转法识别闭合键,程序采用线翻转法识别闭合键,反转法原理:反转法原理:行作低电平输出,列作输入,行作低

22、电平输出,列作输入,读列线;列作低电平输出,行作输入,读行线。数码管静态显示方式。读列线;列作低电平输出,行作输入,读行线。数码管静态显示方式。任务任务1 简易简易加减计数器加减计数器的设计的设计int main()while(1)keyScan( );delay(unsigned int i)while(i-);void keyScan()unsigned char temp,a;temp=0 xff; P1=0 xf0;if (P1!=0 xf0) /判断是否有按键按下判断是否有按键按下delay(1000); /延时去抖延时去抖if (P1!=0 xf0) /再次判断是否有按键按下再次判

23、断是否有按键按下P1=0 xf0;/行作输出,列作输入行作输出,列作输入temp=P1;/读取列值读取列值P1=0 x0f;/列作输出,行作输入列作输出,行作输入temp=temp|P1;/读取行值并和列值合并读取行值并和列值合并switch (temp)case 0 xee:a=0;break;case 0 xde:a=1;break; case 0 xbe:a=2;break; case 0 x7e:a=3; break; 参考程序如下:参考程序如下:#include unsigned char code seg=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0

24、x82,0 xf8,0 x80,0 x90,/09的段码的段码0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e; /AF的段码的段码case 0 xed:a=4;break;case 0 xdd:a=5;break;case 0 xbd:a=6;break;case 0 x7d:a=7;break;case 0 xeb:a=8;break;case 0 xdb:a=9;break;case 0 xbb:a=10;break;case 0 x7b:a=11;break;case 0 xe7:a=12;break;case 0 xd7:a=13;break;case 0 xb

25、7:a=14;break;case 0 x77:a=15;break;P2=sega; /将键值对应的段码送到将键值对应的段码送到P2口口P1=0 xf0;while (P1!=0 xf0)delay(50);任务任务1 简易简易加减计数器加减计数器的设计的设计(1 1)画出硬件电路图)画出硬件电路图u简易简易加减计数器加减计数器任务实施:任务实施:任务任务1 简易简易加减计数器加减计数器的设计的设计(2). 程序设计与调试程序设计与调试 要获取一个变量的每一位数字的值,用到除法运算符要获取一个变量的每一位数字的值,用到除法运算符“/”/”和模运算符和模运算符“%”%”两个算术运算符。当两个整

26、数作除法运算时结果仍为整数,余数则会两个算术运算符。当两个整数作除法运算时结果仍为整数,余数则会被丢弃,因此可作为取整操作;模运算被丢弃,因此可作为取整操作;模运算“%”%”表示取余操作。表示取余操作。 例如,求一个变量例如,求一个变量temptemp的的“百、十、个百、十、个”位,分别赋给变量位,分别赋给变量a a、b b、c c的操的操作如下:作如下:a=temp/100%10;a=temp/100%10;/除以除以100100,再对再对1010取余取余b=temp/10%10;b=temp/10%10;/求得求得temptemp的十位的十位c=temp%10;c=temp%10;/求得求

27、得temptemp的个位的个位要在要在LEDLED数码管上显示变量数码管上显示变量temptemp的的“百、十、个百、十、个”位,可直接写作:位,可直接写作:P2=segtemp/100%10;P2=segtemp/100%10;P2=segtemp/10%10;P2=segtemp/10%10;P2=segtemp%10;P2=segtemp%10;其中其中segseg是存放是存放0 09 9段码的数组。段码的数组。任务任务1 简易简易加减计数器加减计数器的设计的设计#include #include unsigned char a;unsigned char code seg=0 xc0,

28、0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/0/09十个数字的共阳型段码十个数字的共阳型段码sbit k1=P10;sbit k2=P12;sbit k3=P14;void delay(unsigned int j)while(j-);display()unsigned char i,wk=0 x01; /wkunsigned char i,wk=0 x01; /wk变量作位控,初始选通右边第变量作位控,初始选通右边第1 1位位unsigned char buf3;unsigned char buf3; / /声明数码管显示字形

29、缓冲数组声明数码管显示字形缓冲数组buf0=sega%10;buf0=sega%10; /a /a的个位的个位buf1=sega/10%10;buf1=sega/10%10; /a /a的十位的十位buf2=sega/100;buf2=sega/100; /a /a的百位,小于的百位,小于999999时可以不对时可以不对1010取余取余独立按键控制数码管加减计数的程序如下:独立按键控制数码管加减计数的程序如下:任务任务1 简易简易加减计数器加减计数器的设计的设计for (i=0;i3;i+)P3=wk; /输出位控输出位控P2=bufi; /依次输出段码依次输出段码delay(50); /延时

30、延时wk=_crol_(wk,1); /位控左移一位位控左移一位P2=0 xff; /熄灭所有数码管(消隐)熄灭所有数码管(消隐)void button() k1=1;if(k1=0)delay(1000);if(k1=0)a+;while(k1=0)display(); k2=1;if(!k2)/如果如果k2为低电平的另一种写示为低电平的另一种写示delay(1000);if(!k2)a-;while(!k2)display(); k3=1;if(k3=0)delay(1000);if(k3=0)a=0;while(k3=0)display();int main()while(1) butt

31、on(); display(); 26任务任务3 方波发生器的设计方波发生器的设计1. 1. 技能要求技能要求 设晶振频率设晶振频率6MHz6MHz。利用单片机定时器。利用单片机定时器T0T0的方式的方式1 1,在,在P3.0P3.0端口上输端口上输出周期为出周期为1ms1ms的方波。的方波。2. 2. 仿真电路图仿真电路图 本任务仿真电路图如图所示。本任务仿真电路图如图所示。P3.0P3.0端口的示波器用于观察波形和计端口的示波器用于观察波形和计算信号频率。图中示波器的每小格为算信号频率。图中示波器的每小格为0.1ms0.1ms,因此信号周期为,因此信号周期为1ms1ms,频率,频率为为1K

32、Hz1KHz。u 操作步骤:操作步骤:u 图中右上角的就是模拟示波器,图中右上角的就是模拟示波器,4 4踪。踪。 仿真时可以出现示波器界面,可以对其操作。仿真时可以出现示波器界面,可以对其操作。 操作方法与一般示波器相同。操作方法与一般示波器相同。u 图中最下部的是个频率计,运行仿真时可以显示测量到的方图中最下部的是个频率计,运行仿真时可以显示测量到的方波的频率值。波的频率值。l 添加这添加这2 2个虚拟仪器的方法是,个虚拟仪器的方法是,在软件左边点击虚拟仪器图标,在软件左边点击虚拟仪器图标,选择第一个就是虚拟示波器,第三个就是频率计。选择第一个就是虚拟示波器,第三个就是频率计。 把虚拟示波器

33、的输入端接到把虚拟示波器的输入端接到P2P2口的任意引脚,虚拟频率计也可口的任意引脚,虚拟频率计也可以将输入端接入以将输入端接入P2P2口任意引脚。口任意引脚。 在这幅图里,采用网络标号的形式接线,看起来图面整洁一点。在这幅图里,采用网络标号的形式接线,看起来图面整洁一点。任务任务3 方波发生器的设计方波发生器的设计采用查询方式处理的程序:采用查询方式处理的程序:# include sbit P3_0=P30;void main()TMOD=0 x01;TL0=0 x06;TH0=0 xff; TR0=1;while (1) while(!TF0) ; TF0=0;P3_0=P3_0;u 频率

34、为频率为1KHz的方波,其周期为的方波,其周期为1/1KHz,即即1ms。要在。要在P3.0端口上输出周期为端口上输出周期为1ms的方波,需要使的方波,需要使P3.0端口每隔端口每隔0.5ms取反取反一次。我们可以通过定时器作一次。我们可以通过定时器作0.5ms定时,定时,定时时间到,在程序中对定时时间到,在程序中对P3.0取反。取反。(1)确定工作模式和工作方式)确定工作模式和工作方式定时器定时器T0工作方式工作方式1时:时:M1M0=01,c/T=0,GATE=0,高,高4位未使用,全部赋位未使用,全部赋0,则,则TMOD=0 x01。(2)计算)计算0.5ms定时定时T0的初值。的初值。

35、晶振频率晶振频率6MHz,则机器周期为,则机器周期为2s,设,设T0的的初值为初值为X,则:,则:X=(2165002)=65036=FF06H因此,因此,TH0的初值为的初值为0 xff,TL0的初值为的初值为0 x06。3. 程序设计与调试程序设计与调试任务任务3 方波发生器的设计方波发生器的设计相关知识:利用定时器实现延时相关知识:利用定时器实现延时 80518051单片机内部有两个单片机内部有两个1616位的可编程定时器位的可编程定时器/ /计数器,称为定计数器,称为定时器时器0 0(T0T0)和定时器)和定时器1 1(T1T1),可编程选择其作为定时器用或),可编程选择其作为定时器用

36、或作为计数器用。作为计数器用。 8051 8051定时器定时器/ /计数器由定时器计数器由定时器T0T0、定时器、定时器T1T1、定时器方式寄、定时器方式寄存器存器TMODTMOD和定时器控制寄存器和定时器控制寄存器TCONTCON组成。组成。TMODTMOD、TCONTCON与与T0T0、T1T1间通过内部总线及逻辑电路连接,间通过内部总线及逻辑电路连接,TMODTMOD用于设置定用于设置定时器的工作方式,时器的工作方式,TCONTCON用于控制定时器的启动与停止。用于控制定时器的启动与停止。 基本思想基本思想:每隔:每隔1ms1ms在程序中对在程序中对P P3 3.0.0取反取反, ,如如

37、此循环不止。此循环不止。任务任务3 方波发生器的设计方波发生器的设计定时器定时器/ /计数器计数器结构结构如如图图6-16-1所示,定时器所示,定时器/ /计数器计数器T0T0由特殊由特殊功能寄存器功能寄存器TH0TH0、TL0TL0构成,定时器构成,定时器/ /计数器计数器T1T1由特殊功能寄由特殊功能寄存器存器TH1TH1、TL1TL1构成。构成。30图6-1 AT89S51单片机的定时器/计数器结构框图 定时器定时器/ /计数器的结构计数器的结构DATE: 2019/11/163141. 1.计数功能计数功能4计数器用于统计从计数器用于统计从TO(P3.4)TO(P3.4)和和Tl(P3

38、.5)Tl(P3.5)两个引脚输入脉两个引脚输入脉冲的负跳变数量。冲的负跳变数量。负跳变是指前一个机器周期采样为负跳变是指前一个机器周期采样为高电平,后一个机器周期为低电平。每输入一个脉冲高电平,后一个机器周期为低电平。每输入一个脉冲负跳变,计数器加负跳变,计数器加1 1。4输入脉冲的高电平与低电平至少应保持一个机器周期输入脉冲的高电平与低电平至少应保持一个机器周期时间,以确保正确采样时间,以确保正确采样,因此输入脉冲的频率最高为,因此输入脉冲的频率最高为单片机内部脉冲频率的一半。如果内部脉冲频率为单片机内部脉冲频率的一半。如果内部脉冲频率为1 1 MHZMHZ,则最高计数频率为,则最高计数频

39、率为0.5 MHz0.5 MHz。定时器定时器/ /计数器的功能计数器的功能DATE: 2019/11/163242. 2.定时功能定时功能4定时功能是单片机通过对内部机器脉冲信号计数定时功能是单片机通过对内部机器脉冲信号计数实现的,计数值乘以机器周期就是相应的时间。实现的,计数值乘以机器周期就是相应的时间。例如,如果单片机采用例如,如果单片机采用12 MHz12 MHz的晶振,则机器内的晶振,则机器内部脉冲频率为部脉冲频率为1 MHz1 MHz,则机器周期为,则机器周期为1us1us,若共计,若共计数数10001000,则用时为,则用时为1ms1ms时间。时间。 定时器定时器/ /计数器的功

40、能计数器的功能 图图5-1 TMOD格式格式8 8位分为两组,位分为两组,高高4 4位位控制控制T1T1,低低4 4位位控制控制T0T0。TMODTMOD各位的功能。各位的功能。(1 1)GATEGATE门控位门控位。0 0:仅由运行控制位仅由运行控制位TRTRx x(x x=0,1=0,1)来控制定时器)来控制定时器/ /计数器运行。计数器运行。1 1:用外中断引脚(用外中断引脚( 或或 )上的电平与运行控制位)上的电平与运行控制位TRTRx x共同来控制定时共同来控制定时器器/ /计数器运行。计数器运行。33 工作方式控制寄存器工作方式控制寄存器TMODTMOD(2)M1、M0工作方式选择

41、位工作方式选择位M1、M0共有4种编码,对应于4种工作方式种工作方式的选择,如表所示。(3)C/ 计数器模式和定时器模式选择位计数器模式和定时器模式选择位34T 工作方式控制寄存器工作方式控制寄存器TMODTMOD 0 0:为定时器工作模式:为定时器工作模式;1 ;1:为计数器工作模式,计数器对外部:为计数器工作模式,计数器对外部输入引脚输入引脚T0T0(P3.4P3.4)或)或T1T1(P3.5P3.5)的外部脉冲(负跳变)计数。)的外部脉冲(负跳变)计数。35 定时器定时器/ /计数器的计数器的4 4种工作方式种工作方式1 1 方式方式0 0M1M1、M0=00M0=00时,被设置为工作方

42、式时,被设置为工作方式0 0,等效逻辑结构框图如图,等效逻辑结构框图如图6-46-4所示(以定时器所示(以定时器/ /计数器计数器T1T1为例,为例,TMOD.5TMOD.5、MOD.4=00MOD.4=00)。)。【训练【训练1】 T0方式方式0定时定时设设fosc=6Mhzfosc=6Mhz,定时器,定时器/ /计数器计数器T0T0以工作方式以工作方式0 0定时定时2ms2ms,编写初始化程序。,编写初始化程序。说明:说明:foscfosc即为晶振频率。即为晶振频率。首先计算计数初值。首先计算计数初值。 根据公式根据公式4-24-2有:有:定时时间定时时间= =(8192-8192-计数初

43、值)计数初值)12/fosc12/fosc计数初值计数初值=8192-=8192-定时时间定时时间fosc/12fosc/12 =8192-2000 =8192-20006Mhz/126Mhz/12 =7192 =7192 =1C18H= =1C18H=1110000011100000 1100011000B B将此二进制数补足将此二进制数补足1313位数(不够位数(不够1313位前面加位前面加0 0,这个,这个例子够了,不用补),将高例子够了,不用补),将高8 8位送给位送给TH0TH0,将低,将低5 5位送位送TL0TL0即可。即可。 定时器定时器/ /计数器的计数器的4 4种工作方式种工

44、作方式1 1 方式方式0 0高高8位是:位是:1110 0000B=E0H, 送给送给TH0低低5位是:位是:11000B=0001 1000B=18H 送给送给TL02 方式方式1当当M1、M0=01时,定时器时,定时器/计数器工作于计数器工作于方式方式1,这时定时器,这时定时器/计数器的等效电路逻辑结构如计数器的等效电路逻辑结构如图图5-3所示。所示。方式方式1和方式和方式0的差别的差别仅仅在于仅仅在于计数器的位数计数器的位数不同,方式不同,方式1为为16位计数器位计数器,由,由THx高高8位和位和TLx低低8位构成(位构成(x= 0,1),),方式方式0则为则为13位计数器,有关控制状态

45、位的含义(位计数器,有关控制状态位的含义(GATE、C/ 、TFx、TRx)与方式)与方式0相同。相同。T 定时器定时器/ /计数器的计数器的4 4种工作方式种工作方式38图图6-3 定时器/计数器方式1逻辑结构框图 定时器定时器/ /计数器的计数器的4 4种工作方式种工作方式DATE: 2019/11/16394实例6-2 欲采用8051单片机控制8个LED同时以1s为周期闪烁,设计电路原理图并编写程序。设置定时/计数器的过程: 1)先初始化工作方式寄存器TMOD 2)为定时/计数器赋初值 3)通过控制寄存器TCON中的TRO或TRl实现启动或停止。 定时器定时器/ /计数器的计数器的4 4

46、种工作方式种工作方式DATE: 2019/11/1640#include / 将8051单片机头文件包含到文件中main(void ) unsigned char counter; /设置无符号字符型变量,存储定时器中断次数。 TMOD=0 x01; /设T0为定时模式,由TR0控制启动和停止,且工作于方式1TH0=(65536-46083)/256; /初始化T0的高8位TL0=(65536-46083)%256; /初始化T0的低8位TF0=0; /初始化定时器溢出标志P0=0 xff; /关闭LED counter=0; /从0开始计数 TR0=1; /启动定时器0 while(1) w

47、hile(TF0=1) /如果定时器溢出 counter+; /计时次数加1 if(counter=20) /计时时间达到1s P0=P0; / P0所有位取反,使LED闪烁 counter=0; /重新从0开始计数 TH0=(65536-46083)/256; /重新初始化T0的高8位 TL0=(65536-46083)%256; /重新初始化T0的低8位 TF0=0; /重新初始化定时器溢出标志 定时器定时器/ /计数器的计数器的4 4种工作方式种工作方式3 方式方式2方式0和方式1的最大特点是计数溢出后,计数器为全0。因此在循环定时或循环计数应用时就存在用指令反复装入存在用指令反复装入计

48、数初值的计数初值的问题问题。这不仅影响定时精度,也给程序设计带来麻烦。方式2就是针对此问题而设置的。当M1、M0为10时,定时器/计数器处于工作方式2,这时定时器/计数器的等效逻辑结构如图图6-6所示所示(以定时器T1为例,x= 1)。 定时器定时器/ /计数器的计数器的4 4种工作方式种工作方式4 方式方式3是为增加一个增加一个8 8位定时器位定时器/ /计数器计数器而设,使AT89S51单片机具有3 3个个定时器/计数器。方式方式3 3只适用于只适用于T0T0,T1T1不能工作在方式不能工作在方式3 3。T1处于方式3时相当于TR1=0,停止计数(此时T1可用来作为串行口波特率产生器)。1

49、 1工作方式工作方式3 3下的下的T0T0TMODTMOD的低的低2 2位为位为1111时,T0的工作方式被选为方式3,各引脚与T0的逻辑关系如图图5-85-8所示所示。定时器/计数器T0T0分为两个独立的分为两个独立的8 8位计数器位计数器TL0TL0和和TH0TH0,TL0使用T0的状态控制位C/ 、GATE、TR0、42T 定时器定时器/ /计数器的计数器的4 4种工作方式种工作方式43图6-6 定时器/计数器方式2逻辑结构框图 定时器定时器/ /计数器的计数器的4 4种工作方式种工作方式TF0 ,而TH0被固定为一个固定为一个8位定时器位定时器(不能作为外部计数模式),并使用定时器T1

50、的状态控制位TR1和TF1,同时占用定时器T1的中断请求源TF1。2T0工作在方式工作在方式3时时T1的各种工作方式的各种工作方式一般情况下,当当T1用作串行口的波特率发生器时,用作串行口的波特率发生器时,T0才工才工作在方式作在方式3。T0处于工作方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。 定时器定时器/ /计数器的计数器的4 4种工作方式种工作方式45图图6-8 定时器/计数器T0方式3的逻辑结构框图 定时器定时器/ /计数器的计数器的4 4种工作方式种工作方式M1、M0工作方式选择位工作方式选择位M1、M0共有4种编码,对应于4种工作方

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

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

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


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

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


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