LCD1602的显示问题(新手提问)
时间:10-02
整理:3721RD
点击:
请问一下 为什么我在做LCD1602的显示实验时 输进去一个A字符 为什么显示的却是0?而且在写命令时0x80在最右边 不是在最左边?下面是我写的程序 请大神帮我看一下!
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P2^7;
sbit lcdrs=P2^6;
sbit lcdrw=P2^5;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
lcdrw=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
lcdrw=0;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
write_com(0x38);
delay(5);
write_com(0x0f);
delay(5);
write_com(0x06);
delay(5);
write_com(0x80);
delay(5);
}
void main()
{
init();
write_data('A');
while(1);
}
用别的资料上的程序试过 硬件没问题 我不知道这个程序有什么问题 求大神指教!谢谢!
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P2^7;
sbit lcdrs=P2^6;
sbit lcdrw=P2^5;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
lcdrw=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
lcdrw=0;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
write_com(0x38);
delay(5);
write_com(0x0f);
delay(5);
write_com(0x06);
delay(5);
write_com(0x80);
delay(5);
}
void main()
{
init();
write_data('A');
while(1);
}
用别的资料上的程序试过 硬件没问题 我不知道这个程序有什么问题 求大神指教!谢谢!
void write_com(uchar com|0x80)这样试试
谢谢您了 自己新手 板子是4位数据口的 自己不懂 现在已经好了!