#include "lcd12864.h"
#include "intrins.h"
void Lcd12864_ByteShow_String(uint8 *str1)
{
while(*str1!='\0')
{
Lcd12864_Write_Data(*str1);
str1++;
}
}
void Lcd12864_Show_String(uint8 row, uint8 col,uint8 *str){
uint8 *defaultValue = "parameter error" ;
switch(row){
case 1:
Lcd12864_Write_Cmd(0x80+col-1);//第一行第y個空格
while(*str!='\0')
{
Lcd12864_Write_Data(*str);
str++;
}
break;
case 2:
Lcd12864_Write_Cmd(0x90+col-1);//第二行第y個空格
while(*str!='\0'){
Lcd12864_Write_Data(*str);
str++;
}
break;
case 3:
Lcd12864_Write_Cmd(0x88+col-1);//第一行第y個空格
while(*str!='\0'){
Lcd12864_Write_Data(*str);
str++;
}
break;
case 4:
Lcd12864_Write_Cmd(0x98+col-1);//第二行第y個空格
while(*str!='\0'){
Lcd12864_Write_Data(*str);
str++;
}
break;
default:
Lcd12864_Write_Cmd(0x00+0x80);//parameter error
while(*defaultValue!='\0'){
Lcd12864_Write_Data(*defaultValue);
defaultValue++;
}
}
}
/******************************************************************************/
// 函數名稱:Lcd12864_Busy_Check
// 輸入參數:無
// 輸出參數:無
// 函數功能:LCD1602忙信號檢查
/******************************************************************************/
void Lcd12864_Busy_Check(void){
uint8 tmp;
lcdPort = 0xff;//一開始的時候,lcdPort設置成輸入狀態
do{
RS2 = 0;
RW2 = 1;
EN2 = 0;
EN2 = 1;
_nop_();
_nop_();//延時CP
tmp = lcdPort;
_nop_();//延時PQ
EN2 = 0;
_nop_();
}while(tmp&0x80);
}
/******************************************************************************/
// 函數名稱:Lcd12864_Init
// 輸入參數:無
// 輸出參數:無
// 函數功能:LCD12864初始化
/******************************************************************************/
void Lcd12864_Init(void)
{
Lcd12864_Write_Cmd(0x30);//基本指令設置
Lcd12864_Write_Cmd(0x01);//清屏
Lcd12864_Write_Cmd(0x06);//顯示光標移動設置
Lcd12864_Write_Cmd(0x0c);//顯示開及光標設置
vout2 = 0;
rst2 = 1;
}
/******************************************************************************/
// 函數名稱:Lcd12864_Write_Cmd
// 輸入參數:cmd
// 輸出參數:無
// 函數功能:LCD12864發送命令
/******************************************************************************/
void Lcd12864_Write_Cmd(uint8 cmd){
Lcd12864_Busy_Check();//busycheck
PSB2 = 1;
RS2 = 0;
RW2 = 0;
EN2 = 0;
EN2 = 1;
_nop_();
_nop_();
lcdPort = cmd;
_nop_();
_nop_();
EN2 = 0;
_nop_();
_nop_();
}
/******************************************************************************/
// 函數名稱:Lcd12864_Write_Data
// 輸入參數:Data-寫入數據
// 輸出參數:無
// 函數功能:LCD12864寫一個字節數據
/******************************************************************************/
void Lcd12864_Write_Data(uint8 Data){
Lcd12864_Busy_Check();//busycheck
PSB2 = 1;
RS2 = 1;
RW2 = 0;
EN2 = 0;
EN2 = 1;
_nop_();
_nop_();
lcdPort = Data;
_nop_();
_nop_();
EN2 = 0;
_nop_();
_nop_();
}
/******************************************************************************/
// 函數名稱:Lcd12864_Screen_Flash
// 輸入參數:無
// 輸出參數:無
// 函數功能:LCD12864屏幕閃爍
/******************************************************************************/
//void Lcd12864_Screen_Flash(void){
// Lcd12864_Write_Cmd(0x08);
// Delay400ms();Delay400ms();
// Lcd12864_Write_Cmd(0x0c);
// Delay400ms();Delay400ms();
// Lcd12864_Write_Cmd(0x08);
// Delay400ms();Delay400ms();
// Lcd12864_Write_Cmd(0x0c);
// Delay400ms();Delay400ms();
//}
/******************************************************************************/
// 函數名稱:Lcd12864_Show_Specific_Symbol
// 輸入參數:無
// 輸出參數:無
// 函數功能:LCD12864顯示特殊符號
/******************************************************************************/
//void Lcd12864_Show_Specific_Symbol(void){
// uint8 i;
// Lcd12864_Write_Cmd(0x01);//清屏
// for(i=0;i<32;i++){
// Lcd12864_Write_Cmd(0x80+i); //顯示位置
// Lcd12864_Write_Data(0x02+i);//顯示內容
// }
//}
/******************************************************************************/
// 函數名稱:Lcd12864_Screen_Clear
// 輸入參數:無
// 輸出參數:無
// 函數功能:LCD12864清屏
/******************************************************************************/
void Lcd12864_Screen_Clear(void){
Lcd12864_Write_Cmd(0x01);
}
|