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

📄 lcd.c

📁 芯片at89s52
💻 C
字号:
/******************************************************************************
 * File   Name: lcd.c														  *
 * Create Time: 2007/07/14													  *
 * Description:																  *
 * Copyright  :																  *
 * History    :																  *
 * |---Data---|---Author---|--Version--|--------------Description-------------|
 *****************************************************************************/
 //#define LCD_ONOFF
 #ifdef LCD_ONOFF
/******************************
 *      Head File			  *
 *****************************/
 #include"lcd.h" 
/******************************
 *     Global Variable	      *
 *****************************/
 uchar lcdPosbit=0; 
 uchar lcdDisMem[8];
 uchar movebit=0;
/******************************
 *	   Const Segment		  *
 *****************************/
 					//  低位---------------------------> 高位
 uchar pos_select[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
 code uchar WordBase[][8] = {0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,//0-9
 							0xEF,0xCF,0xEF,0xEF,0xEF,0xEF,0xEF,0xC7,
						    0xC7,0xBB,0xBB,0xF3,0xEF,0xDF,0xBB,0x83,
							0xC7,0xBB,0xBB,0xE7,0xFB,0xFB,0xBB,0xC7,
							0xF7,0xE7,0xD7,0xB7,0xB7,0x83,0xF7,0xE3,
							0x83,0xBF,0xBF,0x87,0xFB,0xFB,0xBB,0x87,
							0xE3,0xDD,0xDF,0xC3,0xDD,0xDD,0xDD,0xE3,
							0xC3,0xDB,0xFB,0xF7,0xF7,0xEF,0xEF,0xEF,
							0xE3,0xDD,0xDD,0xE3,0xDD,0xDD,0xDD,0xE3,
							0xC7,0xBB,0xBB,0xC3,0xFB,0xFB,0xBB,0xC7,

							0xFF,0xFF,0xE7,0xE7,0xFF,0xE7,0xE7,0xFF,//: ;< = > ? @
							0xFF,0xE7,0xE7,0xFF,0xE7,0xE7,0xF7,0xEF,
							0xFF,0xFB,0xF7,0xEF,0xDF,0xEF,0xF7,0xFB,
							0xFF,0xFF,0x81,0xFF,0xFF,0x81,0xFF,0xFF,
							0xFF,0xDF,0xEF,0xF7,0xFB,0xF7,0xEF,0xDF,
							0xFF,0xE7,0xDB,0xFB,0xF7,0xEF,0xFF,0xEF,
							0xC3,0xBD,0x66,0x5A,0x56,0xA0,0xB9,0xC3,
							
							0xF7,0xF7,0xEB,0xEB,0xE3,0xDD,0xDD,0x88,//A
							0xE1,0xDD,0xDD,0xE1,0xDD,0xDD,0xDD,0xE1,//B
							0xC3,0xBD,0xFD,0xFD,0xFD,0xFD,0xBD,0xC3,
							0xE0,0xDD,0xBD,0xBD,0xBD,0xBD,0xDD,0xE0,//D
							0x80,0xBD,0xED,0xE1,0xED,0xFD,0xBD,0x80,
							0xC0,0xBD,0xED,0xE1,0xED,0xFD,0xFD,0xF8,
							0xC3,0xBD,0xFD,0xFD,0x8D,0xBD,0xB9,0xC3,
							0x18,0xBD,0xBD,0x81,0xBD,0xBD,0xBD,0x18,
							0xE3,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xE3,
							0xC3,0xEF,0xEF,0xEF,0xEF,0xEF,0xED,0xF3,//J
							0x98,0xED,0xF5,0xF1,0xF5,0xED,0xDD,0x98,
							0xF1,0xFB,0xFB,0xFB,0xFB,0xFB,0xBB,0x81,
							0x18,0x99,0xA5,0xA5,0xA5,0xBD,0xBD,0x3C,
							0x1C,0xB9,0xB9,0xB5,0xB5,0xAD,0x9D,0xB8,
							0xE3,0xDD,0xBE,0xBE,0xBE,0xBE,0xDD,0xE3,
							0xE0,0xDD,0xDD,0xDD,0xE1,0xFD,0xFD,0xF8,
							0xE3,0xDD,0xBE,0xBE,0xB2,0xC5,0xE3,0xCF,//Q
							0xE0,0xDD,0xDD,0xE1,0xF5,0xED,0xED,0x98,
							0xC3,0xBD,0xBD,0xFB,0xC7,0xBF,0xBD,0xC3,
							0xC1,0xD5,0xF7,0xF7,0xF7,0xF7,0xF7,0xE3,
							0x18,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,
							0x18,0xBD,0xBD,0xDD,0xDB,0xEB,0xEB,0xF7,//V
							0x94,0xB6,0xB6,0xB6,0xB6,0xAA,0xDD,0xDD,
							0x18,0xBD,0xDB,0xC3,0xE7,0xDB,0xDB,0x18,
							0x88,0xDD,0xDD,0xEB,0xF7,0xF7,0xF7,0xE3,
							0x81,0xDE,0xDF,0xEF,0xEF,0xF7,0x7B,0x01,//Z

							0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
							0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
							0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
							0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
							0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
							0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

							0xFF,0xE3,0xDD,0xC3,0xDD,0xDD,0x83,0xFF,//a
							0xFF,0xFD,0xFD,0xE5,0xD9,0xDD,0xE1,0xFF,
							0xFF,0xE3,0xDD,0xFD,0xFD,0xDD,0xE3,0xFF,
							0xFF,0xEF,0xEF,0xE3,0xED,0xED,0xD3,0xFF,
							0xFF,0xE3,0xDD,0xC1,0xFD,0xDD,0xE3,0xFF,
							0xFF,0xEF,0xF7,0xC3,0xF7,0xF7,0xF7,0xFF,
							0xC3,0xED,0xE3,0xFD,0xE1,0xDD,0xE3,0xFF,
							0xFF,0xFB,0xFB,0xE3,0xDB,0xDB,0xDB,0xFF,
							0xFF,0xEF,0xFF,0xE7,0xEF,0xEF,0xEF,0xFF,
							0xEF,0xFF,0xE7,0xEF,0xEF,0xEB,0xF7,0xFF,
							0xFB,0xFB,0xCB,0xF3,0xEB,0xCB,0xFD,0xFF,
							0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xEF,0xFF,
							0xFF,0x83,0x6D,0x6D,0x6D,0x7D,0xFF,0xFF,
							0xFF,0xC5,0xBB,0xBB,0xBB,0xBB,0xBB,0xFF,
							0xFF,0xE3,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF,
							0xE1,0xDD,0xDD,0xE1,0xFD,0xFD,0xFD,0xFF,
							0xE3,0xED,0xED,0xE3,0xEF,0xAF,0xCF,0xFF,
							0xFF,0x93,0xE7,0xF7,0xF7,0xF7,0xFF,0xFF,
							0xFF,0xC7,0xFB,0xC7,0xBF,0xBB,0xC7,0xFF,
							0xFF,0xF7,0xE3,0xF7,0xF7,0xF7,0xEF,0xFF,
							0xFF,0xFF,0xDB,0xDB,0xDB,0xDB,0xA7,0xFF,
							0xFF,0xDD,0xDD,0xDD,0xEB,0xEB,0xF7,0xFF,
							0xFF,0xBE,0xB6,0xB6,0xAA,0xDD,0xFF,0xFF,
							0xFF,0x99,0xDB,0xE7,0xE7,0xDB,0x99,0xFF,
							0x99,0xDB,0xDB,0xEB,0xF7,0xF7,0xF9,0xFF,
							0xFF,0xC1,0xEF,0xF7,0xFB,0xFD,0xC1,0xFF};//z
 							

/******************************
 *      Function  Implement	  *
 *****************************/
 
/*******************************************************************************
Function Name: 串行输入函数													   *
Target : 将8位数据串行传入缓存												   *
Input  Parameter : 8位数据													   *
Output Parameter : 															   *
Function Description : 														   *
*******************************************************************************/
void lcdSend(uchar inputdata) 
{
 	uchar tmp;
 	for(tmp=0;tmp<8;tmp++)
	{
		P1_7=0;
		P1_6=(inputdata>>tmp)&0x01;
		P1_7=1;
	}	
}
/*******************************************************************************
Function Name: LCD扫描函数													   *
Target : 对lcd进行信息扫描													   *
Input  Parameter : 无														   *
Output Parameter : 无														   *
Function Description :  													   *
*******************************************************************************/
void lcdScan(void)
{			
	P1_5 = 0;
	lcdSend(lcdDisMem[lcdPosbit]);
	lcdSend(pos_select[lcdPosbit]);
	lcdPosbit++;	
	if(lcdPosbit==8)
		lcdPosbit=0;
	P1_5 = 1;
}

/*******************************************************************************
Function Name: 显示信息函数													   *
Target :  将显示信息放入数据缓存											   *
Input  Parameter : pos, 无符号字符,显示数据在字库中的第几个位置			   *
Output Parameter : 															   *
Function Description : 														   *
*******************************************************************************/
void lcdPrint(uchar displayData)
{
	lcdDisMem[0] = WordBase[displayData-0x30][0];
	lcdDisMem[1] = WordBase[displayData-0x30][1];
	lcdDisMem[2] = WordBase[displayData-0x30][2];
	lcdDisMem[3] = WordBase[displayData-0x30][3];
	lcdDisMem[4] = WordBase[displayData-0x30][4];
	lcdDisMem[5] = WordBase[displayData-0x30][5];
	lcdDisMem[6] = WordBase[displayData-0x30][6];
	lcdDisMem[7] = WordBase[displayData-0x30][7];	
}
/*******************************************************************************
Function Name: 数据循环移动函数 											   *
Target :  将lcd中的数据向右移动一位											   *
Input  Parameter : 															   *
Output Parameter : 															   *
Function Description : 														   *
*******************************************************************************/
void circleBitMove()
{	
	lcdDisMem[0] =circleShift(lcdDisMem[0]);
	lcdDisMem[1] =circleShift(lcdDisMem[1]);
	lcdDisMem[2] =circleShift(lcdDisMem[2]);
	lcdDisMem[3] =circleShift(lcdDisMem[3]);
	lcdDisMem[4] =circleShift(lcdDisMem[4]);
	lcdDisMem[5] =circleShift(lcdDisMem[5]);
	lcdDisMem[6] =circleShift(lcdDisMem[6]);
	lcdDisMem[7] =circleShift(lcdDisMem[7]);
} 	
/*******************************************************************************
Function Name: 循环移位函数													   *
Target :  将一个8位数据循环右移一位											   *
Input  Parameter : 8位的一个数据											   *
Output Parameter : 循环移位后的数据											   *
Function Description : 														   *
*******************************************************************************/
uchar circleShift(uchar udata)
{
	uchar tmp = (udata&0x01)<<7;
	udata = (udata>>1)|tmp;
	return udata;
}
/*******************************************************************************
Function Name: 普通移位函数													   *
Target :  将一个8位数据普通右移一位											   *
Input  Parameter : 8位的一个数据											   *
Output Parameter : 普通右移后的数据											   *
Function Description : 														   *
*******************************************************************************/
uchar shift(uchar udata)
{ 	
	udata = (udata>>1)|0x80;
	return udata;
}  
/*******************************************************************************
Function Name: 数据移位函数													   *
Target :  将一个8位数据普通右移一位											   *
Input  Parameter : 8位的一个数据											   *
Output Parameter : 普通移位后的数据											   *
Function Description : 														   *
*******************************************************************************/
void bitMove()
{ 	
	lcdDisMem[0] =shift(lcdDisMem[0]);
	lcdDisMem[1] =shift(lcdDisMem[1]);
	lcdDisMem[2] =shift(lcdDisMem[2]);
	lcdDisMem[3] =shift(lcdDisMem[3]);
	lcdDisMem[4] =shift(lcdDisMem[4]);
	lcdDisMem[5] =shift(lcdDisMem[5]);
	lcdDisMem[6] =shift(lcdDisMem[6]);
	lcdDisMem[7] =shift(lcdDisMem[7]);
} 
/*******************************************************************************
Function Name: 延时函数 													   *
Target :  进行软件延时          											   *
Input  Parameter : 延时的时间(单位ms)										   *
Output Parameter : 无           											   *
Function Description : 														   *
*******************************************************************************/
void lcdDelay(int i) //延时程序
{
	int k;
	while ((i--)!= 0)
	{
		for (k = 0; k<= 0xFFF; k++)
		{;}			 
	}
} 

#endif
/*******************************************************************************
 *                        The end of the entire file			               *
 ******************************************************************************/

 /* code const uchar strMem[] = { 0xFF,0xC7,0xEF,0xEF,0xEF,0xEF,0xC7,0xFF,
                               0xFF,0xFF,
							   0xFF,0xDF,0xDF,0xDF,0xDF,0xDF,0xC3,0xFF,	
							   0xFF,0xEF,0xD7,0xBB,0xBB,0xD7,0xEF,0xFF,
							   0xFF,0xFF,0xBB,0xBB,0xBB,0xBB,0xD7,0xEF,
							   0xFF,0xC3,0xDF,0xC3,0xDF,0xDF,0xC3,0xFF,
							   0xFF,0xFF,0xFF,0xBB,0xBB,0xD7,0xEF,0xEF,
							   0xEF,0xFF,
							   0xFF,0xEF,0xD7,0xBB,0xBB,0xD7,0xEF,0xFF,
							   0xFF,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,
							   0xFF,0xFF,
							   0xFF,0xEF,0xEF,0xEF,0xEF,0xFF,0xEF,0xFF
							 };	*/

⌨️ 快捷键说明

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