求助求助!
时间:10-02
整理:3721RD
点击:
那位大神帮我看一下我写的12864串口三线的程序啊,怎么改都不用啊、、、、
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code ma[] ={" 汉字显示LCD "};
uchar code ma2[]={"自带字库图文混排"};
uchar code ma3[]={"控制IC:ST7920 "};
uchar code ma4[]={"功能强大使用方便"};
sbit cs=P2^0;
sbit sid=P2^1;
sbit sclk=P2^2;
sbit psb=P2^3;
uchar i;
void write_com(uchar com); //一wei数据
void inint(); //初始化
void write_dat(bit start, uchar ddata); //发送三维数据
void delay10us()
{
unsigned char a,b,c;
for(a=0;a<1;a++)
for(b=0;b<1;b++)
for(c=0;c<1;c++);
}
void delay50us(uint t)
{ uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
void delay1ms(uint i)
{
uchar j;
while(i--)
{
for(j=0;j<115;j++)
{;}
}
}
void main()
{
inint();
while(1)
{
write_dat(0,0x80); for(i=0;i<16;i++) write_dat(1,ma[i]);
write_dat(0,0x90); for(i=0;i<16;i++) write_dat(1,ma2[i]);
write_dat(0,0x88); for(i=0;i<16;i++) write_dat(1,ma3[i]);
write_dat(0,0x98); for(i=0;i<16;i++) write_dat(1,ma4[i]);
// while(1);
}
}
void write_com(uchar com)
{
cs=1;
for(i=0;i<8;i++)
{
sclk=1;
delay10us();
sclk=0;
sid=com&0x80;
com<<=1;
delay50us(2);
sclk=1;
}
}
void write_dat(bit start, uchar ddata) //写指令或数据
{
unsigned char start_data,Hdata,Ldata;
if(start==0)
start_data=0xf8; //写指令
else
start_data=0xfa; //写数据
Hdata=ddata&0xf0; //取高四位
Ldata=(ddata<<4)&0xf0; //取低四位
write_com(start_data); //发送起始信号
delay1ms(5); //延时是必须的
write_com(Hdata); //发送高四位
delay1ms(1); //延时是必须的
write_com(Ldata); //发送低四位
delay1ms(1); //延时是必须的
}
void inint() //初始化
{
delay1ms(100);
write_dat(0,0x30);
delay50us(4);
write_dat(0,0x30);
delay50us(2);
write_dat(0,0x0f);
delay50us(4);
write_dat(0,0x01);
delay1ms(20);
write_dat(0,0x06);
delay1ms(1);
}
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code ma[] ={" 汉字显示LCD "};
uchar code ma2[]={"自带字库图文混排"};
uchar code ma3[]={"控制IC:ST7920 "};
uchar code ma4[]={"功能强大使用方便"};
sbit cs=P2^0;
sbit sid=P2^1;
sbit sclk=P2^2;
sbit psb=P2^3;
uchar i;
void write_com(uchar com); //一wei数据
void inint(); //初始化
void write_dat(bit start, uchar ddata); //发送三维数据
void delay10us()
{
unsigned char a,b,c;
for(a=0;a<1;a++)
for(b=0;b<1;b++)
for(c=0;c<1;c++);
}
void delay50us(uint t)
{ uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
void delay1ms(uint i)
{
uchar j;
while(i--)
{
for(j=0;j<115;j++)
{;}
}
}
void main()
{
inint();
while(1)
{
write_dat(0,0x80); for(i=0;i<16;i++) write_dat(1,ma[i]);
write_dat(0,0x90); for(i=0;i<16;i++) write_dat(1,ma2[i]);
write_dat(0,0x88); for(i=0;i<16;i++) write_dat(1,ma3[i]);
write_dat(0,0x98); for(i=0;i<16;i++) write_dat(1,ma4[i]);
// while(1);
}
}
void write_com(uchar com)
{
cs=1;
for(i=0;i<8;i++)
{
sclk=1;
delay10us();
sclk=0;
sid=com&0x80;
com<<=1;
delay50us(2);
sclk=1;
}
}
void write_dat(bit start, uchar ddata) //写指令或数据
{
unsigned char start_data,Hdata,Ldata;
if(start==0)
start_data=0xf8; //写指令
else
start_data=0xfa; //写数据
Hdata=ddata&0xf0; //取高四位
Ldata=(ddata<<4)&0xf0; //取低四位
write_com(start_data); //发送起始信号
delay1ms(5); //延时是必须的
write_com(Hdata); //发送高四位
delay1ms(1); //延时是必须的
write_com(Ldata); //发送低四位
delay1ms(1); //延时是必须的
}
void inint() //初始化
{
delay1ms(100);
write_dat(0,0x30);
delay50us(4);
write_dat(0,0x30);
delay50us(2);
write_dat(0,0x0f);
delay50us(4);
write_dat(0,0x01);
delay1ms(20);
write_dat(0,0x06);
delay1ms(1);
}
我自己找到错误了,,,