找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1970|回复: 7
收起左侧

单片机程序下载到板子上1602液晶板不显示,偶尔显示一下,只看到一排黑块是咋回事?

[复制链接]
ID:803895 发表于 2020-7-17 21:44 | 显示全部楼层 |阅读模式
#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(1,1,"Date");                         //LCD显示
                        LCD_ShowNum(1,6, years,4);
                        LCD_ShowNum(1,11, months,2);
                        LCD_ShowNum(1,14,date,2);
                        LCD_ShowString(2,1,"Time");
                        LCD_ShowNum(2,6, hour,2);
                        LCD_ShowNum(2,9, minute,2);
                        LCD_ShowNum(2,12, second,2);
                        LCD_ShowString(2,15,"WE");
                        while(1)
                        {

                                if (second<60)                                                  //秒数增加
                                 {
                                        second++;
                                        Delay1ms(1000);
                                        LCD_ShowNum(2,12, second,2);
                                 }
                                if(second==60)                                                   //分钟增加
                                 {
                                         second = 0;
                                        minute++;
                                        LCD_ShowNum(2,9, minute,2);
                                 }
                                if(minute==60)                                           //小时增加
                                 {
                                  minute = 0;
                                  hour++;
                                  LCD_ShowNum(2,9, minute,2);
                              LCD_ShowNum(2,6, hour,2);
                                 }
                                 if(hour==24)                                                   //天数增加
                                 {
                                         hour=0;
                                        date++;
                                        LCD_ShowNum(2,6, hour,2);
                                        LCD_ShowNum(1,14,date,2);
                                        LCD_ShowString(2,15,"WE");
                                                               
                                 }
                                 if(date==30)                                                   //月份增加
                                 {
                                         date=0;
                                        months++;
                                        LCD_ShowNum(1,11, months,2);
                                LCD_ShowNum(1,14,date,2);
                                 }
                                 if(months==12)                                                          //年份增加
                                 {
                                         months=0;
                                        years++;
                                        LCD_ShowString(1,1,"Date");
                                 LCD_ShowNum(1,6, years,4);
                                 LCD_ShowNum(1,11, months,2);
                                 }

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

         dierduan () ;
        

               
          while (1)
          {
          }
                 
}

回复

使用道具 举报

ID:452950 发表于 2020-7-17 22:59 | 显示全部楼层
引脚定义是否符合,对比度电位器是否需要调,1602有没有插反
回复

使用道具 举报

ID:584814 发表于 2020-7-18 11:20 | 显示全部楼层
一般是接线 错误
网上找个1602程序试试确定是否硬件接错
回复

使用道具 举报

ID:791700 发表于 2020-7-18 11:30 | 显示全部楼层
man1234567 发表于 2020-7-18 11:20
一般是接线 错误
网上找个1602程序试试确定是否硬件接错

你这个好像是引脚的定义有错误吧,然后看看接线的问题,
回复

使用道具 举报

ID:656668 发表于 2020-7-18 18:07 | 显示全部楼层
程序编写有错误,首先定义引脚哦
回复

使用道具 举报

ID:687146 发表于 2020-7-18 20:40 | 显示全部楼层
把驱动文件贴出来啊,只看主程序不知道你驱动部分咋写的没法诊断啊。
回复

使用道具 举报

ID:420836 发表于 2020-7-18 20:52 | 显示全部楼层
可能不一定是由于软件引起的,也可能是由于接线错误引起的。 请贴原理图。
回复

使用道具 举报

ID:801957 发表于 2020-7-18 22:19 | 显示全部楼层
大概率是程序问题,当然要先排除接线错误
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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