• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单片机程序下载到板子上1602液晶板不显示,偶尔显示一下

f31e612039b4260b 2020-07-18 浏览量:464
#include <REGX51.H>
#include"LCD1602.h"
void Delay1ms(unsigned int xms)                //@12.000MHz
{
        while(xms)
        {
                unsigned char i j;                  //定义毫秒的延时
        
                i = 2;
                j = 239;
                do
                {
                        while (--j);
                } while (--i);
                xms--;
        }
}
void dierduan ()
{
                int years  = 2020;                        //万年历   //定义初始值
                int months = 7;
                int date  = 15;  

                int hour = 0;                                //从零开始
                int minute = 0;
                int second = 0;
        
                
                   
                        LCD_Init();
                        LCD_ShowString(11"Date");                         //LCD显示
                        LCD_ShowNum(16 years4);
                        LCD_ShowNum(111 months2);
                        LCD_ShowNum(114date2);
                        LCD_ShowString(21"Time");
                        LCD_ShowNum(26 hour2);
                        LCD_ShowNum(29 minute2);
                        LCD_ShowNum(212 second2);
                        LCD_ShowString(215"WE");
                        while(1)
                        {

                                if (second<60)                                                  //秒数增加
                                 {
                                        second++;
                                        Delay1ms(1000);
                                        LCD_ShowNum(212 second2);
                                 }
                                if(second==60)                                                   //分钟增加
                                 {
                                         second = 0;
                                        minute++;
                                        LCD_ShowNum(29 minute2);
                                 }
                                if(minute==60)                                           //小时增加
                                 {
                                  minute = 0;
                                  hour++;
                                  LCD_ShowNum(29 minute2);
                              LCD_ShowNum(26 hour2);
                                 }
                                 if(hour==24)                                                   //天数增加
                                 {
                                         hour=0;
                                        date++;
                                        LCD_ShowNum(26 hour2);
                                        LCD_ShowNum(114date2);
                                        LCD_ShowString(215"WE");
                                                                
                                 }
                                 if(date==30)                                                   //月份增加
                                 {
                                         date=0;
                                        months++;
                                        LCD_ShowNum(111 months2);
                                LCD_ShowNum(114date2);
                                 }
                                 if(months==12)                                                          //年份增加
                                 {
                                         months=0;
                                        years++;
                                        LCD_ShowString(11"Date");
                                 LCD_ShowNum(16 years4);
                                 LCD_ShowNum(111 months2);
                                 }

                        
                                  
                                  if(P3_0==0)                                                          //长按键增加秒数
                                  {
                                          Delay1ms(10);
                                        while(P3_0);
                                        Delay1ms(10);
                                        ++second;
                                        LCD_ShowNum(212 second2);
                                  }
                                  else if(P3_1==0)                                                          //长按键减少秒数
                                  {
                                          Delay1ms(10);
                                        while(P3_1);
                                        Delay1ms(10);
                                        --second;
                                        LCD_ShowNum(212 second2);
                                  }
                                        else if(P3_2==0)
                                  {                                                                                        //长按键增加天数
                                          Delay1ms(10);
                                        while(P3_2);
                                        Delay1ms(10);
                                        ++date;
                                        LCD_ShowNum(114date2);
                                
                                  }
                                  else if(P3_3==0)                                                           //长按键减少天数
                                  {
                                          Delay1ms(10);
                                        while(P3_3);
                                        Delay1ms(10);
                                        date--;
                                        LCD_ShowNum(114date2);
                                  }
                                  
                         }
}
main ()
{
          
         LCD_Init();
     LCD_ShowString(11"Hello!");                                           //LCD显示Hello
         Delay1ms(10000);                                                                   //延迟显示10秒
         LCD_Init();
         LCD_ShowString(11"WL1908104020");                           // LCD显示
         Delay1ms(6000);                                                                   // 延迟6秒
         LCD_Init();
         LCD_ShowString(11"DUANZUNCHENG");                          //  LCD显示
         Delay1ms(9000);                                                                  //  延迟9秒

         dierduan () ;
        

                
          while (1)
          {
          }
                 
}
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 看一下单片机与屏的接触是不是好的,有没有虚呢

    单独静态显示一个特定的内容是不是可显示呢,来判断你的驱动是不是是对的

    • 发布于 2020-07-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 你循环放一个显示函数LCD_ShowNum(114date2);看看是否显示正确,如果显示正确,找你dierduan () ;函数的问题,如果不显示,找LCD的驱动问题。
    • 发布于2020-07-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 你看下是不是用的stc单片机,如果是的话那你需要增加延时,在lcd1602.c文件里面修改数据和命令读写函数的延时
    • 发布于2020-07-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 偶尔显示一下,看下硬件通路是否接触良好;

    还有就是液晶显示就是一直在刷新,加点延时试试呢。

    • 发布于2020-07-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个要排查,需要看下你LCD_开头的那几个函数是怎么实现的,你贴的这部分代码都是显示的内容的逻辑,与LCD1602闪屏无关
    • 发布于2020-07-19
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

单片机程序下载到板子上1602液晶板不显示,偶尔显示一下