ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:592.32KB ,
资源ID:17460197      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17460197.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx

1、理论设计、调试与仿真、撰写设计报告等。其中理论设计又包括选择总体方案,硬件系统设计、软件系统设计;硬件设计包括单元电路,选择元器件及计算参数等;软件设计包括模块化层次结构图,程序流程图。程序设计是课程设计的关键环节,通过调试进一步完善程序设计,使之达到课题所要求的指标,使理论设计更接近于实际产品。课程设计的最后要求是写出设计总结报告,把理论设计内容,调试的过程及性能指标的测试结果进行全面的总结指导教师: 田 野日 期:2013.7.5三、课程设计进度计划及检查情况记录表序号日期计划完成内容实际完成内容16-25实训动员、准备工作及选题全部完成26-27总体方案设计完成3硬件设计及仿真46-28

2、软件设计与调试5整机测试及撰写报告67-5答辩与总结四、成绩评定与评语 指导教师: 日 期:专业设计的主动性与平时表现(20%)独立思考能力 与动手能力(40%)专业设计 完成情况(40%)专业设计成绩一、总体设计方案1.1 总体设计 1.1.1 工作原 (5)实现利用AT89S51单片机控制的LED图文屏正常工作。1.1.2 硬件部分总体设计根据功能要求,采用AT89C51单片机,动态显示的设计方法,同时为简化设计,减少硬件数量,显示数据的传输采用串行传输方式,列扫描地址用P1口控制,总体结构框图如下: 图1-1 系统总体结构框图1.2 硬件设计系统的组成,硬件的选用,芯片的特点1.2.1

3、8051系列的单片机AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图片见下图: 图 1-2 89C51管脚图(1)管脚说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用

4、作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址

5、信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。(2)P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器

6、读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字 节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处

7、理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出1.2.2 单片机AT89C51最小系

8、统 单片机采用12M晶振作为时钟源,复位采用上电复位和按键复位两种方式仿真原理图如下: 图1-3 最小系统1.2.3 串行口扩展I/O口 为了减少对I/O口的占用,数据传送采用AT89C51串行口方式0中断外接同步移位寄存器74HC595扩展出一个8位并行口实现8位数据并行传输。 图1-4 I/O口扩展74HC595管脚说明:74595的数据端:QA-QH: 八位并行输出端,可以直接控制数码管的8个段。QH: 级联输出端。我将它接下一个595的SI端。SI: 串行数据输入端。74595的控制端说明:/SCLR(10脚): 低点平时将移位寄存器的数据清零。通常我将它接Vcc。SCK(11脚):上

9、升沿时数据寄存器的数据移位。QA-QB-QC-.-QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。我通常都选微秒级)RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。/G(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。1.2.4 16*16点阵行、列驱动 为实现16*16点阵移动显示功能,在显示时采用逐列扫描

10、、2*8数据行输入方式进行显示,列驱动采用两个74HC138级联为4译16译码器,并用P1.0P1.3进行完成译码,实现逐列扫描,行数据输入采用两个74HC373数据锁存器实现16位异步输出,仿真原理图如下: 图1-5 行驱动 图1-6 列驱动1.2.5 16*16点阵制作设计时必须掌握点阵工作原理方能进行更深层设计。16x16LED点阵其实就是4块8x8点阵LED级联而成的,因此特给出 88 点阵LED的工作原理。图(1)为88点阵LED外观及引脚图,其等效电路如图(2)所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可。应用时限流电

11、阻可以放在X轴或Y轴。而16x16就是在8x8原理的基础上将四块8x8级联而成,如图:图1-7 88点阵LED外观及引脚图图1-8 88点阵LED等效电路 图1-9(a) 四块8x8点阵LED级联 16*16连接示意图 图1-9(b) 四块8x8点阵LED级联成16x16点阵LED点阵的显示文字图形原理:LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以1616点阵为例,把所有同一行的发光管的阴极连在一起,把所有同一列的发光管的阳极连在一起(共阴的接法),先送出对应第1列发光管亮灭的数据并锁存,然后选通第1列使其燃亮一定的时间

12、,然后熄灭;再送出第2列的数据并锁存,然后选通第2列使其燃亮相同的时间,然后熄灭;.第16列之后,又重新燃亮第1列,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。显示数据可通过单片机的P0,P2口接驱动电路传输到点阵行引脚。 点阵的移动 以下以1616点阵为例介绍点阵的移动。要显示一个字符,该字符的点阵数据可以列向(纵向)16点组字,又可以行向(横向)16点组字。无论哪一种组字方法,都既可以显示字符的水平方向的移动,又可以显示竖直方向的移动。本设计主要采用汉字的左移,所以以

13、下只作左移显示的解释 列扫描方式左移动:列向组字显示字符水平方向的移动(左滚动) 延长数组法。将原来字符点阵数组的16个数据重复一遍延长,点阵数组的数据个数为32个。每扫描一帧取8个数据显示,下一帧取数要在数组中后移一个数取数。循环一遍扫16帧。可以假想有两块1616的点阵模块(共32帧)水平平行排列,用一个恰好能罩住16列点阵的中空方框去罩这个点阵,第1(第1帧)罩住最左边数起第一列开始的16列,就扫描显示这16列;第2次(第2帧)使方框右移一列,罩住做左边数起第2列开始的16列,就扫描显示这16列;这样每扫描完一帧使方框右移一列,最后第16次(第16帧)时,罩住左边数起的第16列开始的16

14、列,就扫描显示这16列。如此完成16帧画面的扫描显示,也就完成了整个一次移动循环扫描、之后反复循环,即可呈现显示字符沿水平向左移动的图像因为是列向组字(列扫描方式,点阵数据为行码,上边为低位下面为高位),希望显示移动的一个字符,第1次扫描从行码的点阵数组中取第116个数据,送行码输出口,对应于这8个数据,同时用列码输出口输出列码,分别控制第116列。扫描完前16个数据之后,第2次扫描从点阵数组中取第318个数据(第18个数据与第1个数据同),送行码输出口,对应于这16个数据,同时用列码输出口输出列码,仍分别控制扫第116列。第3次扫描从点阵数组中取第520个数据(第20个数据码与第2个数据码相

15、同)扫描如此实现字符向左移动。以上完成一个图形移动的方法,也可以看成是移动16个不同的字形。如图2.13所示,首先扫描第一个字型,同样是16行,16次扫描,16次显示;完成一个字型的扫描以后,再扫描第二个字型;完成第二个字型的扫描之后,再扫描第三个字型依此类推,即可产生该文字的左移的感觉。1.3 软件设计 1.3.1 静态显示流程静止显示是所有显示方式中最简单的一种。单片机上电复位,先调用显示程序,在发送点阵数据给单片机时,根据已经制作好的显示屏的结构特征,即一屏能显示 1 个汉字,显示时是将按组顺序存储的点阵数据,按列扫描依次取出,逐列亮 LED 。在一屏汉字显示完毕后,循环显示一段时间后,

16、字符数据地址偏移32 个字节,接着显示下一屏数据,其流程图如图所示。 图1-10 静态显示流程图1.3.2 动态显示流程先调用显示程序,显示“培养”一个字符,显示之后马上熄灭,接着调用延时程序,延时约 1 秒钟,然后以左移的方式显示事先写在芯片里的2个字节,等到全都显示完毕,转向while死循环,又从显示“培养”开始一个新的周期。程序流程图如图4-1 所示 是 否图1-11 动态显示流程图1.3.3 列扫描显示流程:首先准备一个要显示的字符(32字节数据),扫描一列输出2字节(16位)数据,延时显示100us,然后熄灭本列,防止窜行显示,逐列扫描完16列后重复扫描10次以上以保证能有足够显示时

17、间。扫描一列显示一列点阵延时1毫秒是否移完15列灭本列点阵移到下一列,字符数据地址加2准备一个字符数据程序入口移到第一列,重新加载本字符数据首地址字符数据首地址是否重新加载20次返 回图1-12 显示子程序流程图二、设计内容2.1 系统硬件原理图与仿真系统总体原理图如图2-1;图2-1 系统总体原理图系统仿真截图如图2-2; 图2-2 系统部分仿真截图动态移动显示字符如图2-3 图2-3 动态显示字符截图静态闪动显示图案如图2-4;图2-4 静态闪动显示字符截图2.2 程序清单 文件一:16161.c/* 文件名: 16161.c 文件描述:16*16点阵显示 处理器:AT89C51编译环境:

18、keil v4 修改时间:2013.6.28*/#include#includeziku.h#define Y_port P1#define C373_LE_LOW() HC373_LE1=0;HC373_LE2=0;sbit HC595_SCLK =P21; /同步移位寄存器锁存控制端sbit HC373_LE1 =P33; /#1锁存器锁存控制端sbit HC373_LE2 =P32; /#2锁存器锁存控制端uchar flag=1; uchar i;code uchar Y16 = 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x

19、0a,0x0b,0x0c,0x0d,0x0e,0x0f;/*函数说明:串口方式0配置*/void UART_init() SCON= 0x00; /串口工作方式0 IE = 0x90; /串口中断使能/*端口初始化*/void PORT_init() HC595_SCLK = 0; HC373_LE1 = 0; HC373_LE2 = 0;/*程序总初始化void init() UART_init(); PORT_init();延时void delay10u(int us) uint b; while(us-) for(b=0;b2;b+) ; 显示16*16点阵*/void display(

20、uchar *word) uchar a; uchar j;uchar time =25; while (time-) /单个字符闪烁显示循环 a=0; for (j=0;(j=15);j+) /行扫描 Y_port=Yj; for(i=0;(i=1);i+) /列8*2扫描 ,点亮一行点阵 flag=0; SBUF= worda+;delay10u(3);/传送到串口缓冲区 i+) /灭一行点阵 SBUF = 0x00; 函数说明:入口函数*/int main() uint k; init(); while(1) for( k=0;k=160;k=k+2) display(word+k);

21、for(;200;k+) display(xiao); delay10u(100); display(space); /*串口ISR*/void UARTISR(void) interrupt 4 using 3 SCON &= 0xfd; /HC373_LE1=0; C373_LE_LOW(); HC595_SCLK = 1; if(i=0) HC373_LE1 = 1; else HC373_LE2 = 1; HC595_SCLK = 0;文件二:ZIKU.h/*文件名:文件说明:定义要显示的字符*/#ifndef _ZIKU_H#define _ZIKU_H#define uint un

22、signed int#define uchar unsigned charcode uchar word160 =0x00,0x00,0x00,0x00,0x7F,0xFE,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x3F,0xFE,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,/田,0 0x04,0x00,0x04,0x00,0x04,0x7E,0x04,0x92,0x0C,0x92,0x34,0x92,0x04,0x92,0x04,0x9

23、2,0x44,0x92,0x84,0x92,0x7F,0x92,0x04,0x9E,0x04,0x80,0x04,0xE0,0x04,0x00,0x00,0x00,/导,1 0x00,0x40,0x04,0x40,0x04,0x44,0x04,0x44,0x04,0x54,0x04,0x64,0x04,0x45,0xFF,0xC6,0x04,0x44,0x04,0x64,0x04,0x54,0x04,0x44,0x04,0x44,0x04,0x40,0x00,0x40,0x00,0x00,/辛,2 0x00,0x84,0x00,0x84,0x00,0x84,0xFC,0x84,0x44,0x9F,0x44,0x84,0x44,0x84,0x47,0xF4,0x44,0x84,0x44,0x84,0x44,0x9F,0xFC,0x84,0x00,0x84,0x00,0x84,0x00,0x84,0x00,0x00,/苦,3 0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x40

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1