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

📄 ht1621_drv.c

📁 PLL的资料文档,包括资料
💻 C
字号:
/*C**************************************************************************
* NAME:         HT1621_drv.c
*----------------------------------------------------------------------------
* Copyright (c) 2006 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      C51 Sample      
* REVISION:     1.00     
*----------------------------------------------------------------------------
*
*****************************************************************************/
#include "system\reg51.h"
#include "system\compiler.h"
#include "system\config.h"
#include "Driver\io_def.h"

#if	CONF_DISPLAY == HT1621
#include "driver\ht1621_drv.h"                      /* scheduler definition */
#endif
/*-----------------------------------------------------------
DIRVER IC:	HT1621
LCD PIN ASSGMENT
DIRVER IC:	HT1621
LCD PIN ASSGMENT
	COM0	COM1	COM2	COM3
SEG0	|E5		|E3		|E1		|-		;HT1621_CSEG0H
SEG1	|E4		|E2		|E0		|ANTI	;HT1621_CSEG0L
SEG2	|BATT	|6B		|6C		|6D		;HT1621_CSEG1
SEG3	|6A		|6F		|6G		|6E		;HT1621_CSEG1
SEG4	|HOLD	|5B		|5C		|5D		;HT1621_CSEG2
SEG5	|5A		|5F		|5G		|5E		;HT1621_CSEG2
SEG6	|-		|4B		|4C		|4D		;HT1621_CSEG3
SEG7	|4A		|4F		|4G		|4E		;HT1621_CSEG3
SEG8	|ALL	|3B		|3C		|3D		;HT1621_CSEG4
SEG9	|3A		|3F		|3G		|3E		;HT1621_CSEG4
SEG10	|1		|2B		|2C		|2D		;HT1621_CSEG5
SEG11	|2A		|2F		|2G		|2E		;HT1621_CSEG5
SEG12	|VOL	|1B		|1C		|1D		;HT1621_CSEG6
SEG13	|1A		|1F		|1G		|1E		;HT1621_CSEG6
SEG14	|REP	|PROG	|RNDOM	|INTRO	;HT1621_CSEG7
SEG15	|-		|2		|1		|BOST	;HT1621_CSEG7
SEG16	|-		|7B		|7C		|7D		;HT1621_CSEG8
SEG17	|7A		|7F		|7G		|7E		;HT1621_CSEG8
SEG18	|CD		|V		|MP3	|
-------------------------------------------------------------
Command Mode:
1.LCD OFF	1000/0000010X		;
2.LCD ON	1000/0000011X
3.BIAS & COM	1000/010ABXCX
	C=0:	1/2 BIAS OPTION
	C=1:	1/3 BIAS OPTION
	AB=00:	2 COMMONS OPTION
	AB=01:	3 COMMONS OPTION 
	AB=02:	4 COMMONS OPTION

Write Mode:
		1/01/A5 A4 A3 A2 A1 A0/D0 D1 D2 D3
------------------------------------------------*/

#if CONF_DISPLAY == HT1621
/*F**************************************************************************
* NAME: ht1621_init
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Keyboard initialisation function
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
* ram/xram:
* cycle:
* stack: 
* code:
*****************************************************************************/
void ht1621_init (void)
{
	LCD_DA = High;		/*DATA禁止*/
	LCD_CS = High;		/*CS禁止*/
	LCD_RW = High;		/*RW禁止*/
}

/*F**************************************************************************
* NAME: HT1621_command
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   Decoded key pressed
*----------------------------------------------------------------------------
* PURPOSE: 
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void HT1621_command(Byte bByte) {
  Byte i; //data
  Byte bBits= 0x80; //write mode command and address is 1000b.
   
    LCD_CS = 0;
	LCD_DA = 1;
	for (i=0; i<4; i++) { //transmit data "1000"
		LCD_RW = 0;
		if (bBits & 0x80) LCD_DA = 1;
    	else LCD_DA = 0;
		bBits <<= 1;
		LCD_RW = 1;
	}
	//bBits = bByte;
	HT1621_getMSB(bByte);
    LCD_CS = 1;
    LCD_DA = 1;
}

/*F**************************************************************************
* NAME: HT1621_getdata
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   Decoded key pressed
*----------------------------------------------------------------------------
* PURPOSE: 
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
/***************************************************/
void HT1621_getdata(Byte address,Byte bByte) {
   
	address = (address | 0x40);//write mode command and address is 101000000b.
    LCD_CS = 0;
	LCD_RW = 0;
	LCD_DA = 1;
	LCD_RW = 1; 
	HT1621_getMSB(address);
	HT1621_getLSB(bByte);
	LCD_CS = 1;
    LCD_DA = 1; 
}


/*-----------------------------------------------*/
/*LCD所有的显示RAM清除*/
void ht1621_cls (void)
{
	Byte i; //data
   
    LCD_CS = 0;
	LCD_RW = 0;
	LCD_DA = 1;
	LCD_RW = 1;
	HT1621_getMSB(0x40);
	for (i=0; i<9; i++){
		HT1621_getLSB(0X00);
		}
	LCD_CS = 1;
    LCD_DA = 1;
}

/*-----------------------------------------------*/
/*ht1621秒钟显示*/
void glht1621_sec(Byte bByte) 
{
	HT1621_getdata(HT1621SEC_ADDH,ht1621disp_Map[bByte/10]);		/*显示十位*/
	HT1621_getdata(HT1621SEC_ADDL,ht1621disp_Map[bByte%10]);	/*显示个位*/
	//HT1621_getdata(HT1621SEC_ADDL,0x06);	/*显示十位*/
	//HT1621_getdata(HT1621SEC_ADDH,0x06);	/*显示个位*/
}
/*-----------------------------------------------*/
/*ht1621分钟显示*/
void glht1621_min(Byte bByte) 
{
	HT1621_getdata(HT1621MIN_ADDH,ht1621disp_Map[bByte/10]);		/*显示十位*/
	HT1621_getdata(HT1621MIN_ADDL,ht1621disp_Map[bByte%10] | HT1621COL);	/*显示个位*/	
}

/*-----------------------------------------------*/
/*ht1621曲目数显示*/
void glht1621_TRACK(Byte bByte) 
{
	HT1621_getdata(HT1621TRACK_ADDH,ht1621disp_Map[bByte/10]);	/*显示十位*/
	HT1621_getdata(HT1621TRACK_ADDL,ht1621disp_Map[bByte%10]);	/*显示个位*/	
}

/*-----------------------------------------------*/
/*ht1621“STOP”字符显示*/
void glht1621_stop(void) 
{
	HT1621_getdata(HT1621_ADDRESS3,0xc7);	/*显示字符“S”*/
    HT1621_getdata(HT1621_ADDRESS4,0x8e);	/*显示字符“t”*/
	HT1621_getdata(HT1621_ADDRESS5,0xcc);	/*显示字符“o”*/
	HT1621_getdata(HT1621_ADDRESS6,0x2f);	/*显示字符“P”*/	
}

/*-----------------------------------------------*/
/*ht1621“REC”字符显示*/
void glht1621_rec(void) 
{
	HT1621_getdata(HT1621_ADDRESS1,0x8e);	/*显示字符“r”*/
    HT1621_getdata(HT1621_ADDRESS2,0x8f);	/*显示字符“E”*/
}

/*-----------------------------------------------*/
/*ht1621 VOLUME调整显示*/
void glht1621_volume(void) 
{
	HT1621_getdata(HT1621TRACK_ADDH,ht1621disp_Map[vol_value/10] | HT1621VOL);		/*显示十位*/
	HT1621_getdata(HT1621TRACK_ADDL,ht1621disp_Map[vol_value%10]);	/*显示个位*/
}
/*ht1621 P OFF字符显示*/
void glht1621_POFF(void) 
{
	HT1621_getdata(HT1621TRACK_ADDL,0Xf2);		/*显示“P”*/
	HT1621_getdata(HT1621MIN_ADDH,0Xbe);		/*显示“O”*/
	HT1621_getdata(HT1621MIN_ADDL,0Xf0);		/*显示“F”*/
	HT1621_getdata(HT1621SEC_ADDH,0Xf0);		/*显示“F”*/
}

/*F**************************************************************************
* NAME: dts_DispMem
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Display task initialization
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void dts_DispMem (void)
{
	Byte temp;

	temp = (Mem_add - Mem_StartAdd)/2;
	HT1621_getdata(HT1621_ADDRESS0,0xf7);
	HT1621_getdata(HT1621SEC_ADDH,ht1621disp_Map[temp/10]);		
	HT1621_getdata(HT1621SEC_ADDL,ht1621disp_Map[temp%10]);			
}

/*F**************************************************************************
* NAME: dts_DispFer
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Display task initialization
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void dtsFM_DispFer (void)
{
	char temp;
	 if(dts_frequency < 1000){
	 	temp = dts_frequency/100;
		//ht1621disp_Buffer[3] = ht1621disp_Map[temp];
		HT1621_getdata(HT1621TRACK_ADDH,ht1621disp_Map[temp]);
		temp = (dts_frequency-temp*100);
		//ht1621disp_Buffer[4] = ht1621disp_Map[temp/10];
		HT1621_getdata(HT1621TRACK_ADDL,ht1621disp_Map[temp/10]);
		//ht1621disp_Buffer[5] = ht1621disp_Map[temp%10];
		HT1621_getdata(HT1621MIN_ADDH,ht1621disp_Map[temp%10]);
		//ht1621disp_Buffer[7] = 0x00;
		HT1621_getdata(HT1621TRACK_H_ADD,0x00);
		}
		else{
			if(dts_frequency ==1000){
				//ht1621disp_Buffer[3] = ht1621disp_Map[0];
				//ht1621disp_Buffer[4] = ht1621disp_Map[0];
				//ht1621disp_Buffer[5] = ht1621disp_Map[0];
				HT1621_getdata(HT1621TRACK_ADDH,0xbe);
				HT1621_getdata(HT1621TRACK_ADDL,0xbe);
				HT1621_getdata(HT1621MIN_ADDH,0xbe);
			}
			else {
				//ht1621disp_Buffer[3] = ht1621disp_Map[0];
				HT1621_getdata(HT1621TRACK_ADDH,0xbe);
				temp = (dts_frequency-1000);
				//ht1621disp_Buffer[4] = ht1621disp_Map[temp/10];
				//ht1621disp_Buffer[5] = ht1621disp_Map[temp%10];
				HT1621_getdata(HT1621TRACK_ADDL,ht1621disp_Map[temp/10]);
				HT1621_getdata(HT1621MIN_ADDH,ht1621disp_Map[temp%10]);
			}
		//ht1621disp_Buffer[7] = 0x60;
		HT1621_getdata(HT1621TRACK_H_ADD,0x60);
		}
		//HT1621_getdata(HT1621TRACK_ADDH,ht1621disp_Buffer[3]);
		//HT1621_getdata(HT1621TRACK_ADDL,ht1621disp_Buffer[4]);
		//HT1621_getdata(HT1621MIN_ADDH,ht1621disp_Buffer[5]);
		//HT1621_getdata(HT1621TRACK_H_ADD,ht1621disp_Buffer[7]);
}		

/*LCD字码表*/
Byte code ht1621disp_Map[]={
   0xbe,  //0/
   0x06,  //1/
   0xda,  //2/
   0x5e,  //3/
   0x66,  //4/
   0x7c,  //5/
   0xfc,  //6
   0x16,  //7
   0xfe,  //8
   0x7e,  //9
};

#endif

⌨️ 快捷键说明

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