?? drive_functions.h
字號:
#include<reg51.h>
#include<character.h>
#define uchar unsigned char
#define uint unsigned int
#define RST P20
#define E P21
#define RW P22
#define DI P23
#define CS2 P24
#define CS1 P25
#define UP 1 //scroll up control
#define DOWN 0 //scroll down control
uchar direction=UP; //scroll up by default
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;
sbit P25=P2^5;
bit busy_bit=1;
uchar line=0;
uchar select=0;
#define LCD P1
/*************************** check busy ************************/
bit CheckBusy(void)
{
uchar state=0;
LCD=0xFF;//空讀操作
RW=1;
DI=0;
E=1;
state=LCD;
E=0;
LCD=0xFF;//再讀才有效
RW=1;
DI=0;
E=1;
state=LCD;
E=0;
busy_bit=(bit)(state>>7);
return(busy_bit);
}
/******************* display on **********************/
void DspOn(void)
{
while(CheckBusy());
CS1=1;
CS2=0;
LCD=0xFF;
RW=0;
DI=0;
LCD=0x3F;
E=1;
E=0;
while(CheckBusy());
CS1=0;
CS2=1;
LCD=0xFF;
RW=0;
DI=0;
LCD=0x3F;
E=1;
E=0;
}
/********************* display off ***********************/
void DspOff(void)
{
while(CheckBusy());
CS1=1;
CS2=0;
LCD=0xFF;
RW=0;
DI=0;
LCD=0x3E;
E=1;
E=0;
while(CheckBusy());
CS1=0;
CS2=1;
LCD=0xFF;
RW=0;
DI=0;
LCD=0x3E;
E=1;
E=0;
}
/******************** set display start line **************/
void SetStartLine(uchar line)
{
CS1=1;
CS2=0;
while(CheckBusy());
LCD=0xFF;
RW=0;
DI=0;
LCD=line+0xC0;
E=1;
E=0;
CS1=0;
CS2=1;
while(CheckBusy());
LCD=0xFF;
RW=0;
DI=0;
LCD=line+0xC0;
E=1;
E=0;
}
/************************* set display page ****************/
void SetPage(uchar page)
{
CS1=1;
CS2=0;
while(CheckBusy());
LCD=0xFF;
RW=0;
DI=0;
LCD=page+0xB8;
E=1;
E=0;
CS1=0;
CS2=1;
while(CheckBusy());
LCD=0xFF;
RW=0;
DI=0;
LCD=page+0xB8;
E=1;
E=0;
}
/************************ set display column *****************/
void SetColumn(uchar column)
{
CS1=1;
CS2=0;
while(CheckBusy());
LCD=0xFF;
RW=0;
DI=0;
LCD=column+0x40;
E=1;
E=0;
CS1=0;
CS2=1;
while(CheckBusy());
LCD=0xFF;
RW=0;
DI=0;
LCD=column+0x40;
E=1;
E=0;
}
/***************************** write data ************************/
void WriteData(uchar dsp_data,chip_select)
{
while(CheckBusy());
LCD=0xFF;
if(chip_select==1)
{
CS1=1;
CS2=0;
}
else{
CS1=0;
CS2=1;
}
RW=0;
DI=1;
LCD=dsp_data;
E=1;
E=0;
}
/**************************** read data ***********************/
uchar ReadData(uchar dsp_data,chip_select)
{
while(CheckBusy());
LCD=0xFF;
if(chip_select==1)
{
CS2=0;
CS1=1;
}
else{
CS2=1;
CS1=0;
}
RW=1;
DI=1;
E=1;
dsp_data=LCD;
E=0;
return(dsp_data);
}
/******************** clear LCD *******************************/
void ClearLCD(void)
{
uchar page,column;
for(page=0;page<8;page++)
{
SetPage(page);
SetColumn(0);
for(column=0;column<64;column++)
{
WriteData(0x00,1); //clear chip1
WriteData(0x00,2); //clear chip2
}
}
}
/***********************display up area of character *****************/
void DspUp(uchar code * character,uchar chip_select)
{
uchar i;
for(i=0;i<16;i++)
{
WriteData(* (character+i),chip_select);
}
}
/*********************** display down area of character ***************/
void DspDown(uchar code * character,uchar chip_select)
{
uchar i;
for(i=16;i<32;i++)
{
WriteData(* (character+i),chip_select);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -