?? t6963c.c
字號:
// T6963c.c
//
// #define _T6963C_C
#include "includes.h"
#include "avr/pgmspace.h" // 使用flash程序區(qū)
/************************************************************************************/
/* 函數(shù)名稱:fnGetRow */
/* 輸入?yún)?shù):void */
/* 輸出參數(shù):uchar gCurRow 當(dāng)前行
/************************************************************************************/
uchar fnGetRow(void)
{
return gCurRow;
}
/************************************************************************************/
/* 函數(shù)名稱:fnGetCol */
/************************************************************************************/
uchar fnGetCol(void)
{
return gCurCol;
}
/************************************************************************************/
/* 函數(shù)名稱:fnST */
/* 輸入?yún)?shù):void */
/************************************************************************************/
uchar fnST(void)
{
uchar ucState;
DDRA = 0x00; // 數(shù)據(jù)方向為輸入
PORTA = 0xFF; // 使能內(nèi)部上拉電阻
DDRB = 0x0F; // 數(shù)據(jù)方向為輸出
PORTB = 0xFF; // 高4位使能內(nèi)部上拉電阻,低4位輸出高電平
// lcd_delay(10);
PORTB |= (1 << CD); // CD (PB2) 賦值1,命令
PORTB &= ~(1 << RD); // RD (PB1) 賦值0,讀操作有效
// lcd_delay(10);
ucState = PINA;
PORTB |= (1 << RD); // RD (PB1) 賦值1,讀操作無效
return ucState;
}
/************************************************************************************/
/* 函數(shù)名稱:fnST01 */
/* 輸入?yún)?shù):void */
/* 輸出參數(shù):uchar i */
/* 輸出 0,說明錯誤
/************************************************************************************/
uchar fnST01(void)
{
uchar i;
for(i=10;i>0;i--)
{
if((fnST() & 0x03) == 0x03)
break;
}
return i;
}
/************************************************************************************/
/* 函數(shù)名稱:fnST2 */
/* 輸入?yún)?shù):void */
/* 輸出參數(shù):uchar i */
/* 輸出 0,說明錯誤
/************************************************************************************/
uchar fnST2(void)
{
uchar i;
for(i=10;i>0;i--)
{
if((fnST() & 0x04) == 0x04)
break;
}
return i;
}
/************************************************************************************/
/* 函數(shù)名稱:fnST3 */
/* 輸入?yún)?shù):void */
/* 輸出參數(shù):uchar i */
/* 輸出 0,說明錯誤
/************************************************************************************/
uchar fnST3(void)
{
uchar i;
for(i=10;i>0;i--)
{
if((fnST() & 0x08) == 0x08)
break;
}
return i;
}
/************************************************************************************/
/* 函數(shù)名稱:fnST6 */
/* 輸入?yún)?shù):void */
/* 輸出參數(shù):uchar i */
/************************************************************************************/
uchar fnST6(void)
{
uchar i;
for(i=10;i>0;i--)
{
if((fnST() & 0x40) == 0x40)
break;
}
return i;
}
/************************************************************************************/
/* 函數(shù)名稱:fnCW2P */
/* 輸入?yún)?shù):uchar uCmd,uchar uPar1,uchar uPar2 */
/* uCmd 命令 */
/* uPar1 地址低8位 */
/* uPar2 地址高8位 */
/* 輸出參數(shù):uchar */
/* 輸出 0, 說明成功 */
/* 輸出 1,2 說明錯誤
/************************************************************************************/
uchar fnCW2P(uchar uCmd,uchar uPar1,uchar uPar2)
{
DDRA = 0xFF; // 數(shù)據(jù)方向為輸出
// PORTA = 0xFF; // 使能內(nèi)部上拉電阻
DDRB = 0x0F; // 數(shù)據(jù)方向為輸出
if(fnST01() == 0)
return 1;
PORTB &= ~(1 << CD) ; // CD (PB2) 賦值0,低電平表示數(shù)據(jù)
// lcd_delay(1);
PORTA = uPar1; // 賦值
// lcd_delay(1);
PORTB &= ~(1 << WR); // WR (PB0) 賦值0,低電平寫操作有效
// lcd_delay(1);
PORTB |= (1 << WR); // WR (PB0) 賦值1,高電平寫操作無效
// lcd_delay(1);
if(fnST01() == 0)
return 2;
PORTB &= ~(1 << CD) ; // CD (PB2) 賦值0,低電平表示數(shù)據(jù)
// lcd_delay(1);
PORTA = uPar2; // 賦值
// lcd_delay(1);
PORTB &= ~(1 << WR); // WR (PB0) 賦值0,低電平寫操作有效
// lcd_delay(1);
PORTB |= (1 << WR); // WR (PB0) 賦值1,高電平寫操作無效
// lcd_delay(1);
if(fnST01() == 0)
return 3;
PORTB |= (1 << CD) ; // CD (PB2) 賦值1,高電平表示命令
// lcd_delay(1);
PORTA = uCmd; // 賦值
// lcd_delay(1);
PORTB &= ~(1 << WR); // WR (PB0) 賦值0,低電平寫操作有效
// lcd_delay(1);
PORTB |= (1 << WR); // WR (PB0) 賦值1,高電平寫操作無效
return 0;
}
/************************************************************************************/
/* 函數(shù)名稱:fnCW1P */
/* 輸入?yún)?shù):uchar uCmd 命令 */
/* uchar uPar1 數(shù)值 */
/* 輸出參數(shù):輸出 0, 說明成功 */
/************************************************************************************/
uchar fnCW1P(uchar uCmd,uchar uPar1)
{
DDRA = 0xFF; // 數(shù)據(jù)方向為輸出
PORTA = 0xFF; // 使能內(nèi)部上拉電阻
DDRB = 0x0F; // 數(shù)據(jù)方向為輸出
if(fnST01() == 0)
return 1;
PORTB &= ~(1 << CD) ; // CD (PB2) 賦值0,低電平表示數(shù)據(jù)
PORTA = uPar1; // 賦值
// lcd_delay(1);
PORTB &= ~(1 << WR); // WR (PB0) 賦值0,低電平寫操作有效
// lcd_delay(1);
PORTB |= (1 << WR); // WR (PB0) 賦值1,高電平寫操作無效
if(fnST01() == 0)
return 2;
PORTB |= (1 << CD) ; // CD (PB2) 賦值1,高電平表示命令
PORTA = uCmd;
// lcd_delay(1);
PORTB &= ~(1 << WR); // WR (PB0) 賦值0,低電平寫操作有效
// lcd_delay(1);
PORTB |= (1 << WR); // WR (PB0) 賦值1,高電平寫操作無效
return 0; // 返回0成功
}
/************************************************************************************/
/* 函數(shù)名稱:fnCW0P */
/* 輸入?yún)?shù):uchar uCmd 命令 */
/* 輸出參數(shù):uchar */
/* 0 正確 */
/* 1 錯誤 */
/************************************************************************************/
uchar fnCW0P(uchar uCmd)
{
DDRA = 0xFF; // 數(shù)據(jù)方向為輸出
// PORTA = 0xFF; // 使能內(nèi)部上拉電阻
DDRB = 0x0F; // 數(shù)據(jù)方向為輸出
if(fnST01() == 0)
return 1;
PORTB |= (1 << CD) ; // CD (PB2) 賦值1,高電平表示命令
PORTA = uCmd;
// lcd_delay(1);
PORTB &= ~(1 << WR); // WR (PB0) 賦值0,低電平寫操作有效
// _NOP();
// lcd_delay(1);
PORTB |= (1 << WR); // WR (PB0) 賦值1,高電平寫操作無效
return 0; // 返回0成功
}
/************************************************************************************/
/* 函數(shù)名稱:fnDWD */
/* 輸入?yún)?shù):uchar uData 數(shù)據(jù) */
/* 輸出參數(shù):uchar 0 成功 ,否則 錯誤 */
/************************************************************************************/
uchar fnDWD(uchar uData)
{
DDRA = 0xFF; // 數(shù)據(jù)方向為輸出
// PORTA = 0xFF; // 使能內(nèi)部上拉電阻
DDRB = 0x0F; // 數(shù)據(jù)方向為輸出
if(fnST3() == 0)
return 1;
PORTB &= ~(1 << CD) ; // CD (PB2) 賦值0,低電平表示數(shù)據(jù)
// _NOP();
// lcd_delay(1);
PORTA = uData;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -