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

📄 t6963c3.c

📁 针对t6963液晶控制芯片的驱动程序
💻 C
字号:
//240x128液晶T6963控制器驱动程序(C51)  

#include "absacc.h" 
#include "t6963c.h" 

#define ComPort 0xFF00 
#define DataPort 0xFE00 
 
#define LineChar 16 //宽度为16 

#define WITH 2   //数字宽度设为16点
#define HIGH 32  //数字高度设为32点

/*---------------------------------------------------------------------------------------*/
//     指令,数据 读写状态检查 
void RWCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] & 0x03; } while(sta!=0x03); } 

//     向数据口发Data 
void  OutPortData( unsigned char dat ) { RWCheck(); XBYTE[DataPort]=dat; } 

//     写有 1 个参数命令 
void  OutPortCom1( unsigned char command) { RWCheck(); XBYTE[ComPort]= command; } 

//     写有 2 个参数命令 
void  OutPortCom2(unsigned char dat, unsigned char command) 
      { OutPortData(dat); OutPortCom1(command); } 

//     写有 3 个参数命令 
void  OutPortCom3(unsigned char data1, unsigned char data2, unsigned char command) 
{ OutPortData(data1);  OutPortData(data2); OutPortCom1(command);}

/*-----------------------------------------------------------------------------------*/ 
void ClearScreen() 
{ 
   unsigned int i; 
   // 清显示 RAM 区 0000h--2000h (8k) 
   OutPortCom3(0x00,0x00,0x24); //设置指针地址0000H 

   OutPortCom1(0xb0); //设置自动写状态 
   for(i=0x00;i<0x2000;i++) OutPortData(0x00); // data=0; 
   OutPortCom1(0xb2); // 自动写结束 
} 
/*------------------------------------------------------------------------------*/
//初始化LCD 
void InitLCD() 
{ 
   OutPortCom3( 0x00,0x00,0x42 ); //设置图形显示区域首地址GraphAddr 
   OutPortCom3( LineChar,0x00,0x43 ); //设置图形显示区域宽度 : LineChar 

   OutPortCom1(0xa7); //设置光标形状 cursor size 8x8 
   OutPortCom1(0x80); //设置显示方式: CGROM方式 文本\图形 "或" 
   OutPortCom1(0x98); //设置显示开关: 1001 1100 图形 

   ClearScreen(); 
} 
/*------------------------------------------------------------------------------*/ 
//在line行、column列显示一个With*Higth数字Number,Number:数字 0~9
void ShowNumber(unsigned char line,unsigned char column,unsigned char number)  
{ 
   unsigned char i; 
   unsigned int StartAddr; 


   StartAddr=line*LineChar +column; //定位起始行 

   for(i=0;i<HIGH;i++) 
   { 
     OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24); //set address 
     OutPortCom2( NUMBERTAB[ number ][ WITH*i   ], 0xc0); 			// scan the first line
     OutPortCom2( NUMBERTAB[ number ][ WITH*i+1 ], 0xc4);
     //OutPortCom2( NUMBERTAB[ number ][ WITH*i+2 ], 0xc4);

    StartAddr=StartAddr + LineChar;                       //adress of the next line
   }
 
} 
 /*-------------------------------------------------------------------------------------------*/
//                 显示一幅8*16的图像
void ShowPicture(unsigned char line,unsigned char column,unsigned char *AsciiTAB)
{
 unsigned char i; 
 unsigned int StartAddr; 

 StartAddr=line*LineChar +column; //定位起始行 

 for(i=0;i<16;i++) 
 { 
  OutPortCom3( (unsigned char)(StartAddr),(unsigned char)(StartAddr>>8), 0x24); //set address 
  OutPortCom2(AsciiTAB[i] , 0xc0); 			// scan the first line
 
  StartAddr=StartAddr + LineChar;            //adress of the next line
 }  

}

/*----------------------------------------------------------------------------------------------*/
//显示一个字符串(0~9),pointpos小数点位置,整个数据在显示屏上占据5个字符空间,每个字符大小为24*40
unsigned char* gcvt(float value_float);
void ShowPower(float power_float) //功率值显示函数
{
   	unsigned char i;
	unsigned char* str;

	str=gcvt(power_float);
	for(i=0;i<6;i++)
	{
	  ShowNumber(0,2*i+1,str[i]); 
	}	    
}
 
/*-----------------------------------------------------------------------------------------------*/
//           波长显示函数                
void ShowWaveLength(unsigned char *str) 
{
    unsigned char i=0;

	 for(i=0;i<4;i++)
	 {
	    ShowNumber(33,2+2*i,str[i]);
	 }

}
/*-------------------------------------------------------------------------------------------------*/
//   显示单位rel,dbm,w,mw,uw


void  Showrel( )   { ShowPicture( 0,13,LETTER[6]);ShowPicture( 0,14,LETTER[3]);ShowPicture( 0, 15,LETTER[4]);}
void  ShowrelClear(){ShowPicture( 0,13,LETTER[0]);ShowPicture( 0,14,LETTER[0]);ShowPicture( 0, 15,LETTER[0]);}
void  Showdbm( )   { ShowPicture(16,13,LETTER[2]);ShowPicture(16,14,LETTER[1]);ShowPicture(16, 15,LETTER[5]);}
void  ShowWatt( )  { ShowPicture(16,13,LETTER[8]);ShowPicture(16,14,LETTER[0]);ShowPicture(16, 15,LETTER[0]);}
void  Showmw( )    { ShowPicture(16,13,LETTER[5]);ShowPicture(16,14,LETTER[8]);ShowPicture(16, 15,LETTER[0]);}
void  Showuw( )    { ShowPicture(16,13,LETTER[7]);ShowPicture(16,14,LETTER[8]);ShowPicture(16, 15,LETTER[0]);}

/*-----------------------------------------------------------------------------------------------*/
//--    浮点数转化为字符串函数    --//
 unsigned char* gcvt(float value_float)
 {
   unsigned char i=5,dp;
   unsigned int value_int;
   unsigned char tstr[6];
			 
   //---   判断符号位  ------
   if(value_float<0)
	 { value_float=0-value_float;tstr[0]=11;}
   else tstr[0]=12;

	//---   确定小数位  ------
    if(value_float>10)
	  {dp=3; value_int=value_float*100;}
	else
	  {dp=2; value_int=value_float*1000;}
		
   //---  分离为字符串	----- 
	for(i=5;i>0;i--)
	{
	  if(i==dp)   tstr[i]=10;
	  else        { tstr[i]=value_int%10; value_int=value_int/10;}
	}
		
	return 	tstr;
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -