#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define X1 0x80
#define Y 0x80
sbit RS=P2^5; // 并行的指令/数据选择信号;串行的片选信号
sbit RW=P2^6; // 并行的读写选择信号;串行的数据口
sbit E=P2^7; // 并行的使能信号;
sbit PSB=P2^4;// 串并行选择管脚
sbit busy=P2^2;
code char tab4[]={ /*此处是图片代码*/};
void delay_nms(int z)//延时函数
{int x,y;
for(x=z;x>0;x--)
for(y=240;y>0;y--);
}
void write_com(uchar com)//写指令函数
{ RS=0;
RW=0;
E=1;
P0=com;
delay_nms(1);
E=0;
delay_nms(1);
}
void write_da(uchar da)//写数据函数
{ RS=1;
RW=0;
E=1;
P0=da;
delay_nms(1);
E=0;
delay_nms(1);
}
/*----------整屏显示图像函数---------------------*/
void fimg_disp(uchar *img)
{
uchar i,j;
for(j=0;j<64;j++)
{
for(i=0;i<8;i++)
{
write_com(0x34);//使用扩充指令集
write_com(Y+j);
write_com(X1+i);
write_com(0x30);
write_da(img[j*16+i*2]);
write_da(img[j*16+i*2+1]);
}
}
write_com(0x36);//开显示
}
void inint_12864(void) //初始化
{
PSB=1;//选择并行
RW=0;//定义为写,本程序只用到了写
write_com(0x30);//基本指令状态
write_com(0x30); //选择8bit数据流
write_com(0x0c); //开显示(无游标、不反白)
write_com(0x01); //清除显示,并且设定地址指针为00H
write_com(0x06);
}
void main()
{
uint i;
inint_12864();
write_com(0x01); //清除显示,并且设定地址指针为00H
fimg_disp(tab4);
while(1);
}
只有上半部分显示正常,下半部分乱码,求人指正一下,谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>