标题:
单片机LCD1602不显示数字,程序有问题 求帮助
[打印本页]
作者:
我再睡会就起来
时间:
2020-4-15 20:36
标题:
单片机LCD1602不显示数字,程序有问题 求帮助
PM~A_@3GC1CB)C@P%I~UV9S.png
(28.97 KB, 下载次数: 33)
下载附件
2020-4-15 20:34 上传
程序,谢谢各位大佬
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
#define LCD1602_GPIO P1
void LCD1602_WriteCom(uchar com);
void LCD1602_WriteDat(uchar dat);
void LCD1602_Init();
void Delayms(uint a);
uchar Disp_PromNUM[]="NUM:";
uchar Disp_PromNAME[]="NAME:";
uchar Disp_Num[]="1730120526";
uchar Disp_Name[]="SHI LEI";
void main(void)
{
uchar i;
LCD1602_Init();
for(i=0;Disp_PromNUM[i]!='\0';i++)
{
LCD1602_WriteDat(Disp_PromNUM[i]);
Delayms(2);
}
LCD1602_WriteCom(0x84);
for(i=0;i<8;i++)
{
LCD1602_WriteDat(Disp_Num[i]);
Delayms(2);
}
LCD1602_WriteCom(0xc0);
for(i=0;Disp_PromNAME[i]!='\0';i++)
{
LCD1602_WriteDat(Disp_PromNAME[i]);
Delayms(2);
}
LCD1602_WriteCom(0xC5);
for(i=0;Disp_Name[i]!='\0';i++)
{
LCD1602_WriteDat(Disp_Name[i]);
Delayms(2);
}
while(1);
}
void LCD1602_WriteCom(uchar com)
{
E=0;
RS=0;
RW=0;
LCD1602_GPIO=com;
Delayms(1);
E=1;
Delayms(5);
E=0;
}
void LCD1602_WriteDat(uchar dat)
{
E=0;
RS=1;
RW=0;
LCD1602_GPIO=dat;
Delayms(1);
E=1;
Delayms(5);
E=0;
}
void LCD1602_Init()
{
LCD1602_WriteCom(0x38);
LCD1602_WriteCom(0x0c);
LCD1602_WriteCom(0x06);
LCD1602_WriteCom(0x01);
LCD1602_WriteCom(0x80);
}
void Delayms(uint a)
{
uint i,j;
for(j=0;j<a;j++)
{
for(i=o;i<125:i++);
}
}
复制代码
作者:
黄youhui
时间:
2020-4-16 08:43
你的LCD带字库吗?
作者:
wulin
时间:
2020-4-16 09:37
程序没有问题,是楼主抄错了。
错误:for(i=o;i<125:i++);
正确:for(i=0;i<125;i++);
作者:
benclee
时间:
2020-4-16 09:50
void Delayms(uint a)
{
uint i,j;
for(j=0;j<a;j++)
{
for(i=0;i<125;i++);//i=0不是o,125后面是;,不是:
}
}
作者:
hgw683
时间:
2020-4-16 09:55
1、首先判断IO设置是否正确:向并口写入指令,将指令读回比较是否正确(或用万用表测量);
作者:
hgw683
时间:
2020-4-16 09:57
2、在指令发送读回正确的前提下,若还是无显示,适当增加延时再试;
作者:
hgw683
时间:
2020-4-16 09:59
1、首先检测端口指令是否发送正确:发送后设置断点,检验端口电平是否你设置的值(高低电平都要试一遍);
2、适当增加延时验证
3、指令是否正确?
作者:
hgw683
时间:
2020-4-16 10:06
1、端口验证:LCD屏的各个接口IO通过CPU设置高低电平判断是否正确;
2、适当增加延时时间验证;
3、指令是否正确;
作者:
angmall
时间:
2020-4-16 10:24
void Delayms(uint a)
{
uint i,j;
for(j=0;j<a;j++)
{
for(i=o;i<125:i++);
}
}
给你改了,对比一下就知道哪里错了。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
#define LCD1602_GPIO P1
void LCD1602_WriteCom(uchar com);
void LCD1602_WriteDat(uchar dat);
void LCD1602_Init();
void Delayms(uint a);
uchar Disp_PromNUM[]="NUM:";
uchar Disp_PromNAME[]="NAME:";
uchar Disp_Num[]="1730120526";
uchar Disp_Name[]="SHI LEI";
void main(void)
{
uchar i;
LCD1602_Init();
for(i=0;Disp_PromNUM[i]!='\0';i++)
{
LCD1602_WriteDat(Disp_PromNUM[i]);
Delayms(2);
}
LCD1602_WriteCom(0x84);
for(i=0;i<8;i++)
{
LCD1602_WriteDat(Disp_Num[i]);
Delayms(2);
}
LCD1602_WriteCom(0xc0);
for(i=0;Disp_PromNAME[i]!='\0';i++)
{
LCD1602_WriteDat(Disp_PromNAME[i]);
Delayms(2);
}
LCD1602_WriteCom(0xC5);
for(i=0;Disp_Name[i]!='\0';i++)
{
LCD1602_WriteDat(Disp_Name[i]);
Delayms(2);
}
while(1);
}
void LCD1602_WriteCom(uchar com)
{
E=0;
RS=0;
RW=0;
LCD1602_GPIO=com;
Delayms(1);
E=1;
Delayms(5);
E=0;
}
void LCD1602_WriteDat(uchar dat)
{
E=0;
RS=1;
RW=0;
LCD1602_GPIO=dat;
Delayms(1);
E=1;
Delayms(5);
E=0;
}
void LCD1602_Init()
{
LCD1602_WriteCom(0x38);
LCD1602_WriteCom(0x0c);
LCD1602_WriteCom(0x06);
LCD1602_WriteCom(0x01);
LCD1602_WriteCom(0x80);
}
void Delayms(uint a)
{
uint i,j;
for(j=0;j<a;j++)
{
for(i=0;i<125;i++);
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1