#include<reg51.h>
#include<intrins.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS = P3^3;
sbit RW = P3^4;
sbit E = P3^5;
uchar name1[]={"010340608"} ;
uchar name2[]={"work in hangzhou"} ;
void delay(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++)
;
}
void busy(void)
{
P2=0xff;
RS=0;
RW=1;
E=1;
while((P2&0x80)==0x80);
E=0;
}
void writecom(unsigned char com)
{ RS=0;
RW=0;
E=0;
P2=com;
E=1;
_nop_();
E=0;
}
void lcdwc(unsigned char com)
{
busy();
writecom(com);
}
void lcdwd(unsigned char dat)
{
busy();
RS=1;
RW=0;
E=0;
P2=dat;
E=1;
// _nop_();
E=0;
}
void write_str(uchar addr,uchar *p)
{
uchar i;
writecom(addr);
while(p[i]!=' ')
{lcdwd(p[i]);
i++;
}
}
void lcdint()
{
delay(300);
writecom(0x38);
delay(200); writecom(0x38);
delay(200); writecom(0x38);
lcdwc(0x38); //8位数据 显示2行 5*7字符
lcdwc(0x08); //关显示 光标关 闪烁关
lcdwc(0x01); //清除
lcdwc(0x06); //光标右移 画面不动
lcdwc(0x0c); //开显示 光标关 闪烁关
}
/*****************************************
主函数
*******************************************/
main()
{
//E=0;
lcdint();
while(1)
{
write_str(0x80,name1);
}
}
哪位高手帮忙看下 这个1602字符液晶软件部分哪里 有问题 为什么RW信号一直是高电平
仿真没显示,
电路图是对的用其他程序可以正常显示
-
一周热门 更多>