基于AT89S51单片机自动往返小车系统设计 第3页

基于AT89S51单片机自动往返小车系统设计 第3页
第三章   系统软件设计
  软件是本系统的灵魂,在设计软件时,我将从系统实用、可*及方便灵活等几个方面出发,使程序满足本题目的要求。本系统软件分为主模块、两个外部中断和1024时基中断。其中1024时基中断作为全程计时的时钟基准。外部中断IRQ3的第二个中断源计数小车车轮的转数,中断服务流程图如图9。在小汽车行驶时,用的是小车前部的光电检测器接受外部中断。
1.主结构图
  软件系统的主结构图如图8。小车按复位键后,即启动,以最慢的速度向前行驶,当检测到第一根黑线时,就会全速前进。为了保证小车停车位置正确,在检测到第五和第十一跟黑线时就开始减速行驶。
                                     2.中断服务流程图
  SPCE单片机有两个外部中断,分别为EXT1和EXT2,两个外部输入脚分别为B口的IOB2和IOB3的复用脚。EXT1(IOB2)和EXT2(IOB3)两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断以负跳沿触发方式来输入中断请求信号。EXT1(IOB2)为黑线检测,确定小车位置,EXT2(IOB3)为轮子转数检测用于计算路程。IRQ4用做整个行程的时间计数                                 
图9中断服务流程图
  3.显示和播报
  时间和路程的显示采用动态显示,显示子程序流程图如图10,语音播报采用AT89S51语音播报,流程图如图11
4、程序清单
*************************************
   主程序和中断程序入口    
*************************************
 ORG   0000H  ;程序执行起始地址
        LJMP  START ;跳至START
 ORG   0003H  ;外中断0入口
        LJMP  INTEX0 ;跳至INTEX0中断服务程序
 ORG   000BH  ;定时器T0中断入口
        RETI  ;中断返回
        ORG   0013H  ;外中断1入口
        LJMP  INTEX1 ;跳至INTEX1中断服务程序
        ORG   001BH  ;定时器T1中断入口
        LJMP  INTT1 ;跳至INTT1中断服务程序
 ORG   0023H  ;串口中断入口
 RETI  ;中断返回
 ORG   002BH  ;定时器T2中断入口
 RETI  ;中断返回

***************************
    初始化程序   
****************************
CLEARMEMIO:    MOV  R0, #70H   ;清70H-76H显示单元
          MOV  R7, #07H   ;循环次数
 ML0:       MOV  @R0, #00H   ;清0
          INC  R0     ;下一地址
          DJNZ R7, ML0    ;未完再循环
          MOV  TMOD,#10H    ;T1为16位定时器
          MOV  R4,#14H    ;1秒定时用(50毫秒20次)
          MOV  TL1,#0B0H   ;50毫秒定时用初值
          MOV  TH1,#3CH    ;
          MOV   20H,#00H    ;清0操作
          MOV   21H,#00H    ;
          MOV   22H,#00H    ;
          MOV   23H,#00H    ;
   MOV  24H,#00H   ;
          CLR   30H      ;清停车标志
          SETB  ET1      ;开T1中断
          SETB  EX1      ;开外中断1
          SETB  IT1      ;外中断1采用边沿触发
          SETB  IT0      ;外中断0优先级为1(最高)
          SETB  EX0      ;开外中断0
          SETB  EA       ;开总中断允许
          SETB  TR1     ;开启定时器T1

上一页  [1] [2] [3] [4] [5] [6] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有