m0_66344690 2022-01-12 11:32 采纳率: 0%
浏览 36

LCD显示屏之前一切显示正常,有次上电之后LCD显示屏不显示应有内容。出现乱码

使用的是STM32F103C8T6最小系统版,LCD1602液晶

乱码如图:

 

代码如下

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "usart.h"
#include "timer.h"
#include "lcd1602.h"
#include "useri2c.h"    

char dis_temp[16];//ÏÔʾÊý×éÔÝ´æ
char dis_temp1[16];//ÏÔʾÊý×éÔÝ´æ
int dist_high = 1000;
int dist_low = 200;
u8 setFlag = 0;
u8 getFlag = 0;

//¶¨ÒåÒ»¸ö¹²Í¬Ì壬½á¹û¶ÁÈ¡µ½distanÊý×éÖУ¬distanc¾ÍÊǾàÀëµÄÕûÊýÖµ£¬²»ÐèÒªÔÙд³ÌÐòת»»
union distance_union
{
    unsigned long distance;
    unsigned int distanc;
    unsigned char distan[4];
};

int main(void)
 {
     unsigned char dat[1] = {0};
    union distance_union dist;
    delay_init();             //ÑÓʱº¯Êý³õʼ»¯
    NVIC_Configuration();//ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
    USARTx_Init(USART1,9600);   //´®¿Ú³õʼ»¯
     
     UserI2c_Init();
     LED_Init();           //LED¶Ë¿Ú³õʼ»¯
    KEY_Init();          //°´¼ü¶Ë¿Ú³õʼ»¯
    TIM3_Int_Init(499,7199);//10KhzµÄ¼ÆÊýƵÂÊ£¬¼ÆÊýµ½500Ϊ50ms 
    Lcd_Init();    //Òº¾§³õʼ»¯
    delay_ms(20);          
    Lcd_Puts(0,0,"Laser ranging");//ÏÔʾ    
    delay_ms(1000);     
    SensorWritenByte(dat,0x09,1);//ÉèΪ±»¶¯¶Áȡģʽ
     
    while(1)
    {            
        if(getFlag){//500msÖÃλһ´Î£¬¼´0.5ÃëÖ´ÐÐÒ»´Î²â¾à
            getFlag=0;//Çå³ý±ê־λ
            SensorReadnByte(dist.distan,0x02,4);//¶ÁÈ¡Â˲¨ºó¾àÀë
        }
        KeyScan();//ɨÃè°´¼ü
        if(KeyIsPress(key_set)){//Èç¹ûÉèÖð´¼ü°´ÏÂ
            setFlag++;//ÉèÖñêÖ¾Öµ¼Ó1
            setFlag%=3;//ʹÉèÖñêÖ¾ÖµÔÚ0~2Ö®¼ä±ä»¯£¬0Ϊ²»ÉèÖã¬1ΪÉèÖÃÏÂÏÞ£¬2ΪÉèÖÃÉÏÏÞ
        }
        if(setFlag==1){//Èç¹ûµ±Ç°±êÖ¾ÊÇÉèÖÃÏÂÏÞÖµ
            if(KeyIsPress(key_dec)){//Èç¹û¡°¼õ¡±°´¼ü°´ÏÂ
                if(dist_low>20){//Èç¹ûÏÂÏÞÖµ´óÓÚ20£¨²âÁ¿¾àÀë¹ýСʱ²»×¼È·£©
                    dist_low-=10;//ÏÂÏÞÖµµÝ¼õ10£¬µ¥Î»mm
                }
            }
            if(KeyIsPress(key_inc)){//Èç¹û¡°¼Ó¡±°´¼ü°´ÏÂ
                if(dist_low<(dist_high-10)){//Èç¹ûÏÂÏÞֵСÓÚÉÏÏÞ¼õ10£¨ÏÂÏÞ²»ÄÜ´óÓÚÉÏÏÞ£©
                    dist_low+=10;//ÏÂÏÞÖµµÝÔö10£¬µ¥Î»mm
                }
            }
            sprintf(dis_temp1," SL:%4d  H:%4d",dist_low,dist_high);      //´òÓ¡
        }
        else if(setFlag==2){//Èç¹ûµ±Ç°±êÖ¾ÊÇÉèÖÃÉÏÏÞÖµ
            if(KeyIsPress(key_dec)){//Èç¹û¡°¼õ¡±°´¼ü°´ÏÂ
                if(dist_high>(dist_low+10)){//Èç¹ûÉÏÏÞÖµ´óÓÚÏÂÏÞ¼Ó10£¨ÏÂÏÞ²»ÄÜ´óÓÚÉÏÏÞ£©
                    dist_high-=10;//ÉÏÏÞÖµµÝ¼õ10£¬µ¥Î»mm
                }
            }
            if(KeyIsPress(key_inc)){//Èç¹û¡°¼Ó¡±°´¼ü°´ÏÂ
                if(dist_high<2000){//Èç¹ûÉÏÏÞֵСÓÚ2000£¨×î´ó²âÁ¿¾àÀ룩
                    dist_high+=10;//ÉÏÏÞÖµµÝÔö10£¬µ¥Î»mm
                }
            }
            sprintf(dis_temp1,"  L:%4d SH:%4d",dist_low,dist_high);      //´òÓ¡
        }
        else{
            sprintf(dis_temp1,"  L:%4d  H:%4d",dist_low,dist_high);      //´òÓ¡
        }
        Lcd_Puts(0,1,dis_temp1);//ÏÔʾ 
        
            if(dist.distanc>=dist_high || dist.distanc<=dist_low){//²»ÔÚãÐÖµ·¶Î§ÄÚ
                beep = 1;//·äÃùÆ÷±¨¾¯
            }
            else{
                beep = 0;//¹Ø±Õ·äÃùÆ÷
            }
            sprintf(dis_temp,"dis:%dmm        ",dist.distanc);      //´òÓ¡
            Lcd_Puts(0,0,dis_temp);//ÏÔʾ             
    }
}

 

  • 写回答

2条回答 默认 最新

  • jianqiang.xue 嵌入式领域优质创作者 2022-01-12 13:45
    关注

    上电时,需要延时100ms,再操作LCD

    评论

报告相同问题?

问题事件

  • 创建了问题 1月12日

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料