标题:
求大神指教啊我的1602为什么不显示啊?
[打印本页]
作者:
zzyix123
时间:
2020-8-29 23:36
标题:
求大神指教啊我的1602为什么不显示啊?
1598715269(1).png
(99.75 KB, 下载次数: 14)
下载附件
2020-8-29 23:34 上传
#include<reg51.h>
#define uint signed int
#define uchar signed char
uchar aa[]={"current voiltage :"};
sbit lcden = P3^4;
sbit lcdrs = P3^5;
sbit START = P2^0;
sbit CLK = P2^1;
sbit EOC = P2^2;
sbit OE = P2^3;
sbit AA = P2^4;
sbit BB = P2^5;
sbit CC = P2^6;
float v;
void delay(uint ms) //延时函数
{
uchar i;
while(ms--);
{
for(i<0;i<120;i++);
}
}
void write_com(uchar com) //写命令函数
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date) //写数据函数
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void LCD1602_init() //1602初始化函数
{
lcden=0;
write_com(0x38);
write_com(0x0C);
write_com(0x01);
}
void display (int v)
{
int shu,i;
write_com(0x80);
for(i=0;i<16;i++)
{
write_data(aa[i]);
}
write_com(0x80+0x46);
shu=v/100;
write_data(shu+'0');
delay(5);
write_data('.');
delay(5);
shu=v%100/10;
delay(5);
write_data(shu+'0');
delay(5);
shu=v%10;
write_data(shu+'0');
delay(5);
write_data('V');
}
void main()
{
LCD1602_init();
TMOD=0x02;
TH0=0x14;
TL0=0X14;
IE=0X82;
TR0=1;
P2=0x0f; //选用通道0,CLK=1,START=1,EOC=1,OE=1.
while(1)
{
START=0;
START=1;
START=0;
while(EOC=0);
OE=1;
v=P1*1.0/255*500;
display(v);
OE=0;
}
}
void Timer0() interrupt 1
{
CLK=!CLK;
}
复制代码
作者:
zzyix123
时间:
2020-8-29 23:38
显示函数没的问题 就是“v=P1*1.0/255*500”;如果把P1改成255 就可以正确显示5.00V
作者:
zzyix123
时间:
2020-8-29 23:58
主函数中 WHILE(EOC==0)这里少打个=
作者:
Kelan
时间:
2020-8-30 11:26
建议 LCD接口的RW 用单片机的IO来控制,而不是一直接低电平
作者:
梁廷明
时间:
2020-8-31 09:13
等待释放,估计是卡在那里了
作者:
梁廷明
时间:
2020-8-31 09:17
while(EOC=0); 在这里了,应该改为EOC==0
作者:
小文文
时间:
2020-8-31 14:55
RW接IO扣一开始给显示屏显示几个字母一下看能不能正常,再清屏接着你程序又不影响,可以检查一下你上面的程序会不会卡死没运行下来
作者:
aayon1979
时间:
2020-8-31 16:08
while(EOC=0);这里有错
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1