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

📄 ht1622.c

📁 ht1622显示芯片读写库函数,可直接调用,调试通过.
💻 C
字号:

/*-----------------------------------------------------------------------------*/
/*  TITLE    : HT1622 operate routing                                            */
/*  MCU TYPE : FUJITSU MB89P935                                                */



//  入口参数  :read1622(char,char *,char)
//             write1622(char,char *,char)
//             Command1622(char,char *,char)
//
//  出口参数  : 无
//
//  使用硬件资源: 无
/*-----------------------------------------------------------------------------*/
//---------------------------------------------------------------------------------//
//                       CONST DEFINE & 1622 PORT DEFINE                            //
//---------------------------------------------------------------------------------//

#define HIGH        1
#define LOW         0

#define CS		    IO_PDR0.bit.P04
#define RD          IO_PDR0.bit.P05
#define WR	        IO_PDR0.bit.P06
#define DATA		IO_PDR0.bit.P07
#define DATAdir     IO_DDR0.bit.P07
//--------------new pcb  -------------//
//#define CS		IO_PDR5.bit.P50
//#define RD        IO_PDR0.bit.P01
//#define WR	    IO_PDR0.bit.P02
//#define DATA		IO_PDR0.bit.P03
//#define DATAdir   IO_DDR0.bit.P03
//---------------------------------------------------------------------------------//
//                              funtion define                                    //
//--------------------------------------------------------------------------------//
void read1622(char,char *,char);
void write1622(char,char *,char);
void command1622(char *,char);

void send(char,char);
unsigned char receive(void);
void start(void);
void stop(void);
void delay1622(void);

//---------------------------------------------------------------------------------//
//                           1622 operate funtion                                  //
//---------------------------------------------------------------------------------//
void read1622(char Raddress,char * Rrampoint,char Rbytelength)
{
    unsigned char i;

    start();	
	send(0xC0,3);
	send(Raddress,6);
	//read byte from HT1622
	for(i = 0;i < Rbytelength;i++)
	{
		*Rrampoint = receive();
		Rrampoint++;
	}
	stop();
    return;
}
/************************** begin of write1622()******************************/
void write1622(char Waddress,char *WramPoint,char Wbytelength)
{
	unsigned char i;
	
	start();
	send(0xA0,3);		
	send(Waddress,6);

	for(i=0;i<Wbytelength;i++)
	{
	      send(*WramPoint,8);
	      WramPoint++;
	}
	stop();	
    return;
}
/***************************begin of command1622  ******************************/
void command1622(char *CramPoint,char Cbytelength)
{
 unsigned char i;
 start();
 send(0x80,3);
 for(i=0;i<Cbytelength;i++)
 {
      send(*CramPoint,8);
      send(0x00,1);
      CramPoint++;
 }
 stop();
}
/***********************end of command1622 ********************/
void delay1622()
{
	unsigned char i;
	for(i=0;i<10;i++);	
	return;
}

unsigned char receive()
{
	unsigned char i,readbuffer;

	IO_DDR0 = IO_DDR0 & 0X7F;//DATAdir = LOW;
	IO_DDR0 = IO_DDR0 & 0X7F;//DATAdir = LOW;
	IO_DDR0 = IO_DDR0 & 0X7F;//DATAdir = LOW;
	for(i = 0;i < 8;i++){
		RD = LOW;
		readbuffer <<= 1;
		delay1622();
		RD = HIGH;
		if(DATA) readbuffer++;
		delay1622();
	}
	IO_DDR0 = IO_DDR0 | 0X80;//DATAdir = HIGH;
	IO_DDR0 = IO_DDR0 | 0X80;//DATAdir = HIGH;
	IO_DDR0 = IO_DDR0 | 0X80;//DATAdir = HIGH;
	return(readbuffer);
}

void send(char writebuffer,char bitLength)
{
	unsigned char i;
	for(i = 0;i < bitLength;i++)
	{
	        if(writebuffer & 0x80) DATA = HIGH;
		else  DATA = LOW;
		WR = LOW;
		delay1622();
		WR = HIGH;
		delay1622();
		writebuffer <<= 1;
	}
	return;
}

void start()
{
	CS = HIGH;
	WR = HIGH;
	RD = HIGH;
	DATA = HIGH;	
	delay1622();
	delay1622();
	CS = LOW;
	delay1622();
	return;
}

void stop()
{
	WR = HIGH;
	RD = HIGH;
	CS = HIGH;
	DATA = HIGH;
	delay1622();
	return;
}	
/*********************** all of 1622 operate function ****************************/	

⌨️ 快捷键说明

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