📄 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 + -