16x64 LED广告屏设计文档格式.docx
《16x64 LED广告屏设计文档格式.docx》由会员分享,可在线阅读,更多相关《16x64 LED广告屏设计文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
本文介绍了利用Proteus7.10软件进行原理图的绘制,利用汉字转换软件将汉字转换为将要发送给单片机的点阵数据,在keil软件当中采用C语言编程,与proteus进行联调,并通过仿真软件Proteus7.10最终实现自己设想的效果,总体上系统的设计简单、显示清晰、成本较低。
关键词:
单片机;
LED;
点阵屏;
c语言
目录
第一章绪论1
1.1设计的背景与意义1
1.2设计内容与目的1
1.3设计要求2
第二章设计方案的论证3
第三章系统的硬件设计5
3.1单片机最小系统的设计5
3.2显示电路设计6
3.3驱动电路设计9
第四章系统的软件设计12
4.1系统主程序流程12
4.2系统子程序流程12
第五章系统调试14
第六章课设总结与体会15
参考文献16
附录Ⅰ
第一章绪论
1.1设计的背景与意义
单片微型计算机(singlechipmicrocomputer)简称单片机,它是为各类专用控制器而设计的通用或专用微型计算机系统,高密度集成了普通计算机微处理器,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。
单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。
单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。
所以研究LED显示有实用的意义。
LED显示屏分为图文显示屏和视频显示屏,均由LED矩阵块组成。
图文显示屏可与计算机同步显示汉字、英文文本和图形;
视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。
LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于交通运输、车站、商场、医院、宾馆、证券市场、工业企业管理等公共场所。
LED显示屏可以显示变化的数字、文字、图形图像;
不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。
LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。
这些优点概括起来是:
亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。
LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。
1.2设计内容与目的
现代LED的发展很快,很多研究领域非常已经深刻,实际情况是:
很多相关的知识已经远远超出我们在校学生的能力范围,所以在此只是简单的研究一下用单片机驱动的LED显示移动的汉字。
目的有三:
一是亲手制作一个简单实用的显示文字的LED点阵;
二是通过制作LED点阵增强对LED点阵的了解和应用,以及复习巩固单片机知识;
三是通实践操作,增强动手实践的意识,为以后走向社会工作打下基础。
1.3设计要求
本方案设计一个电子显示屏,具体要求满足以下条件:
1.要求采用51单片机作为微控制器;
2.通过四个16x16的点阵LED进行文字显示;
3.在目测条件下LED显示屏各点亮度均匀、充足、稳定、清晰无串扰;
4.能显示特定汉字和字符。
第二章设计方案的论证
1.静态显示方式
静态显示方式,即8段LED数码管在显示某一个数码时,加在数码管上的段码保持不变,直至换显其他数码为止。
这样数码管的每一段均应由一条输出线来控制,每显示以为数码需要8根输出线,当N位显示则需N×
8根输出控制线。
占用较多I/O资源。
2.动态显示方式
为解决静态显示占用较多I/O资源的问题,在多位显示时通常采用动态显示方式,动态显示是将所有数码管的段码线对应并联在一起,由一个8位的输出口控制,每位数码管的公共端分别出一位I/O线控制。
显示不同数码时,由位线控制各位轮流显示。
位线控制某位选通时,该位应显示数码的段码同时加在段码线上,即每一时刻仅仅有一位数码管是被点亮的,当轮流显示的速度较快(每秒24次以上),由于人眼的视觉暂留现象,看起来就像所有位同时显示一样,这时,我们就能看到稳定的图像了
由于单片机的特性,我们将采用方案2:
动态显示方式,采用动态显示方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。
3.数据传输方案论证
显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件
数目多。
当列数很多时,并列传输的方案是不可取的。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。
这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。
对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。
即在显示本行各列数据的同时,传送下一列数据。
为了达到重叠处理的目的,列数据的显示就需要具有所存功能。
经过上述分析,就可以归纳出列驱动器电路应具有的功能。
对于列数据准备来说,它应能实现串入并处的移位功能;
对于列数据显示来说,应具有并行锁存的功能。
这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
图2-1为显示屏电路实现的结构框图。
图2-1.显示屏电路框图
图2-2.串行传输控制电路
第三章系统的硬件设计
3.1单片机最小系统的设计
图3-1.单片机最小应用系统原理图
注:
该最小系统由按键复位RESET电路、晶体振荡电路以及I/O接口电路组成。
复位的实现通常用2种方式:
开机上电复位和外部手动复位,本设计用的是外部手动复位。
电路图3-2如下:
图3-2.单片机复位图
AT89C51工作电压VCC=5V,其EA引脚需接高电平,5V电源电路如图3-3所示。
图3-3.单片机电源原理图
注:
该电源电路主要模块为IC7805,它能输出稳定的5V电源,图中整流桥是将市电转变为直流电,电容起到虑波作用由7805的OUT引脚输出5V电压。
3.2显示电路设计
八十年代以来出现了组合型LED点阵显示器模块,以发光二极管为像素,它用高亮度发光二极管芯阵列组合后,环氧树脂和塑模封装而成。
这种一体化封装的点阵LED模块,具有高亮度、引脚少、视角大、寿命长、耐湿、耐冷热、耐腐蚀等特点。
LED点阵规模常见的有4×
4、4×
8、5×
7、5×
8、8×
8、16×
16等等。
根据像素颜色的数目可分为单色、双基色、三基色等。
像素颜色不同,所显示的文字、图象等内容的颜色也不同。
单色点阵只能显示固定色彩如红、绿、黄等单色,双基色和三基色点阵显示内容的颜色由像素内不同颜色发光二极管点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极管的点亮时间,则可实现256或更高级灰度显示,即可实现真彩色显示。
图3-4示出最常见的8×
8单色LED点阵显示器的内部电路结构和外型规格,其它型号点阵的结构与引脚可试验获得。
图3-4.点阵原理图
汉字显示屏用于显示汉字、字符及图像信息,在公共汽车、银行、医院及户外广告等地方都有广泛的应用。
下面是简单的汉字显示屏的制作,由单片机控制汉字的显示内容。
为了降低成本,使用了四块8×
8的LED点阵发光管的模块,组成了一个16×
16的LED点阵显示屏,如图3-5所示。
在这里仅做了四个汉字的显示,在实际的使用中可以根据这个原理自行的扩展显示的汉字,下面是介绍汉字显示的原理。
图3-5.四块8×
8的LED点阵组成16×
16的LED点阵
LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。
以16×
16点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;
再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;
….第16行之后,又重新燃亮第1行,反复轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。
该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。
显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。
对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。
采用串行传输中列数据准备和列数据显示的时间矛盾,可以采用重叠处理的方法。
即在显示本行各列数据的同时,传送下一行的列数据。
为了达到重叠处理的目的,列数据的显示就需要有锁存功能。
对于列数据准备来说,它应能实现串入并出的移位功能。
这样,本行已准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
LED点阵显示模块进行的方法有两种:
(1)水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式):
此时用一个P口输出列码决定哪一列能亮(相当于位码),用另一个P口输出行码(列数据),决定该行上那哪个LED亮(相当于段码)。
能亮的列从左到右扫描完16列(相当于位码循环移动16次)即显示出一个完整的图像。
(2)竖直方向(Y方向)扫描,即逐行扫描方式(简称行扫描方式):
此时用一个P口输出决定哪一行能亮(相当于位码),另一个P口输出列码(行数据,行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于段码)。
能亮的行从上向下扫描完16行(相当于位码循环移位16次)即显示一帧完整的图像。
本设计应用的是第一种的扫描方法,即水平方向(X方向)扫描。
每一个字由16行16列的点阵形成显示,即每个字均由256个点阵来表示,我们可以把每一个点理解为一个像素。
一般我们使用的16×
16的点阵宋体字库,即所谓的16×
16,是每一个汉字在纵横各16点的区域内显示的。
汉字库从该位置起的32字节信息记录了该字的字模信息。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。
我们以水平方向(x方向)扫描显示汉字的“你”为例来说明其扫描原理,每一个字由16行16列的点阵组成显示,如图下的,如果用8位的AT89S51的单片机来控制,由于单片机的总线为8位,一个字需要拆分成两个部分。
一般我们把它分解成上部分和下部分,上部分由8*16的点阵组成,下部分也由8*16的点阵组成。
在本例中单片机首先显示的是左上角的第一列的部分,即第0列的P00~P07口。
方向为P00到P07,显示汉字“你”的时候,P00到P04都是灭的,P05亮,即二进制00001000,转换为16进制为08H,如图3-6所示。
上半部分第一列完成之后,继续扫描下半部分的第一列,为了接线的方便,我们仍设计成由上往下的扫描方式,即从P27向P20方向扫描,从上图可以看到,这一列所有的都不亮,所以代码为00000000,16进制为00H,然后单片机转向上半部的第二列,除了P05亮,其他的都不亮,即为00000100,16进制为04H,这一列扫描完成之后继续进行下半部分的扫描,除了P21亮,其他的为不亮,为二进制00100000,即16进制20H。
•按照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“你”的扫描代码为:
0x08,0x80,0x08,0x80,0x08,0x80,0x11,0xFE,
•0x11,0x02,0x32,0x04,0x34,0x20,0x50,0x20,
•0x91,0x28,0x11,0x24,0x12,0x24,0x12,0x22,
•0x14,0x22,0x10,0x20,0x10,0xA0,0x10,0x40,
图3-6.点阵显示原理图
3.3驱动电路设计
正向点亮一颗LED,至少也得10到20毫安,若电流不够大,则LED不够亮!
而不管是8051的输入还是输出端其高态输出电流都不是很高,不过1~2毫安而已。
因此,很难直接高态驱动LED。
这时候就需要额外的驱动电路,分别针对共阳极和共阴极LED阵列,有两种不同的驱动方式。
针对输出态的不同,分为:
高态扫描-高态显示,高态扫描-低态显示,低态扫描-高态显示和低态扫描-低态显示四种方式。
下面针对设计中实际用到的一种驱动方式介绍一种:
共阴型低态扫描-低态显示信号驱动电路。
图3-7所示是针对共阴性LED阵列而设计的驱动电路,在这种驱动电路采用低态扫描,也就是任何时间只有一个高态信号,其他则为低态。
一行扫描完成之后,再把高态信号转到临近的其他行。
扫描信号经限流电阻接到PNP晶体管的基极,晶体管的集电极接地,射极则连至LED点阵的列引脚,若要同时点亮该列的16个LED,则晶体管的电流必须大于200毫安才行。
常用的2N3904之类就可以达到当低态的列扫描信号输入晶体管的基极后,该晶体管即为正向,而产生电流,即可使该列的LED具有点亮的条件
所要的显示信号连接到一个PNP晶体管的基极,而该晶体管的射极连接到VCC,同样的,当低态的显示信号输入时,晶体管的集电极电流将流入行LED的阳极,即可点亮该行的LED。
如图3-7所示.
图3-7.共阴型低态扫描-低态显示信号驱动电路
若要并接多个LED阵列,如连接使用4个8×
8LED阵列,连接成16×
16LED阵列,则一个扫描信号同时驱动两个LED阵列。
如在本设计中要显示的字比较大,用一个8×
8的点阵无法显示完整,这就需要用四块8×
8的点阵组成一块16×
16的点阵,这样就可以显示完整的汉字了,若要并联多个8×
8的LED组成16×
16的点阵,则一个扫描信号同时要驱动两行的LED。
如下图3-8所示。
图3-8.16×
16的点阵驱动图
这时候就需要靠锁存器(74LS373)将这两组显示信号锁住,此处的锁存器是以低态输出的,其输出的电压可达24毫安,足以驱动一个LED;
若嫌不足,可以选用74A373其输出的电压可达48毫安,当74LS373得G脚为高态时,数据可以从输入端传输到锁存器中;
G脚为低态时,数据被锁住,不会随输入端而变。
另外OC脚为输出控制引脚,当OC脚为高态时,输出呈现高阻抗;
OC为低态时,数据会由锁存器输出。
在这个电路之中驱动的扫描信号总共有16条,如果直接由8051输出,将占用2个PORT口,浪费了宝贵的资源,不太理想,在此使用的是一个4对16的译码器(74LS154),这个译码器是将输入的16进位码解码输出低态的扫描信号。
输出的低态扫描信号可直接接到PNP晶体管的基极,如果太大的话也可以先经过限流电阻再接到PNP晶体管的基极,信号最后经过晶体管的放大后即可推动16个LED点阵了。
第四章系统的软件设计
4.1系统主程序流程
显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。
根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;
第一层是底层的显示驱动程序,第二层是上层的系统应用程序。
显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。
显示驱动器程序由定时器T0中断程序实现。
系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。
从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写。
本文设计的系统软件能使系统在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。
图形或文字显示有静止、移入移出等显示方式。
系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;
然后以“卷帘出”效果显示图形,停留约3s;
接着向上滚动显示“我爱单片机”这5个汉字及一个图形,然后以“卷帘入”效果隐去图形。
由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果。
单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。
程序见附录
4.2系统子程序流程
延时程序在单片机编程中使用非常广泛,也很重要,在本毕业设计的程序中用到了延时子程序,所以在此详细的叙述一下。
在弄清延时程序指令的用法之前,要清楚的了解延时程序的基本概念,机器周期和指令周期的区别和联系、相关指令的用法等。
我们知道程序设计是单片机开发最重要的工作,而程序在执行过程中常常需要完成延时的功能。
例如在本设计中,行向的扫描要控制每行的扫描时间,还有所有的字移动有一定的时间间隔,而在所有的字移动一遍结束的一瞬间到下一遍移动开始的一瞬间要有延时,这时的延时可以和移动的时间相同以保持移动的连贯性,也可以不同作为每次从头开始的停顿,在上述就可以通过延时程序来完成。
1.机器周期和指令周期
(1)机器周期是指单片机完成一个基本操作所花费的时间,一般使用微秒来计量单片机的运行速度,51单片机的一个机器周期包括12个时钟振荡周期,也就是说如果51单片机采用12MHz晶振,那么执行一个机器周期就只需要1μs;
如果采用的是6MHz的晶振,那么执行一个机器周期就需要2μs。
(2)指令周期是指单片机执行一条指令所需要的时间,一般利用单片机的机器周期来计量指令周期。
在51单片机里有单周期指令(执行这条指令只需一个机器周期),双周期指令(执行这条指令只需要两个机器周期),四周期指令(执行这条指令需要四个机器周期)。
除了乘、除两条指令是四周期指令,其余均为单周期或双周期指令。
也就是说,如果51单片机采用的是12MHz晶振,那么它执行一条指令一般只需1~2微秒的时间;
如果采用的是6MHz晶振,执行一条指令一般就需2~4微秒的时间。
以12MHZ晶振为例,指令周期、机器周期与时钟周期的关系是:
指令周期:
CPU执行一条指令所需要的时间称为指令周期,它是以机器周期为单位的,指令不同,所需的机器周期也不同。
时钟周期:
也称为振荡周期,一个时钟周期=晶振的倒数。
MCS-51单片机的一个机器周期=6个状态周期=12个时钟周期。
MCS-51单片机的指令有单字节、双字节和三字节的,它们的指令周期不尽相同,一个单周期指令包含一个机器周期,即12个时钟周期,所以一条单周期指令被执行所占时间为12×
(1/12000000)=1μs。
了解以上概念后,那么可以依据单片机器件手册中89C51的指令执行周期和其所用晶振频率来完成需要精确延时时间的延时程序。
2.延时指令
在单片机编程里面并没有真正的延时指令,从上面的概念中我们知道单片机每执行一条指令都需要一定的时间,所以要达到延时的效果,只须让单片机不断地执行没有具体实际意义的指令,从而达到了延时的效果。
第五章系统调试
调试主要分为硬件调试和软件调试:
硬件调试:
在焊接电路板的时候,应该从最基本的最小系统开始,分模块,逐个进行焊接测试。
在对各个硬件模块进行测试时,要保证软件正确的情况下去测试硬件,要不然发生错误时,不知道到底是哪一方出错了。
当然,在设计的过程中也存在着失误和不足,在调试中进行修改了。
软件调试:
软件部分是先参考书上的例子,然后自己根据硬件电路写程序,由于以前所学是C语言,所以这个系统在编写程序过程中都采用C语言编写。
刚刚开始,编写不会一次性通过,经过仔细分析修改最后编译成功。
但是,在实际写如S51中,LED显示屏出现各种各样的乱码,通过再次认真仔细分析多次修改程序后,程序能够正常运行。
第六章课设总结与体会
总结本次单片机课程设计,主要做了下面几点工作:
一、通过查阅大量的相关资料,详细了解了LED的发光原理和LED显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些优点,明确了研究目标。
并且通过对单片机资料的查阅和应用,更进一步增加了对单片机知识的理解和运用能力。
并证实了自己的思路:
“查资料→思考总结→运用→找出差错,再查资料和向别人询问→再次运用”的正确性。
二,本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。
三,本文列出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体汇编语言程序设计与调试等方面。
四,在这次课程设计的过程中学会了Proteus的基本使用,感到Proteus对应用电气专业的同学来说是一门很有用的课程。
五,通过这次课程设计,重新复习并进一步增强了动手的能力,学以致用,把只是运用到实际生活中才是根本目的。
六,存在问题:
没有考虑仿真软件是一个理想的仿真环境,而实际连接的电路板会由于譬如连接不当,相邻器件间的干扰等等的问题导致在仿真软件中能良好运行的程序,出现显示问题,经过排查和合理的器件摆放焊接,问题解决。
总体来说这次的课程设计很成功,达到了预想的目的:
学到了知识,提高了能力,完成了任务。
有点缺憾是时间有限,不能进一步深入和扩散学习和研究。
希望有时间可以对程序和电路图作更进一步的改进,譬如实现点阵的上下移动,对角线移动,三色显示等。
同时,在此期间,我也从老师同学们那里得到许多帮助,他们在我苦无头绪之时帮我找资料,在我有疑难时耐心给予解答,并一直给予我鼓励和支持,支持我认真细致的完成这次单片机课程设计。
我