您当前的位置:五五电子网电子知识单元电路时钟-定时电路简易数字钟设计 正文
简易数字钟设计

简易数字钟设计

点击数:7128 次   录入时间:03-04 12:01:37   整理:http://www.55dianzi.com   时钟-定时电路

  从上图还可以看出,计数脉冲能否加到计数器上,受到多个信号的控制。当GATE=0时,只要TRx=1,则定时/计数器启动工作。当GATE=1时,TRx=1和INTx=1同时满足才能启动,此时启动受到双重控制。

  8051单片机在工作之前必须将控制命令写入定时/计数器的控制寄存器,即进行初始化。初始化过程主要是完成对方式寄存器TMOD的编程,其编程的位格式如下表所示。

43

  上表中,当Ml=0,MO=O时,定时/计数器工作在方式0。方式O为13位定时计数方式,由THx提供高8位、TLx提供低5位的计数初值(TLx的高三位无效),最大计数值为213=8192个脉冲。启动计数前需预置计数初值,启动后计数器立即加1计数,TLx低5位的计数满回零后向THx进位,当13位计数满回零时,中断溢出标志TFx置1,产生中断请求,表示定时时间到或计数次数到。若系统允许中断(ETx=1)且CPU开中断(EA=1),则CPU响应中断,转向中断服务程序,同时TFx自动清0。

  当M1=0,MO=1时,定时/计数器工作在方式1。方式1与方式0基本相同。唯一区别在于方式1的计数寄存器的位数是16位,由两个8位寄存器THx和TLx联合提供计数初值,最大计数值为216=65536个脉冲,是定时/计数器计数值最大的一种方式。

  当Ml=1,MO=0时,定时/计数器工作在方式2。方式2是8位可自动重装载的定时计数方式,最大计数值为28=256个脉冲。在这种方式下,THx寄存器专用于保存8位计数初值并保持不变,TLx进行8位加1计数,当TLx计数溢出时,除产生溢出中断请求外,还自动将THx中不变的初值重装载到TLx中。而在其它方式中,计满回零后,若要进行下一次定时/计数,需要用软件对THx或TLx重新装载计数初值。

  当M1=1,MO=1时,定时/计数器工作在方式3。值得注意的是,方式3只适合于定时/计数器TOo当TO工作在方式3时,THO和TLO成为两个独立的计数器。这时TLO可作定时/计数器,占用TO在TCON和TMOD寄存器中的控制位和标志位;而THO只能作定时器使用,占用Tl的资源TR1和TF1。在这种情况下,T1仍可用于方式0、1、2,但不能使用中断方式。一般地,只有将Tl用作串行口的波特率发生器时,TO才工作在方式3,以便增加一个定时厂计数器。

  定时/计数器的启动停止位及中断请求标志位均在TCON特殊功能寄存器中,具体位置见表3。当TRx=1时,定时/计数器可启动;当TRx=0时,则停止计数。

  2.8051定时/计数器的应用举例

  使用8051的定时/计数器前需要对其进行初始化编程。初始化编程的主要步骤有:(1)根据定时时间要求或计数要求计算计数器初值;(2)填写工作方式控制字送TMOD寄存器:(3)送计数初值的高八位和低八位到THx和TLx寄存器中;(4)启动定时(或计数),即将TRx置位。

  如果工作于中断方式,还需置位EA(中断总开关)及ETx(允许定时/计数器中断),并编写中断服务程序。

  在定时/计数器初始化前还需要注意的一点就是计数初值的计算。由于8051的计数器为加1计数器,因此给出的计数初值应为实际计数次数的补码,计算方法如下:

  计数方式:计数初值C=模一×,其中×为要累计的脉冲个数。定时方式:计数初值C=【t/MC】补=模-[t/MC】,其中t为欲定时的时间,MC为8051的机器周期,MC=12/fosc。当拜用12MHz的晶振耐,MC=1us,此时方式O、方式1、方式:的最大定时时间分别为8.192ms、65.536ms和256μs。

  应用举例:在11.0592MHz的振荡频率下,由P1.7脚实现50Hz的方波输出。

  分析:50Hz的方波周期为25ms,定时12.5ms,时间到时对P1.7脚输出电平进行翻转,容易获得50Hz方波输出。在11.0592MHz的振荡频率下,方式1的16位计数才能到达12.5ms的定时要求。计数初值的计算为:模_【t/MC】=216_(t×fosc)/12=65536-(12.5ms×11.0592MHz/12=54016=D300H若选择TO,则THO的初值为D3H,TLO的初值为00中断服务程序实现计数初值的重载和P1.7口线输出电平的翻转而主程序只要完成定时器的初始化即可。参考程序代码如下

56

      在Proteus下,采用电压探针及数字分析仪对P1.7脚的输出进行深测分析,可得其输出波形如下图所示。

56

  上图的数字分析仪波形显示P1.7脚输出为50HZ的方波,到达设计要求。图中波形整体往右移动了很小一段时间是系统启动和初始化程序所消耗的时间所致,对波形无影响在中断服务程序中,由于定时器初值低8位无需重新加载,因此也不会带来软件上的运行时间误差。



www.55dianzi.com

  三、8051单片机的键盘扩展

  键盘是单片机系统中最普遍的输入设备之一。在一般的键盘中,机械按键是最常见的,接下来的介绍也就只围绕机械按键小键盘展开讨论。43

  机械按键一般为机械弹性开关,一个电压信号的开关对应于开关触点的合、断操作。而通常,由于机械开关触点的弹性作用,一个按键的闭合过程不会马上稳定地接通,而断开时也不会瞬时断开,相反地会出现所谓的“抖动”现象,如上图所示。其抖动时间一般为5~10ms。按键的抖动会带来误触发,因此消除抖动是机械按键设计所必须要考虑的问题。

  去抖通常有软件去抖和硬件去抖两种方法。硬件去抖通常采用基本RS触发器来实现,也可以用低通滤波电路来完成。考虑到电路的简洁性,单片机系统中更多地采用软件去抖的方式。软件去抖就是在检测到键按下时,执行一段延时子程序后,再确认该键电平是否仍保持键按下时的状态电平,若是,则认为有键按下。延时子程序的延时时间应大于按键的抖动时间,通常取10ms以上,从而消除了抖动的影响。软件去抖可节省硬件,处理灵活,但会消耗较多的CPU时间。为避免CPU时间的过多消耗,键盘一般应采用中断方式.或者定时扫描键盘。

  在单片机系统中,通常有且仅有按下一键才视为按键有效。有效的确认方式通常又可分为两类。第一类为按释键方式,系统要求从按下到释放键才算一次有效按键。另一类为连击方式,就是一次按键可以产生多次击键效果,其连击频率可自己设定,如4次/秒,6次/秒等等。在按释键方式时,系统先判断是否有键按下,确认有键按下,然后等待至该键释放才算一次按键,注意释键判断同样要作去抖处理。在连击方式时,系统在判断有键按下后,通常设定一个按键间隔时间定时器,当时间到时按键增加一次,直到该键释放。

  从硬件连接方式看,键盘通常可分为独立式键盘和矩阵(行列)式键盘两类。所谓独立式键盘是指各按键相互独立,每个按键分别与单片机或外扩I/O芯片的一根输入线相连。通常每根输入线上按键的工作状态不会影响其它输入线的工作状态。通过检测输入线的电平就可以很容易地判断哪个按键被按下了。独立式键盘电路配置灵活,软件简单,但在按键数较多时会占用大量的输入口线。该设计方法适用于按键较少或操作速度较高的场合。

  矩阵式键盘适用于按键数量较多的场合。它通常由行线和列线组成,按键位于行、列的交叉点上。矩阵键盘按键的识别通常由两种方法:行列扫描法和行列反转法。行列扫描法分为粗扫描和细扫描两步。粗扫描判断键盘是否有键按下,其方法为:让所有列(行)线输出低电平,读入各行(列)线值,若不全为高电平,则有键按下,若有键按下,接下来进行细扫描确定按键位置。细扫描就是逐列(行)置低电平,其余列(行)置高电平,检查各行(列)线电平的值,若某行(列)对应的为低电平,即可确定该行该列交叉点处的按键被按下。判断时同样需要考虑按键去抖,在这里通常总是采用软件去抖的办法。行列反转法亦分为两步进行,第一步同行列扫描法。若第一步判断有键按下,第二步则是将行列互换,再进行一遍粗扫描。综合一、二两步的结果即可判定按键位置的所在。

  EDP实验箱的键盘配置是采用4×4的矩阵键盘,4根行线分别接8155的PCO~PC3,4根列线分别接PAO—PA3,在LCD模块扩展的基础上,进一步绘制出4x4行列式键盘的接口电路如图6所示。

56

  为便于实践操作,给出EDP实验箱的键盘模块的管脚定义如上表所示。

  由于8155不能与8051单片机实现中断方式的接口,因此该键盘无法工作在中断方式,为降低CPU的消耗时间,我们可以采用定时扫描的方式驱动该键盘。为去抖,连续两次扫描的间隔应该大于10ms,可以直接参考上节12.5ms的定时程序。若连续两次扫描键盘发现有键按下,则确定此时按键稳定有效,按照此思路编写一个简单的按键测试程序,按键后,将其对应键盘上的按键编号显示在LCD屏上,参考代码如下:

上一页  [1] [2] [3]  下一页


本文关键字:暂无联系方式时钟-定时电路单元电路 - 时钟-定时电路