EA为中断允许总控制位,EA=1时CPU开发中断;EA=1时。CPU屏蔽所有中断。ES、ET、EX1、ET0、EX0为对应的串行口中断、定时器计数器1中断、外部中断1中断、定时器计数器0中断、外部中断0中断的中断允许位。对应位为1时允许其中断,对应位为0时,禁止其中断。
表4-1 中断允许寄存器格式
D7 EA D6 D5 — D4 ES D3 ET1 D2 EX1 D1 ET0 D0 EX0 — 所以初始化时设定中断允许寄存器初值为0XFF,指令为 IE=0XFF。程序设计时还要考虑到中断优先级的问题。因为不同的中断同时产生而CPU响应的顺序取决于内部查询顺序。
设置串口工作方式1,波特率9600,计算可得计数器初值的十六进制表示为0XFD。通信协议如表4-2所示:
表4-2 串口通信数据结构
数据结构 第1个字节 第2至第33个字节 第34个字节 内容 起始标志位?S? 显示数据 控制指令 作用 判断是否开始接收数据 LED的显示内容 控制LED显示方式 具体串口中断程序流程图如图4-6所示,在主程序中先进行了串行中断的初始化,初始化内容包括了串行工作方式选择,波特率的设定,计数初值的设定。程序开始进入中断等待,当PC机向单片机发送数据时产生中断接收允许位RI置1,将SBUF(缓冲寄存器)中的值输入到暂存器中进行数据处理。首先判断数据是否设定的起始标志位?S?如果是则开始接收起始位后的33个字节,不是则中断返回继续等待。接收到第34个字节后便将收到的数据发送回PC机进行验证比较。
图4-6 通信程序流程图
所有软件编写完成后都必须经过编译才能被单片机识别使用。为了减小软件的修改和优化难度,先把各子程序写为一个可单独执行的完整程序。各子程序编译没有错误后再输入单片机进行验证,这两项都通过后再将所有的程序整合到一起形成
一个完整的程序再进行编译和验证。详细程序见附录2。
第5章 系统调试
硬件制作和软件编写过后,得出实物如图5-1所示。实物完成后必须对其进行调试,检查设计功能是否实现了。软件硬件完成后开始进行调试。调试可分为硬件调试,软件调试和系统联合调试。
5.1 系统硬件部分调试方法
硬件调试主要是调试各部分的焊接是否合格和各芯片的输出输入电压是否符合设计要求,最后测试各硬件部分能否完成设计功能。因此把硬件调试按照以下四部分分步来进行:
(1)测试所有焊点是否有短路和虚焊的现象存在;
(2)通电测试所有硬件芯片的输入输出电压是否在设计要求的范围内; (3)测试ISP下栽线的功能是否能够实现; (4)测试串口系统的通信功能是否能够实现。
由于最重要的显示系统功能的测试需要软件配合所以在硬件调试部分只测试单片机复位电平,功能部分测试放在系统联合调试部分来完成。 5.1.1 短路与虚焊检测
检测工具为万用表,使用万用表的短路报警功能,逐个测试相临的两个焊点检测是否短路。按照电路图检测需要连接的两点是否短路来检测是否已经连接上,以此来检测虚焊的情况。检测和修改完成后为下一步通电检测排除了短路的危险和由于虚焊引起检测结果不真实的麻烦。 5.1.2 上电测试
由于系统测试时是采用USB电源为系统电源,所以电源输入都为5V。显示系统中单片机、译码器,锁存器,驱动电路的电源电压均要求为5V所以可同时直接接入。
上电后首先观察电路是否有过热,异味,冒烟的现象出现。经过观察,没有这些现象出现。然后测试各器件的电源,接地及一些电平应该固定的端口的电压。测试的结果为:各器件电源端在4.3V~4.8V之间满足器件的电源电压要求,单片机端口在未接负载时端口电压为4.5V。
5.1.3 串口调试
串口部分的作用为单片机与PC机之间通信,要检查硬件是否正常工作可以采用将MAX232芯片的单片机端输出口与输入口直接相连的办法来测试。具体电路图如图5-2所示,将MAX232的第10端和第9端直接短接。功能上表示将单片机的输出口与输入口直接相连,单片机收到数据的同时就将数据发送回PC机。如果发
【19】送的数据能够被接收则证明串口通信部分的硬件是正常的。将串口与电脑COM1
相接,通过串口调试助手发送不同位数的数据再在把发送的数据与接收数据相比较。
VCCC1104C2104P3.1 TX11101291513455C1+C1-C2+C2-T1INT2INR1OUTR2OUTGNDVDDVCC216104VCCT1OUTT2OUTR1INR2INVEE147138C461041627384951C31110P3.0 RXMAX232ACPED Connector 9
图5-2 串口硬件调试
5.2 系统软件调试方法
由于已经进行了硬件调试,所以软件调试主要是软件编译和将各功能块程序分别写入以验证其功能的可实现性。在进行功能调试前必须用KEIL C对所有程序进行编译,编译成功生产可执行的. S,Jayas D S,Holly R A.16x16 dot matrix LED . 关于DSP
芯片的问与答.今日电子 ,1998,(12):1-7.
[6] 卢弥坚.主从分布式LED大屏幕显示系统[J].电脑与信息技术,1997,(04):6-13. [8] 张全福.汇编语言程序设计实验教学改革与探索.教学研究,2005,(06):3-5. [9] 文哲雄.用单片机控制LED显示屏[D].佛山:佛山科学技术学院,1995.
[10] 彭宁,只佩华.单片机对LED大屏幕显示的控制系统[J].河北大学学报(自然科学版),1993,
13(3):86-89.
[ 11] 陈玉华,王铭霞. LED大屏幕显示电路的设计[J].大连海事大学学报,1997,(03):55-56. [12] 郑刚,李宇成.LED大屏幕显示系统的设计[J].北方工业大学学报,2001,(03):43-47. [13] 李元生. LED光柱专用驱动器[J]. 家庭电子,2005,(04):1-7.
[14] 王亭,李瑞涛,宋召清.在Windows下PC机和单片机的串行通信[J].微型机与应用,2000(1):
25-27.
[15] 陈新忠.基于RS232总线的单片机多机通信软件设计[J].现代电子技术,2002,(03) :56-78.
附录 1: 硬件原理图