找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5919|回复: 14
收起左侧

单片机控制LCD1602出现第一行白色的方块问题,线没接错

[复制链接]
ID:426422 发表于 2019-4-3 20:27 | 显示全部楼层 |阅读模式
17黑币
我在lcd上电后出现第一行白色的方块。V0和VSS接口接了一个2.2K的电阻,线没接错。下面是程序。求助,急!

IMG20190330163513.jpg

最佳答案

查看完整内容

VSS VDD V0接一个10K电位器,仔细调整下试试
回复

使用道具 举报

ID:326783 发表于 2019-4-3 20:27 | 显示全部楼层
VSS VDD V0接一个10K电位器,仔细调整下试试
回复

使用道具 举报

ID:426422 发表于 2019-4-3 21:15 | 显示全部楼层
没有人吗
回复

使用道具 举报

ID:213173 发表于 2019-4-4 12:45 | 显示全部楼层

没有上代码,神仙也帮不了你。
回复

使用道具 举报

ID:123289 发表于 2019-4-4 12:59 | 显示全部楼层
“下面是程序”?
回复

使用道具 举报

ID:504761 发表于 2019-4-4 13:39 | 显示全部楼层
应该是程序有问题,把程序发出来
回复

使用道具 举报

ID:288922 发表于 2019-4-4 14:05 | 显示全部楼层
代码没有问题的话,LCD应该是坏了,要不然就是接触不良,当时我的也是这种情况
回复

使用道具 举报

ID:467843 发表于 2019-4-4 14:08 | 显示全部楼层
没有初始化程序或者初始化程序错误,把你的程序发上来 ,不然就像楼上说的神仙也帮不了你
回复

使用道具 举报

ID:426422 发表于 2019-4-4 19:03 | 显示全部楼层
#ifndef __LCD1602_H__
#define __LCD1602_H__
//#include "delay.h"                 
#include<reg52.h>
sbit LCD1602_RS  =  P3^6;                  
sbit LCD1602_RW  =  P3^5;                  
sbit LCD1602_E   =  P3^4;                  

#define Busy    0x80
#define  LCD1602_Data  P0
void delay_50us_1602(unsigned int t)
{
        unsigned char i,j;
        for(i=0;i<t;i++)
                for(j=110;j>0;j--);
}

void LCD1602_write_com(unsigned char com)
{
  delay_50us_1602(5);
//        LCD1602_E = 0;
        LCD1602_RS = 0;
        LCD1602_RW = 0;
                LCD1602_E = 0;
        LCD1602_Data= com;
        delay_50us_1602(10);
        LCD1602_E = 1;
        delay_50us_1602(10);
        LCD1602_E = 0;
}

void LCD1602_write_data(unsigned char        dat)
{
        delay_50us_1602(10);
//        LCD1602_E = 0;
        LCD1602_RS = 1;
        LCD1602_RW = 0;
        LCD1602_E = 0;
        LCD1602_Data = dat;
        delay_50us_1602(10);
        LCD1602_E = 1;
        delay_50us_1602(10);
        LCD1602_E = 0;
}

void LCD1602_init(void)
{

   delay_50us_1602(15);
   LCD1602_write_com(0X38);
   delay_50us_1602(5);
//         LCD1602_write_com(0X0C);
//           LCD1602_write_com(0X06);
//           LCD1602_write_com(0X01);
   LCD1602_write_com(0X08);
           delay_50us_1602(5);
   LCD1602_write_com(0X01);
           delay_50us_1602(5);
   LCD1602_write_com(0X06);
           delay_50us_1602(5);
   LCD1602_write_com(0X0C);
           delay_50us_1602(5);
//         LCD1602_write_com(0x0e);
//         LCD1602_write_com(0x06);
//         LCD1602_write_com(0x01);
   
}


void LCD1602_Disp_ZF(unsigned char addr,unsigned char * pt,unsigned char num)
{
        unsigned char i;
        LCD1602_write_com(addr);
        for(i = 0;i < (num*1);i++)
                LCD1602_write_data(*(pt++));
}

#endif

void main(void)     
{
        Delay_ms(400);
        LCD1602_init();
        Delay_ms(10);
  LCD1602_Disp_ZF(0x80,"     CM       CM",16);
        LCD1602_Disp_ZF(0x80+0X40,"sdz:          CM",16);
        TMOD=0x01;     
        TH0=0;     
        TL0=0;   
        TH1=0xf8;   
        TL1=0x30;   
        ET0=1;
        ET1=1;     
        TR1=1;  
        EA=1;   
//        EA=0;
        sdz = ISP_READ(0x2c00)*256+ISP_READ(0x2c01);
        EA=1;
回复

使用道具 举报

ID:426422 发表于 2019-4-4 19:06 | 显示全部楼层
本帖最后由 zhubindada 于 2019-4-4 19:11 编辑

程序来了 。请大家帮下忙。
回复

使用道具 举报

ID:426422 发表于 2019-4-4 19:09 | 显示全部楼层
wangshengs 发表于 2019-4-4 13:39
应该是程序有问题,把程序发出来

程序发了,亲大神帮忙
回复

使用道具 举报

ID:213173 发表于 2019-4-5 06:59 | 显示全部楼层
zhubindada 发表于 2019-4-4 19:09
程序发了,亲大神帮忙

无标题.jpg
  1. #include<reg52.h>

  2. #define Busy    0x80
  3. #define  LCD1602_Data  P0

  4. sbit LCD1602_RS  =  P3^6;                  
  5. sbit LCD1602_RW  =  P3^5;                  
  6. sbit LCD1602_E   =  P3^4;                  

  7. void delay_50us_1602(unsigned int t)
  8. {
  9.         unsigned char i,j;
  10.         for(i=0;i<t;i++)
  11.                 for(j=110;j>0;j--);
  12. }

  13. void LCD1602_write_com(unsigned char com)
  14. {
  15.         delay_50us_1602(5);
  16. // LCD1602_E = 0;
  17.         LCD1602_RS = 0;
  18.         LCD1602_RW = 0;
  19.         LCD1602_E = 0;
  20.         LCD1602_Data= com;
  21.         delay_50us_1602(10);
  22.         LCD1602_E = 1;
  23.         delay_50us_1602(10);
  24.         LCD1602_E = 0;
  25. }

  26. void LCD1602_write_data(unsigned char dat)
  27. {
  28.         delay_50us_1602(10);
  29. // LCD1602_E = 0;
  30.         LCD1602_RS = 1;
  31.         LCD1602_RW = 0;
  32.         LCD1602_E = 0;
  33.         LCD1602_Data = dat;
  34.         delay_50us_1602(10);
  35.         LCD1602_E = 1;
  36.         delay_50us_1602(10);
  37.         LCD1602_E = 0;
  38. }

  39. void LCD1602_init(void)
  40. {
  41.    delay_50us_1602(15);
  42.    LCD1602_write_com(0X38);
  43.    delay_50us_1602(5);
  44. // LCD1602_write_com(0X0C);
  45. // LCD1602_write_com(0X06);
  46. // LCD1602_write_com(0X01);
  47.    LCD1602_write_com(0X08);
  48.    delay_50us_1602(5);
  49.    LCD1602_write_com(0X01);
  50.    delay_50us_1602(5);
  51.    LCD1602_write_com(0X06);
  52.    delay_50us_1602(5);
  53.    LCD1602_write_com(0X0C);
  54.    delay_50us_1602(5);
  55. // LCD1602_write_com(0x0e);
  56. // LCD1602_write_com(0x06);
  57. // LCD1602_write_com(0x01);
  58.    
  59. }

  60. void LCD1602_Disp_ZF(unsigned char addr,unsigned char * pt,unsigned char num)
  61. {
  62.         unsigned char i;
  63.         LCD1602_write_com(addr);
  64.         for(i = 0;i < (num*1);i++)
  65.                 LCD1602_write_data(*(pt++));
  66. }

  67. void main(void)     
  68. {
  69. //        Delay_ms(400);
  70.         LCD1602_init();
  71. //        Delay_ms(10);
  72.         LCD1602_Disp_ZF(0x80,"     CM       CM",16);
  73.         LCD1602_Disp_ZF(0x80+0X40,"sdz:          CM",16);
  74.         TMOD=0x01;     
  75.         TH0=0;     
  76.         TL0=0;   
  77.         TH1=0xf8;   
  78.         TL1=0x30;   
  79.         ET0=1;
  80.         ET1=1;     
  81.         TR1=1;  
  82.         EA=1;   
  83. // EA=0;
  84. //        sdz = ISP_READ(0x2c00)*256+ISP_READ(0x2c01);
  85.         EA=1;
  86.         while(1);
  87. }
复制代码



回复

使用道具 举报

ID:426422 发表于 2019-4-6 08:52 | 显示全部楼层

就是仿真上可以 ,实物不行,是何解?
回复

使用道具 举报

ID:213173 发表于 2019-4-6 14:19 | 显示全部楼层
zhubindada 发表于 2019-4-6 08:52
就是仿真上可以 ,实物不行,是何解?

仔细查对硬件!
微信图片_20190406141901.jpg

回复

使用道具 举报

ID:494259 发表于 2019-4-6 16:29 来自手机 | 显示全部楼层
这个我知道    你可能是把lcd的背光亮度调大了   就是第三个管脚Vo哪个     
回复

使用道具 举报

ID:426422 发表于 2019-4-10 10:13 | 显示全部楼层
已解决,谢谢大家。我的问题是在V0上面的2.2K电阻不够使V0脚达到1.3V.要用足够大的电位器来调节。
回复

使用道具 举报

ID:1074947 发表于 2023-5-6 14:01 来自手机 | 显示全部楼层
楼主接的是10k的么
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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