1、摘要1摘要本系统是从实际出应用角度出发,针对当前市场上流行的 LED 产品的应用领域而设计制作的多功能电子显示屏,可用于商场导购促销显示、新闻与广告显示、车站机场班次时间资讯显示等。LED 电子显示屏根据题目设计要求,硬件部分主要包括 STC12c5a32s2 单片机系统、16 块 8*8LED 点阵显示模块构成 16*64 点阵、显示驱动电路、键盘输入控制器等部分,软件编程主要用的是 C 语言。本系统不仅能够实现数字、字母、汉字等预存信息的切换显示,同时还可以实现信息的定时循环、上下左右滚屏、LED 显示亮度连续可调,通过对此 LED 广告屏的设计,满足了设计要求,实现了设计的目的。关键词:
2、STC12c5a32s2 单片机,点阵第一章 绪论2第一章 绪论1.1 设计目的意义近年来 LED 点阵显示市场得到了迅猛发展,已经广泛应用到银行、邮电、税务、机场、车站、证券市场极其它交易市场、医院、电力、海关、体育场等多种需要进行公告、宣传的场合。LED 之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。这些优点概括起来是:高亮度、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。LED 的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。所以,具有极高的研究价值。1.2 研究现状目前大多数的 LED 点阵显示
3、系统自带字库。其显示和动态效果(主要是显示内容的滚动)的实现主要依靠硬件扫描驱动,该方法虽然比较方便,但显示只能按照预先的设计进行。而实际上经常会遇到一些特殊要求的动态显示,比如电梯运行中指示箭头的上下移动、某些智能仪表幅值的条形显示、广告中厂家的商标显示等。这时一般的显示系统就很难达到要求。另外,由于受到存储器本身的局限,其特殊字符或图案也往往难以显示,同时显示内容也不能随意更改。本文提出一种利用 PC 机和单片机控制的 LED 显示系统通讯方法。该方法可以对显示内容(包括汉字和特殊图符)进行实时控制,从而实现诸如闪动、滚动、打字等多种动态显示效果。该方法同时还可以调节动态显示的速度,同时用
4、户也可以在 PC 机上进行显示效果的预览,显示内容亦可以即时修改。在我国改革开放之后,特别是进入 90 年代国民经济高速增长,对公众场合发布信息的需求日益强烈,LED 显示屏的出现正好适应了这一市场形势,因而在 LED 显示屏的设计制造技术与应用水平上都得到了迅速的提高,生产也得到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。LED 显示屏可以显示变化的数字、文字、图形图像:不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。目前的 LED 显示屏有很多种类,有单色、彩色条形显示屏;计算机控制数码显示屏;单色图文显示屏;三色(红、绿、黄)图文显示
5、屏;点阵和数码混合显示屏;双基色多媒体视频同步显示屏;三基色多媒体视频同步显示屏等。第一章 绪论31.3 本设计原理及框图LED 点阵总体框图如图 1-1 所示,点阵电路大体上可以分成微机本身的硬件、显示驱动电路、控制信号电路三部分。控制电路部分包括一个 51CUP 和一些外围电路。在整个电路当中单片机负责控制整个电路以及相应的程序的运行、与 PC 机的串行通讯、以及给屏体电路部分发送命令。点阵显示屏体、以及它的行和列的各个驱动电路。此显示电路采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。由行译码器给出的行选通信号,从第一行开始,按顺序依次对各行进行扫描(把该行与电
6、源的一端接通)。另一方而,根据各列锁存的数据,确定相应的列驱动器是否将该列与电源的另一端接通。接通的列,就在该行该列点燃相应的 LED;未接通的列所对应的 LED 熄灭。可通过扫描输出口的控制实现颜色的转换。图 1-1 基本原理及框图第二章 总体方案设计4第二章 总体方案设计2.1 设计方案选择2.1.1 方案一分析如图 2-1,LED 一般采用扫描式显示,实际运用分为三种方式:点扫描、行扫描列扫描,采用列扫描、行施加数据信号的基本驱动方法。任意时间只有一列施加高电平信号,其余各列均为低压信号。行施加对应该列的数据信号,低电平有效。 以 8x8LED 点阵列显示器为例说明字符显示原理,8 列顺
7、序扫描结束后,将完成一帧字符的显示。一帧扫描结束后,列扫描从第一行重新开始,周而复始。若行数据保持不变,则显示静态字符。反之,行数据发生变化,则显示内容将发生变化,如果保持前后帧内容的连贯性,就可以显示动态字符。图 2-1 并行控制2.1.2 方案二分析如图 2-2,由 16 块 8*8 点阵 led 构成一块大屏幕,单片机控制进行循环扫描,用多块移位寄存器控制输出内容,并由单片机串行输出显示内容的行编码,显示屏会滚动显示数字、字母。汉字等内容。第二章 总体方案设计5图 2-3 串行控制2.1.3 方案选择采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存
8、储在单片机的存储器中,按 8 位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。 采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(
9、传输)和列数据显示两部分。所以选择方案二串行输入。第二章 总体方案设计62.2 系统总功能设计2.2.1 点阵显示原理LED 点亮需要两个条件:一是 PN 极电压要大于其正向工作电压;二是要有足够的正向工作电流。发光二极管的正向工作电压一般为 1.43.5 之间为好。8*8 共阳极的单色点阵内部结构图如图 2-4,由 64 只发光二极管组成,每个发光二极管处于行线(H0-H7)和列线(L0-L7)之间的交叉点上。要使某只LED 发光,即是用单片机将它所在行送高电平,所在列送低电平。当点阵需要显示某个特定的字符时,就是将 64 只 LED 通过亮灭对比来实现的。图 2-4 8*8 点阵屏结构图2
10、.2.2 总功能设计系统总体方案设计如图 2-5 总设计方案。第二章 总体方案设计7图 2-5 总设计方案第三章 硬件电路设计8第三章 硬件电路设计3.1 单片机工作原理3.1.1 硬件系统设计 本次设计使用的 STC12c5a32s2 最小系统电路,包括:电源、时钟脉冲、复位电路和程序存储器设定电路,只是接受少量的数字和字符,不用外接存储扩展。 时钟脉冲:STC12c5a32s2 单片机的最高时钟脉冲频率已经达到了 24MHz,它内部已经具备了振荡电路,只要在 STC12c5a32s2 的两个引脚(即 19、18 脚)连接到简单的石英振荡晶体的 2 个管脚即可,同时晶体的 2 个管脚也要用
11、30pF的电容耦合到地。 复位电路:STC12c5a32s2 的复位引脚(RESET)是第 9 脚,当此引脚连接高电平超过 2 个机器周期,即可产生复位的动作。以 12MHz 的时钟脉冲为例,每个时钟脉冲为 0.5S,两个机器周期为 1S,因此,在第 9 脚上连接一个2S 的高电平脉冲,即可产生复位动作。最简单的就是只有一个电阻跟一个电容就可可靠复位的电路,电阻一般选择 10K,电容一般选择 10F。 程序存储器设定电路:31 脚接 VCC,默认采用内部程序存储器。 3.2 单片机介绍我们使用的是 STC12c5a32s2 单片机,其作用及应用与 AT89C52 类似,简单介绍一下 STC12
12、c5a32s2 单片机如图 3-1。P0.0P0.7(3932):P0 口是一个漏极开路型准双向 I/O 口。在访问外部存储器时,它是分时多路转换的地址(低 8 位)和数据总线,在访问期间激活了内部的上拉电阻。在 EPROM 编程时,它接收指令字节,而在验证程序时,则输出指令字节。验证时,要求外接上拉电阻。P1.0P1.7(1-8):P1 口是带内部上拉电阻的 8 位双向 I/O 口。在 EPROM 编程和程序验证时,它接收低 8 位地址。第三章 硬件电路设计9P2.0P2.7(21-28):P2 口是一个带内部上拉电阻的 8 位双向 I/O 口。在访问外部存储器时,它送出高 8 位地址。在对
13、 EFROM 编程和程序验证期间,它接收高 8 位地址。 P3.0P3.7(10-17):P3 口是一个带内部上拉电阻的 8 位双向I/O 口。图 3-1 单片机引脚图3.3 各单元模块3.3.1 行控制模块由于 16x64 点阵显示器有 16 行,为充分利用单片机的接口,本电路中加入了一个 4-16 线译码器 74LS138,其输入是一个 16 进制码,解码输出为低态扫描信号,它们的管脚示意图如图 3-2 所示。就会形成 16 种不同的输入状态,分别为 00001111,然后使每种状态只控制一路输出,即会有 16 路输出。第三章 硬件电路设计10图 3-2 行控制引脚3.3.2 列控制模块列
14、驱动电路有集成电路 74HC595 构成。它具有一个 8 位串入并出的移位寄存器和一个 8 位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行列数据的同时,传送下一行的列数据,既达到重叠处理的目的。 74HC595 的外形及内部结构如图 3-3 所示。它的输入侧有 8 个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。引脚 SI 是串行数据的输入端。引脚 SCK 是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将 SI的下一个数据打入最低位。 移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。RCK 是输出锁存器的打入信号,其上
15、升沿将移位寄存器的输出打入输出锁存器。引脚 G 是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高组态。SCLR 信号是移位寄存器清零输入端,当其为低时移位寄存器的输出全部为零。由于 SCK 和 RCK 两个信号是互相独立的,所以能够做到输入串行,移位与输出锁存互不干扰。芯片的输出端为 QAQH,最高位 QH 可作为多片 74HC595 级联应用时,向上一级的级联输出。但因为 QH 受输出锁存器的打入控制,所以还从输出锁存器前引出 QH,作为与移位寄存器完全同步的级联输出。第三章 硬件电路设计11图 3-3 列控制模块3.3.3 点阵模块通过 8 片 8*8 的点阵并联成 16
16、*64 的点阵。点阵的正负极和引脚需要我们自己来测定。 1.定正负极:把万用表拨到电阻档10,先用黑色探针(输出高电平)随意选择一个引脚,红色探针碰余下的引脚,看点阵有没发光,没发光就用黑色探针再选择一个引脚,红色探针碰余下的引脚,当点阵发光,则这时黑色探针接触的那个引脚为正极,红色探针碰到就发光的 7 个引脚为负极,剩下的 6 个引脚为正极。2.引脚编号:先把器件的引脚正负分布情况记下来,正极(行)用数字表示,负极(列)用字母表示,先定负极引脚编号,黑色探针选定一个正极引脚,红色点负极引脚,看是第几列的二极管发光,第一列就在引脚写 A,第二列就在引脚写 B,第三列以此类推。这样就点阵的一半引
17、脚都编号了。剩下的正极引脚用同样的方法,第一行的亮就在引脚标 1,第二行就在引脚标 2,第三行以此类推。如图 3-4 是一种 88 的 LED 点阵单色行共阴模块的内部结构图,其单点工作电压为 1.8V,正向电流露为 810mA。当某一行线为低电平而某一列线为高电平时,其行列交叉的点就被点亮;而当其某一列线为低电平时,其行列交叉的点为暗;当某一行线为高电平时。无论列线如何。对应这一行的点全部为暗。用四个 8x8 点阵显示可构成 1616 点阵显示器。第三章 硬件电路设计12图 3-4 点阵模块3.3.4 最小系统模块最小系统包括晶体振荡电路、复位开关和电源部分。图 3-5 为 AT89C52
18、单片机的最小系统。图 3-5 最小系统模块第四章 软件电路设计13第四章 软件电路设计4.1 功能程序#include#include“figuer_display.h“ sbit R1=P14; /数据线 R1sbit STCP=P26; /锁存信号 STBsbit SHCP=P27; /时钟信号 CLKsbit SHOW_OE=P20; /输出运行 OEunsigned char display_sbuf1610; /设置显示缓冲区(存储 5 个字,只显示前 4个字,第 5 字为左移时备用)void HC595_write(uchar dat1)uchar i,temp=dat1;for(
19、i=0;i7);aline9tempyid) | (BUFFs+1(8-tempyid)。这里 temp 作为要发送的一个字节数据,它由数据缓冲区中的数据组合而成,并且动态的变化,大致来说就是首先第一个字节的数据右移 tempyid 位,第二个字节的数据左移 8-tempyid 位,两者相或后组成一个字节新的数据,只要我们一直不断地移位、相或、发送,就能实现左移的效果。第四章 软件电路设计194.3 软件仿真4.3.1 介绍仿真软件Protues 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件。它不仅具有其它 EDA 工具软件的仿真功能,还能仿真单片机及外
20、围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus 是世界上著名的 EDA 工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到 PCB 设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086 和 MSP430 等,2010 年即将增加 Cortex 和 DSP
21、系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持 IAR、Keil 和 MPLAB 等多种编译。4.3.2 仿真结果图 4-1 仿真电路图第五章 系统调试20第五章 系统调试5.1 硬件调试把显示屏电路和显示屏驱动电路分别做在两块电路板上,显示屏电路的行扫描信号输出管脚和列显示信号数据输出管脚分别引用两排 16 针的排针引出,排针长的那一头接到电路板的底层,以方便插入驱动电路的插槽中。同样在驱动电路用两排 16 脚的插槽将行扫描信号输出管脚和列显示信号数据输出管脚引出,在画 PCB 时应当注意屏电路 PCB 中两排排针之间的距离要与驱动电路 PCB中两排插槽之间的距离一样,才能保
22、证能正确地将显示屏电路板排到驱动电路电路板上方。5.2 软件调试首先根据各单元电路模块,利用 Proteus 软件将总的硬件原理图绘制好,设计好各模块要使用的 I/O 口,如:88 点阵 LED 显示屏时候插反,先检测下,无硬件错误后,再进行程序编程。 利用 C 语言的编程方式,将系统要求的基本功能,以及创新功能根据程序流程图编写出来,用 Keil 软件调试无误后,生成 Hex 文件。 双击 Proteus 中的 P89C51 芯片,将 Keil 生成的 Hex 加载到芯片内,进行仿真,经调试后所编写的程序能够完美实现系统所需的各种功能。第六章 总结21第六章 总结本文设计一个 88 点阵 L
23、ED 图文显示屏。经过测试,LED 各点亮度均匀,可显示图形和文字,且稳定清晰无串扰。本系统具有硬件少、结构简单、容易实现,性能稳定可靠等特点。通过查阅资料,了解了 LED 发光原理和 LED 显示技术的原理和现状。在 LED 点阵显示屏的设计过程中,学到了很多东西,复习了 Protel、Proteus、Keil 等软件的基础应用。基本了解了整个嵌入式开发的流程。例如,在进行整个设计之前,应该先根据需求分析,对单片机进行选型,然后对各个硬件模块进行搭试。在画 PCB 电路板的时候,要注意基本的布板原则。在焊接电路板的时候,应该从最基本的最小系统开始,分模块,逐个进行焊接测试。在对各个硬件模块进
24、行测试时,要保证软件正确的情况下去测试硬件,要不然发生错误时,不知道到底是哪一方出错了。总之,这次设计开发,本人受益非浅,在以后的开发过程中一定总结经验,吸取教训,为以后的学习工作打好基础。参考文献22参考文献1. 陈海宴 51 单片机原理及应用:基于 Keil C 与 Proteus北京航空航天大学出版社2010 2. 周向红51 单片机课程设计华中科技大学出版社2011 3. 朱清慧Proteus 教程:电子线路设计、制作与仿真清华大学出版社2008 4. 郭天祥新概念 51 单片机 C 语言教程电子工业出版社2009 5. 温子祺51 单片机 C 语言创新教程北京航空航天大学出版社201
25、1 6.雷伏容51 单片机常用模块设计查询手册清华大学出版社20106.郑初华主编 汇编语言、微机原理及接口技术 第 2 版 北京:电子工业出版社 2006 7.张友德等 单片微型机原理、应用与实验 第五版 上海:复旦大学出版社2003目录23目录第一章 绪论 21.1 设计目的意义 .21.2 研究现状 .21.3 本设计原理及框图 .3第二章 总体方案设计 42.1 设计方案选择 .42.1.1 方案一分析 .42.1.2 方案二分析 .42.1.3 方案选择 .52.2 系统总功能设计 .62.2.1 点阵显示原理 .62.2.2 总功能设计 .6第三章 硬件电路设计 83.1 单片机工作原理 .83.1.1 硬件系统设计 83.2 单片机介绍 .83.3 各单元模块 .93.3.1 行控制模块 .93.3.2 列控制模块 .103.3.3 点阵模块 .113.3.4 最小系统模块 .12第四章 软件电路设计 134.1 功能程序 .134.2 程序的功能作用 .184.2.1 点阵左移 .184.3 软件仿真 .184.3.1 介绍仿真软件 .184.3.2 仿真结果 .19第五章 系统调试 205.1 硬件调试 .205.2 软件调试 .20第六章 总结 21目录24附录目录25目录26