#include
//#include
#define Databus P0
#define uchar unsigned char
#define uint unsigned int
#define page_addr 0xb8
#define line_addr 0xc0
#define column_addr 0x40
#define set_on 0x3f
#define set_off 0x3e
***it RS=P2^2;//指令数据选择
***it EN=P2^4;//使能端
***it CS1=P2^0;//左屏幕选择,低电平有效
***it CS2=P2^1;//右屏幕选择
***it RW=P2^3;//读写控制
***it busy=P0^7;//忙标志位
unsigned char code shang[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x60,0x40,0x00,/*"上",0*/
};
void delay(uint i)
{
while(i--);
}
void delay_xms(uint i)
{
uchar j;
while(i--)
for(j=0;j<114;j++);
}
void checkstate()
{
EN=1;
RS=0;
RW=1;
P0=0xff;
while(!busy&0x80);
delay(2);
EN=0;
}
void wcmd(uchar value)
{
checkstate();
EN=1;
RS=0;
RW=0;
Databus=value;
delay(2);
EN=0;
}
void wdata(uchar value)
{
checkstate();
EN=1;
RS=1;
RW=0;
Databus=value;
delay(2);
EN=0;
}
void clearscreen(void)
{
uchar i,j;
CS1=0;
CS2=1;
//wcmd(page_addr+0);
//wcmd(column_addr+0);
for(i=0;i<8;i++)
{
wcmd(page_addr+i);
wcmd(column_addr);
for(j=0;j<64;j++)
{
wdata(0);
}
}
CS1=1;
CS2=0;
//wcmd(page_addr+0);
//wcmd(column_addr+0);
for(i=0;i<8;i++)
{
wcmd(page_addr+i);
wcmd(column_addr);
for(j=0;j<64;j++)
{
wdata(0);
}
}
}
/***********
void display_hanzi(uchar n,uchar *p)
{
uchar i,j;
for(i=0;i
{
if(i<4)
{
CS1=0;
CS2=1;
wcmd(page_addr);
//wcmd(column_addr);
wcmd(column_addr+i*16);
for(j=0;j<16;j++)
{wdata(p[j+i*32]);}
wcmd(page_addr+1);
wcmd(column_addr+i*16);
for(j=0;j<16;j++)
wdata(p[i*32+(j+16)]);
}
else
{
CS1=1;
CS2=0;
wcmd(page_addr);
wcmd(column_addr+(i-4)*16);
for(j=0;j<16;j++)
{wdata(p[j+i*32]);}
wcmd(page_addr+1);
wcmd(column_addr+i*16);
for(j=0;j<16;j++)
wdata(p[i*32+(j+16)]);
}
}
}
***************/
void lcdinit()
{
checkstate();
//wcmd(set_off);
//CS1=0;
//CS2=0;
//clearscreen();
wcmd(page_addr);
wcmd(column_addr);
wcmd(line_addr);
wcmd(set_on);
}
void main()
{
uchar i,*p;
p=shang;
lcdinit();
//wcmd(set_off);
clearscreen();
//wcmd(set_on);
//wcmd(line_addr);
while(1)
{
CS1=0;
CS2=1;
//delay(50);
wcmd(page_addr);
wcmd(column_addr);
for(i=0;i<16;i++)
wdata(p);
wcmd(page_addr+1);
wcmd(column_addr);
for(i=0;i<16;i++)
wdata(p[i+16]);
//wcmd(set_on);
delay_xms(100);
//display_hanzi(8,hanzi1);
//delay_xms(400);
//display_hanzi(6,hanzi2);
//delay_xms(400);
//display_hanzi(5,hanzi3);
//delay_xms(400);
//display_hanzi(6,hanzi4);
//delay_xms(400);
}
//while(1);
}
为什么用protues仿真的时候是黑屏了
0
|
|
|
|