版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 刘燎原刘燎原 江苏建筑职业技术学院江苏建筑职业技术学院回想:回想:u一动态显示一动态显示u1.什么是动态显示什么是动态显示u2.动态显示步骤动态显示步骤u 1个数码管步骤:个数码管步骤:u 1送段值送段值u 2送位选公共端送位选公共端u 3延时延时u 4封锁封锁 u3.加驱动方法加驱动方法u 三极管三极管u 锁存器锁存器实验总结:实验总结:u 实验板数码管动态显示实验板数码管动态显示假设要求第一个数码管先显示百位例如假设要求第一个数码管先显示百位例如2,那么:,那么:1.送段值:送段值:P0输出段值输出段值5BH,P2.6=1数据进入数据进入, P2.6=0数据锁存数据锁存,段值送段值送入数
2、码管的段值端;入数码管的段值端;2.送位选:送位选:P0输出位选值输出位选值FEH,P2.7=1 数据进入数据进入, P2.7=0数据锁存数据锁存,位位选值送入数码管的位选端;选值送入数码管的位选端;3.延时延时其他两个数码管类似这三个步骤。其他两个数码管类似这三个步骤。回想:回想:u二中断二中断u1.中断源中断源u 5个个u2.中断优先级中断优先级u 2个个u 3.外部中断外部中断u P3.2,P3.3u 4.外部中断存放器外部中断存放器u IE:EA,EX0,ET0,EX1,ET1,ESu TCON:IE0,IT0,IE1,IT1u IP:PX0,PT0,PX1,PT1,PS u 中断程序
3、如何编写?中断程序如何编写?uVoid main uu 中断初始化;中断初始化;u 一边做平常的任务,一边等待中断来;一边做平常的任务,一边等待中断来;uuVoid 名字名字 interrupt 0/3uu 要求要求CPU做的事情;做的事情;u 工程四工程四 倒计时倒计时 -单片机定时计数器单片机定时计数器上节课复习上节课复习举出生活中中断的例子。举出生活中中断的例子。中断过程包括哪几个步骤?中断过程包括哪几个步骤? 中断恳求、中断呼应、中断处置、中断前往中断恳求、中断呼应、中断处置、中断前往单片机内有哪个中断源。单片机内有哪个中断源。 外部中断:外部中断:2 内部中断:内部中断:3 定时器/
4、计数器导入:单片机运用系统中定时计数的需求: 如用单片机控制的打铃器、空调的定时开关、啤酒自动消费线上对酒瓶的计数安装等。 以实现定时控制; 以实现对外界事件进展计数。 用到定时/计数 实现定时/实现方式:1.软件定时;延时程序占用CPU2.不可编程硬件定时555;3.可编程定时 8253,单片机定时/计数器 AT89S51内部有两个定时/计数器 定时计数器究竟是什么?一、定时一、定时/计数器概述计数器概述1.中心中心 定时定时/计数器的中心部件是计数器的中心部件是16位二进制加位二进制加1计数器计数器(TH0、TL0或或TH1、TL1) 。 特性:特性:1每来一个计数脉冲信号,每来一个计数脉
5、冲信号,T0或或T1会在原来计数值或初值的根会在原来计数值或初值的根底上加底上加1.2直到计满,再来一脉冲,计数值清直到计满,再来一脉冲,计数值清0,会发生溢出。,会发生溢出。 向向CPU发出中断恳求,通知发出中断恳求,通知CPU这次计数终了。再开场下一轮计数。这次计数终了。再开场下一轮计数。 这就像闹钟定时的时间一到,闹钟就会响一样。这就像闹钟定时的时间一到,闹钟就会响一样。2.计数和定时有什么不同计数和定时有什么不同 类比生活中计数,定时定时类比生活中计数,定时定时1分钟分钟 所以定时也是一种计数所以定时也是一种计数16位加位加1计数器计数器 00H 20H计数脉冲 21H FFH FFH
6、计数脉冲 TF 1向向CPU发出中断恳求发出中断恳求3.单片机中的定时、计数器两个定时/计数器分别叫T0,T1计数脉冲从哪来?当需求计数时,计数脉冲来自于外部脉冲源P3.4,P3.5)当需求定时时,计数脉冲来自于系统机器周期(时钟振荡器经12分频以后的脉冲信号)。 (1)计数器对外部信号计数,外部计数脉冲从T0(P3.4)和T1(P3.5)输入,开关接在下面,来一个脉冲下降沿,将加1计数。脉冲脉冲信号信号u2 2. .定时器定时器u定时器也是一种计数器。定时器也是一种计数器。u开关接在上面,计数脉冲信号是振荡器经过开关接在上面,计数脉冲信号是振荡器经过1212分频后信分频后信号。号。u 这是什
7、么信号?这是什么信号?u振荡器晶振的振荡器晶振的1212分频信号。分频信号。u假设晶振为假设晶振为12MHZ,12MHZ,那么计数脉冲信号那么计数脉冲信号T=12T=12* *1/12M =1uS 1/12M =1uS 机器周期机器周期u即定时就是每过一个机器周期即定时就是每过一个机器周期(1uS)(1uS),计数器加,计数器加1 1,直至,直至计满溢出,定时终了。计满溢出,定时终了。u定时器的定时时间与晶振频率和计数次数、初值等有关定时器的定时时间与晶振频率和计数次数、初值等有关有关。有关。u假设计数器对此信号计数假设计数器对此信号计数100100次,那么定时时间次,那么定时时间=100=1
8、00 1 1s s100100s s。脉冲脉冲信号信号单片机如何定义定时或计数功能?单片机如何定义定时或计数功能?单片机定时或计数的初值怎样设置?单片机定时或计数的初值怎样设置?编程设定编程设定-单片机定时中断相关的存放器单片机定时中断相关的存放器设置单片机处置定时中断的各种情况设置单片机处置定时中断的各种情况与定时计数有关的特殊功能存放器与定时计数有关的特殊功能存放器,:定时器的高位,低位存放计数值,:定时器的高位,低位存放计数值,:定时器的高位,低位存放计数值,:定时器的高位,低位存放计数值:定时控制存放器:定时控制存放器:定时方式存放器:定时方式存放器二、定时计数器的相关存放器二、定时计
9、数器的相关存放器任务方式存放器任务方式存放器定时器方式存放器定时器方式存放器TMOD的作用是设置的作用是设置T0、T1的任务方式。的任务方式。 TMOD的格式:的格式:各位的功能阐明:各位的功能阐明:(1) M1、M0位:任务方式选择位位:任务方式选择位 (1) M1、M0位:任务方式选择位2:计数/定时功能选择位。 =0,设置为定时器方式,计数器的输入是内部时钟脉冲,其周期等于机器周期。实践上是对机器周期进展计数。从计数值可以求得计数的时间,所以称为定时器方式 =1,设置为计数器方式,计数器的输入来自T0P3.4或T1P3.5端的外部脉冲,对外部输入引脚T0P3.4或T1P3.5的外部脉冲负
10、跳变计数,允许的最高计数频率为晶振频率的1/24。 T/CT/CT/CM1 M0 方式方式说说 明明0 0013 位定时器(TH的 8 位和TL的低 5 位) 0 1116 位定时器/计数器 1 02自动重装入初值的 8 位计数器 1 13 T0 分成两个独立的 8 位计数器, T1 在方式 3 时停止工作 (3) GATE(3) GATE:门控位。用于控制定时器的启动能否受外部中断源信号的影响。:门控位。用于控制定时器的启动能否受外部中断源信号的影响。GATE=0GATE=0:定时的启动与外部中断无关:定时的启动与外部中断无关, ,把把TCONTCON存放器中的存放器中的TR1(TR0)TR
11、1(TR0)置置1 1即可即可启动定时器启动定时器1(1(定时器定时器0)0)。常用。常用。GATE=1GATE=1:由控制位:由控制位TR1(TR0)TR1(TR0)和引脚和引脚INT0(INT1)INT0(INT1)共同控制启动共同控制启动, ,只需在没有只需在没有外部中断恳求信号的情况下即外部中断引脚外部中断恳求信号的情况下即外部中断引脚 INT0(INT1) INT0(INT1)引脚引脚=1=1时时, ,把把TR1(TR0)TR1(TR0)置置1 1才干定时器启动。用于检测低电平常间。才干定时器启动。用于检测低电平常间。例如:要设定例如:要设定T0T0任务在定时方式任务在定时方式2.2
12、.TMOD=0X02; TMOD=0X02; 不能位寻址不能位寻址00000010u 定时器定时器/ /计数器控制存放器计数器控制存放器TCONTCONu u TF0TF0、TF1TF1分别是定时器分别是定时器/ /计数器计数器T0T0、T1 T1 的溢出标志位的溢出标志位, , 加法计数器计满溢出时硬件加法计数器计满溢出时硬件自动置自动置1, 1, 恳求中断。恳求中断。u 对该标志位有两种处置方法:对该标志位有两种处置方法:u 一种是以中断方式任务,即一种是以中断方式任务,即TF1TF1置置1 1并恳求中断,呼应中断后,执行中断效力程并恳求中断,呼应中断后,执行中断效力程序,并由硬件自动使序
13、,并由硬件自动使TF1TF1清清0 0;u 另一种以查询方式任务,即经过查询该位能否为另一种以查询方式任务,即经过查询该位能否为1 1来判别能否溢出,来判别能否溢出,TF1TF1置置1 1后后必需用软件使必需用软件使TF1TF1清清0 0。 u TR1TR1、TR0 TR0 分别是定时器分别是定时器 / /计数器计数器T1T1、 T0 T0 的定时器的定时器1 1启停控制位。启停控制位。u GATE=0 GATE=0时,用软件使时,用软件使TR1TR1置置1 1即启动定时器即启动定时器1 1,假设用软件使,假设用软件使TR1TR1清清0 0那么停顿定时那么停顿定时器器1 1。u GATE=1
14、GATE=1时,用软件使时,用软件使TR1TR1置置1 1的同时外部中断的同时外部中断INT1INT1的引脚输入高电平才干启动定的引脚输入高电平才干启动定时器时器1 1。u 所以初始化时,只涉及到所以初始化时,只涉及到TR0/1TR0/1u 例:启动例:启动TR0.TR0.u TCONTCON属于特殊功能存放器,地址能被属于特殊功能存放器,地址能被8 8整除,所以可位操作整除,所以可位操作. .这里用位操作方便。这里用位操作方便。u TR0=1;TR0=1;u TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0u 存放器总结:存放器总结:3个特殊功
15、能存放器个特殊功能存放器u IEu TMODu TCONu 导入:例如要求单片机检测计数导入:例如要求单片机检测计数200个脉冲信号?个脉冲信号?u 定时器计数器用于定时或计数时,必需按照需求给计数器设置初定时器计数器用于定时或计数时,必需按照需求给计数器设置初值。定时器计数器在计数初值的根底上以加值。定时器计数器在计数初值的根底上以加1的方式进展计数,的方式进展计数,在计数器从全在计数器从全1变为全变为全0时,将自动产生溢出中断恳求,表示此次定时,将自动产生溢出中断恳求,表示此次定时、计数终了。时、计数终了。u 计数初值怎样设置?计数初值怎样设置?u 定时、计数器有四种任务方式,实践运用中运
16、用选择哪种?定时、计数器有四种任务方式,实践运用中运用选择哪种?u u 三、定时三、定时/ /计数器的计数容量及初值计数器的计数容量及初值u 1 1最大计数容量次数最大计数容量次数u 最大计数容量与计数器的二进制位数有关,关系为最大计数容量与计数器的二进制位数有关,关系为2N2Nu 举例,假设为举例,假设为2 2位计数器,位计数器,0000,0101,1010,1111,最大计数值为,最大计数值为2N= 42N= 4u 2.2.计数初值计数初值u 计数不一定是从计数不一定是从0 0开场,这要根据需求来设定。这个预先设定的计数起点值称为开场,这要根据需求来设定。这个预先设定的计数起点值称为计数初
17、值。计数初值。u u FFFFH FFFFHu 最大计数容量最大计数容量u 初值初值u u u 0000H 0000Hu 计数值计数值+ +初值初值= =最大计数容量最大计数容量u 举例,一个杯子的总容量为最大计数容量,曾经装了少量的水为初值,还能装举例,一个杯子的总容量为最大计数容量,曾经装了少量的水为初值,还能装多少水位计数值多少水位计数值u 四定时四定时/计数器的任务方式计数器的任务方式u MCS-51单片机的单片机的T/C有有4种任务方式种任务方式,分别由分别由TMOD存放器中的存放器中的M1、M0两位的二进制编码所决议。两位的二进制编码所决议。u 1.方式方式0u 13位计数器位计数
18、器u 在方式在方式0下,下,T0和和T1任务在任务在13位的定时位的定时/计数器方式,由计数器方式,由TH的高的高 8 位和位和TL的低的低 5 位组成。位组成。u u 当当T1的低五位的低五位TL1计满时向它的高八位计满时向它的高八位TH1进位,当进位,当T1的的13位计数器加位计数器加到全部为到全部为 1 以后,再加以后,再加1就产生溢出,这时置就产生溢出,这时置TCON的的TF1为为 1 ,同时把,同时把计数器全部变计数器全部变 0 。然后从。然后从 0 开场继续计数。开场继续计数。u 计数值范围:计数值范围:011111111111118191u 最大计数容量最大计数容量213=819
19、2u 如计数值为如计数值为N,那么置入的初值,那么置入的初值X为:为:u X+N=8192u 例如:假设定时例如:假设定时/计数器计数器T0的计数值为的计数值为1000,那么初值为,那么初值为7192,u 把初值转换成二进制数为把初值转换成二进制数为1110000011000B,u 那么那么TH0=11100000B,TL0=00011000B。脉冲脉冲信号信号u 2.方式方式1u 16位计数器位计数器u 在方式在方式1下,下,T0和和T1任务在任务在16位的定时位的定时/计数器方式,由计数器方式,由TH的高的高 8 位和位和TL的低的低 8 位位组成。组成。u u 当当T1的低的低8位位TL
20、1计满时向它的高八位计满时向它的高八位TH1进位,当进位,当T1的的16位计数器加到全部为位计数器加到全部为 1 以以后,再加后,再加1就产生溢出,这时置就产生溢出,这时置TCON的的TF1为为 1 ,同时把计数器全部变,同时把计数器全部变 0 。然后从。然后从 0 开场继续计数。开场继续计数。u 最大计数次数最大计数次数216=65536u 如计数值为如计数值为N,那么置入的初值,那么置入的初值X为:为:u X+N=65536u 如定时如定时/计数器计数器T0的计数值为的计数值为1000,那么初值为,那么初值为65536-1000=64536,u 把初值转换成二进制数为把初值转换成二进制数为
21、1111110000011000B,u 那么那么TH0=11111100B,TL0=00011000B。脉冲脉冲信号信号u 3 3方式方式2 2u 8 8位自动重装初值计数器位自动重装初值计数器u 在方式在方式2 2下,下,TL0TL0用作用作8 8位计数器,位计数器, TH0 TH0用作初值存放器。用作初值存放器。u 当当T1T1的的8 8位计数器加到全部为位计数器加到全部为 1 1 以后,再加以后,再加1 1就产生溢出,这时置就产生溢出,这时置TCONTCON的的TF1TF1为为 1 1 ;同时,;同时,TH1TH1中的初值装入中的初值装入TL1TL1TL1TL1又从初值开场计数。又从初值
22、开场计数。u 最大计数次数最大计数次数28=25628=256u 如计数值为如计数值为N N,那么置入的初值,那么置入的初值X X为:为:u X+N=256 X+N=256u 如定时如定时/ /计数器计数器T0T0的计数值为的计数值为100100,那么初值为,那么初值为256-100=156256-100=156,u 把初值转换成二进制数为把初值转换成二进制数为10011100B10011100B,u 那么那么TH0= TL0=10011100BTH0= TL0=10011100B。脉冲脉冲信号信号特别适宜于产生比较准确的延特别适宜于产生比较准确的延续脉冲信号。续脉冲信号。u 4 4方式方式3
23、 3u 2 2个独立的个独立的8 8位计数器位计数器u 方式方式3 3只适用于定时器只适用于定时器T0T0, TL0 TL0既能作定时器也能作计数器运用,而既能作定时器也能作计数器运用,而TH0TH0只能只能作定时器运用而不能作计数器运用。作定时器运用而不能作计数器运用。u 比较:方式比较:方式0 0,1 1,2 2u 1.3 1.3种方式的最大区别是计数位数不同种方式的最大区别是计数位数不同1313,1616,8 8,所以最大计数值,所以最大计数值或定时时间也不同。或定时时间也不同。u 2. 2.任务方式任务方式0 0和任务方式和任务方式1 1的特点就是计数溢出后,计数器变为全的特点就是计数
24、溢出后,计数器变为全0 0,因,因此循环定时或循环计数运用时就存在反复设置初值。此循环定时或循环计数运用时就存在反复设置初值。u 任务方式任务方式2 2具有自动重装载功能,即自动加载计数初值。具有自动重装载功能,即自动加载计数初值。u 以方式以方式1为例,为例,16位,最大计数容量位,最大计数容量65536u 假设采用假设采用12的晶振,对应的脉冲周期是微秒,计满的晶振,对应的脉冲周期是微秒,计满65536个脉冲所对应的时间就是个脉冲所对应的时间就是65.536ms。u 计数,只需用预置数的方法先在计数容器内存入一个初值计数,只需用预置数的方法先在计数容器内存入一个初值 ,如我们,如我们要计要
25、计100次,那就存入次,那就存入65436初值,只需再来初值,只需再来100个脉冲,就刚个脉冲,就刚好会溢出,引发中断。好会溢出,引发中断。u 那么,定时初值计算?那么,定时初值计算?u 五五. .定时定时/ /计数初值计算计数初值计算u 由由 计数值计数值+ +计数初值计数初值= =最大计数容量,得到:最大计数容量,得到:u 计数值计数值+ +计数初值计数初值机器周期机器周期= =最大计数容量最大计数容量机器周期机器周期u 计数次数计数次数机器周期机器周期+ +计数初值计数初值机器周期机器周期= =最大计数容量最大计数容量机器周期机器周期u 定时时间定时时间+ +计数初值计数初值机器周期机器
26、周期= =最大计数容量最大计数容量机器周期机器周期u 即即 定时时间定时时间= =最大计数容量最大计数容量- -初值初值机器周期机器周期u 所以,定时初值所以,定时初值= =最大计数容量最大计数容量- -定时时间定时时间/ /机器周期机器周期u =2N- =2N-定时时间定时时间/ /机器周期机器周期u 不同任务方式的定时初值或计数初值的计算方法如下表所示:不同任务方式的定时初值或计数初值的计算方法如下表所示:工作方式工作方式计数位数计数位数 最大计数容量最大计数容量最大定时时最大定时时间间定时初值计算公定时初值计算公式式计数初值计算公式计数初值计算公式方式方式013213=8192213 T
27、机机X=213- -T/T机机X=213- -计数值计数值方式方式116216=65536216 T机机X=216- -T/T机机X=216- -计数值计数值方式方式2828=25628 T机机X=28- -T/T机机X=28- -计数值计数值u 举例:定时举例:定时1 1秒,晶振秒,晶振12MHZ12MHZ,方式,方式1 1,初值为多少?,初值为多少?u 如何产生如何产生1 1秒定时信号秒定时信号? ?u 晶振晶振12MHZ12MHZ,机器周期,机器周期1us1usu 4 4种任务方式中,最大计数容量是方式种任务方式中,最大计数容量是方式1 1,6553665536u 那么那么65536us
28、=65.536ms65536us=65.536msu 所以定所以定1 1次不够次不够u 那就定多次,累计在一同,构成那就定多次,累计在一同,构成1 1秒秒u 那选择那选择T0T0,任务在方式,任务在方式0 0,一次定时,一次定时50ms50ms,循环,循环2020次次u 初值多少?初值多少?u TH0=0 x3c;TH0=0 x3c;u TL0=0 xb0;TL0=0 xb0; 所以,在用到定时中断之前,要先用指令来设置相关存放器的初始值,来设所以,在用到定时中断之前,要先用指令来设置相关存放器的初始值,来设定定时中断的条件定定时中断的条件-定时中断的初始化。定时中断的初始化。五、定时程序的编
29、写五、定时程序的编写1 1、程序构造、程序构造 几个程序?几个程序? 回想中断定义回想中断定义 两个程序:主程序、定时中断效力子程序两个程序:主程序、定时中断效力子程序 void main() void main() void void 名字名字 interrupt interrupt 中断号中断号 留意:名字,本人随意取;中断号,留意:名字,本人随意取;中断号,0-40-4 定时中断,中断号是定时中断,中断号是1 1或或3 3 2 2、这两个程序分别做什么、这两个程序分别做什么 结合一个例子看一下结合一个例子看一下 u例例1 1:发光二极管每隔:发光二极管每隔1 1秒闪烁秒闪烁1 1次。要求
30、用中断方法设计实现次。要求用中断方法设计实现1s1s的闪烁的闪烁u解:程序的构造解:程序的构造( (中断方式,查询方式中断方式,查询方式u如何产生如何产生1 1秒定时信号秒定时信号? ?u T0 T0一次定时一次定时50ms50ms,循环,循环2020次次u 确定任务方式,计算初值确定任务方式,计算初值u用到定时中断,需求定时中断初始化,设置存放器的值用到定时中断,需求定时中断初始化,设置存放器的值u - -放在主程序放在主程序u平常做的事情,等待平常做的事情,等待1 1次次50ms50ms定时终了;定时终了;u - -放在主程序放在主程序u定时时间到,有中断恳求时,灯闪烁,前往平常形状。定时
31、时间到,有中断恳求时,灯闪烁,前往平常形状。 u - -放在定时中断效力程序放在定时中断效力程序uvoid main()void main()u u 定时中断初始化定时中断初始化u等待等待1 1次次50ms50ms定时终了定时终了u uvoid void 名字名字 interrupt interrupt 中断号中断号u u 重新赋初值重新赋初值u 灯闪烁灯闪烁u XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0
32、1P1.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/A1427U1AT89C5112345678161514131211109D1LED-GREENX1CRYSTALC130pC230pR910kC31uFu #include u sbit led=P10;u unsigned
33、 char m=0;u void main() u u P1=0 xff;u EA=1; 中断初始化中断初始化u ET0=1;u TMOD=0 x01;u TH0=0 x3c;u TL0=0 xb0;u TR0=1;u while(1); 等待中断一次等待中断一次50ms来来u u void lsd() interrupt 1u u TH0=0 x3c; 重新赋初值重新赋初值u TL0=0 xb0;u if(+m19) 判别能否判别能否1S到到u led=led;u m=0;u u 看仿真看仿真总结:总结:这两个程序分别做什么这两个程序分别做什么1 1、主程序、主程序1 1在产生定时中断恳求前
34、,即主程序中完成定时中断初在产生定时中断恳求前,即主程序中完成定时中断初始化设置始化设置3 3个存放器个存放器a. a. 确定定时器确定定时器/ /计数器的任务方式,确定方式控制字,并计数器的任务方式,确定方式控制字,并写入写入TMODTMOD。b. b. 预置定时初值或计数初值,根据定时时间或计数次数,预置定时初值或计数初值,根据定时时间或计数次数,计算定时初值或计数初值,并写入计算定时初值或计数初值,并写入TH0TH0、TL0TL0或或TH1TH1、TL1TL1。c. c. 根据需求开放定时器根据需求开放定时器/ /计数器的中断,给计数器的中断,给IEIE中的相关位中的相关位赋值。赋值。d
35、. d. 启动定时器启动定时器/ /计数器,给计数器,给TCONTCON中的中的TR1TR1或或TR0TR0置置1 1。 2 2CPUCPU平常做的事情平常做的事情2 2、定时中断效力程序、定时中断效力程序 定时时间到时要做的事情定时时间到时要做的事情u 例例2 2:设晶振频率:设晶振频率fOSC=12MHzfOSC=12MHz,运用定时器,运用定时器1 1以方式以方式1 1产生周期为产生周期为400s400s的的方波脉冲,并由方波脉冲,并由P1.0 P1.0 输出。试以中断方式实现。输出。试以中断方式实现。u 要产生要产生400s 400s 的方波脉冲,只需在的方波脉冲,只需在P1.0P1.
36、0端以端以200s200s为间隔,交替输出高为间隔,交替输出高低电平即可实现。低电平即可实现。u 为此,定时间应为为此,定时间应为200s200s,定时时间一到,对,定时时间一到,对P1.0 P1.0 端做取反操作即可。端做取反操作即可。u 主程序:定时中断初始化主程序:定时中断初始化u 定时中断效力子程序:定时中断效力子程序: P1.0 P1.0 端做取反,初值重新赋值端做取反,初值重新赋值u 初值计算:初值初值计算:初值=216-T/T=216-T/T机机=65536-200=65536-200u 难点:把初值的十进制转化为难点:把初值的十进制转化为4 4位十六进制,高位十六进制,高8 8
37、位放在位放在TH0,TH0,低低8 8位放在位放在TL0TL0u 简单表达式写法:简单表达式写法:u TH0=(65536-200)/256; TH0=(65536-200)/256; u TL0=(65536-200)%256; TL0=(65536-200)%256;#include sbit led=P10;void main() P1=0 xff;EA=1;ET0=1;TMOD=0 x01; T1为方式为方式1TH0=(65536-200)/256; 初值初值TL0=(65536-200)%256;TR0=1; 启动定时启动定时while(1); 等待中断等待中断void lsd()
38、interrupt 1 TH0=(65536-200)/256; 重新设置初值重新设置初值 TL0=(65536-200)%256; led=led; 输出取反输出取反u 例例3 3:流水灯,每隔:流水灯,每隔1 1秒循环左移点亮。秒循环左移点亮。u 用定时中断来实现。用定时中断来实现。u 学生讨论,确定编程方案。学生讨论,确定编程方案。u 主程序做什么?主程序做什么?u 定时中断效力程序做什么?定时中断效力程序做什么?XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/
39、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/A1427U1AT89C5112345678161514131211109D1LED-GREEND2LED-GREEND3LED-GREEND4LED-GREEND5L
40、ED-GREEND6LED-GREEND7LED-GREENX1CRYSTALC130pC230pR910kC31uFD8LED-GREENu #include #include u #include #include u sbit led=P10;sbit led=P10;u unsigned char m=0,n;unsigned char m=0,n;u void main() void main() u P1=0 xfe;P1=0 xfe;u n=0 xfe;n=0 xfe;u EA=1;EA=1;u ET0=1;ET0=1;u TMOD=0 x01;TMOD=0 x01;u TH0=
41、0 x3c;TH0=0 x3c;u TL0=0 xb0;TL0=0 xb0;u TR0=1;TR0=1;u while(1);while(1);u u void lsd() interrupt 1void lsd() interrupt 1u TH0=0 x3c;TH0=0 x3c;u TL0=0 xb0; TL0=0 xb0;u if(+m19) if(+m19)u n=_crol_(n,1); n=_crol_(n,1);u P1=n; P1=n;u m=0; m=0;u u 例:设计出可以显示时间的电子钟,六位数码管显示。例:设计出可以显示时间的电子钟,六位数码管显示。u 电子钟两个关键
42、:电子钟两个关键:u 显示方式?显示方式?u -数码管显示数码管显示-动态显示动态显示u 我们在前面讲过的显示按键次数的例子我们在前面讲过的显示按键次数的例子u 秒脉冲如何产生?秒脉冲如何产生?u -单片机的单片机的T0来定时来定时1S前面的例子前面的例子u 我们需求对秒脉冲计数,记满我们需求对秒脉冲计数,记满60个,为个,为1分钟;再需求对分钟信号计数,分钟;再需求对分钟信号计数,记满记满60个,为个,为1小时。小时。u 主程序:主程序:u 定时中断初始化定时中断初始化u 显示小时、分钟、秒显示小时、分钟、秒u 中断效力子程序:中断效力子程序:u 重新赋初值重新赋初值 u 判别判别1秒到了吗
43、?秒到了吗?u 判别判别1分钟到了吗?分钟到了吗?u 判别判别1小时到了吗?小时到了吗?u u u s1s2s3s4s5s6S1S2S3S4S5S6XTAL218XTAL119ALE30EA31PSEN29RST9P0.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
44、/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC130pC230pR910kC31uFA02B018A13B117A24B216A35B315A46B414A57B513A68B612A79B711CE19AB/BA1U274LS245u #include u unsigned char code sz1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0
45、x83,0 xc6,0 xa1,0 x86,0 x8e;/ 数码管段值数组数码管段值数组u unsigned char sdat=0,0,0,0,0,0; u /存放小时、分钟、秒的十位、个位的数组存放小时、分钟、秒的十位、个位的数组u unsigned char wx=0 x01,0 x02,0 x04,0 x08,0 x10,0 x20;u /6个数码管位选信号数组个数码管位选信号数组u unsigned char m=0,sec=0,min=0,hou=0;u /存放小时、分钟、秒个数的变量存放小时、分钟、秒个数的变量u void delay(unsigned int a)u uunsi
46、gned char i;uwhile(a-)u u for(i=0;i120;i+); u u uu void disp()u unsigned char i;u sdat0=hou/10; /小时十位小时十位u sdat1=hou%10; /小时个位小时个位u sdat2=min/10;u sdat3=min%10;u sdat4=sec/10;u sdat5=sec%10;u for(i=0;i6;i+)u P2=sz1sdati; 动态显示动态显示4步步 /送段值送段值u P1=wxi; / 相应的位选有效相应的位选有效u delay(10); /延时延时u P1=0 x00; /封锁封
47、锁u u void main() u P1=0 x00; /封锁显示封锁显示u EA=1; /定时中断初始化定时中断初始化u ET0=1;u TMOD=0 x01;u TH0=0 x3c;u TL0=0 xb0;u TR0=1;u while(1)u disp(); /一边显示,一边等待中断一次一边显示,一边等待中断一次50ms来来u u void lsd() interrupt 1u u TH0=0 x3c; /重新赋初值重新赋初值u TL0=0 xb0;u m+;u if(m=20) /判别能否判别能否1S到到u sec+; m=0;u if(sec=60) /判别能否判别能否1分钟到分钟
48、到u min+; sec=0;u if(min=60) /判别能否判别能否1小时到小时到u hou+; min=0;u if(hou=24) /判别能否判别能否1天到天到u hou=0;u u u u u u学生分组讨论以下问题,:学生分组讨论以下问题,:u1 1如何设计如何设计1S1S程序程序u2 2把书上的静态改为动态,如何修正电路、程序把书上的静态改为动态,如何修正电路、程序u教师提出问题:教师提出问题:u 那么我们倒计时的硬件电路如何构建?构建好后,如何那么我们倒计时的硬件电路如何构建?构建好后,如何编写程序呢?编写程序呢?u总结总结u布置作业布置作业u 1 1书上习题书上习题u 2
49、2书上的静态改为动态书上的静态改为动态u实验:设计实验:设计60秒的倒计时,两位数码管显示。倒计到秒的倒计时,两位数码管显示。倒计到0时,喇叭报警。基于开发板时,喇叭报警。基于开发板 工程四工程四 倒计时倒计时 键盘的设计与实现键盘的设计与实现 -认识键盘认识键盘 u知识目的:知识目的:u1.掌握键盘的扫描法掌握键盘的扫描法u2.掌握掌握LCD的引脚的引脚u技艺目的:技艺目的:u1.掌握按键的检测掌握按键的检测u2.掌握键盘的衔接方法掌握键盘的衔接方法u3.掌握掌握LCD与单片机的接口与单片机的接口 u 一、根底知识u 键盘是单片机运用系统中人机交流不可短少的输入设备。u 键盘由一组规那么陈列
50、的按键组成,一个按键实践上是一个开关元件。键盘通常运用机械触点式按键开关,其主要功能是把机械上的通断转换为电气上的逻辑关系(1和0)。u 触点式按键开关,运用时悄然点按开关按钮就可使开关接通,当松开手时开关既断开,恢复为原来的电平。u 1.键盘分类u 1独立式按键u 2矩阵按键u 8031 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 VCC 8031 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 VCC 二、单个按键二、单个按键1.构造构造如以下图所示,其特点是每个按键单独占用一根如以下图所示,其特点是每个按键单独占用一根I
51、/O口线,口线,每个按键任务不会影响其他每个按键任务不会影响其他I/O口线的形状。口线的形状。1按键未按下,输入高电平按键未按下,输入高电平 按键按下,输入低电平按键按下,输入低电平2上拉电阻保证了有确定的高电平,上拉电阻保证了有确定的高电平,P0口。口。P1,P2,P3可不接上拉电阻可不接上拉电阻 外接上拉电阻外接上拉电阻10K左右左右3运用时:先把对应的输入运用时:先把对应的输入I/O口置口置1 再对该口做读操作,假设为再对该口做读操作,假设为1,阐明没按下;为,阐明没按下;为0, 2.键的可靠输入键的可靠输入由于机械触点的弹性作用,在开封锁合及断开的瞬间由于机械触点的弹性作用,在开封锁合
52、及断开的瞬间均有抖动过程,出现一系列电脉冲,然后其触点才稳均有抖动过程,出现一系列电脉冲,然后其触点才稳定下来。其抖动过程如右图所示,定下来。其抖动过程如右图所示,这种抖动会影响我们检测按键能否按下。这种抖动会影响我们检测按键能否按下。抖动时间的长短与开关的机械特性有关,抖动时间的长短与开关的机械特性有关,普通为普通为5 10ms。 u 为了抑制按键触点机械抖动所致的检测误判,必需采取去抖动措施,可为了抑制按键触点机械抖动所致的检测误判,必需采取去抖动措施,可从硬件、软件两方面予以思索。在键数较少时,可采用硬件去抖;而当从硬件、软件两方面予以思索。在键数较少时,可采用硬件去抖;而当键数较多时,
53、采用软件去抖。键数较多时,采用软件去抖。u 在硬件上可采用在键输出端加在硬件上可采用在键输出端加u R-S R-S触发器触发器( (双稳态触发器双稳态触发器) )或或u 单稳态触发器构成去抖动电路,单稳态触发器构成去抖动电路,u 如以下图所示是一种由如以下图所示是一种由R-SR-S触发器触发器u 构成的去抖动电路,当触发器翻转构成的去抖动电路,当触发器翻转u 时,触点抖动不会对其产生任何影响。时,触点抖动不会对其产生任何影响。u 键盘输出经双稳态电路之后变为规范的矩形方波。键盘输出经双稳态电路之后变为规范的矩形方波。u 软件上采取的措施是在检测到有按键按下时,执行一个软件上采取的措施是在检测到
54、有按键按下时,执行一个5ms5ms左右左右( (详细时详细时间应视所运用的按键进展调整间应视所运用的按键进展调整) )的延时程序,再确认该键电平能否仍坚持的延时程序,再确认该键电平能否仍坚持闭合形状电平,假设仍坚持闭合形状电平,那么确认该键处于闭合形状;闭合形状电平,假设仍坚持闭合形状电平,那么确认该键处于闭合形状;同理,在检测到该键释放后,也应采用一样的步骤进展确认,从而消除同理,在检测到该键释放后,也应采用一样的步骤进展确认,从而消除抖动的影响。抖动的影响。 1 2 3 UA 4 5 6 UB S G ND +5V Q a b 1k1ku 3、运用、运用u 1独立按键独立按键u 需检测先按
55、下,再抬起:需检测先按下,再抬起:u if(S1=0) /假设按键按下假设按键按下 u delay(5); /延时消抖延时消抖 u if(S1=0) /确定按键按下确定按键按下 u while(S1=0); i+;. /等待按键抬起再做相关操作等待按键抬起再做相关操作u XTAL218XTAL119ALE30EA31PSEN29RST9P0.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/RXD10P
56、3.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/A1427U1AT89C51X1CRYSTALC130pC230pR910kC31uFL1L2S1XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD7
57、32P1.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/A1427U1AT89C51X1CRYSTALC130pC230pR910kC31uF12345678161514131211109RN1300Q1PN2907Q2PN2907R11kR21kR310kR410ku
58、 例:设计的发声电路。例:设计的发声电路。u 不同频率的脉冲电信号送到扬声器上,会发出不同的声音即不同的音调不同频率的脉冲电信号送到扬声器上,会发出不同的声音即不同的音调“DODO, , “RERE, , “MEME 等。音乐就是由不同的频率的脉冲信号组合来构成的,等。音乐就是由不同的频率的脉冲信号组合来构成的,因此假设要播放一首歌曲,只需把一首歌曲的音调对应频率关系弄正确即因此假设要播放一首歌曲,只需把一首歌曲的音调对应频率关系弄正确即可。可。u 我们可以利用单片机的定时器产生各种不同频率的方波脉冲信号。我们可以利用单片机的定时器产生各种不同频率的方波脉冲信号。u DO:523HZ RE:5
59、87HZ ME:659HZDO:523HZ RE:587HZ ME:659HZu 本次设计中单片机晶振为本次设计中单片机晶振为12MHZ12MHZ,那么定时器的计数周期为,那么定时器的计数周期为1MHZ1MHZ,假设选择,假设选择任务方式任务方式1 1,那,那T T值便为值便为T= 65536-5T= 65536-5105/105/相应的频率相应的频率 ,那么根据不同的,那么根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数T0T0相关相关的计数值如下表所示:的计数值如下表所示:u #include u unsigne
60、d long code yy=64580,64684,64777,64820,64898,64968,65030;u sbit K1=P10;u sbit K2=P11;u sbit K3=P12;u sbit K4=P13;u sbit K5=P14;u sbit K6=P15;u sbit K7=P16;u sbit BEEP=P30;u unsigned char i,j,m;u void main() u u BEEP=0;P1=0XFF;u EA=1;ET0=1; TMOD=0 x01;TR0=0;u while(1)u if(K1=0) u while(K1=0);m=0;TH0=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 植被配置与生态廊道建设方案
- 植被补播与覆土整治方案
- 2026年阜阳法航运营管理有限公司公开招聘工作人员笔试模拟试题及答案解析
- 烟草行业烟叶复烤加工SOP文件
- 2026年消癌平片行业分析报告及未来发展趋势报告
- 2026湖北咸宁市通山县交通投资(集团)有限公司招聘岗位调整核减笔试备考题库及答案解析
- 2026年步进系统行业分析报告及未来发展趋势报告
- 2026年湿法刻蚀设备行业分析报告及未来发展趋势报告
- 2026年批发业行业分析报告及未来发展趋势报告
- 2026中国太平洋人寿保险股份有限公司江门中心支公司招聘2人笔试参考题库及答案解析
- 2026年新国考公共基础知识专项试题及答案
- 辽宁省营口市盖州市2025-2026学年八年级(上)期末物理试卷(含答案)
- 初中英语九年级跨学科项目式导学案:数智赋能下的发明叙事与未来思辨
- 2026年广东深圳市48校中考复习阶段模拟测试物理试题(试卷+解析)
- 2026年春新教材八年级下册道德与法治第1~5共5套单元测试卷(含答案)
- 2026湖南益阳职业技术学院招聘事业单位人员6人备考题库及答案详解(新)
- 河南省信阳市固始县2025-2026学年七年级下学期期中考试历史试题(含答案)
- 2026年中国避蚊胺驱蚊剂市场数据研究及竞争策略分析报告
- 江苏省2026事业单位考试真题及答案
- 2025浙江中国绍兴黄酒集团有限公司招聘11人笔试参考题库附带答案详解
- 评估业务报备管理制度
评论
0/150
提交评论