单片机课程设计论文报告 下载本文

16×16点阵LED室内电子显示屏的设计 单片机原理及应用课程设计

P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出

3.2.点阵及其驱动部分

图(4)74HC595引脚功能 图(5)8x8基本点阵屏

图五 点阵及其驱动

3.3.模块设计

3.3.1时钟和复位及显示屏模块

常用的时钟电路设计有两种方式,一种是内部时钟方式,一种是外部时钟方式。

4

16×16点阵LED室内电子显示屏的设计 单片机原理及应用课程设计

本实验采用内部时钟方式,将XTAL1与XTAL2之间跨接一个石英晶振和微调电容,从而构成一个稳定的自激震荡器。电容值取30pF左右,其大小将影响震荡频率的高低、振荡器的稳定性和起振的快速性。为减少线间的寄生电容,晶振和电容应尽能安装得与单片机靠近,保证晶振稳定可靠的工作。

另一部分是复位部分。上电自动复位电路是最简单的复位电路,只需要一个1K左右电阻、一个22pF左右的电容及12MHZ的晶振。有时还需要按键手动复位,此时只要在电容上并联一个按键即可。

单片机信号输出采用串行输出,因此在下一模块的移位寄存器要与该部分的串行口P3.0(RXD)及P3.1(TXD)相连 3.3.2点阵屏驱动模块及点阵屏模块

图中点阵显示屏可以显示动态文字和静态文字,静态文字设计比较简单,本次课程设计要求点阵屏动态显示学生信息,另外本课程设计使用的是16x32点阵屏,由于在protues软件中没有没有这么大的显示屏,所以可以用8块8x8点阵屏组合成16x32的点阵屏,或者用4块8x8点阵屏组合成16x32的点阵屏。本设计中16x32的点阵共有512个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口。 3.3.3键盘模块

矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。

键盘编程方法是先读取键盘的状态,得到按键的特征编码。先从P1口的高四位输出低电平,低四位输出高电平,从P1口的低四位读取键盘状态。再从P1口的低四位输出低电平,高四位输出高电平,从P1口的高四位读取键盘状态。将两次读取结果组合起来就可以得到当前按键的特征编码。然后再根据按键的特征编码,查表得到按键的顺序编码。

4、软件设计

4.1设计电路原理框图及仿真电路图

5

16×16点阵LED室内电子显示屏的设计 单片机原理及应用课程设计

4.2程序流程图及程序编程

中断定时器赋初值读取行号并加1送新行显示数据消隐切换显示数据发送新行号,打开显示

退出中断 程

图(12)程序总流

图(13)驱动程序流程图

4.3系统主程序

本设计的系统软件能使系统LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。

系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示图形,停留约几秒;接着向上滚动显示“--------”这几个汉字及一个图形,然后以“卷帘入”效果隐去图形。由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果。

6

16×16点阵LED室内电子显示屏的设计 单片机原理及应用课程设计

单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。如果想改变些事内容,先用字模产生字代码,将用这段代码覆盖原来的代码,即可显示你想要的内容。

5、调试

软件为老师所提供提供,其原理在上一模块以作说明,在这里再作说明,软 件经调试无误,直接将其下再到单片机中,看是否达到所要的效果软件部分是先参考书上的例子,然后自己根据硬件电路写程序,由于以前所学是单片机汇编语言,所以这个系统在编写程序过程中都采用汇编语言编写。刚刚开始,编写不会一次性通过,经过仔细分析修改最后编译成功。但是,在实际写如S51中,LED显示屏出现各种各样的乱码,通过再次认真仔细分析多次修改程序后,程序能够正常运行。

6、设计总结

经过几天的努力,终于完成了一个还算可以的设计,看着自己的劳动成果,觉得还好,遗憾的就是自己做了很久的掉电保护程序还是没能实现其功能,刚开始做这块时,我是根据自己以前学过AT24C02芯片的知识,把掉电保护程序整合到主程序中,显示结果只有一些零散的点在循环闪动,经过调试我知道是自己把掉电程序和点阵显示程序一起执行的原因,由于AT24C02芯片读写时间过长,导致点阵不能快速显示。后来我将掉电程序单独执行,将数组中所有元素先存储进芯片,等了很久,点阵屏上才有显示,这就是在等待AT24C02芯片读写结束。不过不知哪里有问题,将数组存入再读出,显示到点阵屏的已不是原来的字。接着在网上查找了一些资料,没有找到比较有用的资料,所以只好自己思考,可是没能解决,具体程序将放在文件夹中。

这次设计让我知道了自学能力的重要性,期间遇到的许多问题,都需要自己通过百度查找慢慢解决。我的设计有不足之处,希望老师批评指正,下次一定会做得更好。

7、附 录A;源程序

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include #define KeyPort P1

unsigned char code byb[20]={2,2,4};

7