单片机课程设计之基于Proteus的LED点阵显示屏的设计与仿真Word下载.docx
- 文档编号:19274318
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:12
- 大小:357.23KB
单片机课程设计之基于Proteus的LED点阵显示屏的设计与仿真Word下载.docx
《单片机课程设计之基于Proteus的LED点阵显示屏的设计与仿真Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计之基于Proteus的LED点阵显示屏的设计与仿真Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
8、8×
8、16×
16、24×
24、40×
40等多种;
根据像素的数目分为等,双基色、三基色等,根据像素颜色的不同所显示的文字、图象等内容的颜色也不同,单基色点阵只能显示固定色彩如红、绿、黄等单色,双基色和三基色点阵显示内容的颜色由像素内不同颜色发光二极管点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极管的点亮时间,则可实现256或更高级灰度显示,即可实现真彩色显示。
图1--5示出几种LED点阵显示器的内部电路结构和外型规格,其它型号点阵的结构与引脚可试验获得。
LED点阵显示器单块使用时,既可代替数码管显示数字,也可显示各种中西文字及符号.如5x7点阵显示器用于显示西文字母.5×
8点阵显示器用于显示中西文,8x8点阵用于显示中文文字,也可用于图形显示。
用多块点阵显示器组合则可构成大屏幕显示器,但这类实用装置常通过微机或单片机控制驱动。
LED点阵扫描驱动方案:
由LED点阵显示器的内部结构可知,器件宜采用动态扫描驱动方式工作,由于LED管芯大多为高亮度型,因此某行或某列的单体LED驱动电流可选用窄脉冲,但其平均电流应限制在20mA内.多数点阵显示器的单体LED的正向压降约在2V左右.但大亮点∮10的点阵显示器单体LED的正向压降约为6V。
大屏幕显示系统一般是将由多个LED点阵组成的小模块以搭积木的方式组合而成的,每一个小模块都有自己的独立的控制系统,组合在一起后只要引入一个总控制器控制各模块的命令和数据即可,这种方法既简单而且具有易展、易维修的特点。
LED点阵显示系统中各模块的显示方式有静态和动态显示两种。
静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。
Proteus最重要的特点是它能够把用户编写的应用软件作用在微处理器上并和连接在该处理器的外围模拟器件及数字器件协同仿真,就像在真正的单片机应用系统的硬件平台上执行目标代码。
支持的微控制器有51系列、Microchip的PIC系列、Atmel的AV系列、和ARM7/LPC2000。
Proteus软件使用彻底改变了传统单片机学习和开发方式,初学者可以在没有实验硬件条件下进行仿真实验,开发者也不必经历“原理图设计、PCB线路板制作、元件焊接、然后进行软件编程、通过仿真器对系统硬件和软件调试”过程,可以直接用Proteus进行电路设计和仿真运行程序,运行成功后再制作产品,缩短开发周期,节约开发成本。
汉字点阵显示电路设计制作时,显示部分由8×
8单色LED模块拼接而成,元件引脚较多,硬件制作繁琐,应用Proteus进行仿真设计,极大缩短开发周期。
下文用Proteus软件设计16×
16三个汉字静态显示屏。
二系统总体设计方案
(1)硬件框图
汉字点阵的控制电路采用C51系列单片机,硬件电路可分为单片机控制器、LED显示屏行列驱动电路、LED点阵显示屏三部分,如下图所示。
系统设计硬件框图
(2)基本原理
点阵LED扫描法介绍
点阵LED一般采用扫描式显示,实际运用分为三种方式:
(1)点扫描
(2)行扫描
(3)列扫描
若使用第一种方式,其扫描频率必须大于16×
64=1024Hz,周期小于1ms即可。
若使用第二和第三种方式,则频率必须大于16×
8=128Hz,周期小于7.8ms即可符合视觉暂留要求。
此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。
汉字的存储
用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。
第一步是获得数据并保存,即在存贮器中建立汉字数据库。
第二步是在扫描模块的控制下,配合行扫描的次序正确地输出这些数据。
获得图像数据的步骤是,先将要显示的每一幅图像画在一个如图3.3所示的被分成16×
16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以32×
16的数据结构组成64个字节的数据,并保存在只读存贮器ROM中。
以这种方式将若干个汉字的数据贮存在存贮器内,就完成了图像数据库的建立工作。
然后,依次对多汉字抽取像素信息,并按序排队存放起来,便可得到一个待显示数据序列。
将这个序列存到ROM中进一步通过寻址的方法来控制该数据序列的释放过程,就可实现在LED发光二极管点阵上滚动显示多汉字信息的目的。
由图3.4可知,某一时刻能在显示数据序列中定位待显示数据的地址指针可用下式计算:
addr=n+m
(式3.1)
第二步工作的步骤是:
先在扫描模块的控制下,由地址线确定每次由ROM送出某一列的16个LED所要显示的汉字的控制字节数据,同时由扫描模块输出的5位扫描码经两个4-16译码器解码后决定相应的某一列可以被点亮,而另外31列都不能被点亮。
该状态持续约0.4毫秒后,就接着进行下一行的扫描。
当完成了一次32行的扫描后,也就完成了一帧画面的显示。
重复上述过程不断修改ROM的地址区间的起始地址,转向下一幅画面的数据传送和显示。
如此进行,就可以在LED点阵模块上滚动显示ROM中存储的汉字。
三硬件系统设计
(1)硬件原理图
利用Proteus仿真软件制作出详细的硬件原理图如下:
硬件原理图
(2)元器件的选择
元件编号
规格参数
LED
16x16点阵
PCB板
10cm*10cm环氧板
U1~U6
74HC595
U7
AT89C51
U8
74HC154
R1
2K欧姆
C1、C2
33pF
C3
10uF
四系统软件设计
(1)编程思路
根据以上硬件电路和单片机控制原理,编程思路为:
a先对相关变量进行初始化。
b调用显示程序
c装载三个汉字的第一行数据,并显示出来。
d依次显示三个汉字的第二行至第十六行。
e结束
(2)流程图:
(3)程序编写
利用字库软件查找所要显示的3个字的代码,为了突出课程设计的唯一性,我用了自己的名字“费星”来加以与其他同学区别。
“费”字代码如下{0x04,0x48,0x7F,0xFC,0x04,0x48,0x7F,0xF8,0x44,0x40,0x7F,0xFE,0x04,0x42,0x08,0x4A,0x3F,0xF4,0xD0,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x02,0xC0,0x0C,0x30,0x30,0x08},//费
“星”字代码如下
{0x00,0x08,0x3F,0xFC,0x20,0x08,0x3F,0xF8,0x20,0x08,0x3F,0xF8,0x01,0x00,0x21,0x08,0x3F,0xFC,0x21,0x00,0x41,0x10,0xBF,0xF8,0x01,0x00,0x01,0x04,0xFF,0xFE,0x00,0x00},//星
“做”字代码如下
{0x10,0x20,0x12,0x20,0x12,0x20,0x22,0x24,0x3F,0xFE,0x62,0x84,0xA2,0x44,0x22,0x44,0x2F,0xC8,0x28,0xA8,0x28,0xA8,0x28,0x90,0x28,0xA8,0x2F,0xA8,0x28,0x46,0x20,0x84
},//做
按流程图完成其他剩余程序的编写,详细程序见附录。
(4)系统的仿真调试
1)将上述程序原代码用Keil软件编译产生一个“.hex”为后缀的用于烧写芯片的文件。
2)把生成的hex文件添加到硬件电路图中的单片机驱动程序中。
3)在ISIS电路图中点击左下角的运行按钮,则可在LED显示点阵中看到图结果。
五设计总结
本次课程设计的制作使我对Proteus、Keiluvision2等软件的认识有了进一步的加深,对它们的使用能力也得到了进一步的加强。
同时也加深对单片机课程的全面掌握和认识,对单片机课程的应用得到了更深的了解。
虽然本设计只使用了一块16×
16LED点阵,电路简单,但是已经包涵了LED汉字滚动显示屏的电路基本原理、基本程序和Proteus软件仿真,只要扩展单片机的10接口,并增加一些LED点阵和相关芯片,就能设计出更大面积、更多花样的LED显示屏。
在一开始做课程设计的时候由于缺乏经验和资料,没有找准目标,思路和设计都缺乏针对性,在一些小细节上浪费了很多时间。
通过和同学的交流,找准了此次课程设计的重点,在网上有目的的找到了相关的资料,在同学的帮助和自己的努力下完成了最后的课程设计。
虽然还有很多地方需要完善,但通过本次课程设计使我对自己的动手能力更加的有自信,同时也了解到人多力量大的道理,和同学的交流以及上网搜索资料能更快更好的完成任务。
参考文献:
1)周润景.基于Proteus的电路与单片机仿真系统设计与仿真北京航空航天大学出版社,2005.
2)楼然苗,李光飞.单片机课程设计指导[M].北京:
北京航空航天大学出版社,2007.7.
3)周兴华.单片机智能化产品C语言设计实例详解北京航空航天大学出版社,2005.
4)戴俊峰.嵌入式系统大屏幕LED点阵显示器[J].现代电子技术,2004,27(19).
5)冯寿鹏.基于嵌入式系统的LED信息显示技术研究[J].现代电子技术,2005
(1).
6)金炯泰,金奎焕.如何使用KEIL8051C编译器[M]北京航空航天大学出版社,2002.
7)杨世品.基于Proteus的单片机出租车计价器的设计.微计算机信息,2007.
附录:
#include<
reg51.h>
#include<
intrins.h>
unsignedcharcodeFONT16x16[3][32]={
{0x04,0x48,0x7F,0xFC,0x04,0x48,0x7F,0xF8,0x44,0x40,0x7F,0xFE,0x04,0x42,0x08,0x4A,0x3F,0xF4,0xD0,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x02,0xC0,0x0C,0x30,0x30,0x08},//费
{0xEF,0xDF,0xED,0xDF,0xED,0xDF,0xDD,0xDB,0xC0,0x01,0x9D,0x7B,0x5D,0xBB,0xDD,0xBB,0xD0,0x37,0xD7,0x57,0xD7,0x57,0xD7,0x6F,0xD7,0x57,0xD0,0x57,0xD7,0xB9,0xDF,0x7B
}};
//做
sbitSDI=P2^1;
sbitSRCLK=P2^0;
sbitRCLK=P2^2;
#defineLineCtrlP1
voiddelay(unsignedintus)
{
while(us--);
}
voidSendByte(unsignedchardat)
unsignedchari;
for(i=0;
i<
8;
i++)
{
SRCLK=0;
if(dat&
0x80)
SDI=1;
else
SDI=0;
SRCLK=1;
dat=dat<
<
1;
}
voidDisplay(unsignedchar*dat1,unsignedchar*dat2,unsignedchar*dat3)
16;
{
SendByte(dat3[2*i+1]);
SendByte(dat3[2*i]);
SendByte(dat2[2*i+1]);
SendByte(dat2[2*i]);
SendByte(dat1[2*i+1]);
SendByte(dat1[2*i]);
RCLK=0;
_nop_();
LineCtrl=i;
RCLK=1;
delay(100);
voidmain(void)
{while
(1)
Display(FONT16x16[0],FONT16x16[1],FONT16x16[2]);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 基于 Proteus LED 点阵 显示屏 设计 仿真