版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汽车单片机常用延时办法 非精确延时非精确延时 1、for(i = 0; i 100; i+); 2、i = 100; while(i-);精确延时办法精确延时办法 1、利用库函数、利用库函数_nop_(); (需要需要include ) 2、利用定时器进行定时、利用定时器进行定时 变量类型关键字关键字所占字节所占字节取值范围取值范围unsigned char10255“00000000”到到”11111111”unsigned int2065535“00000000 00000000”到到“11111111 11111111”依照国际惯例,我们可以用依照国际惯例,我们可以用uint8 uint
2、16 等缩写来替等缩写来替代,只需要用代,只需要用typedef语句可以完成:语句可以完成:typedef unsigned char uint8;typedef unsigned int uint16;#include /此文件中定义了51的一些特殊功能寄存器void delay(unsigned int i); /声明延时函数main() while(1) P1 = 0 x00; /置P0口为低电平 delay(500); /调用延时程序 P1 = 0 xff; /置P0口为高电平 delay(600); / 调用延时程序 /*延时函数*/void delay(unsigned int i
3、) unsigned char j; for(i; i 0; i-) /循环 600*255 次 for(j = 255; j 0; j-);/*延时函数*/for(i=600; i 0; i-) /循环 600*255 次 for(j = 255; j 0; j-);闪烁的 LED#include#defineucharunsignedchar#defineuintunsignedintsbitLED=P10;/延时voidDelayMS(uintx)uchari;while(x-)for(i=0;i120;i+);/主程序voidmain()while(1)LED=LED;DelayMS(
4、150);流水灯实验 8个个LED发光二极管,分别对应单片机发光二极管,分别对应单片机IO口的口的P0.0到到P0.7口,口,8个单片机个单片机IO口组成一个字节,口组成一个字节,在程序编写过程中,可以直接用在程序编写过程中,可以直接用P0来进行操作。来进行操作。 C语言的语言的8位二进制数代表了位二进制数代表了8个个IO口口 P0 = 0 xfe; P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 1 1 1 1 1 1 1 0C语言运算符 左移左移 X2 左移,最低位填左移,最低位填0补充;右移,最高位填补充;右移,最高位填0补充补充 0 xf0 111000
5、00 01111000 按位取反符号按位取反符号 取反后取反后1变成变成0,0变成变成10 x0F取反后成为取反后成为 0 xF0,即即00001111-11110000#include /此文件中定义了51的一些特殊功能寄存器#include void delayms(unsigned char ms)/ 延时子程序unsigned char i;while(ms-)for(i = 0; i 120; i+);main()unsigned char LED;LED = 0 xfe; /0 xfe = 1111 1110 while(1) P1 = LED; delayms(250); LED
6、 = LED 1; /循环右移1位,点亮下一个LED 为左移位 if(P1 = 0 x00 ) LED = 0 xfe; / 0 xfe = 1111 1110 /*名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include#include#defineucharunsignedchar#defineuintunsignedint/延时voidDelayMS(uintx)uchari;while(x-)for(i=0;i120;i+);/主程序voidmain()P0=0 xfe;while(1)P0=_crol_(P0,1);/P0的值向左循环
7、移动DelayMS(150);8 只 LED 左右来回点亮#include#include#defineucharunsignedchar#defineuintunsignedint/延时voidDelayMS(uintx)uchari;while(x-)for(i=0;i120;i+);/主程序voidmain()uchari;P2=0 xfe;while(1)for(i=0;i7;i+)P2=_crol_(P2,1);/P2的值向左循环移动DelayMS(150);for(i=0;i7;i+)P2=_cror_(P2,1);/P2的值向右循环移动DelayMS(150);#include
8、void delay(unsigned int i); /声明延时函数char LED;main() unsigned char i; while (1) LED = 0 xfe; for (i = 0 ;i 8 ; i+) P2 = LED; delay(500); LED = LED 1; / 左移 LED = LED | 0 x01; / 移位后,后面的位为高电平 if (LED = 0 x7f) break; /提前退出 FOR 循环 见下页 for (i = 0 ;i 1; / 右移 LED = LED | 0 x80; / 移位后,后面的位为高电平 /*延时函数*/void del
9、ay(unsigned int i) unsigned char j; for(i; i 0; i-) for(j = 255; j 0; j-);数码管数码管真值表 根据单片机连接电路,可以计算出根据单片机连接电路,可以计算出数码管的真值表数码管的真值表: P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 dp g f e d c b a 1 1 1 1 1 0 0 1 P0 = 0 xF9;数码管真值表根据单片机连接电路,计算出数码管的真值表根据单片机连接电路,计算出数码管的真值表 0 1 2 3 4 5 0 xc0 0 xf9 0 xa4 0 xb0 0 x
10、99 0 x92 6 7 8 9 A b0 x82 0 xf8 0 x80 0 x90 0 x88 0 x83 C d E F0 xa7 0 xa1 0 x86 0 x8e 中断系统中断系统3.1 80C51的中断系统的中断系统 3.1.1 80C513.1.1 80C51的中断系统结构的中断系统结构一、中断的概念一、中断的概念 CPUCPU在处理某一事件在处理某一事件A A时,发生了另一事件时,发生了另一事件B B请求请求CPUCPU迅速去处理(迅速去处理(中断发生中断发生);); CPUCPU暂时中断当前的工作,转去处理事件暂时中断当前的工作,转去处理事件B B(中断响应和中断服务中断响应
11、和中断服务);); 待待CPUCPU将事件将事件B B处理完毕后,再回到原来事处理完毕后,再回到原来事件件A A被中断的地方继续处理事件被中断的地方继续处理事件A A(中断返中断返回回),这一过程称为),这一过程称为中断中断 。MCS-51单片机的中断系统结构执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回引起引起CPU中断的根源,称为中断的根源,称为中断源中断源。中断源向。中断源向CPU提出的提出的中断请求。中断请求。CPU暂时中断原来的事务暂时中断原来的事务A,转去处理事件,转去处理事件B。对。对事件事件B处理完毕后,再回到原来被中断的地方(即处理完毕后,再回到原
12、来被中断的地方(即断点断点),称),称为中断返回。实现上述中断功能的部件称为为中断返回。实现上述中断功能的部件称为中断系统中断系统(中断(中断机构)。机构)。 随着计算机技术的应用,人们发现中断技随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速术不仅解决了快速主机与慢速I/O设备的数据设备的数据传送问题,而且还具有如下优点:传送问题,而且还具有如下优点:分时操作分时操作。CPU可以分时为多个可以分时为多个I/O设备设备服务,提高了计算机的利用率;服务,提高了计算机的利用率;实时响应实时响应。CPU能够及时处理应用系统的能够及时处理应用系统的随机事件,系统的实时性大大增强;随机事件
13、,系统的实时性大大增强;可靠性高可靠性高。CPU具有处理设备故障及掉电具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。等突发性事件能力,从而使系统可靠性提高。80C51中断系统的结构中断系统的结构 80C51的中断系统有的中断系统有5个中断源个中断源(8052有 6个) ,2个优先级,可实现二级中断嵌套个优先级,可实现二级中断嵌套 。 1 1、(、(P3.2P3.2)可由)可由IT0(TCON.0)IT0(TCON.0)选择其为低电平选择其为低电平有效还是下降沿有效。当有效还是下降沿有效。当CPUCPU检测到检测到P3.2P3.2引脚上引脚上出现有效的中断信号时,中断标志出现有效
14、的中断信号时,中断标志IE0(TCON.1)IE0(TCON.1)置置1 1,向,向CPUCPU申请中断。申请中断。 2 2、(P3.3(P3.3)可由)可由IT1(TCON.2)IT1(TCON.2)选择其为低电平选择其为低电平有效还是下降沿有效。当有效还是下降沿有效。当CPUCPU检测到检测到P3.3P3.3引脚上引脚上出现有效的中断信号时,中断标志出现有效的中断信号时,中断标志IE1(TCON.3)IE1(TCON.3)置置1,1,向向CPUCPU申请中断。申请中断。 3 3、TF0TF0(TCON.5TCON.5),片内定时),片内定时/ /计数器计数器T0T0溢出中断请求标志。当定时
15、溢出中断请求标志。当定时/ /计数器计数器T0T0发生发生溢出时,置位溢出时,置位TF0TF0,并向,并向CPUCPU申请中断。申请中断。 4 4、TF1TF1(TCON.7TCON.7),片内定时),片内定时/ /计数器计数器T1T1溢出中断请求标志。当定时溢出中断请求标志。当定时/ /计数器计数器T1T1发生发生溢出时,置位溢出时,置位TF1TF1,并向,并向CPUCPU申请中断。申请中断。 5 5、RIRI(SCON.0SCON.0)或)或TITI(SCON.1SCON.1),串行口),串行口中断请求标志。当串行口接收完一帧串行数中断请求标志。当串行口接收完一帧串行数据时置位据时置位RI
16、RI或当串行口发送完一帧串行数据或当串行口发送完一帧串行数据时置位时置位TITI,向,向CPUCPU申请中断。申请中断。二、中断请求标志二、中断请求标志1、TCON的中断标志的中断标志IT0(TCON.0),外部中断),外部中断0触发方式控制位。触发方式控制位。当当IT0=0时,为电平触发方式。时,为电平触发方式。当当IT0=1时,为边沿触发方式(下降沿有效)。时,为边沿触发方式(下降沿有效)。IE0(TCON.1),外部中断),外部中断0中断请求标志位。中断请求标志位。IT1(TCON.2),外部中断),外部中断1触发方式控制位。触发方式控制位。IE1(TCON.3),外部中断),外部中断1
17、中断请求标志位。中断请求标志位。TF0(TCON.5),定时),定时/计数器计数器T0溢出中断请求标志位。溢出中断请求标志位。TF1(TCON.7),定时),定时/计数器计数器T1溢出中断请求标志位。溢出中断请求标志位。2、SCON的中断标志的中断标志RI(SCON.0),串行口接收中断标志位。当允),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由许串行口接收数据时,每接收完一个串行帧,由硬件置位硬件置位RI。注意,。注意,RI必须由软件清除。必须由软件清除。TI(SCON.1),串行口发送中断标志位。当),串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器
18、时,将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬就启动了发送过程。每发送完一个串行帧,由硬件置位件置位TI。CPU响应中断时,不能自动清除响应中断时,不能自动清除TI,TI必须由软件清除。必须由软件清除。一、中断允许控制一、中断允许控制 CPU对中断系统所有中断以及某个中断源的开放和屏蔽对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器是由中断允许寄存器IE控制的。控制的。3.1.3 80C513.1.3 80C51中断的控制中断的控制EX0(IE.0),外部中断,外部中断0允许位;允许位;ET0(IE.1),定时,定时/计数器计数器T0中断允许
19、位;中断允许位; EX1(IE.2),外部中断,外部中断0允许位;允许位;ET1(IE.3),定时,定时/计数器计数器T1中断允许位;中断允许位;ES(IE.4),串行口中断允许位;,串行口中断允许位;EA (IE.7), CPU中断允许(总允许)位。中断允许(总允许)位。二、中断优先级控制二、中断优先级控制 80C51单片机有两个中断优先级,即可实现二级单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器优先级寄存器IP中的相应位的状态来规定的中的相应位的状态来规定的 。PX0(IP.0),外部中断),外
20、部中断0优先级设定位;优先级设定位;PT0(IP.1),定时),定时/计数器计数器T0优先级设定位;优先级设定位;PX1(IP.2),外部中断),外部中断0优先级设定位;优先级设定位;PT1(IP.3),定时),定时/计数器计数器T1优先级设定位;优先级设定位;PS (IP.4),串行口优先级设定位;),串行口优先级设定位;PT2 (IP.5) ,定时,定时/计数器计数器T2优先级设定位。优先级设定位。PX0(IPH.0),外部中断),外部中断0优先级设定位;优先级设定位;PT0(IPH.1),定时),定时/计数器计数器T0优先级设定位;优先级设定位;PX1(IPH.2),外部中断),外部中断
21、0优先级设定位;优先级设定位;PT1(IPH.3),定时),定时/计数器计数器T1优先级设定位;优先级设定位;PS (IPH.4),串行口优先级设定位;),串行口优先级设定位;PT2 (IPH.5) ,定时,定时/计数器计数器T2优先级设定位。优先级设定位。而而80C52单片机有四个中断优先级,即可实现四级单片机有四个中断优先级,即可实现四级中断服务嵌套。每个中断源的中断优先级由中断优中断服务嵌套。每个中断源的中断优先级由中断优先级寄存器先级寄存器IP和和IPH中的相应位的状态来规定的中的相应位的状态来规定的。 同一优先级中的中断申请不止一个时,则有中同一优先级中的中断申请不止一个时,则有中断
22、优先权排队问题。同一优先级的中断优先权排队,断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如由中断系统硬件确定的自然优先级形成,其排列如所示:所示:80C51单片机的中断优先级有三条原则:单片机的中断优先级有三条原则:CPU同时接收到几个中断时,同时接收到几个中断时,首先响应优先级别最首先响应优先级别最高的中断请求高的中断请求。正在进行的中断过程正在进行的中断过程不能被新的同级或低优先级的不能被新的同级或低优先级的中断请求所中断中断请求所中断。正在进行的低优先级中断服务,正在进行的低优先级中断服务,能被高优先级中断能被高优先级中断请求所中断请求所中断。
23、 为了实现上述后两条原则,为了实现上述后两条原则,中断系统内部设有两中断系统内部设有两个用户不能寻址的优先级状态触发器。个用户不能寻址的优先级状态触发器。其中一个置其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置的中断请求;另一个置1,表示正在响应低优先级中,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。断,它将阻断后来所有的低优先级中断请求。3.2 80C51单片机中断处理过程单片机中断处理过程 中断响应条件中断响应条件 中断源有中断请求;中断源有中断请求; 此中断源的中断允许位为此中断源的中断允许位为
24、1; CPU开中断(即开中断(即EA=1)。)。以上三条同时满足时,以上三条同时满足时,CPU才有可能响应才有可能响应中断中断。3.2.1 3.2.1 中断响应条件和时间中断响应条件和时间#includesbitled=P10;Voidmain()EA=1;EX0=1;IT0=1;While(1);Voidint0()interrupt0Led=led;定时器3.3 80C51的定时的定时/计数器计数器 实现定时功能,实现定时功能,比较方便的办法是利用单比较方便的办法是利用单片机内部的定时片机内部的定时/计数器计数器。也可以采用下面三。也可以采用下面三种方法:种方法:软件定时软件定时:软件定时
25、不占用硬件资源,但占用了:软件定时不占用硬件资源,但占用了CPU时间,降低了时间,降低了CPU的利用率。的利用率。采用时基电路定时采用时基电路定时:例如采用:例如采用555电路,外接必要电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。件进行控制和修改,即不可编程。采用可编程芯片定时采用可编程芯片定时:这种定时芯片的定时值及定:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时时范围很容易用软件来确定和修
26、改,此种芯片定时功能强,使用灵活。在单片机的定时功能强,使用灵活。在单片机的定时/计数器不够用计数器不够用时,可以考虑进行扩展。时,可以考虑进行扩展。3.3.1 3.3.1 定时定时/ /计数器的结构和工作原理计数器的结构和工作原理 一、定时一、定时/计数器的结构计数器的结构 定时定时/计数器的实质是加计数器的实质是加1计数器(计数器(16位),由高位),由高8位和低位和低8位两个寄存器组成。位两个寄存器组成。TMOD是定时是定时/计数器的工作方式寄存计数器的工作方式寄存器,确定工作方式和功能;器,确定工作方式和功能;TCON是控制寄存器,控制是控制寄存器,控制T0、T1的启动和停止及设置溢出
27、标志的启动和停止及设置溢出标志。二、定时二、定时/计数器的工作原理计数器的工作原理 加加1计数器计数器输入的计数脉冲有两个来源输入的计数脉冲有两个来源,一个是由一个是由系统的时钟振荡器输出脉冲经系统的时钟振荡器输出脉冲经12分频后送来;一个分频后送来;一个是是T0或或T1引脚输入的外部脉冲源。每来一个脉冲引脚输入的外部脉冲源。每来一个脉冲计数器加计数器加1,当加到计数器为全,当加到计数器为全1时,再输入一个脉时,再输入一个脉冲就使计数器回零,且计数器的溢出使冲就使计数器回零,且计数器的溢出使TCON中中TF0或或TF1置置1,向,向CPU发出中断请求(定时发出中断请求(定时/计数计数器中断允许
28、时)。如果定时器中断允许时)。如果定时/计数器工作于定时模计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。则表示计数值已满。 可见,由溢出时计数器的值减去计数初值才是加可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值计数器的计数值。 设置为定时器模式时设置为定时器模式时,加,加1计数器是对内部机器周期计数器是对内部机器周期计数(计数(1个机器周期等于个机器周期等于12个振荡周期,即计数频率个振荡周期,即计数频率为晶振频率的为晶振频率的1/12)。)。计数值计数值N乘以机器周期乘以机器周期Tcy就就是定时时间是
29、定时时间t 。设置为设置为计数器模式时计数器模式时,外部事件计数脉冲由,外部事件计数脉冲由T0或或T1引脚输入到计数器。在每个机器周期的引脚输入到计数器。在每个机器周期的S5P2期间采期间采样样T0、T1引脚电平。当某周期采样到一高电平输入,引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加而下一周期又采样到一低电平时,则计数器加1,更,更新的计数值在下一个机器周期的新的计数值在下一个机器周期的S3P1期间装入计数期间装入计数器。由于检测一个从器。由于检测一个从1到到0的下降沿需要的下降沿需要2个机器周期,个机器周期,因此要求被采样的电平至少要维持一个机器周期。当因
30、此要求被采样的电平至少要维持一个机器周期。当晶振频率为晶振频率为12MHz时时,最高计数频率不超过,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于即计数脉冲的周期要大于2 s。 3.3.2 定时定时/计数器的控制计数器的控制 80C51单片机定时单片机定时/计数器的工作由两个特殊功计数器的工作由两个特殊功能寄存器控制。能寄存器控制。TMOD用于设置其工作方式;用于设置其工作方式;TCON用于控制其启动和中断申请。用于控制其启动和中断申请。一、工作方式寄存器一、工作方式寄存器TMOD 工作方式寄存器工作方式寄存器TMOD用于设置定时用于设置定时/计数器的计数器的工作方式,低四位用于工作方
31、式,低四位用于T0,高四位用于,高四位用于T1。其格式。其格式如下:如下:GATE:门控位。:门控位。GATE0时,只要用软件使时,只要用软件使TCON中的中的TR0或或TR1为为1,就可以启动定时,就可以启动定时/计数器工作;计数器工作;GATA1时,时,要用软件使要用软件使TR0或或TR1为为1,同时外部中断引脚或也为高电,同时外部中断引脚或也为高电平时,才能启动定时平时,才能启动定时/计数器工作。即此时定时器的启动多计数器工作。即此时定时器的启动多了一条件。了一条件。 :定时定时/计数模式选择位。计数模式选择位。 0为定时模式;为定时模式; =1为计数模式。为计数模式。M1M0:工作方式
32、设置位。定时:工作方式设置位。定时/计数器有四种工作方式,计数器有四种工作方式,由由M1M0进行设置。进行设置。C/TC/TC/T 二、控制寄存器二、控制寄存器TCON TCON的低的低4位用于控制外部中断位用于控制外部中断,已在前面介绍。已在前面介绍。TCON的高的高4位用于位用于控制定时控制定时/计数器的启动和中断申请。其格式如下:计数器的启动和中断申请。其格式如下:TF1(TCON.7):):T1溢出中断请求标志位。溢出中断请求标志位。T1计数溢出时由硬件自计数溢出时由硬件自动置动置TF1为为1。CPU响应中断后响应中断后TF1由硬件自动清由硬件自动清0。T1工作时,工作时,CPU可随时
33、查询可随时查询TF1的状态。所以,的状态。所以,TF1可用作查询测试的标志。可用作查询测试的标志。TF1也可也可以用软件置以用软件置1或清或清0,同硬件置,同硬件置1或清或清0的效果一样。的效果一样。TR1(TCON.6):):T1运行控制位。运行控制位。TR1置置1时,时,T1开始工作;开始工作;TR1置置0时,时,T1停止工作。停止工作。TR1由软件置由软件置1或清或清0。所以,用软件可控制定时。所以,用软件可控制定时/计数器的启动与停止。计数器的启动与停止。TF0(TCON.5):):T0溢出中断请求标志位,其功能与溢出中断请求标志位,其功能与TF1类同。类同。TR0(TCON.4):)
34、:T0运行控制位,其功能与运行控制位,其功能与TR1类同。类同。 3.3.3 定时定时/计数器的工作方式计数器的工作方式 一、方式一、方式0 方式方式0为为13位计数位计数,由,由TL0的低的低5位(高位(高3位未用)和位未用)和TH0的的8位组成。位组成。TL0的低的低5位溢出时向位溢出时向TH0进位,进位,TH0溢出时,溢出时,置位置位TCON中的中的TF0标志,向标志,向CPU发出中断请求。发出中断请求。定时器模式时定时器模式时有有:Nt/ Tcy 计数初值计算的公式为:计数初值计算的公式为:定时器的初值还可以采用计数个数直接取补法获得定时器的初值还可以采用计数个数直接取补法获得。计数模
35、式时,计数脉冲是计数模式时,计数脉冲是T0引脚上的外部脉冲。引脚上的外部脉冲。13X=2 -N门控位门控位GATE具有特殊的作用。当具有特殊的作用。当GATE=0时,经反相后使时,经反相后使或门输出为或门输出为1,此时仅由,此时仅由TR0控制与门的开启,与门输出控制与门的开启,与门输出1时,控制开关接通,计数开始;时,控制开关接通,计数开始;当当GATE=1时时,由外中断引,由外中断引脚信号控制或门的输出,此时控制脚信号控制或门的输出,此时控制与门的开启由外中断引与门的开启由外中断引脚信号和脚信号和TR0共同控制共同控制。当。当TR0=1时,外中断引脚信号引脚时,外中断引脚信号引脚的的高电平启
36、动计数高电平启动计数,外中断引脚信号引脚的,外中断引脚信号引脚的低电平停止计低电平停止计数数。这种方式常用来测量外中断引脚上正脉冲的宽度。这种方式常用来测量外中断引脚上正脉冲的宽度。 16X=2 -N二、方式二、方式1 方式方式1的计数位数是的计数位数是16位,由位,由TL0作为低作为低8位、位、TH0作为高作为高8位,组成了位,组成了16位加位加1计数器计数器 。计数个数与计数初值的关系为:计数个数与计数初值的关系为: 8X=2 -N三、方式三、方式2 方式方式2为自动重装初值的为自动重装初值的8位计数方式。位计数方式。工作方式2特别适合于用作较精确的脉冲信号发生器。计数个数与计数初值的关系
37、为计数个数与计数初值的关系为: 四、方式四、方式3 方式方式3只适用于定时只适用于定时/计数器计数器T0,定时器定时器T1处于方式处于方式3时相当时相当于于TR1=0,停止计数。,停止计数。工作方式工作方式3将将T0分成为两个独立的分成为两个独立的8位计数器位计数器TL0和和TH0。时钟周期和机器周期 时钟周期时钟周期T是时序中最小的时间单位。具是时序中最小的时间单位。具体计算就是体计算就是1/时钟源。我们开发板上单时钟源。我们开发板上单片机使用的时钟周期片机使用的时钟周期= 1/11059200 s。 机器周期机器周期CPU完成一个操作的最短时间。完成一个操作的最短时间。 普通普通51一个机
38、器周期是一个机器周期是12个时钟周期。个时钟周期。定时器和计数器 2个定时器个定时器/计数器:定时器计数器:定时器0和定时器和定时器1 定时器:每经过一个机器周期,寄存器加定时器:每经过一个机器周期,寄存器加1。因此,可以将机器周期看作为计数周期。因此,可以将机器周期看作为计数周期。 计数器:后续课程介绍。计数器:后续课程介绍。 特殊功能寄存器特殊功能寄存器TCON TF:定时器溢出标志。溢出时,该位自动置:定时器溢出标志。溢出时,该位自动置1。中断执行时硬件清零,或者软件清零。中断执行时硬件清零,或者软件清零。 TR:定时器运行控制位,置:定时器运行控制位,置1开始计时,清开始计时,清0停止
39、停止计时。计时。位位76543210符符号号TF1TR1TF0TR0IE1IT1IE0IT0定时器的特殊功能寄存器 TMOD T1和和T0分别代表单片机两个计数器分别代表单片机两个计数器 GATE:该位被置位时为门控位。仅当该位被置位时为门控位。仅当TR1被置位并且被置位并且INT1脚为高,定时器开始计数。当该位被清零时,只要脚为高,定时器开始计数。当该位被清零时,只要TR1被置位,定时器被置位,定时器1马上开始计数。马上开始计数。 C/T:该位为该位为0的时候,用作定时器,该位为的时候,用作定时器,该位为1的时候,用的时候,用做计数器。做计数器。位位76543210符号符号T1GATET1C
40、/TT1M1T1M0T0GATET0C/TT0M1T0M0M1,M0 00 01 10 11 模式模式0 模式模式1 模式模式2 模式模式3 模式模式1:16位的计数器。(位的计数器。(TH1,TL1) 模式模式2:自动装载:自动装载8位计数器。主要应用在串口波位计数器。主要应用在串口波特率发生器。特率发生器。 模式模式0&模式模式3:几乎不用。:几乎不用。 TCON和和TMOD复位后都会自动变成复位后都会自动变成0 x00. 12 * (65536- x)/11059200 = 0.001使用定时器的方法 第一:设置特殊功能寄存器第一:设置特殊功能寄存器TMOD,使,使之工作在需求的
41、状态。之工作在需求的状态。 第二:设置计数寄存器的初值,精确设第二:设置计数寄存器的初值,精确设定好定时时间。定好定时时间。 第三:设置特殊功能寄存器第三:设置特殊功能寄存器TCON,通过,通过打开打开TR来让定时器进行工作。来让定时器进行工作。(也可设置也可设置为中断模式为中断模式) TH1 = 0 xfc; TL1 = 0X66; 12(65536 x) /11059200 = 0.02s#include #defineuintunsignedintsbit LED=P10;main()uint counter;TMOD = 0 x01;TH0 = 0 xB8;TL0 = 0 x00;TR
42、0 = 1;while(1) if(1 = TF0) TF0 = 0; TH0 = 0 xB8;TL0 = 0 x00; counter+; if(50 = counter) counter = 0; LED = LED; 数组 数组是一组变量,这组变量需要满足三个条件:数组是一组变量,这组变量需要满足三个条件: 1、具有相同的数据类型、具有相同的数据类型 2、具有相同的名字、具有相同的名字 3、在存储器中是被连续存放的、在存储器中是被连续存放的 a5 = 1, 2 , 3, 4, 5 a = 1, 2 , 3, 4, 5 a0 = 1; a1 = 2; a2 = 3; a3 = 4; a4
43、= 5;单只数码管循环显示单只数码管循环显示 09/*说明:主程序中的循环语句反复将09的段码送至P0口,使数字09循环显示*/#include#include#defineucharunsignedchar#defineuintunsignedintucharcodeDSY_CODE=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff;/延时voidDelayMS(uintx)uchart;while(x-)for(t=0;t120;t+);/主程序voidmain()uchari=0;P0=0 x00;whil
44、e(1)P0=DSY_CODEi;i=(i+1)%10;DelayMS(300);#include#include#defineucharunsignedchar#defineuintunsignedintucharcodeDSY_CODE=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff;/主程序main()uint counter,I;TMOD = 0 x01;TH0 = 0 xB8; TL0 = 0 x00;TR0 = 1;while(1) if(1 = TF0) TF0 = 0; TH0 = 0 xB8;
45、TL0 = 0 x00; counter+; if(50 = counter) P0 = numberi+;counter = 0; if(i = 11) i = 0; 动态显示 动态显示:动态显示: 轮流向各位数码管送入数据,轮流向各位数码管送入数据,并且将数据输入速度控制在人肉眼并且将数据输入速度控制在人肉眼所分辨不出来的范围内,利用发光所分辨不出来的范围内,利用发光二极管的余晖让人的视觉能够识别二极管的余晖让人的视觉能够识别的过程。的过程。8 只数码管滚动显示数字、字符只数码管滚动显示数字、字符/*名称:8 只数码管滚动显示单个数字只数码管滚动显示单个数字说明:数码管从左到右依次滚动显示
46、07,程序通过每次仅循环选通一只数码管*/#include#include#defineucharunsignedchar#defineuintunsignedintucharcodeDSY_CODE=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/延时voidDelayMS(uintx)uchart;while(x-)for(t=0;t120;t+);/主程序voidmain()uchari,wei=0 x80;while(1)for(i=0;i0;i-) P2=0 xff;k=_crol_(k,1);P0=DSY_C
47、ODE8-i;P2=k;DelayMS(300);/主程序voidmain()uchari,wei=0 x80;while(1)for(i=0;i8;i+)P2=0 xff;/关闭显示wei=_crol_(wei,1);P0=DSY_CODEi;发送数字段码P2=wei;/发送位码DelayMS(300); 1、键盘的分类、键盘的分类 键盘分编码键盘和非编码键盘。键盘上闭键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算生键编码号或键值的称为编码键盘,如计算机键盘机键盘. 而靠软件编程来识别的称
48、为非编码键盘;而靠软件编程来识别的称为非编码键盘; 在单片机组成的各种系统中,用的最多的是在单片机组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的。非编码键盘。也有用到编码键盘的。 非编码键盘有分为:独立键盘和行列式(又非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。称为矩阵式)键盘。独立式按键矩阵按键K99K10AK15FP10P11P12P13P14P15P16P17EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0
49、435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10VCC40GND20U189C52P10P11P12P13P14P15P16P17K00K11K22K33K55K66K77K88K44K11BK12CK13DK14E按键抖动硬件去抖软件去抖 检测出键闭合后执行一个延时程序,产生检测出键闭合后执行一个延时程序,产生5ms10ms的延时,让前沿抖动消失后再的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。电平,
50、则确认为真正有键按下。当按键按下时显示当按键按下时显示“1”#include#defineucharunsignedchar#defineuintunsignedintucharcodetable=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff;sbit KEY1=P7;void delay(uint x)uchar i;while(x-)for(i=0;i110;i+);void main()while(1)if(KEY1=0)delay(10);if(KEY1=0);P0=table1;当按键按下时显示数字
51、加当按键按下时显示数字加1#include#defineucharunsignedchar#defineuintunsignedintucharcodetable=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff;sbit KEY1=P17;void delay(uint x)uchar i;while(x-)for(i=0;i110;i+);void main()uchar num=0;while(1)if(KEY1=0)delay(10);if(KEY1=0);num+;if(num=9) num=0;whi
52、le(!KEY1);P0=tablenum;综合训练综合训练 按下第一个键数字加一,按下第二个键数字减一,按下第三个键数字清零,按下第四个键数字到最大值。#include#defineucharunsignedchar#defineuintunsignedintucharcodetable=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff;sbit key1=P14;sbit key2=P15;sbit key3=P16;sbit key4=P17;sbit dula=P26;sbit wela=P27;ucha
53、r num;void delay(uint x)uchar i;while(x-)for(i=0;i110;i+);voidkeyscan()if(key1=0)delay(10);if(key1=0)num+;if(num=99)num=0;while(!key1);if(key2=0)delay(10);if(key2=0)if(num=0)num=99;num-;while(!key2);if(key3=0)delay(10);if(key3=0)num=0;while(!key3);if(key4=0)delay(10);if(key4=0)num=99;while(!key4);vo
54、id disp(uchar num1)uchar shi,ge;shi=num1/10;ge=num1%10;dula=1;P0=tableshi;dula=0;P0=0 xff;/消影wela=1;P0=0 xfe;wela=0;delay(3);dula=1P0=tablege;dula=0;P0=0 xff;/消影wela=1;P0=0 xfe;wela=0;delay(3);voidmain()while(1)keyscan();disp(num);K1-K4 控制LED移位#include#include#defineucharunsignedchar#defineuintunsig
55、nedintvoidDelayMS(uintx)uchari;while(x-)for(i=200;i0;i-);voidMove_LED()if(P1&=0 x10)=0)P0=_cror_(P0,1);elseif(P1&=0 x20)=0)P0=_crol_(P0,1);elseif(P1&=0 x40)=0)P2=_cror_(P2,1);elseif(P1&=0 x80)=0)P2=_crol_(P2,1);voidmain()ucharRecent_Key=0 xff;P0=0 xfe;P1=0 xfe;P2=0 xfe;while(1)if(Rec
56、ent_Key!=P1)Recent_Key=P1;Move_LED();DelayMS(10);K1-K4键状态显示#include#defineucharunsignedchar#defineuintunsignedintsbitLED1=P00;sbitLED2=P01;sbitLED3=P02;sbitLED4=P03;sbitK1=P10;sbitK2=P11;sbitK3=P12;sbitK4=P13;voidDelayMS(uintx)uchart;while(x-)for(t=120;t0;t-);voidmain()P0=0 xff;P1=0 xff;while(1)LED1
57、=K1;LED2=K2;if(K3=0)while(K3=0)LED3=LED3;if(K4=0)while(K4=0)LED4=LED4;DelayMS(10);K1-K4分组控制LED#include#defineucharunsignedchar#defineuintunsignedintvoidDelayMS(uintx)uchart;while(x-)for(t=0;t4;k=0;while(Key_State!=0)k+;Key_State=1;switch(k)case1:if(P0=0 x00)P0=0 xff;P0=1;DelayMS(200);break;case2:P0=
58、0 xf0;break;case3:P0=0 x0f;break;case4:P0=0 xff;K1-K4控制数码管移位显示#include#defineucharunsignedchar#defineuintunsignedintucharcodeDSY_CODE=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff;ucharcodeDSY_Index=0 x80,0 x40,0 x20,0 x10,0 x08,0 x04,0 x02,0 x01;ucharDisplay_Buffer=0,10,10,10,10
59、,10,10,10;voidDelayMS(uintx)uchart;while(x-)for(t=0;t120;t+);voidShow_Count_ON_DSY()uchari;for(i=0;i8)Key_Counts=8;Display_BufferKey_Counts-1=Key_Counts;break;case0 xfd:if(Key_Counts0)Display_Buffer-Key_Counts=10;if(Key_Counts=0)Display_Buffer0=0;break;case0 xfb:Display_Buffer0=0;for(i=1;i8;i+)Displ
60、ay_Bufferi=10;Key_Counts=0;while(P1!=0 xff)Show_Count_ON_DSY();K1-K4控制数码管加减演示#include#include#defineucharunsignedchar#defineuintunsignedintucharcodeDSY_CODE=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff;ucharNum_Buffer=0,0,0;ucharKey_Code,Key_Counts=0;voidDelayMS(uintx)uchart;while(x-)for(t=0;t120;t+);voidSh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拖拉机零部件国产化趋势-洞察分析
- 通信设备维修人员职业素养提升-洞察分析
- 土卫六大气化学-洞察分析
- 血塞通注射液市场推广策略-洞察分析
- 响应式页面优化-洞察分析
- 胸膜炎的微创手术治疗-洞察分析
- 星系磁场与暗物质分布-洞察分析
- 药品包装设备创新-洞察分析
- 网络安全风险评估-第12篇-洞察分析
- 腺体分泌与肠道菌群研究-洞察分析
- 2025届高考语文复习:散文的结构与行文思路 课件
- 审计工作述职报告
- 广东省广州海珠区2023-2024学年八年级上学期期末物理试卷(含答案)
- 中国通 用技术集团招聘笔试题库
- 【MOOC】工程材料学-华中科技大学 中国大学慕课MOOC答案
- 银行贷款保证合同范本
- 《汽车胶粘剂》课件
- 手绘pop教学课件
- 2024脑血管病指南
- 企业三年营销规划
- 2024年社区工作者考试试题库
评论
0/150
提交评论