求助原子哥,每次读取传感器值时,点阵屏会频闪,如何解决?

2019-07-21 07:37发布

本帖最后由 littlehah 于 2018-4-20 21:15 编辑

简单的通过ADC读取PM2.5传感器数值,然后在16*32点阵屏显示。但每当一个周期显示结束,再次读取数据时,点阵屏会闪如附件视频显示那样,不知道是什么原因。点阵屏是通过IO口直接驱动的,速率为50MHz,最开始使用arduino驱动读取没有任何问题,但arduino主频太低,所以换stm32。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
littlehah
2019-07-21 16:04
正点原子 发表于 2018-4-21 01:46
电阻屏是用中断的方式驱动的么? 是的话,估计是你读取传感器禁止中断了,或者有高优先级中断占用了刷屏时 ...

整个工程中都没有使用中断,如果没有读取传感器值显示正常没闪屏。
代码如下:
        DHT11_GPIO_Config();//温湿度初始化
        Adc_Init();//ADC初始化
        u16 pm=0;
       
        while(1)
        {       
                //read dht11 data
                pm=Get_GP2Y_Average(5);//获取PM2.5数据
                GPIO_SetBits(GPIOB,GPIO_Pin_11);
                if( Read_DHT11(&DHT11_Data)==SUCCESS)
                {
                         //修改温湿度显示数据
                }
                if(pm)
                {
                        //修改PM2.5显示数据
                }
                delay_ms(5);
                for(int jk=0;jk<1000;jk++)//显示数据发送
                {
                        //light LED Display
                        GPIO_ResetBits(GPIOA,GPIO_Pin_10);//STB锁存信号
                        for(int row=0;row<4;row++)
                        {               
                                for(int i=0;i<4;i++)
                                {
                                        for(int j=0;j<4;j++)
                                        {
                                                SendDate(Bmp[48-j*16+row*4+i]);//发送数据
                                        }
                                }
                                setRow(row);//行选
                                GPIO_ResetBits(GPIOA,GPIO_Pin_10);//STB锁存信号
                                GPIO_SetBits(GPIOA,GPIO_Pin_10);//STB锁存信号
                                GPIO_SetBits(GPIOB,GPIO_Pin_11);//OE使能
                                //delay_us(500);               
                        }
                }
        }

一周热门 更多>