打印
[技术问答]

新唐M451控制LED单板

[复制链接]
1474|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 lijiankun 于 2015-4-20 11:17 编辑

   最近在搞LED单板的显示控制,在这里总结一下自己的体会和经验,还望大家多多指教。

    首先对于LED单板,驱动电路是LED生产厂家已经做好的,所以我们并不需要太关注它是如何驱动的。我用的是32*16(32列,16行)的LED单板,它的驱动芯片用的是74HC595,单板对外的接口是灯板接口中常见的08接口。
对08接口的管脚的说明:A、B、C、D,这是控制灯板的行选信号,其中D是高位,A是低位。对于1/16扫模式ABCD四位都会用上,对于1/8扫模式会用到ABC,对于1/4扫模式则只会用到AB两位。
     说明:对于LED灯板一些概念性的东西,这片**不细说,想了解者,可以在百度上搜索“最全的LED显示屏知识”(我没有发链接的权限,大家就自己去搜索吧)
     CLK是时钟信号,通过这个时钟信号可以将需要显示的数据,送到led屏上去。这个时钟只能用IO口模拟,不能用单片机上现有的时钟,时钟信号每变化一次,就会向屏传入一个数据。
     OE是使能信号,控制屏是显示数据还是不显示。我用的这块屏是OE=1,允许显示,OE=0,禁止显示。对于不同的灯板信号可能有所不同,实地应用时需要自己去试一试。
     R,G是数据输入端,R代表的是红灯信号,G代表的绿灯信号,我使用的灯板只有红灯,所以这里只需要用到R管脚。可以把它理解成一个移位寄存器,时钟每变化一次,就会从这个端口向屏上移入一位数据(灯板的显示原理是串入并出的)。对于我的灯板,送0灯亮,送1灯灭。
     LAT是锁存信号,当数据串入完成,将数据一锁存,驱动电路就会并行的把数据送到屏上用于显示。对于我的灯板LAT=0,不锁存数据,LAT=1,锁存数据
对于08接口剩下的管脚都是接地的。
一般来说对于灯板的控制,需要LED控制卡,这里因为只是学习,所以我们用新唐M451开发板模拟LED控制卡的功能,所以单片机与灯板的连接需要我们自己用跳线去做。
其次要想自如的控制LED单板,你还必须了解单板的走线规律,因为数据是串行输入的,所以数据送进去后,灯板上的灯必然亮灭起来有个先后顺序,这个顺序就叫灯板的走线顺序。一般来说这个顺序都不会是一行完了紧接着下一行这么的理想化,所以我们就必须自己想办法测出这个规律。
  下面是我用新唐M451控制的部分代码,供大家参考
  灯板是32*16的,1/4扫描模式,这里只是简单的显示了一些静态数据,并不牵扯到动态显示
char data[16]={0xfe,0xfe,0xfe,0x00,0xff,0xff,0xff,0x00,0xf7,0x7f,0xff,0x00,0xff,0xff,0xf7,0x00};
int main(void)
{
    int i,j;
            
    SYS_Init();

    /* Select SysTick clock source as HXT */
    CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLKSEL_HXT);
   //用单片机的IO口模拟08接口
    GPIO_SetMode(PC, BIT14, GPIO_MODE_OUTPUT);     //OE
    GPIO_SetMode(PE, BIT3, GPIO_MODE_OUTPUT);      //LAT
    GPIO_SetMode(PD, BIT7, GPIO_MODE_OUTPUT);      //R1
    GPIO_SetMode(PD, BIT11, GPIO_MODE_OUTPUT);      //A
    GPIO_SetMode(PF, BIT2, GPIO_MODE_OUTPUT);      //B
    GPIO_SetMode(PD, BIT8, GPIO_MODE_OUTPUT);      //C
    GPIO_SetMode(PC, BIT8, GPIO_MODE_OUTPUT);      //D
    GPIO_SetMode(PC, BIT13, GPIO_MODE_OUTPUT);    //clk
  
    PC14 =1;  //OE  ,打开显示使能端
    PE3=0;   //LAT,关闭锁存信号

     PF2=0;    //B  ,行选信号,高位
     PD11=1;  //A,行选信号,低位        
            
     for(i=0;i<16;i++)  
    {
       for(j=0;j<8;j++)                        
       {
           PC13=0;   //模拟时钟低电平
           PD7=(data>>j); //显示数据发送
           PC13=1;   //模拟时钟高电平
        }
}

IMAG0151.jpg (975.66 KB )

IMAG0151.jpg

IMAG0152.jpg (969.64 KB )

IMAG0152.jpg
沙发
ccw1986| | 2015-3-10 15:52 | 只看该作者
楼主您写的真详细,赞一个

使用特权

评论回复
板凳
JinLee丿| | 2015-3-10 16:07 | 只看该作者
楼主辛苦了,赞一个!

使用特权

评论回复
地板
wright0418| | 2015-3-11 12:24 | 只看该作者
寫的真棒 , 辛苦了

使用特权

评论回复
5
gaoyang9992006| | 2015-3-12 09:55 | 只看该作者
谢谢楼主分享经验啊。大家学习一下。

使用特权

评论回复
6
598330983| | 2015-3-12 09:55 | 只看该作者
楼主焊接一块试试没,效果咋样

使用特权

评论回复
7
598330983| | 2015-3-12 09:55 | 只看该作者
如果效果不错,我也搞个试试。

使用特权

评论回复
8
lijiankun|  楼主 | 2015-3-12 10:01 | 只看该作者
598330983 发表于 2015-3-12 09:55
楼主焊接一块试试没,效果咋样

试过了,效果还不错,下来要做得就是显示数据和控制算法了

使用特权

评论回复
9
598330983| | 2015-3-12 10:36 | 只看该作者
lijiankun 发表于 2015-3-12 10:01
试过了,效果还不错,下来要做得就是显示数据和控制算法了

到时候把全套方案,放出来给大家学习啊,我这个不太会。

使用特权

评论回复
10
mintspring| | 2015-3-12 11:02 | 只看该作者
楼主的方案不错,我参考学习一下。

使用特权

评论回复
11
lijiankun|  楼主 | 2015-3-12 13:27 | 只看该作者
598330983 发表于 2015-3-12 10:36
到时候把全套方案,放出来给大家学习啊,我这个不太会。

用这个已经可以做到基本的显示控制了,剩下的就是加上一些算法,让控制更舒服,更方便而已。

使用特权

评论回复
12
稳稳の幸福| | 2015-4-6 14:14 | 只看该作者
楼主学单片机多少年了?

使用特权

评论回复
13
lijiankun|  楼主 | 2015-4-16 11:55 | 只看该作者
稳稳の幸福 发表于 2015-4-6 14:14
楼主学单片机多少年了?

一年多吧

使用特权

评论回复
14
springvirus| | 2015-4-16 12:37 | 只看该作者
发图看看啊

使用特权

评论回复
15
稳稳の幸福| | 2015-4-16 18:46 | 只看该作者
R,G是数据输入端,R代表的是红灯信号,G代表的绿灯信号,我使用的灯板只有红灯,所以这里只需要用到R管脚。
这讲的很明白。

使用特权

评论回复
16
lvyunhua| | 2015-4-19 17:46 | 只看该作者
不错,学习了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

94

帖子

3

粉丝