可编程交通控制系统的设计与实现(6)
作者:佚名; 更新时间:2014-12-03

  5 控制器的软件设计

  5.1每秒钟的设定

    延时方法可以有两种:一种是利用MCS-51内部定时器产生溢出中断来确定1秒的时间,另一种是采用软延时的方法。考虑到倒计时模块的数码管采用动态扫描模式,所以本系统通过AT89S52内部的定时器/计数器0产生溢出中断来确定1秒的时间。

  5.2计数器硬件延时

  5.2.1 计数器初值计算

  定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。它是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式:

          TC=M-C

  式中,M为计数器模值,该值和计数器工作方式有关。

  5.2.2  计算公式

      T=(M-TC)T计数

       或TC=M-T/T计数

  T计数是单片机时钟周期TCLK的12倍;TC为定时初值

  如单片机的主脉冲频率为TCLK=12MHz,经过12分频

  方式0     =213  1微秒=8.192毫秒

  方式1     =216  1微秒=65.536毫秒

  显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题.

  5.2.3 设置1秒的方法

  1秒等于1000000微秒,而每一计时脉冲是1微秒,因此需输入1000000个计数脉冲,方可达到1秒的时间。由于16位计数器初值为0000H,需65536个计数脉冲方可产生溢出,现在需要1000000个脉冲,则溢出次数达15.258次。

  即由1000000=65536 15+16960及65536-16960=48576=BDCOH可知计数初值应为:TL0=C0H,TH0=BDH,溢出次数为16次。

  相应程序代码:

  DEL:MOV  TMOD,#01H       ;初始化定时器/计数器

     MOV  TH0,#0BDH       ;给定时器/计数器赋初值

     MOV  TL0,#0C0H

     SETB EA               ;开中断

     SETB  ET0             ;定时器/计数器开始工作

     MOV   30H,#10H       ;设置16次中断

     SETB  TR0

  DEL1:LCALL DISPLAY         ;调用数码管显示子程序

      MOV   A,30H

      JNZ   DEL1

      RET

  PIT0:PUSH  PSW

      PUSH  A              ;中断服务程序

      DJNZ  30H,RET0      ;未达1秒延时,跳到RET0

      LCALL SUBB0          ;调用减1子程序

      AJMP  RET1

  RET0:MOV   TMOD,#01H

      MOV   TH0,#0BDH

      MOV   TL0,#0C0H

      SETB  EA

      SETB  ET0

      SETB  TR0

      POP   A

      POP   PSW

  RET1:RETI

  5.3 软件延时

  MCS-51的工作频率为2-12MHz,我们选用的AT89S52单片机的工作频率为12MHz。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12 (1/12M)=1us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定所需秒的时间。

    例如:倒计时显示子程序中的0.5ms延时子程序

                   SCAN:MOV  R7,#248

                         NOP

                         DJNZ R7,SCAN

                         RET

    由于单片机的运行速度很快其他的指令执行时间可以忽略不计。

  5.4 时间及信号灯的显示

  5.4.1 AT89S52并行口的扩展

    AT89S52虽然有4个8位I/O端口,但真正能提供借用的只有P1口,因为P2和P0口通常用于传送外部传送地址和数据,P3口也有它的第二功能。因此,AT89S52通常需要扩展。且由于系统所采用的数码管达10个多,即使采用动态扫描,AT89S52的端口还是远远不够的,所以需要进行口扩展。

    可用来扩展I/O端口的芯片有8255A和8155。它们在口扩展方面所能实现的功能是一样的,考虑到8155用的比较多,且价格便宜,因而采8155扩展AT89S52的并行/O端口。

核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com