资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第,6,章 定时器中断在显示技术中的应用,显示驱动技术讲义,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,开发板,3*4,矩阵键盘电路图:,主程序,uchar temp,keynum,Flag;,void main(void),Init();,while(1),if( Flag=1),/,如果有键按下,display();,键盘扫描子程序,uchar Keyscan() /,键盘扫描,temp=0xfe;,P1=temp; /,令,P1.0=0,if(P1&0xf0)!=0xf0),delay_50us(100);,if(P1&0xf0)!=0xf0) /,确认是否按下,Flag=1;,switch(P1),case 0xee:keynum=1;break;/S7,被按下,;,对应显示,1,case 0xde:keynum=2;break;/ S11;,对应显示,2,case 0xbe:keynum=3;break;/S15;,对应显示,3,扫描第二行应该怎么写,?,return(,keynum,);,void display(void),Flag=0;,P2=0x00;/,开,4,个位选,;,P0=tableKeyscan();/,数码管显示,;table,里面放,0-9,/,的段选,delay_50us(100);,6,定时器,/,计数器,对于定时器,/,计数器来说,不管是独立的定时器芯片还是单片机内的定时器,大都具有以下特点:,(1),定时器,/,计数器的计数值是可变的,当然计数的最大值是有限的,这取决于计数器的位数。,(2),在到达设定的定时或计数值时发出中断申请,以便实现定时控制。,MCS-51,单片机,(51,子系列,),内带有两个,16,位定时器,/,计数器,T0,和,T1,,,它们均可作为定时器或计数器使用。,6.1,定时器,/,计数器,T0,、,T1,的结构,图,6.13,定时器,/,计数器,T0,、,T1,的结构框图,1,16,位加法器,定时器,/,计数器的核心是,16,位加法计数器,图中用特殊功能寄存器,TH0,、,TL0,及,TH1,、,TL1,表示。,TH0,、,TL0,是定时器,/,计数器,0,加法计数器的高,8,位和低,8,位,,TH1,、,TL1,是定时器,/,计数器,1,加法计数器的高,8,位和低,8,位。,作计数器用时,加法计数器对芯片引脚,T0(P3.4),或,T1(P3.5),上的输入脉冲计数。每输入一个脉冲,加法计数器增加,1,。加法计数溢出时可向,CPU,发出中断请求信号。,作定时器用时,加法计数器对内部机器周期脉冲,Tcy,计数。由于机器周期是定值,所以对,Tcy,的计数就是定时,如,Tcy,=1 s,,,计数值,100,,相当于定时,100,s,。,加法计数器的初值可以由程序设定,设置的初值不同,计数值或定时时间就不同。在定时器,/,计数器的工作过程中,加法计数器的内容可用程序读回,CPU,。,2,定时器,/,计数器方式控制寄存器,TMOD,定时器,/,计数器,T0,、,T1,都有四种工作方式,可通过程序对,TMOD,设置来选择。,TMOD,的低,4,位用于定时器,/,计数器,0,,高,4,位用于定时器,/,计数器,1,。其位定义如下:,GATE,C/ T,MI,M0,GATE,C/T,M1,M0,TMOD,字节,地址,89,H,D7,D6,D5,D4,D3,D2,D1,D0,T1,T0,定时或计数功能选择位,当,C/ T =1,时为计数方式;当,C/ =0,时为定时方式。,M1,、,M0,:,定时器,/,计数器工作方式选择位,其值与工作方式对应关系如表,2.6,所示。,GATE,:,门控位,用于控制定时器,/,计数器的启动是否受外部中断请求信号的影响。如果,GATE=1,,,定时器,/,计数器,0,的启动受芯片引脚,(,P3.2),控制,定时器,/,计数器,1,的启动受芯片引脚,(,P3.3),控制;如果,GATE=0,,,定时器,/,计数器的启动与引脚 、 无关。一般情况下,GATE=0,。,定时器,/,计数器工作方式,M1,M0,工作方式,方 式 说 明,0,0,0,13,位定时器,/,计数器,0,1,1,16,位定时器,/,计数器,1,0,2,具有自动重装初值的,8,位定时器,/,计数器,1,1,3,3,定时器,/,计数器控制寄存器,TCON,TCON,控制寄存器各位定义如下:,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,TCON,字节,地址,88,H,D7,D6,D5,D4 D3,D2,D1,D0,TF0(TF1),:,T0(T1),定时器,/,计数器溢出中断标志位。当,T0(T1),计数溢出时,由硬件置位,并在允许中断的情况下,向,CPU,发出中断请求信号,,CPU,响应中断转向中断服务程序时,由硬件自动将该位清零。,TR0(TR1),:,T0(T1),运行控制位。当,TR0(TR1)=1,时启动,T0(T1),;,TR0(TR1)=0,时关闭,T0(T1),。,该位由软件进行设置。,6.2,定时器,/,计数器,T0,、,T1,的四种工作方式,1,工作方式,0,图,2.14,定时器,/,计数器方式,0,的逻辑结构,可用程序将,08191(2,13,-1),的某一数送入,THx,、,TLx,作为初值。,THx,、,TLx,从初值开始加法计数,直至溢出。所以初值不同,定时时间或计数值不同。必须注意的是:加法计数器,THx,溢出后,必须用程序重新对,THx,、,TLx,设置初值,否则下一次,THx,、,TLx,将从,0,开始计数。,如果,C/T=1,,,图,2.14,中开关,S1,自动地接在下面,定时器,/,计数器工作在计数状态,加法计数器对,Tx,引脚上的外部脉冲计数。计数值由下式确定:,N=2,13,x=8192x,式中,N,为计数值,,x,是,THx,、,TLx,的初值。,x=8191,时为最小计数值,1,,,x=0,时为最大计数值,8192,,即计数范围为,18192,。,定时器,/,计数器在每个机器周期的,S5P2,期间采样,Tx,脚输入信号,若一个机器周期的采样值为,1,,下一个机器周期的采样值为,0,,则计数器加,1,。由于识别一个高电平到低电平的跳变需两个机器周期,所以对外部计数脉冲的频率应小于,fosc,/24,,,且高电平与低电平的延续时间均不得小于,1,个机器周期。,C/ T=0,时为定时器方式,开关,S1,自动地接在上面,加法计数器对机器周期脉冲,T,cy,计数,每个机器周期,TLx,加,1,。定时时间由下式确定:,T=N,T,cy,=(8192-x),Tcy,式中,Tcy,为单片机的机器周期。如果振荡频率,fosc,=12 MHz,,则,Tcy,=1 s,,,定时范围为,18192,s,。,定时器,/,计数器的启动或停止由,TRx,控制。当,GATE=0,时,只要用软件置,TRx,=1,,,开关,S2,闭合,定时器,/,计数器就开始工作;置,TRx,=0,,,S2,打开,定时器,/,计数器停止工作。,GATE=1,为门控方式。此时,仅当,TRx,=1,且 引脚上出现高电平,(,即无外部中断请求信号,),,,S2,才闭合,定时器,/,计数器开始工作。如果 引脚上出现低电平,(,即有外部中断请求信号,),,则停止工作。所以,门控方式下,定时器,/,计数器的启动受外部中断请求的影响,可用来测量 引脚上出现正脉冲的宽度。,2,工作方式,1,当,M1M0=01,时,定时器,/,计数器设定为工作方式,1,,构成了,16,位定时器,/,计数器。此时,THx,、,TLx,都是,8,位加法计数器。其它与工作方式,0,相同。,在方式,1,时,计数器的计数值由下式确定:,N=2,16,-x=65 536-x,计数范围为,165 536,。,定时器的定时时间由下式确定:,T=N,T,cy,=(65 536-x),T,cy,如果,f,osc,=12 MHz,,则,T,cy,=1 s,,,定时范围为,165 536,s,。,3,工作方式,2,图,2.15,定时器,/,计数器方式,2,的逻辑结构,在工作方式,2,时,计数器的计数值由下式确定:,N=2,8,-x=256-x,计数范围为,1256,。,定时器的定时值由下式确定:,T=N,T,cy,=(256-x),T,cy,如果,f,osc,=12 MHz,,则,T,cy,=1 s,,,定时范围为,1256,s,。,4,工作方式,3,图,2.16,定时器,/,计数器方式,3,的逻辑结构,嵌入式系统的软件系统,嵌入式软件开发内容,开发,系统软件,操作系统,协议栈,GUI,库函数,软件组件与,IP(,知识产权内核,),开发,应用软件,在嵌入式操作系统之上进行开发,在硬件层上进行开发,1,软件的结构和组成,#include /,嵌入式软件主程序,main(),while(1),action1();,action2();,6.3,裸机系统软件的设计方法,无,操作系统的嵌入式软件设计,有,操作系统的嵌入式软件设计,6.3.1,无操作系统的嵌入式软件设计,前后台系统,中断(事件)驱动系统,巡回服务系统,基于定时器的巡回服务系统,6.3.1.1,前后台系统,后台:,应用程序是一个无限循环,巡回地执行多个事件,完成相应的操作。这一部分软件称为后台。通常在主程序,main(),中被调用。,前台:,中断服务程序处理异步事件,这一部分可以看成是前台。,后台可以称为任务级,前台可以称为中断级。强实时性的的关键操作一定要用中断来实现。,程序框架,-,后台,main(),/*,硬件初始化 *,/,while(1) /*,后台程序 *,/,action1();,action2();,action3();,action_1(),/*,执行动作,n */, ,action_n(),/*,执行动作,n */,程序框架,-,前台,Isr_1(),/*,中断,1,的中断服务程序 *,/, ,Isr_n,(),/*,中断,2,的中断服务程序 *,/,前后台系统的特点,应用,小系统:,微波炉,电话机,玩具等,6.3.1.2,中断(事件)驱动系统,原理,整个嵌入式系统软件由中断服务程序构成,主程序完成系统的初始化工作,应用,低功耗系统设计,事件驱动系统,构成,主程序,-,完成系统的初始化,中断服务例程,-,完成事务处理,中断驱动系统,-,主程序,main() /*,完成系统的硬件初始化和数据结构的初始化*,/,/* to do:,系统的初始化 *,/,while(1),。其它代码或,enter_low_power,(); /*,进入低功耗状态*,/,中断驱动系统,-,中断程序,Isr_n,() /*,其中的一个中断服务程序 *,/,/* to do:,处理中断事件 *,/,/* to do:,中断返回 *,/,3.1.3,巡回服务系统,应用:,嵌入式处理器,/,控制器的中断源不多,解决方案,增加中断源,-,需要硬件,成本高,软件方案,-,软件巡回服务,main(),/* to do:,系统初始化 *,/,while(1),action_1();/*,巡回检测事件,1,并处理事件*,/,action_2();/*,巡回检测事件,2,并处理事件*,/,action_n();/*,巡回检测事件,n,并处理事件*,/,6.3.1.4,基于定时器的巡回服务系统,普通巡回服务系统的缺点,处理器全速运行,开销大,-,功耗高,-,电池供电系统,降低处理器的工作时间,-,基于定时器的巡回服务系统,构成,主程序,定时器中断服务程序,主程序,main(),/* to do:,系统初始化 *,/,/* to do:,设置定时器,如自动重新加载方式,*,/,while(1),。其它代码或,enter_low_power();,定时器中断服务例程,Isr_timer,() /*,定时器的中断服务程序 *,/,action_1(); /*,执行事件,1,的处理*,/,action_2(); /*,执行事件,2,的处理*,/,action_n(); /*,执行事件,n,的处理*,/,实验内容,:,使用矩阵键盘,;,在点阵管上面显示,;,按下哪个键显示什么数字,;,要求,:,采用定时器循环,;,主函数,:,定时器,1:,扫描键盘,定时器,2:,实现显示,;(,行扫描或列扫描送显示,),注意,:,定时器中断程序执行的时间不要超过两次中断的时间间隔,!,切记,!,否则,进入中断程序,要先关掉相应中断,完成该程序之后,再启动,;,
展开阅读全文