?? t6963.c
字號:
#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char
#define LCMDW (*(unsigned char *)0x95ff)
#define LCMCW (*(unsigned char *)0x97ff)
// T6963C 命令定義
#define LC_CUR_POS 0x21 // 光標位置設置
#define LC_CGR_POS 0x22 // CGRAM偏置地址設置
#define LC_ADD_POS 0x24 // 地址指針位置
#define LC_TXT_STP 0x40 // 文本區首址
#define LC_TXT_WID 0x41 // 文本區寬度
#define LC_GRH_STP 0x42 // 圖形區首址
#define LC_GRH_WID 0x43 // 圖形區寬度
#define LC_MOD_OR 0x80 // 顯示方式:邏輯"或"
#define LC_MOD_XOR 0x81 // 顯示方式:邏輯"異或"
#define LC_MOD_AND 0x82 // 顯示方式:邏輯"與"
#define LC_MOD_TCH 0x83 // 顯示方式:文本特征
#define LC_DIS_SW 0x90 // 顯示開關:D0=1/0:光標閃爍啟用/禁用;
// D1=1/0:光標顯示啟用/禁用;
// D2=1/0:文本顯示啟用/禁用;
// D3=1/0:圖形顯示啟用/禁用;
#define LC_CUR_SHP 0xA0 // 光標形狀選擇:0xA0-0xA7表示光標占的行數
#define LC_AUT_WR 0xB0 // 自動寫設置
#define LC_AUT_RD 0xB1 // 自動讀設置
#define LC_AUT_OVR 0xB2 // 自動讀/寫結束
#define LC_INC_WR 0xC0 // 數據一次寫,地址加1
#define LC_INC_RD 0xC1 // 數據一次讀,地址加1
#define LC_DEC_WR 0xC2 // 數據一次寫,地址減1
#define LC_DEC_RD 0xC3 // 數據一次讀,地址減1
#define LC_NOC_WR 0xC4 // 數據一次寫,地址不變
#define LC_NOC_RD 0xC5 // 數據一次讀,地址不變
#define LC_SCN_RD 0xE0 // 屏讀
#define LC_SCN_CP 0xE8 // 屏拷貝
#define LC_BIT_OP 0xF0 // 位操作:
uchar LCDSTA01(void) //判斷指令(數據)讀寫狀態
{
uchar i;
for(i=10;i>0;i--)
{
if((LCMCW & 0x03) == 0x03) // 讀取狀態
break;
}
return i; // 若返回零,說明錯誤
}
uchar LCDSTA2(void) //判斷數據自動讀狀態
{
uchar i;
for(i=10;i>0;i--)
{
if((LCMCW & 0x04) == 0x04)
break;
}
return i; // 若返回零,說明錯誤
}
uchar LCDSTA3(void) 、 //判斷數據自動寫狀態
{
uchar i;
for(i=10;i>0;i--)
{
if((LCMCW & 0x08) == 0x08)
break;
}
return i; // 若返回零,說明錯誤
}
uchar twoparameter(uchar uCmd,uchar uPar1,uchar uPar2) //雙參數指令寫入函數
{
if(LCDSTA01() == 0)
return 1;
LCMDW = uPar1;
if(LCDSTA01() == 0)
return 2;
LCMDW = uPar2;
if(LCDSTA01() == 0)
return 3;
LCMCW = uCmd;
return 0; // 返回0成功
}
uchar oneparameter(uchar uCmd,uchar uPar1) //單參數指令寫入函數
{
if(LCDSTA01() == 0)
return 1;
LCMDW = uPar1;
if(LCDSTA01() == 0)
return 2;
LCMCW = uCmd;
return 0; // 返回0成功
}
uchar noparameter(uchar uCmd) //無參數指令寫入函數
{
if(LCDSTA01() == 0)
return 1;
LCMCW = uCmd;
return 0; // 返回0成功
}
uchar LCDwrite(uchar uData) //數據寫入函數
{
if(LCDSTA3() == 0)
return 1;
LCMDW = uData;
return 0; // 返回0成功
}
uchar LCDread(void) //數據讀函數
{
if(fnSTA01() == 0)return 1; // 獲取狀態,如果狀態錯
return LCMDW; // 返回數據
}
void LCDSetPos(uchar urow, uchar ucol) //設置當前地址
{
uint iPos;
iPos = urow * 30 + ucol;
twoparameter(LC_ADD_POS,iPos & 0xFF,iPos / 256);
gCurRow = urow;
gCurCol = ucol;
}
void cursor(uchar uRow, uchar uCol) //設置當前顯示行列
{
LCDSetPos(uRow * 16, uCol);
}
void cls(void) //清屏
{
uint i;
twoparameter(LC_ADD_POS,0x00,0x00); // 置地址指針為從零開始
noparameter(LC_AUT_WR); // 自動寫
for(i=0;i<240*128/8;i++) // 清一屏
{
LCDSTA3();
LCDwrite(0x0); // 寫數據,實際使用時請將0x55改成0x0
}
noparameter(LC_AUT_OVR); // 自動寫結束
twoparameter(LC_ADD_POS,0x00,0x00); // 重置地址指針
gCurRow = 0; // 置地址指針存儲變量
gCurCol = 0;
}
char LCDInit(void) //LCD初始化
{
if(twoparameter(LC_TXT_STP,0x00,0x00) != 0) // 文本顯示區首地址
return (0xff);
twoparameter(LC_TXT_WID,0x1E,0x00); // 文本顯示區寬度
twoparameter(LC_GRH_STP,0x00,0x00); // 圖形顯示區首地址
twoparameter(LC_GRH_WID,0x1E,0x00); // 圖形顯示區寬度
noparameter(LC_CUR_SHP | 0x01); // 光標形狀
noparameter(LC_MOD_OR); // 顯示方式設置
noparameter(LC_DIS_SW | 0x08); // 顯示開關設置
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -