开 始 进入中断 系统初始化 定时器赋初值 读取行号并增1 “上滚屏”显示效果 送新行显示数据 循环扫描显示 消 隐 图4-1 系统主程序的总体结构
切换显示数据 送新行号、打开显示
退出中断 图4-2 显示驱动程序流程图
4.2 显示驱动程序
图4-2为显示驱动程序(显示屏扫描函数)流程图。根据流程图可以编写出相应的显示程序。显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷
新率的稳定,1/16扫描显示屏的刷新率(帧 频)计算公式如下:
1刷新率(帧频)=×T0溢出率
16 =
fosc1× 1612(65536?t0)其中fosc为晶振频率,t0为定时器T0初值(工作在16位定时器模式)。 T0初值=2N-
定时时间
机周时间 19
其中N与工作方式有关,本设计定时/计数器工作于方式1,如图4-3所示,方式1构成一个16位定时计数器,即N=16。
方式1最大计数值为216=65536 ,若fosc=12MHz,则定时时间范围为1~65536μs。
机周时间与主振频率有关,机器周期是时钟周期的12倍,因此,机周时间=12/ fosc。当fosc=12MHz时,1机周=1μs。
图4-3 定时/计数器T0工作方式1逻辑电路结构图
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。显示程序给出了各控制信号和显示数据,其作用及相互配合关系均已在硬件部分作过介绍,相应的程序部分在清单的注释区内分别进行了说明,在此不再一一详述。系统程序清单见附录二。
20
第五章 系统测试及结果分析
一个单片机系统经过总体设计,完成了硬件和软件设计开发。元器件安装后,在系统的程序存储器中写入编制好的应用程序,系统即可运行。但编制好的程序或焊接好的线路不能按预计的那样正常工作是常见的事,多少会出现一些硬件、软件上的错误。这就需要通过调试来发现错误并加以改正。调试可分为硬件调试和软件调试。在允许的条件下,根据本设计系统的需求性首先采用在PC机上用模拟开发软件进行检测和调试,然后进行硬件的组装与调试。
5.1 软件调试
软件调试采用脱机调试的方法,即完全用仿真器软件在PC机上对目标电路原理图和程序进行检测和调试。调试过程中单片机相应输入端由通用键盘和鼠标设定,运行状态、各寄存器状态、端口状态等都可以在CRT指定的窗口区域显示出来,以确定程序运行有无错误。调试可按下列步骤进行:
一. 目标程序纠错
该阶段工作通常在目标程序编辑时就完成。一般来说,仿真器软件能给用户输入的程序指令纠错,包括书写格式、标号未定义或多重定义、转移地址溢出等错误。
二. 子程序功能调试
程序设计通常采用模块程序设计,调试时可对一个个子程序分别进行调试,设置好入口条件,然后采用单步运行或断点运行方式,检查系统CPU现场、RAM和I/O口状态,看程序执行结果是否符合设计要求。
三. 整体程序综合调试
即把各子程序整体连起来进入到综合电路调试,看是否能实现预计的功能显示。在这阶段若发生故障,可以考虑各子程序在运行时是否破坏现场,数据缓冲单元是否发生冲突,标志位的建立和清除在设计上是否失误,堆栈是否溢出,输入输出状态是否正常等。
用软件模拟器调试不需任何在线仿真器,也不需要用户样机,直接就可以在PC机上开发和调试。调试和修改完毕后,对于实时性要求不高的应用系统可以直接使用编程器将软件固化在目标系统ROM中,然后独立投入运行。
21
软件调试结果仿真截图:
22
23