新闻中心

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

基于AT89S52单片机和ATF1508AS可编程逻辑器件实现LED显示屏的硬件设计

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

本文引用地址://m.amcfsurvey.com/article/173024.htm


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

led显示器相关文章:led显示器原理




评论


相关推荐

技术专区

关闭