#include<reg52.h>
#include <intrins.h>
#define unchar unsigned char
#define unint unsigned int
sbit RS=P1^0;
sbit RW=P1^1;
sbit E=P2^5;
sbit PSB=P1^2;
unchar code img[]={。。。};
void delay5ms(void) //误差 -0.000000000001us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=200;b>0;b--)
for(a=10;a>0;a--);
}
void delay()
{
_nop_();
_nop_();
_nop_();
_nop_();
}
bit busy()//检测忙信号
{
bit result;
RW=1;
RS=0;
E=1;
delay();
result=(bit)(P0&0x80);
E=0;
return(result);
}
void write(unchar cmd)//写指令
{
while(busy());
RS=0;
RW=0;
E=0;
delay();
P0=cmd;
delay();
E=1;
delay();
E=0;
}
void write_date(unchar date)//写数据
{
while(busy());
RS=1;
RW=0;
E=0;
delay();
P0=date;
delay();
E=1;
delay();
E=0;
}
void picture(unchar X,unchar Y,unchar high,unchar wide,unchar *img)
{
unint hang,lie,k;
k=0;
write(0x34);//开扩充指令集
write(0x35);//关图片显示
for(hang=0;hang<32;hang++)
{
write(0x80+Y+hang);//先写Y坐标
write(0x80+X);//写X坐标
//X范围0~7
for(lie=0;lie<16;lie++)
{
write_date(*img);
img++;
}
}
for(hang=0;hang<32;hang++)
{
write(0x80+Y+hang);//先写Y坐标
write(0x88+X);//写X坐标
//X范围0~7
for(lie=0;lie<16;lie++)
{
write_date(*img);
img++;
}
}
write(0x36);
write(0x30);
}
void LCD_init()//初始化液晶
{
PSB=1;
write(0x30); //确定基本动作还是高级动作
delay5ms();
write(0x0e);
delay5ms();
write(0x01);
delay5ms();
}
void main()
{
LCD_init(); //初始化LCD
picture(0,0,64,128,img);
while(1);
}
这是源代码==折腾第三天了。本来应该显示在下半屏的图案显示在了上半屏。下半屏变成类似二维码的东西。求教啊。
#include <intrins.h>
#define unchar unsigned char
#define unint unsigned int
sbit RS=P1^0;
sbit RW=P1^1;
sbit E=P2^5;
sbit PSB=P1^2;
unchar code img[]={。。。};
void delay5ms(void) //误差 -0.000000000001us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=200;b>0;b--)
for(a=10;a>0;a--);
}
void delay()
{
_nop_();
_nop_();
_nop_();
_nop_();
}
bit busy()//检测忙信号
{
bit result;
RW=1;
RS=0;
E=1;
delay();
result=(bit)(P0&0x80);
E=0;
return(result);
}
void write(unchar cmd)//写指令
{
while(busy());
RS=0;
RW=0;
E=0;
delay();
P0=cmd;
delay();
E=1;
delay();
E=0;
}
void write_date(unchar date)//写数据
{
while(busy());
RS=1;
RW=0;
E=0;
delay();
P0=date;
delay();
E=1;
delay();
E=0;
}
void picture(unchar X,unchar Y,unchar high,unchar wide,unchar *img)
{
unint hang,lie,k;
k=0;
write(0x34);//开扩充指令集
write(0x35);//关图片显示
for(hang=0;hang<32;hang++)
{
write(0x80+Y+hang);//先写Y坐标
write(0x80+X);//写X坐标
//X范围0~7
for(lie=0;lie<16;lie++)
{
write_date(*img);
img++;
}
}
for(hang=0;hang<32;hang++)
{
write(0x80+Y+hang);//先写Y坐标
write(0x88+X);//写X坐标
//X范围0~7
for(lie=0;lie<16;lie++)
{
write_date(*img);
img++;
}
}
write(0x36);
write(0x30);
}
void LCD_init()//初始化液晶
{
PSB=1;
write(0x30); //确定基本动作还是高级动作
delay5ms();
write(0x0e);
delay5ms();
write(0x01);
delay5ms();
}
void main()
{
LCD_init(); //初始化LCD
picture(0,0,64,128,img);
while(1);
}
这是源代码==折腾第三天了。本来应该显示在下半屏的图案显示在了上半屏。下半屏变成类似二维码的东西。求教啊。