《点阵广告牌课程设计报告书(共25页).doc》由会员分享,可在线阅读,更多相关《点阵广告牌课程设计报告书(共25页).doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上课程设计说明书课程设计名称: 单片机课程设计 课程设计题目: 点阵广告牌的设计 学 院 名 称: 电气信息学院 专 业 班 级: 学 生 学 号: 学 生 姓 名: 学 生 成 绩: 指 导 教 师: 课程设计时间: 2017.10.30 至 2017.11.5 专心-专注-专业格式说明(打印版格式,手写版不做要求)(1)任务书三项的内容用小四号宋体,1.5倍行距。(2)目录(黑体,四号,居中,中间空四格),内容自动生成,宋体小四号。(3)章的标题用四号黑体加粗(居中排)。(4)章以下的标题用小四号宋体加粗(顶格排)。(5)正文用小四号宋体,1.5倍行距;段落两端对齐
2、,每个段落首行缩进两个字。(6)图和表中文字用五号宋体,图名和表名分别置于图的下方和表的上方,用五号宋体(居中排)。(7)页眉中的文字采用五号宋体,居中排。页眉统一为:武汉工程大学本科课程设计。(8)页码:封面、扉页不占页码;目录采用希腊字母、排列,正文采用阿拉伯数字1、2、3排列;页码位于页脚,居中位置。(9)标题编号应统一,如:第一章,1,1.1,;论文中的表、图和公式按章编号,如:表1.1、表1.2;图1.2、图1.2;公式(1.1)、公式(1.2)。课程设计任务书一、 课程设计的任务和基本要求(一) 设计任务1. 设计一款能够显示不同字符的LED点阵广告牌; 2. 设计不同的字符切换效
3、果(如闪烁,静止,平移等);3. 设计控制按钮,可以在不同的效果间切换;4. 能够显示图形或自定义字符。(二) 基本要求1. 有硬件结构图、电路图及文字说明;2. 有程序设计的分析、思路说明; 3. 有程序流程框图、程序代码及注释说明;4. 完成系统调试(硬件系统可以借助实验装置实现,也可在Proteus软件中仿真模拟);5. 有程序运行结果的截屏图片。 二、进度安排 第9周,10.3011.5 1) 10.30 题目分析,文献查阅 2) 10.31 方案比较,确定设计方案 3) 10.3111.1 硬件电路设计 4) 11.211.4 程序设计,程序调试,系统联调,系统改进 5) 11.5
4、课程设计说明书撰写三、参考资料或参考文献1. ,. 单片机原理及应用基于Proteus和Keil C M.北京:电子工业出版社,20132. ,. 单片机原理与应用设计M. 北京:电子工业出版社,20083. 马忠梅. 单片机的C语言应用程序设计(第5版) M.北京:北京航空航天大学出版社,20134. 罗中华. LED信息显示屏系统的设计D.南昌大学,2008.24-28. 5. 陆彬. 21天学通51单片机开发M.北京:电子工业出版社,2010.21-23,352-362.本科生课程设计成绩评定表姓名专业班级学号课程设计题目:课程设计答辩记录:(手写)成绩评定依据:项目得分比例考勤记录设计
5、结果报告撰写答辩成绩备注:成绩评定依据的项目内容和项目分值比例可以由老师按指导的专业进行调整,但成绩评定依据的项目数不得少于3项。最终评定成绩: 指导教师签名: 年 月 日目 录第一章 设计论证1.1主控芯片的选取方案论证 方案一:采用可编程逻辑器件(简称为PLD)系统来实现LED点阵内容的显示,可以充分的利用器件里丰富的I/O口资源来驱动LED点阵的行和列。但若采用中大规模的PLD,设计多个接口电路,开发周期长,不易于进一步扩展,同时系统的成本会急剧上升。方案二(采用):本次设计采用AT89S51单片机系统来实现,51单片机体积小,可靠性高,适用范围广,使用方式灵活而简单,价格便宜,适用于学
6、生学习。另一方面51单片机简单易学,对于数据的处理也速度比较快,因此是很多设计的优先选择。所以我便买了一个51单片机,它里面点阵是已经和两片74HC595焊接好的,所以为了实物能达到效果,便以此编写程序。并且使用74HC595芯片可以节省I/O口达到驱动更加多的LED,控制灵活方面再加上安装和调试的工作也比较的简单方便,使得本设计和制作过程的难度得以降低。1.2显示方面的选取方案论证 方案一:采用静态方式,这种方式就是直接把所有的发光二极管的一极跟单片机的I/O口连接,所有发光二极管的另外一极就通过电阻然后接到电源上。这种方法可以直接驱动LED,原理也很简单且具有很强的驱动能力,对于LED的点
7、亮方式则可通过限流电阻来进行调节,十分方便,但这种方法的缺点就是很浪费单片机的I/O口不能驱动很多的LED,它适用于那些相对来说比较小的系统。方案二:采用动态扫描的方式,这一种方式也就是先把LED并联在一起然后跟驱动芯片的输出引脚相连接,而LED发光二极管的另外一端就跟单片机的通用I/O口相连接,控制选通行所对应列LED灯的亮灭。采用这种扫描方案,能够达到驱动比较多的LED的功能要求,控制起来也很灵活,还有一个优点就是占用较少的单片机的I/O口。动态扫描就是一行接一行的去点亮发光二极管,那样仅仅使用一套驱动器就可以驱动很多行的同名列。根据对方案一和方案二进行比较,经过综合考虑可以发现,动态扫描
8、方式占有较多的优势。而本设计做的是88LED点阵广告牌,若采用静态显示也行,但连线电路复杂,增加了仿真及实物连接的难度,所以本设计最后选择的方案是方案二。第二章 硬件设计2.1 硬件结构与工作原理硬件组成及工作原理硬件电路以AT89C51为核心为主控芯片,用单片机最小系统驱动,行列扫描电路是由两片74HC595芯片及点阵构成,通过程序使字模信号串行输出给两片八位移位寄存器74HC595,由两片74HC595把接收到的十六位(行+列)字模信号存储然后并行输出给8x8的LED点阵,由行列信号控制点亮LED。如下图2.1。 图2. 1 总体框图2.2 单元电路设计2.2.1单片机最小系统单片机最小系
9、统是由晶振电路和复位电路两部分组成,其总体电路图如图2.2。 图2. 2 单片机最小系统1) 时钟电路系统的时钟电路设计采用内部方式,即利用芯片内部的振荡电路。STC单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是放大器的输入端和输出端。这个放器与作为反馈元件的片外晶谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容值为30pF。2)复位电路复位
10、是对单片机进行初始化操作,即把特殊功能寄存器的数据刷新为默认数据,单片机在运算过程中如果遇到外界干扰,寄存器中的数据就会发生混乱,以至于程序不能正常运行,这样就需要单片机复位,以使程序重新开始。复位方式一般分两种:上电自动复位和按键手动复位,本设计中的复位电路既可实现上电自动复位也可实现手动复位,其电路的组成是在RST复位输入引脚上接一个电容至VCC端,还有按键,下接一个电阻到地即可。2.2.2 LED点阵1)88点阵内部结构88点阵是由64个发光二极管组成,每个二极管都是分布在行线与列线的交点上,其单点工作电压为1.8v,正向电流为8-10mA。如图2.3为行共阳88点阵,当某一行线为高电平
11、而某一列线为低电平时,其行列交叉点就被点亮,而当其某一列线为高电平时,其行列交叉点为暗;当其某一行线为低电平时,无论列线如何,对应这一行的点全部为暗。 图2. 3 8*8点阵2) LED驱动显示采用动态扫描方法动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以88点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的列极连在一起(行共阳的接法),先送出对应第1列(也就是八行)发光管亮灭的数据(即字模信号)并锁存,然后选通第1列使其燃亮一定的时间,然后熄灭;再送出第2列的数据并锁存,然后选通第2列使其燃亮相同的时间,然后熄灭;.第8列之后,又重新
12、燃亮第1列,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。LED点阵显示屏广泛应用与汽车报站器,广告屏等。8X8 LED点阵是最基本的点阵显示模块,理解8X8 LED点阵的工作原理就可以基本掌握LED点阵显示技术。2.2.3 点阵行扫描电路1)74HC595芯片功能图2. 4 74HC595引脚图管脚说明:表2. 1 74HC595管脚说明管教编号管脚名说明15、1、2、3、4、5、6、7Q0-Q7三态输出管脚8GND接地9Q7串行数据输出10MR(SCLR)移位寄存器清零
13、端11SH_CP(SCK)数据输入(移位)时钟12ST_CP(RCK)输出储存器锁存时钟13OE数据输出使能端/OE,低电平有效14DS串行数据输入端,时钟上升沿数据移入16VDD电源VDD行列扫描电路是由两片74HC595芯片及点阵构成,74HC595是一款具有8位移位寄存器和一个存储器,三态输出功能的驱动芯片,引脚图如图2.4,管脚功能如表2.1。移位寄存器和存储器分别具有独立的时钟信号。数据在SHCP的上升沿输入,在STCP的上升沿进入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(DS),和一个串行输出(Q7),和一个异步的
14、低电平复位(MR),存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。3) 工作原理 图2. 5 单片机与74HC595接线图如图2.5,每当单片机P3.5输出给U2(低位74HC595)的数据移位时钟SH_CP(11脚)一个脉冲时,U2便通过串行数据输入端DS(14脚)从单片机的P3.4口移入一位二进制数,当第九个移位脉冲到来时,U2(低位片)便将第一个移入的一位二进制数从Q7(9脚)输出经由DS送到U3(高位片),直到行列信号(一共十六位二进制数)都送入U2、U3之后,单片机P3.6口便输出一个脉冲经由输出储存器锁存时钟ST_CP(12脚
15、)送给U2、U3,然后U2、U3同时锁存并输出(即并行输出)行列各八位电平信号给88点阵,即可点亮点阵,控制行列信号便可以输出想要得到的文字和图形,代码可以通过字模软件获取,当然也可以自己编写!第三章 软件设计3.1系统软件结构开 始字符数量k6显示一个字符,k+1While(1)开关s是否按下滚动显示变换显示是否否是初始化图3. 1 主程序流程图如图3.1所示,在初始化(即设置I/O口,定义变量,赋初值等)后,进入while循环判断显示的字符数k是否小于6,如果小于6就发送字符的行列选值,用扫描的方式显示,如果k大于6,就将k赋值为零,从0到5依次滚动显示六个字符即循环。而开关是用来选定效果
16、的,此次设计有两种效果滚动显示和变换显示,滚动显示就是在扫描的时候设置偏移量,循环一次后发生偏移,并且同时在偏移后空出的位置扫描下一个字符,依次类推直到六个字符都显示后循环;开关按下后,每次按下状态取反,切换变换效果,变换显示就是不设置偏移量,显示第一个字符一段时间后,k+1,选定第二个字符信号,扫描显示,依次循环。3.2功能子程序设计开 始列j8右移选择下一行,j+发送列选值发送行选值否是图3. 2 滚动及变换显示流程图如下面程序当w=1时,即滚动显示,单片机发送字模的代码信号给74HC595,通过拉高拉低74HC595的输出锁存器时钟ST_CP的电平将信号输出给点阵,从第八列到第一列依次扫
17、描就显示了一个字符,然后偏移量x加一,从x列(第八列为0)开始显示第一个字符,同时8x列开始显示第二个字符,依次偏移一,就可以产生滚动效果了;变换显示就是不加偏移量,显示第一个字符一段时间后,k+1,显示第二个字符,以此类推。当然显示字符时要调用延时程序,这里是直接调用延时函数DelayMS,就不过多介绍了。核心程序: for(j=0; j8; j+) /循环8次发送行和列值 if(w=1) Send_Byte(tabelkj);/发送列选值Send_Byte(ROW(8-x);/发送行选值R_CLK = 1; /拉高输出锁存器,把移位寄存器中数据输出R_CLK = 0; /拉低输出锁存器RO
18、W = _cror_(ROW, 1);/右移,选择下一行elseSend_Byte(tabelkj);/发送列选值Send_Byte(ROW);/发送行选值R_CLK = 1; /拉高输出锁存器,把移位寄存器中数据输出R_CLK = 0; /拉低输出锁存器ROW = _cror_(ROW, 1);/右移,选择下一行if(S0=0)w=w; DelayMS(15);第四章 系统调试与分析4.1调试过程与调试结果 1)以下图4.1是程序最后的调试结果,从起初的断续显示,切换不流畅,在室友的帮助下不断修改添加,到最后流畅切换,正常显示效果,基本达到设计要求。图4. 1 程序调试图2)以下图4.2是p
19、roteus最后的仿真效果图,由程序编译生成hex文件,在proteus仿真中单片机加载hex文件,运行仿真。基本达到程序设定的效果。 图4. 2 仿真调试图3)实物效果图图4. 3 实物图4.2调试结果分析调试主要就是硬件调试和软件调试。在硬件调试的过程应该分模块,逐个进行调试,而且要在保证软件正确的情况下去对硬件进行测试,这样就才容易找到错误的所在。对于软件的调试主要是把用C语言编写好的程序复制到Keil uVision3软件进行编译,不断的修改错误的地方直到编译成功,以及proteus的画图仿真。我们常用的编程语言就是C语言汇编和汇编语言,在编写的时候需要有先验的知识主体,了解单片机的概
20、念。硬件的调试主要分为LED点阵显示屏的调试和单片机最小系统的调试。第五章 设计小结在设计制作本系统的过程中,我深切的体会到了实践能力的重要性,只有理论基础是不能做好一个完美的设计的。本系统的研制主要应用到了LED点阵汉字显示原理、单片机控制技术、LED点阵驱动芯片等多方面的知识,本系统达预期的要求,操作方便、价格便宜、广告牌的各点亮度均匀、充足,可以显示文字内容,显示的文字稳定、清晰无串扰。在调试方面,经过多次对任意的测试操作,稳定的性能得到了认可。同时此系统通过软件设计,实现了内容显示的多样化,大大提高了广告牌的吸引力。在完成本设计之前,要看很多的书籍,了解所用到的芯片,它们工作的原理,没
21、有知识的来源就没有操作的进行。于是我学会了利用网上和图书馆丰富的资源,在发现问题的时候通过查阅资料来解决问题。在本次设计中我也发现了自己还有很多不足的地方,还需要不断的去加强自己的动手能力,知识面也有很狭窄还需要通过不断的阅读来提高自己的能力。从硬件电路的设计和制作到软件的设计,这过程中有遇到不少的问题,但凡是生生相克,有问题出现就有解决问题的方法。了解了LED的显示原理,了解了驱动芯片的作用,进而进行软件方面的设计。为了实现LED点阵显示内容的效果,就需要对C语言的掌握。学会合理利用图书馆的资源,增加自己的知识,提高自己的实践能力。在本设计的整个过程中,我可以发现我有很多的不足,对专业理论知
22、识的掌握过少,动手能力也有所欠缺。但本设计让我学到的东西是很多的,首先我加深了对本专业知识的理解,学会了不懂就要问,遇到问题不要抱怨,更不能放弃,只要想学就一定能学会,我相信我会不断的超越自己,努力的做得更好。附录:完整程序:/*88点阵屏循环显示 “L”“J”“Y”“1”“2”“特殊符号”*/#include #include /循环右移头文件sbit S0 = P30; /按键接口sbit DIO = P34; /串行数据口sbit S_CLK = P35;/移位寄存器时钟sbit R_CLK = P36;/输出锁存器时钟/*点阵字形码*/unsigned char code tabel6
23、8=0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x0,0xFF,/L0xFF,0xFE,0xFE,0x80,0x7E,0x7E,0x9F,0xFF,/J0xFE,0xFD,0xFB,0x7,0xFB,0xFD,0xFE,0xFF,/Y0x7F,0x7F,0x7F,0x0,0x7D,0x7B,0x7F,0xFF,/10xFF,0x7F,0x79,0x76,0x6E,0x5E,0x39,0x7F,/20xFF,0xE7,0x14,0xC0,0x14,0xE7,0xFF,0xFF,/符号;/*595发送一字节*/void Send_Byte(unsigned char dat)un
24、signed char i; /循环次数变量S_CLK = 0;/拉低移位寄存器时钟R_CLK = 0;/拉低输出锁存器时钟for(i=0; i= 1;/数据右移S_CLK = 1;/拉高移位寄存器时钟,数据移位S_CLK = 0;/拉低移位寄存器时钟void DelayMS(unsigned int x)/延时unsigned char i;while(x-)for(i=0;i120;i+);void main()unsigned char j, k, l, x, ROW,w;/j发送8列和8行字形码,k低字符数量,l高字符数量,x扫描偏移量,ROW行值 ,w标志位unsigned int
25、z;/动态扫描延时变量w=0x1;while(1)for(k=0; k6; k+)/k 需要显示的字符数量l=k+1;if(l=6)l=0;x=0;for(z=0; z1000; z+)/z刷新次数ROW = 0x80;/行选初值if(x=9)x=0;if(z%125=0)x+;for(j=0; j8; j+) /循环8次发送行和列值if(w=1)Send_Byte(tabelkj);/发送列选值Send_Byte(ROW(8-x);/发送行选值R_CLK = 1; /拉高输出锁存器,把移位寄存器中数据输出R_CLK = 0; /拉低输出锁存器ROW = _cror_(ROW, 1);/右移,选择下一行elseSend_Byte(tabelkj);/发送列选值Send_Byte(ROW);/发送行选值R_CLK = 1; /拉高输出锁存器,把移位寄存器中数据输出R_CLK = 0; /拉低输出锁存器ROW = _cror_(ROW, 1);/右移,选择下一行if(S0=0) w=w; DelayMS(15);
限制150内