?? 1.c
字號:
RDPIN=0;
while((DATA&0x80)==0x80){
DogReset();
}
RDPIN=1;
CS2PIN=1;
}
/************************************************************************
函數名:
參數:
功能:寫指令代碼到片1
返回值:
************************************************************************/
void lcdwc1(uchar cmdcode){
lcdwaitidle1();
A0PIN=0;
DATA=cmdcode;
CS1PIN=0;
WRPIN=0;
_nop_();
WRPIN=1;
CS1PIN=1;
}
/************************************************************************
函數名:
參數:
功能:寫指令代碼到片2
返回值:
************************************************************************/
void lcdwc2(uchar cmdcode){
lcdwaitidle2();
A0PIN=0;
DATA=cmdcode;
CS2PIN=0;
WRPIN=0;
_nop_();
WRPIN=1;
CS2PIN=1;
}
/************************************************************************
函數名:
參數:
功能:寫數據到片1
返回值:
************************************************************************/
void lcdwd1(uchar dispdata){
lcdwaitidle1();
A0PIN=1;
DATA=dispdata;
CS1PIN=0;
WRPIN=0;
_nop_();
WRPIN=1;
CS1PIN=1;
}
/************************************************************************
函數名:
參數:
功能:寫數據到片2
返回值:
************************************************************************/
void lcdwd2(uchar dispdata){
lcdwaitidle2();
A0PIN=1;
DATA=dispdata;
CS2PIN=0;
WRPIN=0;
DATA=dispdata;
_nop_();
WRPIN=1;
CS2PIN=1;
}
/************************************************************************
函數名:
參數:
功能:讀片1數據
返回值:
************************************************************************/
uchar lcdrd1(void){
uchar i;
lcdwaitidle1();
DATA=0xff;
A0PIN=1;
CS1PIN=0;
RDPIN=0;
_nop_();
i=DATA;
RDPIN=1;
CS1PIN=1;
return i;
}
/************************************************************************
函數名:
參數:
功能:讀片2數據
返回值:
************************************************************************/
uchar lcdrd2(void){
uchar i;
lcdwaitidle2();
DATA=0xff;
A0PIN=1;
CS2PIN=0;
RDPIN=0;
_nop_();
i=DATA;
RDPIN=1;
CS2PIN=1;
return i;
}
/************************************************************************
函數名:
參數:
功能:寫指令代碼
返回值:
************************************************************************/
void lcdwc(uchar cmdcode){
if((Lcd_CurrentX)<61){
lcdwc1(cmdcode);
}
else{
lcdwc2(cmdcode);
}
}
/************************************************************************
函數名:
參數:
功能:寫數據
返回值:
************************************************************************/
void lcdwd(uchar dispdata){
if(Lcd_CurrentX<61){
lcdwd1(dispdata);
}
else{
lcdwd2(dispdata);
}
}
/************************************************************************
函數名:
參數:
功能:內部數據地址指針定位
返回值:
************************************************************************/
void lcdpos(void){
if(Lcd_CurrentX<61){
lcdwc(LCD_CMD_COL|(Lcd_CurrentX&0x3f)); //設置地址列指針
}
else{
lcdwc(LCD_CMD_COL|((Lcd_CurrentX-61)&0x7f));
}
lcdwc(LCD_CMD_PAGE|((Lcd_CurrentY/8)&0x3)); //設置地址頁指針
}
/************************************************************************
函數名:
參數:
功能:讀數據
返回值:
************************************************************************/
uchar lcdrd(void){
uchar i;
if(Lcd_CurrentX<61){
i=lcdrd1(); //讀兩次
i=lcdrd1();
}
else{
i=lcdrd2();
i=lcdrd2();
}
lcdpos();
return i;
}
/************************************************************************
函數名:
參數:
功能:當前坐標移動到下一個點
返回值:
************************************************************************/
void lcdcursornext(void){
Lcd_CurrentX++;
if(Lcd_CurrentX>LCD_RIGHT){
Lcd_CurrentX=LCD_LEFT;
Lcd_CurrentY+=8;
if(Lcd_CurrentY>LCD_BOTTOM){
Lcd_CurrentY=LCD_TOP;
}
}
}
/************************************************************************
函數名:
參數:
功能:
返回值:
************************************************************************/
void displaybyte(uchar dispdata){
lcdpos(); //內部數據地址指針定位
lcdwd(dispdata); //寫數據
lcdcursornext(); //當前坐標移動到下一個點
}
/************************************************************************
函數名:
參數:
功能:整屏顯示
返回值:
************************************************************************/
void lcdfill(uchar FillData){
for(Lcd_CurrentX=LCD_LEFT,Lcd_CurrentY=LCD_TOP;1;){
DogReset();
displaybyte(FillData);
if((Lcd_CurrentX==LCD_LEFT)&&(Lcd_CurrentY==LCD_TOP)){
break;
}
}
}
/************************************************************************
函數名:
參數:
功能:初始化
返回值:
************************************************************************/
void lcdreset(){
DogReset();
lcdwc1(0xe2); lcdwc2(0xe2); //復位
lcdwc1(0xc0); lcdwc2(0xc0); //設置顯示初始行
lcdwc1(0xa0); lcdwc2(0xa0); //設置列序方向為正向
lcdwc1(0xa4); lcdwc2(0xa4); //設置顯示模式為正常顯示
lcdwc1(0xa9); lcdwc2(0xa9); //設置占空比為1/32
lcdwc1(0xaf); lcdwc2(0xaf); //開顯示
}
/**************************************************************************
* 函數原型: void ChipInit(void);
* 功 能: 對CPU及外部的硬件資源進行初始化
**************************************************************************/
void ChipInit(void){
IE=0;
// 使用外部擴展RAM,允許ALE輸出
#if STC89C58
AUXR=0x00; // 使用外部擴展RAM,允許ALE輸出
#elif W77E58
CKCON=0xc1; // CKCON.2-0 = 100, MOVX指令用6個機器周期;CKCON.2-0 = 001, MOVX指令用3個機器周期
#endif
// 定時器控制字初始化
TMOD=0x21; // 定時器1為方式2,定時器0為方式1
TCON=0x05; // 設置外部中斷類型
T2CON=0x0d; // 選擇定時器1為波特率發生器,T2為捕獲工作方式
ET2=0;
ET0=1; // 允許定時器0、定時器2中斷
// 外部中斷設置
EX0=0; // FFSK中斷初始時關閉,有載波時再開啟
EX1=0;
IT1=1; // 外部中斷0、1均為下降沿觸發
IT0=1;
// 啟動定時器0
TH0=vT0HVal; // 啟動定時器0
TL0=vT0LVal;
TR0=0;
// UART全雙工串口的初始化
SCON = 0x50; // 串口模式1,8位UART,接收使能
PCON&=0x7f; // 串口通信速率倍數為1
TR1=0; // 啟動波特率發生器
ES=0; // 允許串口中斷
// 優先級設置
PT0 = 1;
PT2 = 0; // 解信令及接收FFSK為最高優先級,二者間不會引起沖突
EA=1;
// 系統看門狗設定
Dog_Init();
lcdreset();
}
/************************************************************************
函數名:
參數:
功能:
返回值:
************************************************************************/
void systeminitial(void){
lcdreset(); //初始化
ChipInit();
lcdfill(0xff); //整屏顯示
delay_ms(100);
lcdfill(0); //清屏
delay_ms(100);
}
/************************************************************************
函數名:
參數:
功能:
返回值:
************************************************************************/
void main(void){
systeminitial();
put_str_xy(0,0,"長沙太陽人電子有限公司");
while(1){
DogReset();
}
}
/**************************************************************************
* 函數原型: void Trint0(void) interrupt 1 using 1;
* 功 能: 全局定時
**************************************************************************/
/*
void Trint0(void) interrupt 1 using 0{
// TR0=0; // 時基500uS
TH0=vT0HVal;
TL0=vT0LVal;
// TR0=1;
TF0=0;
CLPIN=!CLPIN;
}
/************************************************************************
END
************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -