摘  要:本文提出了一种以单片机SPCE061A为控制核心的点阵电子显示屏设计思想,该显示屏能够实现图形和字符混合动态显示、键盘显示模式设置、计算机操作、快速刷新等功能,同时具有语音播报、语音控制和屏幕亮度调节功能,介绍了系统的软、硬件设计方案。
关键词: SPEC061A;电子显示屏;点阵;驱动

引言

在车站、商场、证券交易所、厂矿企业等一些公共场所,经常需要由LED(发光二极管)电子显示屏发布实时多变的信息或进行广告宣传,要求 LED电子显示屏具有修改方便、实时图形和字符混合动态显示、亮度可调等功能。应用计算机对其进行操作和键盘进行设置就显得十分重要。

为了解决以往以8位单片机为核心的LED点阵驱动器速度慢,结构复杂,程序设计困难,功能单一等问题,本系统采用高速SPCE061A单片机,既提高了扫描速度,又保证了动态屏幕字符显示、图形显示、语音播报和语音控制等功能的实现。尤其是本系统增添了屏幕亮度可调功能后,限制了LED中通过的平均电流;又因为SPCE061A的供电电源为3.3~5.0V,这样既可降低功耗、保护LED,又可延长点阵电子显示屏的使用寿命。

2  电子显示屏功能

本文设计的基于SPCE061A的点阵电子显示屏实现了汉字、字符、数字、实时时间

等信息的动态显示,能够做到屏幕信息左右、上下滚屏显示,并可设置显示速度。手动或光敏自动调节LED显示亮度。

通过计算机人机界面和控制屏键盘可以随时设置系统的显示模式。

本系统具有掉电信息保存功能。掉电后主控制器可将显示内容和显示模式等信息保存在Flash中,再次上电后可以继续显示。

此外系统具有语音功能,可以定时播报时间,显示即时内容;使用语音识别技术可以进行简单的语音控制。

3  显示屏硬件电路设计

LED点阵显示由8*8共64个发光二极管组成。控制时,分别控制阳极8个行控制口和阴极8个列控制口。显示时,向阳极送字模,向阴极送选通信号。送出一行的字模,再送选通信号,再送第二行的字模和选通信号,循环扫描8次,就可以在一块点阵上显示一个字符。显示汉字用16*16 LED,所以一个显示单元由4块8*8点阵组成。一次送两个字节的字模,16列选通信号。

该点阵显示系统以凌阳16位单片机SPCE061A为控制核心,由LED点阵电子显示器,电源,电流驱动电路,地址译码电路,串行接口电路,键盘,时钟模块和计算机控制界面组成,系统框图如图1所示。

图1 点阵电子显示屏系统框图

3.1  主控制器功能

本设计采用16位SPCE061A单片机。该单片机主频最高可达49MHz,处理速度很快,且主频可通过软件调整,能有效解决闪屏问题。硬件资源丰富,内部拥有32KB flash闪存和2KB RAM,在不外扩存储器的情况下就能完成较大的数据存储,大大简化了外围接口电路; 32个通用I/O口,专为低功耗设计,在省电模式下,时钟停止,耗电仅为2uA/3.6V。另外,该芯片支持在线仿真,编程接口,可方便实现在线调试。

SPCE061A有丰富的语音功能。1个10位的DAC(数模转换器),麦克输入通道内置麦克风放大器和自动增益(AGC)功能[1];其集成开发环境还配有丰富的语音接口函数API。为本系统扩展语音功能提供了丰富的软硬件环境。

3.2  驱动电路

驱动电路分为行驱动电路和列驱动电路,行驱动电路如图2所示。

 

图2 行驱动电路

行驱动即LED的阳极,原理是送出电流使二极管发亮,由74HC595和驱动芯片ULN2803组成。主控制器将字模通过串行方式送给控制阳极的串转并器件74HC595。74HC595是CMOS型TTL器件,功耗低,且速度可达到100MHz,适合作LED的显示驱动[2]。每个显示单元,由两片74HC595级联控制,一个显示单元需两片74HC595,字模数据信号由主控制器分别送出,时钟等控制信号则通过同一个I/O口同时送出。这样既能避免互相干扰,又能灵活控制。TTL电平的驱动能力有限,只能驱动8个TTL器件,当显示单元配置较多时,驱动能力不够,信号可能误传,解决的方法是加一级74HC245,将一路信号变成8路输出,提高了驱动能力,保证信号的准确性。由于动态扫描的扫描速度心须达到60HZ以上,否则会产生闪烁现象,因此提高扫描速度至关重要。在程序中将缓冲区内各个单元的字模整合成为一个数并行送出,可以提高扫描速度。74HC595将字模送给ULN2803驱动LED的阳极。ULN2803是8路达林顿管,驱动能力较强,单路最大输入电流可达500mA;由于ULN2803不能输出高电平,驱动时须加上合适的上拉电阻以获得合适的驱动电流。

列驱动即控制LED的阴极,原理是输入电流也采用ULN2803做列驱动器。点阵显示必须用动态显示,任何时刻只能有一列选通,特别设计将各个显示单元的对应列接在一起,这样扫描一个显示单元的周期就完成了整个显示屏扫描,提高了扫描速度。一个显示单元的16路选通信号首先由4-16译码器74154送出,再送给列驱动器,由于ULN2803为反向驱动,故在74154和ULN2803之间加7406作为反向。

3.3  亮度调节电路

显示屏的亮度调节是通过改变VCC的电压,从而调整流经LED的电流来实现的。亮度自动调节是利用光敏电阻或光电三极管来检测外部的光强,根据光强来自动调节LED亮度。亮度可调电路如图3所示。

 

图3 亮度可调电路

第一部分是亮度自动调节电路。RW1/ RW2控制自动调节的最高/最低输出电压。RW3控制对外界感光的灵敏度。R2,C2组成一阶低通滤波器,滤除外界干扰光线(如日光灯)对系统的高频干扰。第二部分是手动亮度调节电路。RW5为后面的LM317调整段提供一个可调的电压。第三部分是最高输出电压保护电路调节RW4设定最高的输出电压。用一个三态开关SW1做两种工作方式的切换。选择工作方式1时,可以对亮度进行手动调节;选择工作方式2时,钳位电路起作用,LM317输出最大电压,此时亮度最亮;选择工作方式3时,进行亮度自动调节。

3.4  时钟模块

时钟模块采用DS1302。这是一种高性能、低功耗、带RAM的实时时钟芯片,它提供秒、分、小时、日、星期、月、年(带闰年)等信息。能够以24小时或12小时模式工作,并且提供AM/PM指示。与单片机间通过简单串行接口通信,只需3根线便可以和单片机以同步串行方式通信。该芯片同时提供了对后备电源进行涓流充电的能力[3],可以掉电保存时间。

4  程序设计

整个软件分为三部分,即显示部分、控制部分和通信部分。通信部分采用Visual C++编程语言。VC在标准串口通信方面提供功能强大的通信控件MSCOMM,该控件可设置串行通信的数据发送和接收,对串口状态及串口通信的信息格式和协议进行设置,直接利用PC机的RS-232串口发送数据。为实现单片机与PC机的可靠通信,须保证双方具有相同的数据格式和波特率,这里波特率设为115200bps。

程序组成框图如图4所示。

 

图4 程序组成框图

显示电路部分程序如下:

void display(unsigned int key)

{ unsigned int i,k,temp[4],dd,

     data_high[4],data_low[4];

    for(k=0;k<10;k++)

    {*P_Watchdog_Clear=0x01;

   for(i=0;i<16;i++)   // "i" 表示列

   {switch(key)

   {case 0:

     temp[0]=encoding_00[i];  //字模存在数组encoding_00[]中

     temp[1]=encoding_01[i];

     temp[2]=encoding_02[i];

     temp[3]=clear_00[i];

        break;......}   //省略

   data_high[0]=temp[0]&0xff00;   //以下四句是送出一个字的字模

   data_high[0]=data_high[0]>>8;

   data_low[0]=temp[0]&0x00ff;

   shiftbit(data_high[0]); //8位数据串行输出到74595上

   shiftbit(data_low[0]);

   oe154=1;

   latch0=1; //74595的数据并行送出使能

   latch0=0;

    dd= *P_IOA_Data;

    dd=dd&0xff0f;

   *P_IOA_Data=(i<<4)&dd; //74154的译码程序

   oe154=0;}      //打开74154 的使能

  }

  oe154=1; //return to main,close 74154 display

} // end of display

5   结论

此电子点阵显示屏采用性能优越的SPCE061A单片机为控制核心,实现汉字、字符及数字的预存显示,同时完成按键多功能切换,实现左右滚动控制,预存数据显示。具有亮度连续可调、亮度感光可调、计算机控制、掉电保护和语音识别等功能。显示8个汉字时显示扫描频率可达120Hz,显示质量良好。在系统设计中还加强了驱动的可靠性,稳定性,能够有效地保护系统运行。