?? t6963c.c
字號:
// T6963c.c
//
// #define _T6963C_C
#include "includes.h"
#include "avr/pgmspace.h" // 使用flash程序區
/************************************************************************************/
/* 函數名稱:fnGetRow */
/* 輸入參數:void */
/* 輸出參數:uchar gCurRow 當前行 */
/* 函數功能:得到當前行 */
/* 作 者 :安車科技大燈儀開發小組 許孝剛 */
/* 開發日期: 2005.08 */
/* 版 本 : v1.0 */
/************************************************************************************/
uchar fnGetRow(void)
{
return gCurRow;
}
/************************************************************************************/
/* 函數名稱:fnGetCol */
/* 輸入參數:void */
/* 輸出參數:uchar gCurCol 當前列 */
/* 函數功能:得到當前列 */
/* 作 者 :安車科技大燈儀開發小組 許孝剛 */
/* 開發日期: 2005.08 */
/* 版 本 : v1.0 */
/************************************************************************************/
uchar fnGetCol(void)
{
return gCurCol;
}
/************************************************************************************/
/* 函數名稱:fnST */
/* 輸入參數:void */
/* 輸出參數:uchar */
/* */
/* */
/* 函數功能:狀態位判斷(讀寫指令和讀寫數據) */
/* 作 者 :安車科技大燈儀開發小組 許孝剛 */
/* 開發日期: 2005.08 */
/* 版 本 : v1.0 */
/************************************************************************************/
uchar fnST(void)
{
uchar ucState;
DDRA = 0x00; // 數據方向為輸入
PORTA = 0xFF; // 使能內部上拉電阻
DDRB = 0x0F; // 數據方向為輸出
PORTB = 0xFF; // 高4位使能內部上拉電阻,低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;
}
/************************************************************************************/
/* 函數名稱:fnST01 */
/* 輸入參數:void */
/* 輸出參數:uchar i */
/* 輸出 0,說明錯誤 */
/* 輸出 1到10共10個整數中任一個為正確 */
/* 函數功能:狀態位STA1,STA0判斷(讀寫指令和讀寫數據) */
/* 作 者 :安車科技大燈儀開發小組 許孝剛 */
/* 開發日期: 2005.08 */
/* 版 本 : v1.0 */
/************************************************************************************/
uchar fnST01(void)
{
uchar i;
for(i=10;i>0;i--)
{
if((fnST() & 0x03) == 0x03)
break;
}
return i;
}
/************************************************************************************/
/* 函數名稱:fnST2 */
/* 輸入參數:void */
/* 輸出參數:uchar i */
/* 輸出 0,說明錯誤 */
/* 輸出 1到10共10個整數中任一個為正確 */
/* 函數功能:狀態位ST2判斷(數據自動讀狀態) */
/* 作 者 :安車科技大燈儀開發小組 許孝剛 */
/* 開發日期: 2005.08 */
/* 版 本 : v1.0 */
/************************************************************************************/
uchar fnST2(void)
{
uchar i;
for(i=10;i>0;i--)
{
if((fnST() & 0x04) == 0x04)
break;
}
return i;
}
/************************************************************************************/
/* 函數名稱:fnST3 */
/* 輸入參數:void */
/* 輸出參數:uchar i */
/* 輸出 0,說明錯誤 */
/* 輸出 1到10共10個整數中任一個為正確 */
/* 函數功能:狀態位ST3判斷(數據自動寫狀態) */
/* 作 者 :安車科技大燈儀開發小組 許孝剛 */
/* 開發日期: 2005.08 */
/* 版 本 : v1.0 */
/************************************************************************************/
uchar fnST3(void)
{
uchar i;
for(i=10;i>0;i--)
{
if((fnST() & 0x08) == 0x08)
break;
}
return i;
}
/************************************************************************************/
/* 函數名稱:fnST6 */
/* 輸入參數:void */
/* 輸出參數:uchar i */
/* 輸出 0,說明錯誤 */
/* 輸出 1到10共10個整數中任一個為正確 */
/* 函數功能:狀態位ST6判斷(屏讀/屏拷貝狀態)) */
/* 作 者 :安車科技大燈儀開發小組 許孝剛 */
/* 開發日期: 2005.08 */
/* 版 本 : v1.0 */
/************************************************************************************/
uchar fnST6(void)
{
uchar i;
for(i=10;i>0;i--)
{
if((fnST() & 0x40) == 0x40)
break;
}
return i;
}
/************************************************************************************/
/* 函數名稱:fnCW2P */
/* 輸入參數:uchar uCmd,uchar uPar1,uchar uPar2 */
/* uCmd 命令 */
/* uPar1 地址低8位 */
/* uPar2 地址高8位 */
/* 輸出參數:uchar */
/* 輸出 0, 說明成功 */
/* 輸出 1,2 說明錯誤 */
/* 函數功能:寫雙參數的指令 */
/* 作 者 :安車科技大燈儀開發小組 許孝剛 */
/* 開發日期: 2005.08 */
/* 版 本 : v1.0 */
/************************************************************************************/
uchar fnCW2P(uchar uCmd,uchar uPar1,uchar uPar2)
{
DDRA = 0xFF; // 數據方向為輸出
// PORTA = 0xFF; // 使能內部上拉電阻
DDRB = 0x0F; // 數據方向為輸出
if(fnST01() == 0)
return 1;
PORTB &= ~(1 << CD) ; // CD (PB2) 賦值0,低電平表示數據
// 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,低電平表示數據
// 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;
}
/************************************************************************************/
/* 函數名稱:fnCW1P */
/* 輸入參數:uchar uCmd 命令 */
/* uchar uPar1 數值 */
/* 輸出參數:輸出 0, 說明成功 */
/* 輸出 1,2 說明錯誤 */
/* 函數功能:寫單參數的指令 */
/* 作 者 :安車科技大燈儀開發小組 許孝剛 */
/* 開發日期: 2005.08 */
/* 版 本 : v1.0 */
/************************************************************************************/
uchar fnCW1P(uchar uCmd,uchar uPar1)
{
DDRA = 0xFF; // 數據方向為輸出
PORTA = 0xFF; // 使能內部上拉電阻
DDRB = 0x0F; // 數據方向為輸出
if(fnST01() == 0)
return 1;
PORTB &= ~(1 << CD) ; // CD (PB2) 賦值0,低電平表示數據
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成功
}
/************************************************************************************/
/* 函數名稱:fnCW0P */
/* 輸入參數:uchar uCmd 命令 */
/* 輸出參數:uchar */
/* 0 正確 */
/* 1 錯誤 */
/* 函數功能:寫無參數的指令 */
/* 作 者 :安車科技大燈儀開發小組 許孝剛 */
/* 開發日期: 2005.08 */
/* 版 本 : v1.0 */
/************************************************************************************/
uchar fnCW0P(uchar uCmd)
{
DDRA = 0xFF; // 數據方向為輸出
// PORTA = 0xFF; // 使能內部上拉電阻
DDRB = 0x0F; // 數據方向為輸出
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成功
}
/************************************************************************************/
/* 函數名稱:fnDWD */
/* 輸入參數:uchar uData 數據 */
/* 輸出參數:uchar 0 成功 ,否則 錯誤 */
/* 函數功能:自動寫數據 */
/* 作 者 :安車科技大燈儀開發小組 許孝剛 */
/* 開發日期: 2005.08 */
/* 版 本 : v1.0 */
/************************************************************************************/
uchar fnDWD(uchar uData)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -