找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3146|回复: 16
收起左侧

lcd1602仿真正常但是焊接的实物电路显示乱码

  [复制链接]
ID:512401 发表于 2019-6-1 16:22 | 显示全部楼层 |阅读模式
50黑币
先上程序
#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
回复

使用道具 举报

ID:512401 发表于 2019-6-1 16:37 来自手机 | 显示全部楼层
仿真中正常显示   开
回复

使用道具 举报

ID:512401 发表于 2019-6-1 17:08 | 显示全部楼层
在开发板上也是正常的
回复

使用道具 举报

ID:96682 发表于 2019-6-1 18:37 | 显示全部楼层
仿真上没问题不代表实物上也能正常运行,楼主都没晒实物电路图问题不好找
回复

使用道具 举报

ID:403018 发表于 2019-6-1 20:43 | 显示全部楼层
建议测试下显示固定数据是否正常
回复

使用道具 举报

ID:552742 发表于 2019-6-1 22:35 | 显示全部楼层
楼主 :1/建议你检查电路是否存在虚焊
          2/你看一下软件的字符排布是否正确(可能会存在错位情况)
回复

使用道具 举报

ID:512401 发表于 2019-6-1 23:05 | 显示全部楼层

RE: lcd1602仿真正常但是焊接的实物电路显示乱码

原理图

原理图

pcb

pcb
pcb 和原理图在这  在开发板上也能正常运行


回复

使用道具 举报

ID:512401 发表于 2019-6-1 23:06 | 显示全部楼层
wc86110 发表于 2019-6-1 18:37
仿真上没问题不代表实物上也能正常运行,楼主都没晒实物电路图问题不好找

在开发板上也能正常运行

回复

使用道具 举报

ID:360353 发表于 2019-6-2 04:12 | 显示全部楼层
对于这个问题,你先让它显示正常字符串。如果能正常显示。数据采集错误。无法正常显示请检查电路问题
回复

使用道具 举报

ID:160500 发表于 2019-6-2 09:41 | 显示全部楼层
看现象应该是软件问题,检查数据和字符转换的部分。也可能是数据引脚反了
回复

使用道具 举报

ID:96682 发表于 2019-6-2 13:12 | 显示全部楼层
楼主用的是啥主控芯片?
回复

使用道具 举报

ID:552983 发表于 2019-6-2 14:22 | 显示全部楼层
先排除硬件连接问题后,尝试在程序开头加上比较长的延时,比如说3秒,看看是不是单片机现工作起来了,显示屏还没有工作的时候,单片机发的命令屏幕没有接收到
回复

使用道具 举报

ID:616545 发表于 2019-11-6 08:59 | 显示全部楼层
我的也是,Proteus仿真正常显示,但是实际电路就是一堆乱码
回复

使用道具 举报

ID:608872 发表于 2021-7-2 14:30 | 显示全部楼层
找到原因了吗?我也自己焊的洞洞板显示正常,上PCB就是不行,也是乱码,要不就是有个ADC采集不了
回复

使用道具 举报

ID:943857 发表于 2021-7-2 21:12 来自手机 | 显示全部楼层
我感觉是写的方式不对
回复

使用道具 举报

ID:954170 发表于 2021-7-20 12:39 | 显示全部楼层
可能产生的问题如下:


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


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


3、程序错误


只要这三点做对了是绝对没问题的
回复

使用道具 举报

ID:824490 发表于 2021-7-20 17:06 | 显示全部楼层
又见坟贴。。。
能显示,说明接线没错。显示乱,重点去查代码,比如初始化的各种模式是否正确,显示数据写入的对不对。。
本不想回这贴,算了,回就回吧。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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