新闻中心

EEPW首页>嵌入式系统>设计应用> 基于CPLD的LED点阵显示控制器

基于CPLD的LED点阵显示控制器

作者: 时间:2014-12-09 来源:网络 收藏

  原理图中包含5个模块,其中sequ模块产生读信号RDN和10位地址线(AD[9..0])中的最低位地址AD0,AD0和其它模块产生的地址配合,通过8位数据线(DATA[7..0])从存储器读出列高字节(AD0=1时)和低字节(AD0=0时),由于16×16点阵字模数据为32个字节,每列含两个字节即16位,它由HOUT[7..0]和LOUT[7..0] 来构成;模块add16由adclk提供一个慢时钟构成16进制计数器,它的输出送给addr16模块,为变模计数器addr16提供一个模,通过模的规律变化以控制点阵按照左移或右移等显示方式进行显示;模块decode4_16是一个4—16译码器,其输出ROUT[15..0]连接到点阵的列,可选中16×16点阵的某列,并显示sequ模块输出的点阵高低字节(字模)数据;模块addr16为点阵显示控制的核心,为了实现点阵汉字从右到左逐列移动显示,它由add16模块提供的模,在addr16内部构成两个变模计数器,其中一个用来产生读字模数据的地址AD[4..1],另外一个产生16×16点阵列扫描选择地址SUABAD[3..0],列扫描选择地址由decode4_16译码后输出;模块addr1为字选择计数器,其输出可以控制多块LED显示器的显示及其显示方式。

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

  控制核心模块addr16采用AHDL语言设计,在开发软件MAX+plus Ⅱ10.2中实现,程序如下所示。

  SUBDESIGN addr16

  (

  ckdsp,reset,in[3..0]:INPUT;

  ad[4..1],subad[3..0]:OUTPUT;

  )

  VARIABLE

  reg1[3..0]: DFF;

  reg2[3..0]: DFF;

  reg3[3..0]: DFF;

  BEGIN

  reg1[].clk=ckdsp;

  reg1[].clrn=reset;

  reg2[].clk=ckdsp;

  reg2[].clrn=reset;

  reg3[].clk=!ckdsp;

  reg3[].clrn=reset;

  reg2[].d=15-in[];

  if reg1[].q>=in[] then

  reg1[].d=0;

  else

  reg1[].d=reg1[].q+1;

  end if;

  ad[]=reg1[];

  reg3[].d=reg1[].q+reg2[].q;

  subad[]=reg3[].q;

  END;

  为了实现字符由右到左逐列移动显示,模块addr16内部设计了两个由add16控制的变模加法计数器,其中一个输出为ad[4..1](4位地址线),另一个输出为subad[3..0](列扫描控制线)。

  从程序可以看出,当模输入in[3..0]=0时,ad[4..1]=0,而subad[3..0]=15,此时ad[9..5]亦等于零,AD0在0和1间变化,即读出第一个字符的第一列并显示在LED的第16列;当模输入in[3..0]=1时,在记数脉冲AD0的作用下,ad[4..1]和subad[3..0]都为二进制加法计数器,但ad[4..1]由0加到1返回到0,同时subad[3..0]由14加到15返回到14,此时ad[9..5]仍然等于零,AD0在0和1间变化,即读出第一个字符的第一、二列并显示在LED的第15、16列…由此类推,可见当模块add16的加法记数输出由0变到15时,LED点阵字符将由左到右逐列移动显示。

  以上程序在MAX+plusⅡ10.2上仿真验证结果如图3所示。由仿真结果可以看到,由计数模控制输入in[3..0]控制的两个变模计数器输出ad[4..1]和subad[3..0]的结果正确无误。

  图3 addr16模块仿真时序图

  在设计中,应注意模块sequ的记数时钟CLK频率的选择应远远大于模块add16的记数时钟adclk的频率,addr16的记数时钟为地址最低位AD0,字选择计数器的时钟脉冲为16进制模块add16的最高位OUT3。这样,ad[4..1]和subad[3..0]同步变化的足够快,在点阵LED上可以看到完整的字符,并当add16记数到15产生进位返回到0时,字选择模块addr1获得一个记数脉冲并加1(上升沿触发),此后将显示下一个字符。

  3、系统扩展

  以上为显示单个字符系统,若要同时显示多个字符时,可以按照图1加入虚线框内部分,并且模块addr1设计成addr16的格式,把AD4作为addr1的记数脉冲即可。按照EPM7128SLC84—15的资源(64个I/O口,2个全局时钟,1个全局复位和5个可复用专用端口,5000个等效逻辑门,192个内部寄存器),若不外部扩展译码器,可以有效控制约16个字符的显示;而采用外部译码器时,可以控制的字符数将大大增加,但须注意时钟CLK的频率需要提高,以视觉不能看到整个字符的闪烁为基准。

  4、结论

  以上点阵字符显示系统在开发软件MAX+plusⅡ10.2上经仿真验证无误,并且已经成功地应用在煤矿电力监控系统的大屏幕显示中。另外,由于器件含有丰富的可编程连线资源,当系统显示方式和显示字符个数变化时,只需要通过开发工具修改控制器的控制逻辑和连接关系,再将修改完成的程序通过下载电缆下载到器件即可,而电路板可以不做任何改动,可见,系统的维护和修改是极其方便和容易的。当然,由于CLPD的驱动能力有限,当点阵LED显示亮度不够时,需要添加LED驱动电路以得到合适的LED显示亮度。


上一页 1 2 下一页

关键词:CPLDLEDFPGA

评论


相关推荐

技术专区

关闭