标题: lcd1602仿真正常但是焊接的实物电路显示乱码 [打印本页]

作者: susu1234    时间: 2019-6-1 16:22
标题: lcd1602仿真正常但是焊接的实物电路显示乱码
先上程序
#include<reg52.h>
#include <intrins.h>
#include "LCD1602.h"
sbit  RX = P3^3;  
sbit  TX = P3^2;
sbit LED = P1^3;  
sbit SPEAK = P1^0;
sbit Motor = P1^7;
unsigned int  time=0;
unsigned int  timer=0;
unsigned int S=0;
unsigned int SET_H=2000,SET_L=100;
bit  flag =0;
unsigned char Table[5],Table1[5];
unsigned char KEY_flag=0;
//?????
void Delay_ms(int jj)  
{
int ii;
while(jj--)
  for(ii=0;ii<116;ii++);
}
void Conut(void)  
{
  time=TH0*256+TL0;  
  TH0=0;  
  TL0=0;  

  S=(time*1.87)/10;     
  if((S>=7000)||flag==1)
  {  
   flag=0;
  }
  else
  {
   Table1[0]= S/1000+0X30;
   Table1[1]= S/100%10+0X30;
   Table1[2]= S/10%10+0X30;
   Table1[3]= '.';   
   Table1[4]= S%10+0X30;   
   LCD1602_Disp_ZF(0x88,Table1,5);
}
}
void main(void)
{
    LCD1602_init();
////////////////
    LCD1602_Disp_ZF(0x80,"  Now S:     CM ",16);
           
    LCD1602_Disp_ZF(0x80+0X40,"Set H     L     ",16);
TMOD=0x11;     
TH0=0;      
TL0=0;            
TH1=0xf8;     
TL1=0x30;     
ET0=1;            
ET1=1;      
TR1=1;      
EA=1;      
EA=0;
EA=1;
while(1)
{
  while(!RX);      
  TR0=1;      
  while(RX);   
  TR0=0;   
  Conut();  
  /////////////////////////////////////
  if((S>SET_H)||(S<SET_L))
  {
   LED=0;SPEAK=0;
  }
  else
  {
   LED=1;SPEAK=1;
  }
  ////////////////////////////////
  if((S>SET_H))
  {
   Motor=0;
  }
  else
  {
   Motor=1;
  }
   Table[0]= SET_H/1000+0X30;  
   Table[1]= SET_H/100%10+0X30;
   Table[2]= SET_H/10%10+0X30;
   Table[3]= '.';
   Table[4]= SET_H%10+0X30;
   LCD1602_Disp_ZF(0x85+0x40,Table,5);
   Table[0]= SET_L/1000+0X30;  
   Table[1]= SET_L/100%10+0X30;
   Table[2]= SET_L/10%10+0X30;
   Table[3]= '.';
   Table[4]= SET_L%10+0X30;
   LCD1602_Disp_ZF(0x8b+0x40,Table,5);
}
}

#include "LCD1602.h"
void delay_50us_1602(unsigned int t)
{
unsigned char j;
for(;t>0;t--)
  for(j=19;j>0;j--);
}

void LCD1602_write_com(unsigned char com)
{
LCD1602_E = 0;
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_Data= com;
delay_50us_1602(10);
LCD1602_E = 1;
delay_50us_1602(20);
LCD1602_E = 0;
}
void LCD1602_write_data(unsigned int dat)
{
LCD1602_E = 0;
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_Data = dat;
delay_50us_1602(10);
LCD1602_E = 1;
delay_50us_1602(20);
LCD1602_E = 0;
}
void LCD1602_init(void)
{
   delay_50us_1602(300);
   LCD1602_write_com(0X38);
   delay_50us_1602(100);
   LCD1602_write_com(0X38);
   delay_50us_1602(100);
   LCD1602_write_com(0X38);
   LCD1602_write_com(0X38);
   LCD1602_write_com(0X08);
   LCD1602_write_com(0X01);
   LCD1602_write_com(0X06);
   LCD1602_write_com(0X0C);
   
}

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

IMG_20190601_162024.jpg (2.22 MB, 下载次数: 71)

IMG_20190601_162024.jpg

作者: susu1234    时间: 2019-6-1 16:37
仿真中正常显示   开
作者: susu1234    时间: 2019-6-1 17:08
在开发板上也是正常的
作者: wc86110    时间: 2019-6-1 18:37
仿真上没问题不代表实物上也能正常运行,楼主都没晒实物电路图问题不好找
作者: yk910127    时间: 2019-6-1 20:43
建议测试下显示固定数据是否正常
作者: 快乐圣诞节分厘    时间: 2019-6-1 22:35
楼主 :1/建议你检查电路是否存在虚焊
          2/你看一下软件的字符排布是否正确(可能会存在错位情况)
作者: susu1234    时间: 2019-6-1 23:05
标题: RE: lcd1602仿真正常但是焊接的实物电路显示乱码
pcb 和原理图在这  在开发板上也能正常运行



作者: susu1234    时间: 2019-6-1 23:06
wc86110 发表于 2019-6-1 18:37
仿真上没问题不代表实物上也能正常运行,楼主都没晒实物电路图问题不好找

在开发板上也能正常运行


作者: 13383864609    时间: 2019-6-2 04:12
对于这个问题,你先让它显示正常字符串。如果能正常显示。数据采集错误。无法正常显示请检查电路问题
作者: liuzx66    时间: 2019-6-2 09:41
看现象应该是软件问题,检查数据和字符转换的部分。也可能是数据引脚反了
作者: wc86110    时间: 2019-6-2 13:12
楼主用的是啥主控芯片?
作者: yiyizhao    时间: 2019-6-2 14:22
先排除硬件连接问题后,尝试在程序开头加上比较长的延时,比如说3秒,看看是不是单片机现工作起来了,显示屏还没有工作的时候,单片机发的命令屏幕没有接收到
作者: lioooo    时间: 2019-11-6 08:59
我的也是,Proteus仿真正常显示,但是实际电路就是一堆乱码
作者: yinnan128    时间: 2021-7-2 14:30
找到原因了吗?我也自己焊的洞洞板显示正常,上PCB就是不行,也是乱码,要不就是有个ADC采集不了
作者: 菇凉犹在    时间: 2021-7-2 21:12
我感觉是写的方式不对
作者: 轩辕顶托    时间: 2021-7-20 12:39
可能产生的问题如下:


1、I/O口与LCD的数据口方向焊反


2、LCD的RS、RW、E的控制I/O口在程序编辑时定义错误


3、程序错误


只要这三点做对了是绝对没问题的
作者: 名字不是重点    时间: 2021-7-20 17:06
又见坟贴。。。
能显示,说明接线没错。显示乱,重点去查代码,比如初始化的各种模式是否正确,显示数据写入的对不对。。
本不想回这贴,算了,回就回吧。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1