4 自行车的速度里程表软件程序设计 外中断0服务程序用于对单片机P3.2口输入的圈脉冲进行计数,为十六进制计数器。60H为低位,62H为高位。每次计数一次后,对里程数据进行一次存储操作。当车轮每转一圈,通过霍尔元件将脉冲数输入单片机内,通过计数器计出脉冲数,再用乘法子程序算出里程数。里程处理子程序流程图如图4.3所示。
开始 点亮里程指示灯 将车圈数转换成里程 显示里程值 返回 图4.3 里程处理子程序流程图
2.速度计算子程序
外中断1服务程序用于处理轮子转动一圈后的计时数据。当标志位(00H)为1时,计数溢出,放入最大时间值(为#0FFH);当标志位为0时,将计数单元(TL1、TH1、6CH、6DH)的值放入68H~6BH单元。定时器计出每转一圈所用的时间,用自行车车轮的周长除以时间就得出自行车的速度。
21
开始 开速度指示灯 计算速度 N 是否超速? Y 报警 显示速度 返回
图4.4 速度处理子程序流程图
4.5 显示子程序的设计
采用动态扫描显示接口电路,动态显示接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM各自独立地受I/O线控制。CPU向字段输出口送出字型码时,所有显示器接收到相同的字型码,但究竟是哪个显示器亮,则取决于COM端。可以采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
本设计P2.0、P2.1、P2.2、P2.3信号一起组成位选通的位选信号,P0.0~P0.7信号一起组成段码选通的段选信号,通过软件编程,先把所要显示的数据放入存储单元,然后把数据送入段选通对应的地址,再选通某一个LED,逐步完成四个LED的显示。
22
4 自行车的速度里程表软件程序设计 开始 显示单元首址 取显示数据 求下一位位选码 取段码表首址 修改显示单元地送段码到P0口 送位选到P2口 N 调用延时 4位显示结束 Y 返回
图4.5 显示子程序流程图
23
5 系统调试与分析
5.1 系统仿真调试
PROTEUS系统仿真平台与开发平台是由英国Labcenter公司开发的,是目前世界上最完整的系统设计与仿真平台之一。PROTEUS可以实现数字电路、模拟电路及微控制系统与外设的混合电路系统的电路仿真、系统协同仿真和PCB设计等全部功能。PROTEUS软件能够对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原形时就可以对系统进行调试与验证。
在构思好电路原理图和编好程序之后就要对其进行系统仿真,原理图的具体设计流程如图5.1所示。
当完成原理图布线后,利用PROTEUS ISIS编辑环境所提供的电器规则检查命令对设计进行检查,并根据系统提供的错误检查报告修改原理图。直到通过电器规则检查为止。
单片机系统的仿真是PROTEUS VSM的一大特色,同时,本仿真系统将源代码的编辑和编译整合到同一设计环境中,这样使得用户可以在设计中直接编辑代码,并且很容易地查看到用户对源程序修改后对仿真结果的影响。
源代码通过编译无误后,就可以进行仿真,在仿真过程中不断完善电路和程序的功能最后达到本次设计的目的。
5.2 调试故障及原因分析
在软件仿真过程中遇到了一些问题,具体故障和解决方法如下: 1、数码管不显示
本次设计的电路数码管采用共阴极接法,在仿真时错用共阳极数码管,导致数码管不显示。
2、P0口显示高阻态
正常情况下P0口输出应为高(红色)低(蓝色)互换,但在实际情况下P0口出现了高阻态(灰色),经翻阅资料查得P0口做I/O口是应接上拉电阻。在加上上拉电阻后,P0口输出正常。
24

