⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t6963c.c

📁 avr单片机的12864Lcd程序
💻 C
📖 第 1 页 / 共 2 页
字号:
// 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 + -