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

📄 ht1622drv.c

📁 包含了8位CRC算化程序
💻 C
字号:
/**************** (c) 2008 ***************************************************/   
/*	FILE     : 		Ht1622Drv.c												 */	
/*	DESCRIPTION:    HT1622 LCD driver routine								 */
/*	COMPILER : 		c compiler												 */	
/*	VERSION  :  	1.0														 */
/*	DATE	 : 		2008/04/14												 */			
/*	Author   : 		flydragon												 */	
/*****************************************************************************/
/****************************************************************************/
#define WR 5					//I/O
#define CS 4					//I/O
#define DATA 7					//I/O

#define BUSCSDR p3				//p3 I/O PORT
#define BUSWRDR p3
#define BUSDADR p3
/*****************************************************************************/
#define LCDON 0X3
//#define BIASCOM 0X29
#define LCDADDRESS 0Xa0  //101000 00,start address(high 6bits) :0x28	
#define SYSTEMEN 0X1
#define LCDMODE 0XE3
#define SYSTEMCLOCK 0X18
#define COMMAND 0X80
#define DATAMODE 0XA0

#define TONE4K 0X40				// BUZ 4K HZ
#define TONEOFF 0X8
#define TONEON  0X9

/******************************************************************************/
#define SetBit(bytedata,bit) (bytedata |= 1<<bit)
#define ClrBit(bytedata,bit) (bytedata &= ~(1<<bit))

unsigned char  ValBit(unsigned char bytedata,unsigned char bit)
		 {return((bytedata & ( 1<< bit))? 1:0);}


/*****************************************************************************
Name:			CommandOut
Description:	output one byte data/command
Parameters:		outdata		is command
				counter		is output bits
				lowbit		is 	last bit
Return:			none
Notes:	
*********************************************************************************/
void CommandOut(unsigned char outdata,unsigned char counter,unsigned char lowbit)
{
	unsigned char i;
	unsigned char ndata,ncounter,nlowbit;
	ndata=outdata;
	ncounter=counter;
	nlowbit=lowbit;
	ClrBit(BUSCSDR,CS);
	for(i=0;i<ncounter;i++)
		{
		SetBit(BUSWRDR,WR);
		ClrBit(BUSWRDR,WR);
		if(ValBit(ndata,7-i))
			SetBit(BUSDADR,DATA);
		else
			ClrBit(BUSDADR,DATA);
		SetBit(BUSWRDR,WR);	
		}
	if(nlowbit==1)
		{
		SetBit(BUSWRDR,WR);
		ClrBit(BUSWRDR,WR);	
	
		ClrBit(BUSDADR,DATA);
		SetBit(BUSWRDR,WR);
		}

}

/*****************************************************************************
Name:			ByteDataOut
Description:	output one byte data
Parameters:		outdata		is		out data
Return:			none
Notes:			none
*********************************************************************************/
void ByteDataOut(unsigned char outdata)
{
	unsigned char i;
	unsigned char ndata;
	ndata=outdata;
	
	ClrBit(BUSCSDR,CS);
	
	for(i=0;i<8;i++)
		{
		SetBit(BUSWRDR,WR);
		ClrBit(BUSWRDR,WR);
		if(ValBit(ndata,i))
			SetBit(BUSDADR,DATA);
		else
			ClrBit(BUSDADR,DATA);
		SetBit(BUSWRDR,WR);	
		}

}

/****************************************************************************
Name:			Lcd_WriteData
Description: 	Write data to lcd driver
Parameters: 	addr		is display datas address
				counter		is data byte numbers
Return:			none
Notes:			none
*****************************************************************************/
void HT1622_WriteData(unsigned char * addr,unsigned char counter)
{
	unsigned char i;
	
	SetBit(BUSCSDR,CS);
	
	ClrBit(BUSCSDR,CS);
	
	CommandOut(COMMAND,3,0);
	
	CommandOut(SYSTEMEN,8,1);
	
	CommandOut(LCDMODE,8,1);
	
	//CommandOut(BIASCOM,8,1);
	
	CommandOut(SYSTEMCLOCK,8,1);
	
	//if(toneout)
	//	CommandOut(TONE4K,8,1);			// tone output 4k hz
	//else
	//	CommandOut(TONEOFF,8,1);
		
	
	CommandOut(LCDON,8,1);
	
	SetBit(BUSCSDR,CS);
	
	CommandOut(DATAMODE,3,0);
	
	CommandOut(LCDADDRESS,6,0);
	
	for(i=0;i<counter;i++)
		ByteDataOut(*(addr+i));
		
	SetBit(BUSCSDR,CS);
	SetBit(BUSWRDR,WR);
	SetBit(BUSDADR,DATA);
}
/******2007/09/14*(c)*******End of file********************************/	

⌨️ 快捷键说明

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