1. 引言
LED显示屏是一种新型的信息显示媒体,它是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕,以发光效率高、使用寿命长、环境适应能力强、性价比高、组态灵活、色彩丰富等特点,在短短的十来年中,迅速成长为平板显示的主流产品,在信息显示领域得到了广泛的应用。LED显示屏的应用涉及到社会经济的许多领域,主要包括:机场、航班、港口、车站旅客引导信息显示。以LED显示屏为主体的信息系统和广播系统、票务信息系统、列车通讯显示系统等共同构成客运枢纽的自动化系统。证券交易、金融信息显示。在证券行情屏、银行汇率屏、利率屏等方面应用占较大比例,是LED显示屏的主要需求行业。邮政、电信、商场购物中心等服务领域的业务宣传及信息显示。道路交通信息显示。随着智能交通系统的兴起,在城市交通、高速公路等领域,LED显示屏作为可变情报板、限速标志等,都有了较大的发展,为最大限度地减少交通事故、维护良好交通管理提供帮助。高校教学管理信息发布显示。为学生、教师提供方便快捷的获取信息的手段为最大限度地减少教学事故、维护良好教学管理提供帮助。室外产品广告及信息发布、广告显示牌等方面均有广泛应用。显示屏产业已经成为新兴的高科技产业[1] 。
2. 系统设计
本次设计以AT89C51单片机为控制核心,通过外围的扩展芯片74HC154扩展I/O口并利用ULN2803为行、列驱动等,控制LED点阵屏在不同的按键控制下显示不同的汉字或图像。
本设计以ATMEL公司的AT89C51为控制核心,以4个8*8LED点阵显示单元拼接成简易16*16点阵屏幕,可显示一个16*16像素的汉字。由于考虑到AT89C51的I/O接口有限,如果把32个I/O口全部占用,将不利于往后显示屏幕的扩展,所以用4线–16线译码器74HC154扩展I/O口,行、列驱动用ULN2803。整个设计构思为:系统上电以后先后分别显示“欢迎使用”,按键KEY2按下以后屏幕分别显示“西北民大”,按键KEY3按下以后分别显示显示“2014自动化”。在实际应用中可以在程序中根据需要更改想要显示的字符或者图像,整个系统设计与实际相结合,有较强的实用价值。
3. 系统工作原理
确定如下方案:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器。可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器[2] 。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。所以此设计以AT89C51为控制核心,根据需要通过它来控制外围显示器件的显示。
3.1. 控制电路
控制电路如图1所示。
VCC:5 V供电电压。GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位[3] 。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。本设计中,P0口用于行数据输出,输出的数据送入行驱动电路。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。这里P1.6、P1.7用于接按键,以便控制显示器的输出状态,P1.0~P1.4分别接74HC154的A、B、C、D、/G1。
P2口:P2口为一个内部上拉电阻的8I/口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。本设计中,P0口用于行数据输出,输出的数据送入行驱动电路。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入

Figure 1. Control circuit figure
图1. 控制电路图
“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,P3口管脚备选功能如下所示: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(外部数据存储器读选通),P3口同时为闪烁编程和编程校验接收一些控制信号。本课题P3口悬空。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。此引脚悬空。
/EA/VPP:当/EA保持低电平时,访问内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。此引脚接VCC,保持高电平。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。
3.1.1. 简单按键
如图2所示,这是最简单的键盘电路,每个键独立地接入一根数据输入线。平时,所有的数据输入线都被连接成高电。当任何一个键按下时,与之相连的输入线将被拉成低电平。要判断是否有键按下,只要用位处理指令即可。这种键盘的优点是结构简单、适用方便,但随着键数的增多所占用的I/O口线也增加。
3.1.2. 复位电路
图3是一种简单的上电复位和按钮复位电路的组合,当接通电源的瞬间,RST端与VCC同电位,随着电容C上的电压逐渐上升,RST端的电压逐渐下降,于是在RST端便形成了一个正脉冲,只要该正脉冲足够宽就可以实现系统自动复位,但在实际应用中还要考虑系统电源的上升时间和震荡器起振时间。假设系统电源的上升时间和振荡器起震时间为20 ms,为了使系统可靠复位,RST引脚在上电自复位是

Figure 2. Simple key figure
图2. 简单按键图

Figure 3. Simple key figure
图3. 复位电路
应保持20 ms以上的高电平[4] 。也就是说,RC充电时常数要足够大,因此一般取R > 1 K,C > 22 uf。当按下人工复位按钮时,使电容C通过电阻迅速放电,待按钮抬起,C再次充电,实现人工复位。
3.2. 驱动、显示电路
3.2.1. 驱动电路
推动级可以选择ULN2803系列的8路达林顿管阵列,ULN2803的输出为低(接地)。ULN 2803双列直插芯片的管脚排列完全相同,它有8个输入控制端,8个输出端,一个接地端GND和一个偏置电压输入端C0M。l-8脚是其控制信号的输入端。外电路电源高电位端通过大功率负载接在1-8脚上,同时,通过偏置电阻与10脚相连。当控制信号1为低电平时,对应输出端1电位与偏置电压相当,被驱动器件两端电压差很小,器件不工作;当其为高电平时,1端电压下降,外电路电源为被驱动器件供电。ULN2803是高电压大电流八达林顿晶体管阵列,该阵列中的NPN达林顿连接晶体管是低逻辑电平数字电路(如TTL,CMOS或PMOS/NMOS)和大电流高电压要求的灯、继电器、打印机锤和其他类似负载间的接口理想器件。广泛应用于计算机,工业和消费类产品中。所有器件有集电极开路输出和用于瞬变抑制的继流钳位二极管。ULN2803的设计与标准的TTL系列兼容。ULN2803内部集成了8组达林顿管,输出只有下拉电流的能力,当输入为高电平时,输出端的下拉电流可以达500 mA。行扫描信号经P0、P2口以及从74HC154送出的列信号经ULN2803放大,将行扫描信号和列驱动信号送入LED点阵屏,从而点亮屏幕。
3.2.2. 显示控制电路
当CPU对内部总线进行控制时,从内部RAM中取出显示数据,经串行口送至74HC154转换成并行数据(即显示内容),再通过ULN2803输出列驱动信号。行扫描数据则从P0、P2口输出,经过ULN2803驱动LED点阵显示器的行选通端。
3.3. 硬件调试
所谓的硬件调试就是对所有的电路板进行检查及测量,以保证硬件电路的正确性。
3.4. 键盘设计
3.4.1. 非编码独立式键盘
独立式键盘往往是在系统中扮演程序分支选择的角色,对于不同的按键输入实现不同的功能,在程序中也就是不同的按键实现不同的程序段的执行[5] ,当KEY2按下时会执行处理程序1,KEY3按下时会执行处理程序2,一般一个独立式按键对应一个功能。此设计为:KEY2按下后实现“电气学院”显示,KEY3按下后实现“2014自动化”显示。KEY2接AT89C51的P1.6,KEY3接P1.7。
3.4.2. 按键去抖
本次采用软件去抖,就是在检测到按键按下时,执行一段延时子程序后,再确认该键电平是否仍保持键按下时的状态电平,若是,则认为有键按下[6] 。子程序的延时时间应大于按键的抖动时间,通常在10 ms以上,从而消除了抖动的影响。
3.5. 主程序设计
3.5.1. 主程序流程图
流程图4说明:系统开机上电后运行“欢迎使用”。(①②等概率)
①检测KEY2是否按下,若是,则运行“电气学院”;若否,检测KEY3是否按下,若是,则显示“2014自动化”,若否,则返回上电运行状态。
②检测KEY3是否按下,若是,则运行“电气学院”;若否,检测KEY2是否按下,若是,则显示“2014自动化”,若否,则返回上电运行状态。
3.5.2. 软件系统设置
本系统是在Keil C51下编写调试[7] 完成的。
调试:1个LED灯循环亮、灭。
这个测试是用来测试.HEX文件是否下载到单片机中,将程序用Keil C51调试编译后生成1LED.HEX文件,按上述下载过程将它写入单片机中[8] ,然后给系统上电,看是否能够运行,正常运行时LED会周期性的亮、灭、亮、灭。无限循环。程序如下:

Figure 4. Flow chart
图4. 流程图
#include
#include
void main(void)
{
unsigned int a;
do{
for (a=0; a<50000; a++);
P1_0 = 0; //P1.0口为低电平,点亮LED for (a=0; a<50000; a++);
P1_0 = 1; //设 P1.0口为高电平,熄灭LED
}
while(1);
}
4. 结论
本系统以AT89C51单片机为核心部件,本系统以AT89C51单片机为核心部件,是在Keil C51下编写调试完成的,包括硬件电路的焊接、程序的编写、结果的调试等。在实际应用中可以在程序中根据需要更改想要显示的字符或者图像,整个系统设计与实际相结合,有较强的实用价值。