OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2553|回复: 6

STM32驱动5X8液晶的奇怪问题

[复制链接]

12

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2013-12-17
在线时间
36 小时
发表于 2016-12-6 11:10:33 | 显示全部楼层 |阅读模式
1金钱
大家好,我用STM32做了个5X8的LED灯,现在有个奇怪的问题就是第一行亮的时候,下面一行偶尔会亮一下。
行驱动电路:[img=0,1]file:///C:\Users\caixuefei\AppData\Roaming\Tencent\Users\1679090279\QQ\WinTemp\RichOle\18NZEA[~5CZ41GNZ}5B7TDS.png[/img]

行驱动

行驱动

列驱动电路:

列驱动

列驱动
col_OUT0-7后端加了330欧的限流电阻。
采用的是扫描模式,每一行显示时间为2ms。扫完5行是10ms,相当于显示周期是10ms。现在的问题是第一行灭,后面4行全亮的情况下,偶尔能看到第一行的数据会闪一下。还有一个现象是第一行全亮,后面全灭的情况也是后面2行的数据会偶尔闪一下。尤其以刚开机的时候最明显,开始我以为是电路干扰。我看了电源纹波,驱动波形刚开机和后面都是一样的没变化。大家有碰到过类似的现象吗?我把行驱动改为NPN驱动的也不行,同样的现象。
我的LED点阵是自己用40个LED排的5X8。

LED5X8

LED5X8

有高手做过LED点阵的或者碰到过类似现象的麻烦告知下小弟,非常感谢。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2013-12-17
在线时间
36 小时
 楼主| 发表于 2016-12-6 11:12:33 | 显示全部楼层
就上图中L12-L43都亮,L4-L11偶尔会有闪一下现象,同理,L4-L11常亮,L12-L27偶尔会有闪一下的现象
回复

使用道具 举报

21

主题

387

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1043
金钱
1043
注册时间
2016-9-8
在线时间
213 小时
发表于 2016-12-6 11:18:18 | 显示全部楼层
明显就是程序不太严谨呗.........
shop60994719.taobao.com
回复

使用道具 举报

12

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2013-12-17
在线时间
36 小时
 楼主| 发表于 2016-12-6 11:33:34 | 显示全部楼层
程序我没处理数据啊,我就是往里面写固定数据而已,数据不会动的
回复

使用道具 举报

2

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
299
金钱
299
注册时间
2016-6-19
在线时间
195 小时
发表于 2016-12-6 12:26:13 | 显示全部楼层
行扫描的话要换行的时候列的引脚要为0。
lie=0;
delay1us(10);
hang=hang<<1;
lie=data;
回复

使用道具 举报

12

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2013-12-17
在线时间
36 小时
 楼主| 发表于 2016-12-6 12:28:36 | 显示全部楼层
uint16 i_u16PortData1;
    GPIOE->BRR = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12;
    i_u16PortData1 = m_u8LedData[m_u8LedLineNum];
    i_u16PortData1<<=8;
    i_u16PortData1&= 0xFF00;
    GPIOD->ODR &= 0xFF;
    GPIOD->ODR |= i_u16PortData1;
    switch(m_u8LedLineNum)
    {
        case 0:
            GPIOE->BSRR |= GPIO_Pin_8;
            break;
        case 1:
            GPIOE->BSRR |= GPIO_Pin_9;
            break;
        case 2:
            GPIOE->BSRR |= GPIO_Pin_10;
            break;
        case 3:
            GPIOE->BSRR |= GPIO_Pin_11;
            break;
        case 4:
            GPIOE->BSRR |= GPIO_Pin_12;
            break;
    }
    m_u8LedLineNum++;
    if(m_u8LedLineNum>=5)
    {
        m_u8LedLineNum = 0;
    }
就这段程序,2ms调用一次,m_u8LedData数组是直接固定不修改的
回复

使用道具 举报

12

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2013-12-17
在线时间
36 小时
 楼主| 发表于 2016-12-6 12:29:01 | 显示全部楼层
这个是NPN的,PNP的刚好行驱动反过来
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 02:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表