新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于单片机和可编程逻辑器件实现LED显示屏

基于单片机和可编程逻辑器件实现LED显示屏

作者:时间:2011-01-03来源:网络收藏


2.3 显示驱动时序信号的产生

CPLD 与点阵的驱动电路接口如图 所示,其中:CS为3-8译码器片选信号;OE为BMI5026输出使能信号,控制点阵是否能被点亮;LE为驱动芯片数据锁存信号;sck为移位脉冲,将CPLD串行输出的红绿数据串行移入MBI5026(移位寄存器);A-D为双3-8译码器构成的4-16译码器的数据输入,显示行选通控制; sdr为红数据信号线;sdb为绿数据信号线。
其工作过程为:S3状态,sck脉冲置0,sdr和sdb分别输出一位数据;S4状态时,sck置 1,红和绿数据分别移入相应移位寄存器BMI5026,若不足8位时,返回S3状态,若不足一行时,返回S1状态,读下一个字节,若完成一行数据移位过程,则转S5状态;S5状态时,置le为0,将BMI5026的缓冲寄存中一个显示行的点阵数据送输出寄存器,同时置cs1有效,控制第hcnt行的点阵显示,然后判断一屏内容是否显示完成,返回s1状态。图4为完整的有限状态机的状态图。

下面给出LED体驱动时序信号对应的Verilog HDL程序代码:

s3: begin
sck=1'b0;
sdr= SDA color[0];
sdb= SDC color[1];
OE=1'b1; CE=1'b1;
state=s4;
end
s4: begin // 移位输出到LED
sck = 1'b1;
shcnt = shcnt +1'b1;
if (shcnt = = 0)
begin
addr=addr+1'b1; //读完一个字节地址记数器加1
byte=byte+8'b1;
if(byte= = nrow)// 如果读完一行数据
begin
oe1=1'b1;//关LED显示
cs=1'b1;
le=1'b0;//驱动芯片写入数据
byte = 8'b0;
state=s5;//读完一行数据则显示
end
else state=s1;
end
else state=s3; //当前字节移位输出
end
s5: begin
sck=1'b0;
le=1'b0;
counter=hcnt;
OE=1'b1;
CE=1'b0;
if(addr = = nscreen)
addr=0;
oe1=1'b0;
cs=1'b0;
state =s1;
end

4系统测试及仿真

系统的开发调试环境是:部分在KeilC51下调试,CPLD部分在Maxplus10下调试。LED的扫描控制模块的Verilog HDL源程序编写完成后,在ALTERA公司Maxplus10可以先进行软件仿真,以观察各信号是否符合硬件电路所需的时序要求。图5为扫描模块 CLPD仿真结果,符合设计要求。通过JTAG接口下载到ATF1508AS后,系统工作正常。

5 结束语

Verilog HDL的LED显示屏扫描控制模块,应用于我们开发LED大屏幕电子信息显示屏系统,简化了系统结构,提高性了性价比。该LED显示屏在实际应用中具有良好的显示效果,画面清晰、性能稳定,已经在学校的多个部门得到应用。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭