基于单片机的光立方的设计 4 系统软件方案设计
4.1 概述
软件设计包括按键程序、主程序、显示程序三大部分,软件功能结构框图见4.1。主程序通过调用按键查询程序来判断待显示的图案及花样,主程序则调用相对应的显示程序送到控制端口。
按键程序 主程序 显示程序
图4.1 软件功能结构框图
4.2 主程序设计
系统软件采用汇编语言编写,按照模块化的设计思路设计程序。首先分析程序所要实现的功能,程序要实现可静态显示、动态显示、三维立体显示。通过按键控制程序选择不同的显示程序进行显示[14]。主程序的工作流程见图4.2。
图4.2 主程序流程图
程序开始时首先必须对单片机进行初始化设置,其中初始化设置的内容包括:中断优先级的设定,中断初始化,定时器初始化,串行通信时通信方式的
21
基于单片机的光立方的设计 选择和波特率的设定,各IO口功能的设定等。把各子程序写为一个可单独执行的完整子程序段。各子程序编译没有错误后再下载到单片机进行仿真验证,这两项都通过后再将所有的程序整合到一起,形成一个完整的程序再进行编译和仿真验证。
4.3 显示程序的设计
4.3.1 LED显示屏的数据传送
动态扫描显示是把整个LED屏幕分成若干部分,每一幅画面显示过程是显示完一部分后,又显示第二部分……直到显示完最后一部分又重新开始显示第一部分,重复循环进行。在重复扫描速度足够快的情况下,我们看到的就是一幅稳定的静态画面。也就是说采用动态扫描显示需要不断进行画面的刷新。动态扫描分为行扫描和列扫描,两种方式区别在于选通端和数据输入端分别是行还是列。先选通列然后再从行送入对应列的数据,这样从第1列到第8列循环往复,只要切换的速度足够的快利用人眼的延时特性就可以看见一幅稳定的画面[15]。
4.3.2 显示程序的设计
显示采用的是扫描显示方式,选通一列后按照列对应的数据表的数据第i列对应的列数据为数组中的第i和第i+7个元素。将对应数据由低至高位依次从控制端口输出显示。向右逻辑移位所得结果通过单片机端口输出到锁存器,通过片选需要显示对应的锁存器在输出显示。如此依次循环选通各列来显示所需画面。
动态显示程序流程图见4.4。把显示的数据送到P0口,相应的锁存器接收
数据,再把片选锁存器的数据送到端口,相应锁存器接收数据并锁存输出显示,接着把下一组数据送到P0口,改变片选锁存器的数据,送到相应锁存器输出显示,直到把所有的数据局输出传送完毕后,显示完成后,退出显示程序,等待指令。输出形式多种多样,可以静态输出图案,也可以动态、左移、右移、循环等花样显示。
22
基于单片机的光立方的设计
开 始 程序初始化
显示数据送P0 选通列,送锁存器输出 送下一列数据,选通信号左移 N 左移次数>8 Y 显示完成后 子程序返回 图4.4 显示程序流程图
4.4 软件中防止程序出错ERR处理
CPU受到干扰后,则CPU 就不能按正常状态执行程序,往往将一些操作数当作指令码来执行,造成程序执行混乱。这就是通常所说的程序“跑飞”。程序“跑飞”后使其恢复正常的一个最简单的方法是使CPU 复位,让程序从头开始重新运行。很多单片机控制的设备中都有设置人工复位电路。人工复位一般是在整个系统已经完全瘫痪,无计可施的情况下才不得已而为之的。因此在进行软件设计时就要考虑到万一程序“跑飞”,应让其能够自动恢复到正常状态下运行。
采用“指令冗余”是使“跑飞”的程序恢复正常的一种措施。所谓“指令冗余”,就是在一些关键的地方人为地插入一些单字节的空操作指令NOP。当程序“跑飞”到某条单字节指令上时,就不会发生将操作数当成指令来执行的错误。应该注意的是在一个程序中“指令冗余”不能使用过多,否则会降低程序的执行效率。这时可以采用另一种软件抗干扰措施,即设置“软件陷阱”。“软件陷阱”是一条引导指令,强行将捕获的程序引向一个指定的地址,在那里有
23
基于单片机的光立方的设计 一段专门处理错误的程序。假设这段处理错误的程序入口地址为ERR,则下面三条指令即组成一个“软件陷阱”:
NOP NOP LJMP ERR
“软件陷阱”一般安排在下列四种地方。
(l)未使用的中断向量区。51 单片机的中断向量区为0003H~002FH,在剩余的中断向量区安排“软件陷阱”,以便能捕捉到错误的中断。
(2)未使用的大片EPROM 空间。对于剩余未编程的EPROM 空间,一般都维持其原状,即其内容为OFFH。
(3)表格区。表格一般有两种,即数据表格和散转表格。由于表格的内容与检索值有一一对应的关系,因此只能在表格的最后安排陷阱设置指令。
(4)子程序区。子程序区是由一系列的指令所构成的,可以在子程序的结尾处安排陷阱。
4.5 ISP软件程序下载
ISP(In-System Programming)是当今流行的单片机编程模式。可在线系统编程的意思是指电路板上的可编程下载的空白元器件可以直接编程写入最终用户代码,而不需要从电路板上取下可重复编程逻辑器件。已经编程的器件也可以用ISP方式擦除或再编程。ISP的引脚接线图见4.5。
在完成编写程序的编译通过之后,把可以烧写AT89S52的ISP编程器并与电脑主机硬件连接后,打开相应下载软件按步骤即可对AT89S52芯片进行程序烧录下载。烧录完成成功后会有提示。重新通电即可测试和运行电路。
图4.5 ISP下载器接口接线图
24
基于单片机的光立方的设计 5 光立方PCB版制作
5.1 protues制作PCB版图
本设计采用protues制作PCB版图,用Proteus 制作PCB通常包括以下一些步骤:
(1)绘制电路原理图并仿真测试; (2)加载网络表及元件封装; (3)规划电路板并设置相关参数; (4)元件布局及调整;
(5)元件自动布线并手动调整布线; (6)输出及制作PCB文件。
5.1.1 绘制电路原理图并仿真测试
在Proteus 6 Professional 中用ISIS 6 Professional 设计好电路原理图,并结合WAVE进行软件编程和硬件的仿真测试。电路原理图见图5.1。
图5.1 电路原理图
25