?? bw128x64.bak
字號(hào):
#include <reg52.H>
#define TRUE 1
#define FALSE 0
sbit CS1= P3^0; //0有效
sbit CS2= P3^1;
sbit DI = P3^2; //1 data,0 instruction
sbit RW = P3^3; //1 read,0 write
sbit E = P3^4; // 1 讀狀態(tài),0 寫狀態(tài),下降沿鎖存
sbit RESET = P3^5; //0 復(fù)位,1常態(tài)
sbit Busy = P1^7;
//unsigned char COLUMN;
void Initial();
void Delay(int time);
bit Q_Busy();
void Data_Write(unsigned char aa);
void Code_Write(unsigned char aa);
unsigned char Status_Read();
unsigned char Data_Read();
void location(unsigned y,unsigned x);
void Select_Chip1();
void Select_Chip2();
void Display_LcdWrite();
void Display_logo() ;
unsigned char code Logo9616[192];
//******************************************************
void main()
{
// COLUM=0;
Select_Chip1();
Initial();
Select_Chip2();
Initial();
while(1){
// Display_LcdWrite();
Display_logo() ;
};
}
//初始化
void Initial()
{
RESET=0; //復(fù)位有效
Delay(1000);
RESET=1;
Delay(1000);
Code_Write(0x3e); //display off
Delay(1000);
Code_Write(0x40); //Sets the Y address in the Y address counter.
Delay(1000);
Code_Write(0xb8); //Sets the X address at the X address register.
Delay(1000);
Code_Write(0xc0); //Z:Indicates the display data RAM displayed at the top of the screen.
Delay(1000);
Code_Write(0x3f); //display on
Delay(1000);
}
//延時(shí)
void Delay(int time)
{
while(time) time--; /*delay time*/
}
//查詢 busy與否狀態(tài)
bit Q_Busy()
{
Status_Read();
return Busy; //1,busy;0,free;
}
//write 子程序:2個(gè)區(qū)分?jǐn)?shù)據(jù)命令
void Data_Write(unsigned char aa)
{
while(Q_Busy()){};
DI=1;
RW=0;
P1=aa; //作busy狀態(tài)查詢
E=1;
E=0;
}
void Code_Write(unsigned char aa)
{
while(Q_Busy()){}; //作busy狀態(tài)查詢
DI=0;
RW=0;
P1=aa;
E=1;
E=0;
}
//讀狀態(tài)
unsigned char Status_Read()
{
unsigned char aa;
P1=0xff; //先寫ff,后查詢狀態(tài)
DI=0;
RW=1;
E=1;
aa=P1;
E=0;
return aa;
}
//讀數(shù)據(jù)
unsigned char Data_Read()
{
unsigned char aa;
while(Q_Busy()){};
DI=1;
RW=1;
E=1;
E=0;
aa=0xff;
E=1;
aa=P1;
E=0;
return aa;
}
void location(unsigned y,unsigned x)//希望出現(xiàn)在y列,x頁(yè)這個(gè)位置
{
y=y%128;
x=x%8; //一頁(yè)是對(duì)應(yīng)一個(gè)字節(jié)的8位
if(y>=64)
{
Select_Chip2();
y=y-64;
Code_Write(0x40+y); //Set Y 列
Code_Write(0xb8+x); //Set X 頁(yè)
Delay(1000);
}
else {
Select_Chip1();
Code_Write(0x40+y); //Sets Y
Code_Write(0xb8+x); //X
Delay(1000);
}
}
void Select_Chip1()
{
CS1=0;CS2=1;
}
void Select_Chip2()
{
CS1=1;CS2=0;
}
//==================
//在LCD上顯示寫過(guò)程
//==================
void Display_LcdWrite()
{
unsigned int i;
unsigned int j;
for(i=0;i<8;i++)
{
for(j=0;j<128;j++)
{
location(j,i); //i 頁(yè),j列
Data_Write(0x88);//1,dark;0,light;
}
}
}
//========================================================
void Display_logo()
{
unsigned char z=0;
unsigned char i;
unsigned char j;
for(i=0;i<16;i++) //黑白圖像,數(shù)組值為0,為亮,一個(gè)字節(jié)的一位(從高到低)代表了一個(gè)像素點(diǎn)
{
for(j=0;j<12;j++)
{
z=j+(i/8)*12;
location(z,i);
Data_Write(Logo9616[i*12+j]); //GD 16H*12L
}
}
Delay(500);
}
unsigned char code Logo9616[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //12列x16行
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0x00,0x38,0x3F,0x80,0x1F,0xF8,0x00,0xFC,0x00,0x1F,0xFF,
0x80,0x00,0x08,0x3F,0x80,0x0F,0xF8,0x00,0xF8,0x04,0x1F,0xFF,
0x80,0x00,0x08,0x3F,0x80,0x0F,0xF0,0x00,0xF0,0x0C,0x1F,0xFF,
0xC0,0x7E,0x08,0x3F,0x81,0x00,0x00,0x20,0xC0,0x1C,0x1F,0xFF,
0xCF,0x80,0x08,0x3F,0x81,0x80,0x00,0x60,0x80,0x3C,0x00,0x07,
0xF8,0x00,0x08,0x00,0x01,0xC0,0x00,0x60,0x00,0x0C,0x00,0x01,
0xE0,0x00,0x18,0x00,0x01,0xC1,0xC0,0xE0,0x80,0x04,0x00,0x00,
0xC0,0x00,0x78,0x00,0x01,0xE1,0x81,0xE0,0xFE,0x00,0x1F,0xC0,
0xC0,0x1F,0xD8,0x3F,0x81,0xE0,0x01,0xE0,0xFF,0x00,0x1F,0xE0,
0xC0,0xF8,0x18,0x3F,0x81,0xF0,0x03,0xE0,0x7E,0x00,0x1F,0x80,
0xC0,0x00,0x08,0x3F,0x81,0xF8,0x03,0xE0,0x00,0x04,0x00,0x00,
0xE0,0x00,0x08,0x3F,0x81,0xF8,0x07,0xE0,0x00,0x0C,0x00,0x01,
0xF8,0x00,0x38,0x3F,0xC1,0xFE,0x1F,0xF0,0x00,0x7F,0x00,0x1F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -