基于单片机的LED显示屏设计.docx
《基于单片机的LED显示屏设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的LED显示屏设计.docx(47页珍藏版)》请在冰点文库上搜索。
基于单片机的LED显示屏设计
“药品提示屏”的显示程序代码35
摘要:
本论文主要研究了医药商店药品提示屏显示及数据下载系统的设计和实现。
显示系统包括16×80点阵的单色LED显示屏,控制板,串行数据线及PC平台。
主要研究LED点阵显示行扫描、列扫描方式;PC与控制板之间的串口通讯采用RS232串行通讯标准;控制板由AT89C52与数字电路、存储单元组成,控制显示屏的扫描显示;串行口下载的数据存放于非易失性DS1230NVRAM,NVRAM作为显示信息的数据库。
本文先对系统的设计方案作了简介。
而后对全部的硬件电路进行了详细的讨论,包括行扫描、列扫描电路基本原理,外部存储器的控制过程,串行传输的实现以及看门狗的功能及原理。
然后对显示程序部分做了说明。
最后对用VB编写的字模提取软件进行了简要介绍。
运行结果表明:
该实验板工作稳定,性能良好,既利于操作人员使用,也便于顾客观察。
整个系统的成本也较低廉,性价比优势突出。
关键词:
LED显示屏,控制板,字模提取,串口通讯
Abstract:
Thispapermainlydiscussedthedesignandinstrumentationofthepharmaciesdrugscreenpromptsanddatadownloadingsystem.Thedisplaysystemconsistsof16×80latticessinglecolorLEDscreen,controlboard,serialandPCplatform.
ThepapermainlyresearchesforscanningofrowsandcolumnsoflatticesLEDdisplayscreen.SelectingandusingRS-232SerialDataStandardsforPCconnectwithcontrolboard.ControlboardconsistsofAtmel89C52,digitalcircuit,memoryunit,whichcontrolsthedisplayofthescreen.SerialinterfacewillloadbatchquantitydatasintotheDS1230256kbnonvolatile(NV)SRAM.NVRAMisthedatabaseofdisplaymessages.Inthispaper,thedesignofsystemisintroducedbriefly.Thenthewholehardwarecircuitispresentedparticularly,includingthebasicprincipleofrowsandcolumnsscancircuits,controlprocessofexternalmemory,serialtransmissiontechnology,thefunctionandprincipleofwatchdog.Next,thedisplayprogramispresented.Atlast,thesoftwarewhichpicksuplatticespixelofcharacterswithVB6.0isintroducedbriefly.
Testresultsindicatethatourdesignedplatformworkswell.Notonlythesystemcanconvenienttooperationforoperator,butalsocustomerscaneasytolookthroughLEDdisplayscreen.Thecostofwholesystemischeap.Sothesystemhasatacticaladvantage.
Keyword:
LEDdisplayscreen,Controlboard,Pick-uplatticespixelofcharacters,Serialcommunication
第1章绪论
第1.1节概述
随着现代社会的发展,公众对于公共场合信息的需求越来越强烈,如何能够将公共场合信息快速、方便地发布给群众,满足群众需求成了一个有意义的课题。
而近年来,由于半导体的制作和加工工艺逐步成熟和完善,LED显示已日趋在固体显示中占主导地位。
LED显示屏之所以受到广泛重视而得到迅速发展,是因为它亮度高、工作电压低、功耗小、小型化而易于集成电路匹配、驱动简单、寿命长、耐冲击和性能稳定。
LED显示屏作为传播公共信息的重要手段,已广泛应用于车站、商店、体育馆、银行、机场、医院、证券市场等各种公共场合。
LED是六十年代末发展起来的一种半导体显示器件,七十年代,随着半导体合成技术的发展,发光二极管在发光颜色、亮度等性能得以提高并迅速进入批量化和实用化。
进入八十年代后,LED显示屏开始形成。
我国LED显示屏产业在规模发展的同时,产品技术推陈出新,一直保持比较先进的水平。
LED显示屏产业正成为我国电子信息产业的重要组成部分。
LED显示屏由多个半导体发光二极管构成,通过控制这些发光二极管的亮或灭来使显示屏显示各种文字或图形。
可通过PC机与单片机之间进行数据通信,将要显示的信息发送到LED显示屏上。
本次设计主要采用AT89C52单片机来控制LED显示屏的显示。
首先用VB编写一个汉字字模提取软件,然后再通过RS232串行通讯接口将字模从PC机传送到单片机,单片机再将字模信息传送给扫描显示电路,对显示屏进行扫描显示。
并通过按键来实现对各种显示要求的控制。
第1.2节技术要求
技术要求:
用VB设计批量汉字字模提取软件,实现PC机与医药商店药品显示屏之间的RS232串行通讯。
掌握LED点阵显示行扫描、列锁存的工作原理。
要将通讯端口下载的数据存放于非易失性RAM中;解决在在医药商店药品显示屏长度有限的情况下如何显示大量的信息。
着重设计调试RS232与AT89C52的软硬件接口。
考虑显示屏抗干扰性能,以及信息传输的快速性,以及传输字模与电子显示屏的格式统一的问题。
设计采用的显示屏一次能显示5个16*16点阵的字符,采用自右向左的移动显示式。
使用AT89C52单片机和RS232串行通讯电路,以及16*16点阵屏显示模块组成医药商店药品显示屏。
操作人员可以通过PC个人电脑输入当天的特惠药品名及价格,输入内容的字模通过RS232串行接口下传至LED点阵显示系统中显示。
要求采用看门狗电路,使系统能抗干扰。
开机显示“药品提示屏”。
设置功能键1和功能键2。
操作人员先将药品信息输入PC机内。
当按下功能键1时,开始下载数据,屏幕显示“数据准备中”。
当按下功能键2时,将下载下来的数据送至药品显示屏中,所有输入的信息将循环左移显示。
第1.3节硬件方案选取
理论上说,不论图形或者文字,只要控制这些图形或文字上的点相应位置上的二极管的亮与灭,就可以显示出想要的结果。
这种同时控制所有发光二极管亮与灭的方式称为静态驱动显示方式。
而在本设计中,采用的是5个16×16点阵的显示屏,共有1280个发光二极管,显然单片机没有这么多的端口。
并且,一个发光二极管的驱动电流约为10mA左右,若要点亮这么多发光二极管,需超过10A的电流,所需供电电源的电流将会非常大。
同时,在锁存器上花的成本也将是一个庞大的数字。
因此本设计中不采用这种方案,而采用另外一种称为动态扫描的显示方法。
动态扫描的意思就是逐行轮流点亮。
具体就本设计的16×16点阵来说,把所有同一行二极管的阳极连接在一起,先送出第一行的数据并锁存,然后选通第一行使其点亮一定时间,然后熄灭,依此类推,依次点亮16行,再重新点亮第一行,如此循环,当这样循环的速度足够快,由于人眼的视觉暂留,就可观看到显示屏上稳定的图形了。
由于此方案中只需同时点亮80个发光二极管,驱动电流不足1A,所需电源的供电电流小,硬件开销也小,因此采取这种方案。
采用行扫描方式进行显示时,每一行有一个行驱动器,每一列有一条列驱动线。
显示数据存储在AT89C52的存储器中,按8位一个字节的形式依次存放。
显示时把一行中每列的数据传送到相应的列驱动线上去。
从AT89C52到列驱动线的数据传输可采用串行方式或并列方式。
在本设计中,显示屏共有80列,若采用并列方式,从单片机到列驱动线的线路数量大,硬件结构复杂。
因此采用串行传输的方式,即单片机将一行中的数据一位一位地传送到相应的列驱动线。
PC机与单片机之间通过选用RS232串行通讯标准进行串口通讯。
将汉字字模信息下传至单片机。
第2章硬件部分的设计
第2.1节硬件系统概述
系统的硬件部分主要由串行通讯接口电路、看门狗电路、行扫描电路、列锁存驱动电路以及片外存储系统组成。
本设计中,我采用市面上较为普遍的AT89C52作为主控芯片,控制扫描显示电路对LED显示屏的动态扫描显示。
计数器74LS161,译码器74LS138,驱动器74HC245组成行扫描电路,由74LS161将计数信号送入译码器74LS138,74LS138依次选通每一行。
串行输入并行输出移位寄存器74LS595,74HC245组成列锁存驱动电路,由AT89C52将某行中的数据串行送入列锁存驱动电路。
74LS373与DS1230NVRAM组成片外存储系统,对从上位机下载的数据进行非易失性存储。
和PC机的串口通讯则由MAX232芯片进行RS232电平转换。
上位机采用VB编写的字模提取软件,并兼有串口数据发送的功能,以实现上位机与下位机的通讯。
利用MAX813作为看门狗芯片使系统运行可靠。
根据要求设置触点式键盘,以实现系统的各种控制要求。
整个硬件系统的结构框图如下图所示。
图2-1硬件系统结构框图
第2.2节相关芯片的介绍
2.2.1单片机AT89C52
本设计中AT89C52主要用于控制行译码扫描电路和列锁存驱动电路以实现对LED显示屏的扫描显示,与MAX232相连与上位机之间进行数据通信,与看门狗MAX813L相连用于对单片机的复位和防止程序乱飞,和按键相连用于实现各种控制要求。
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8KB的可反复擦写的Flash只读程序存储器,可擦写寿命为1000次。
片内数据存储器内含256字节的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
其引脚图如图2-2所示:
图2-2AT89C52引脚图
1主要功能特性
(1)兼容MCS51指令系统
(2)8KB可反复擦写(>1000次)FlashROM
(3)256字节内部RAM
(4)32个双向I/O口
(5)3个16位可编程定时/计数器中断
(6)时钟频率0-24MHz
(7)中断系统为具有8个中断源、6个中断矢量、2级优先权的中断结构
(8)一个全双工的可编程串行口
(9)一个数据指针DPTR
(10)低功耗空闲和掉电模式
(11)可编程的3级程序锁定位
(12)软件设置睡眠和唤醒功能
AT89C52单片机属于AT89C51单片机的增强型,与INTER公司的80C52在脚排列,硬件组成、工作特性和指令系统等方面完全兼容。
与AT89C51相比,AT89C52主要增加了以下功能:
(1)程序编程器由4KB增加到8KB;
(2)片内RAM由128字节增加到256字节;
(3)定时器由两个增加到3个;
(4)P1.0和P1.1口增加了替代功能;
(5)中断系统由6个中断源增加到8个,中断矢量由5个增加到6个。
2引脚说明
P0口
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的
方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。
P2口
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P3口
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
3特殊功能寄存器
在AT89C52片内存储器中,80H-FFH共128个单元为特殊功能寄存器(SFE),SFR的地址空间映象。
并非所有的地址都被定义,从80H—FFH共128个字节只有一部分被定义,还有相当一部分没有定义。
对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。
不应将数据“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。
AT89C52除了与AT89C51所有的定时/计数器0和定时/计数器1外,还增加了一个定时/计数器2。
定时/计数器2的控制和状态位位于T2CON、T2MOD,寄存器对(RCAO2H、RCAP2L)是定时器2在16位捕获方式或16位自动重装载方式下的捕获/自动重装载寄存器。
4数据存储器
AT89C52有256个字节的内部RAM,80H-FFH高128个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128字节的RAM和特殊功能寄存器的地址是相同的,但物理上它们是分开的。
当一条指令访问7FH以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高128字节RAM还是访问特殊功能寄存器。
如果指令是直接寻址方式则为访问特殊功能寄存器。
例如,下面的直接寻址指令访问特殊功能寄存器0A0H(即P2口)地址单元,MOV0A0H,#data。
间接寻址指令访问高128字节RAM,例如,下面的间接寻址指令中,R0的内容为0A0H,则访问数据字节地址为0A0H,而不是P2口(0A0H),MOV@R0,#data。
堆栈操作也是间接寻址方式,所以,高128位数据RAM亦可作为堆栈区使用。
2.2.2看门狗MAX813L
单片机系统在工作时,由于干扰等因素的影响,有可能出现死机现象导致单片机系统无法正常工作。
为了克服这一问题,除了充分利用单片机本身的看门狗电路外,还需外加看门狗电路。
除此之外,有些单片机系统还要求在程序运行期间单片机能将重要的数据保存下来,因为掉电的发生往往是很随机的,因而此类单片机系统需要电源监控电路,在掉电刚发生时就告知单片机。
此外,单片机对复位电路也有要求,在单片机上电时能可靠复位,在下电时能防止程序乱飞,导致E2PROM中的数据被修改。
本设计中主要采用MAX813L来构成看门狗电路。
MAX813L是一组CMOS监控电路,可用于计算机、控制器、自动化设备、智能设备、微处理器及微控制器监控中。
将常用的多项功能集成到一片8脚封装的小芯片内,与采用分立元件或单一功能芯片组合的电路相比,大大减小了系统电路的复杂性和元器件的数量,显著提高了系统可靠性和精确度。
1MAX813L的引脚及功能
(1)手动复位端(MR):
当该端输入低电平保持140ms以上,MAX813L就输出复位信号。
该输入端的最小输入脉宽要求可以有效地消除开关的抖动。
与TTL/CMOS兼容。
(2)工作电源端(VCC):
接+5V电源。
(3)电源接地端(GND):
接0V参考电平。
(4)电源故障输入端(PFI):
当该端输入电压低于1.25V时,5号引脚输出端的信号由高电平变为低电平。
(5)电源故障输出端(PF0):
电源正常时,保持高电平,电源电压变低或掉电时,输出由高电平变为低电平。
(6)看门狗信号输入端(WDI):
程序正常运行时,必须在小于1.6s的时间间隔内向该输入端发送一个脉冲信号,以清除芯片内部的看门狗定时器。
若超过1.6s该输入端收不到脉冲信号,则内部定时器溢出,8号引脚由高电平变为低电平。
(7)复位信号输出端(RST):
上电时,自动产生200ms的复位脉冲:
手动复位端输入低电平时,该端也产生复位信号输出。
(8)看门狗信号输出端(WDO):
正常工作时输出保持高电平,看门狗输出时,该端输出信号由高电平变为低电平。
其引脚图如下:
图2-3MAX813引脚图
2基本工作原理
(1)RESET操作
复位信号用于启动或者重新启动MPU/MCU,令其进入或者返回到预知的循环程序并顺序执行。
一旦MPU/MCU处于未知状态,比如程序“跑飞”或进入死循环,就需要将系统复位。
在上电期间只要VCC大于1.0V,就能保证输出电压不高于0.4V的低电平。
在VCC上升期间RESET维持高电平直到电源电压升至复位门限(4.65V或4.40V)以上。
在超过此门限后,内部定时器大约再维持200ms后释放RESET,使其返回低电平。
无论何时只要电源电压降低到复位门限以下(即电源跌落),RESET引脚就会变高。
如果在已经开始的复位脉冲期间出现电源跌落,复位脉冲至少再维持140ms。
在掉电期间,一旦电源电压VCC降到复位门限以下,只要VCC不比1.0V还低,就能使RESET维持电压不高于0.4V的低电平。
MAX813L提供的复位信号为高电平。
(2)RESET看门狗定时器
MAX813L片内看门狗定时器用于监控MPU/MCU的活动。
如果在1.6s内WDI端没有收到来自MPU/MCU的触发信号,并且WDI处于非高阻态,则WD0输出变低。
只要复位信号有效或WDI输入高阻,则看门狗定时器功能就被禁止,且保持清零和不计时状态。
复位信号的产生会被禁止定时器,可一旦复位信号撤消并且WDI输入端检测到短至50ns的低电平或高电平跳变,定时器将开始1.6s的计时。
即WDI端的跳变会清零定时器并启动一次新的计时周期。
一旦电源电压VCC降至复位门限以下,WD0端也将变低并保持低电平。
只要VCC升至门限以上,WD0就会立刻变高,不存在延时。
典型的应用中是将WD0端连接到MPU/MCU的非屏蔽中断(NMI)端。
当VCC下降到低于复位门限时,即使看门狗定时器还没有完成计时周期,也将输出低电平。
通常这将触发一次非屏蔽中断,但是RESET如果同时变低,则复位功能优先权高于非屏蔽中断。
(3)人工复位
低电平有效的手动复位输入端(MR)可被片内250mA的上拉电流源拉到高电平,并可以被外接CMOS/TTL逻辑电路或一端接地的按钮开关拉成低电平。
不需要采用外部去抖动电路,理由是最小为140ms的复位时间足以消除机械开关的抖动。
简单地将MR端连接到WD0端,就可以使看门狗定时器超时产生复位脉冲。
当需要高电平有效的复位信号时,应该选用MAX813L。
(4)电源故障比较器
MAX813L内部带有一个辅助比较器,它具有独立的同相输入端和输出端,其反相输入端内部连接一个1.25V的参考电压源。
为了建立一个电源故障预警电路,可以在PF1脚上连接一个电阻分压支路,该支路连接的监视点通常在稳压电源集成电路之前。
通过调节电阻值,合理地选择分压比,以便于使稳压器+5V输出端电压下降之前,PF1端的电压刚好下降到低于1.25V。
使用为MPU/MCU提供中断信号,以便使其能够对即将到来的电源掉电作好充分的准备。
工业环境中的干扰大多是以窄脉冲的形式出现,而最终造成微机系统故障的多数现象为“死机”。
究其原因是CPU在执行某条指令时,受干扰的冲击,使它的操作码或地址码发生改变,致使该条指令出错。
这时,CPU执行随机拼写的指令,甚至将操作数作为操作码执行,导致程序“跑飞”或进入“死循环”。
为使这种“跑飞”或进入“死循环”的程序自动恢复,重新正常工作,一种有效的办法是采用硬件“看门狗”技术。
用看门狗监视程序的运行。
若程序发生“死机”,则看门狗产生复位信号,引导单片机程序重新进入正常运行。
本电路巧妙地利用了MAX813L的手动复位输入端。
只要程序一旦跑飞引起程序“死机”,/WD0端电平由高到低,当/WD0端变低超过140ms,将引起MAX813L产生一个200ms的复位脉冲。
同时使看门狗定时器清0和使/WD0引脚变成高电平。
也可以随时使用手动复位按钮使MAX813L产生复位脉冲,由于为产生复位脉冲端/MR要求低电平至少保持140ms以上,故可以有效地消除开关抖动。
程序正常运行时,由主程序在小于1.6s的时间间隔内周期性地从P1.7端向MAX813L的WD1输入端发送一个脉冲信号,以清除芯片内部的看门狗定时器。
实现指令为:
SETBP3.2
NOP
CLRP3.2
若超过1.6s该输入端收不到脉冲信号,则内部看门狗定时器溢出,8号引脚由高电平变为低电平。
引起MAX813L产生一个200ms的复位脉冲。
同时使看门狗定时器清零和使RESET引脚变成高电平。
2.2.3计数器74LS161
在本设计中,74LS161用于加法计数,并将计下来的数以四位二进制数的形式送入由两片74LS138译码器扩展成的“4-16”译码器,从而实现对显示屏的行扫描显示。
74LS161是一个4位二进制同步加法计数器,除了有二进制加法计数功能外,还具有异步清零﹑同步并行置数﹑保持等功能。
74LS161的逻辑电路图如图2-4所示:
其中MR是异步清零端,PE是预置数控制端,P0、P1、P2、P3是预置数据输入端,CEP和CET是计数使能端,TC是进位输出端,