序中都调用了显示子程序和报警子程序,这样就实现了实时显示和实时监控。进入中断子程序后,硬件会自动把断点地址(16位程序计数器PC的值)压入堆栈,保护有关工作寄存器、累加器、标志位等信息,在完成中断服务程序后,恢复有关的工作寄存器、累加器、标志位内容,最后执行中断返回指令,从堆栈中自动弹出断点地址到PC,继续执行被中断的程序。
4.3按键子程序的设计
按键电路在本设计采用独立式接口电路,由于所用按键不多,不会占用大量I/O口线,所以采用设计和结构简单的独立式按键。考虑到客车的实际要求,客车的实际装载乘客的人数应小于100,所以只用键盘设置上限值。为了确保CPU对一次按
开 始
N 有键闭合吗? Y 延时10ms N 有键闭合吗? Y 按键ADD_SET=0? Y N 按键DEC_SET=0? 超载人数加1 Y 超载人数减1 N 返 回
图4.3 按键子程序流程图
26
键动作只确认一次按键,必须消除抖动的影响,本设计采用软件延时的方法来消除按键的抖动。按键子程序流程图见图4.3所示。
4.4报警与锁定子程序的设计
报警与锁定子程序流程图如图4.4。该模块的主要功能是实现客车是否超载的判断,若检测值大于设置的上限值时,则进行报警,通过软件程序控制继电器动作,切断客车的电子启动装置。报警时的现象为:红色发光二极管进行闪烁,蜂鸣器发出蜂鸣声,由继电器控制的红色指示灯亮起。若检测值等于或低于所设阈值则解除报警,现象为:声光报警消失,由继电器控制的红色指示灯熄灭。其中P2.6为继电器控制端口,P1.0为红色二极管报警控制端口,P1.1为蜂鸣器报警控制端口。
调用延时子程序 P1.0=0,P1.1=0,P2.6=0 Y 车内人数值大于超载人数? 开 始 N P1.0=1,P1.1=1 P2.6=1
返 回 图4.4 报警与锁定子程序流程图
报警与锁定子程序是一个实时比较程序,实现对超值报警与锁定的控制。将数据处理后的实时检测值与预置上限值进行比较,报警子程序用SUBB语句进行判
27
断,即预置值减测量值,若后者大于前者则进行报警,否则消除报警。 在主程序的执行过程中,每次显示乘客人数值时都对报警子程序进行了调用,从而完成了实时监控的要求。
4.5显示子程序的设计
显示子程序流程图如图4.5所示。
开 始 BCD转换 个位、十位分离存入30H 01H送P2口 取个位段码送P0口 延时 02H送P2口 取十位段码送P0口 延时 返 回
图4.5 显示子程序流程图
数据处理完后,显示子程序开始工作,由于LED显示为段码的显示,所以处理后的十进制数要首先将个位十位分离再将数据存入显缓单元30H,然后位选数据
28
送P2口,取个位段码送P0口,调用延时子程序。再将位选数据送P2口,取十位段码送P0口,再调用延时子程序。在发生中断和等待中断时,都对显示子程序进行了调用,完成了实时显示的要求。两位位选码由P2.0-P2.1控制。
29
第5章 系统调试与分析
调试与分析的过程一般包括所有硬件电路的调试、程序的调试及它们的联合调试过程。一旦系统的工作总框图确定之后,电路原理图和程序的设计工作就可以迅速展开了。系统的硬件、软件的单独调试和软、硬联调是系统最后的步骤是系统特别重要的环节,因为设计和开发出的系统是否成功,功能是否完善只有在这里才能体现出来。所以为了保证设计系统能够正常工作,必须对软件和硬件部分的每一个部分进行调试和分析。本章详细的介绍了基于单片机的客车超载监控系统的硬件调试、软件调试和软、硬联调的过程,并对调试结果进行了介绍和分析。
5.1系统的硬件调试
本课题的硬件电路是系统的核心部分。它包括单片机的外围电路、传感器电路、方向识别电路、显示电路、报警电路和继电器锁定电路等,下面主要介绍单片机最小系统电路、方向识别电路在本次设计调试的方法与过程。
(1)单片机小系统的调试:按照设计好的电路图焊接好单片机的小系统,主要包括晶振电路、复位电路。上电后用万用表测量各个端口的电压情况,查看18、19晶振引脚的电压是否在2.0V左右,用示波器检测ALE口是否有固定的方波信号输出。当复位键按下时,查看RST 9引脚是否能达到3.5V以上的高电平,一切都正常后,编制一段延时亮灭的小程序,然后烧到单片机中,再重新验证一下最小系统是否全部正常工作。
(2)方向识别电路的调试:按照设计好的方向识别电路图,把74LS04反相器和74LS74双D触发器安插在面包上,用两个按键一端接地,另外两端代替传感器产生对应的脉冲信号,连接在方向识别电路的输入端。然后用万用表测试触发器Q1、Q2端的电平情况,调整相应的电路设计,直到实现辨向功能。
此外,在硬件的焊接过程中,需要十分的仔细和认真,尽量避免虚焊、漏焊现象,并且在焊接管脚时,应把芯片取下来,再进行焊接,防止因芯片过热而烧
30