该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如题,我用例程做就可以,但是自己写的程序不行,下面是我写的程序
#include
#define uchar unsigned char
//#define lcddate P0//液晶数据口
sbit lcdrs=P2^6;//液晶数据命令选择
sbit lcdrw=P2^5;//液晶读写选择
sbit lcden=P2^7;//液晶使能
sbit lcdpsb=P3^2;//液晶并串行口选择
sbit lcdrst=P3^7;//液晶复位
void lcd_init();
void delay(uchar);
void write_com(uchar com);
void write_data(uchar date);
void lcdpos(uchar x,uchar y);
uchar m;
uchar code table[]="abcdefg";
void main()
{
delay(100);
lcd_init();
delay(10);
lcdpos(1,0);
while(1)
{
for(m=0;m<9;m++)
{
delay(10);
write_data(table[m]);
delay(10);
}
}
}
void lcd_init()
{
lcdpsb=1;
lcdrst=0;
delay(10);
lcdrst=1;
delay(10);
write_com(0x34);
delay(10);
write_com(0x30);
delay(10);
write_com(0x0c);
delay(10);
write_com(0x01);
delay(10);
}
void delay(uchar xms)
{
uchar i,j;
for(i=xms;i>0;i--)
for(j=113;j>0;j--);
}
void write_com(uchar com)
{
lcdrs=0;
lcdrw=0;
lcden=0;
delay(10);
P0=com;
lcden=1;
delay(10);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
lcdrw=0;
lcden=0;
delay(10);
P0=date;
lcden=1;
delay(10);
lcden=0;
}
void lcdpos(uchar x,uchar y)
{
uchar pos;
if(x==0)
{x=0x80;}
else if(x==1)
{x=0x90;}
else if(x==2)
{x=0x88;}
else if(x==3)
{x=0x98;}
pos=x+y;
delay(10);
write_com(pos);
}