?? lcd_driver.c
字號:
/*******************首行標志****************************
filename = LCD_SENT.INC
; USED LCD =GDE1039, Drive IC=PT6554
; main_prog segment code;PROGRAMMER: MOCHAOWU
;Used IC=SM8958A,sp5767 2007,1,3
;This Project Include Radio_SM8958A.c & usb_mp3.inc
; RADIO_COMMUNICATE.C & LCD_SENT.INC & Usbradio_int.inc
*****************************************************/
//-------------------------
#define uchar unsigned char
#define ulong unsigned long
#define uint unsigned int
#define BYTE unsigned char
void write6554Data(unsigned char data SEND_BYTE);
void write6554Data1(unsigned char data SEND_BYTE);
extern void led( ulong tdwVCO);
extern unsigned char code fourth_12th_8table[];
void rd_frequency_fm_address(void);
void READ6554(void);
#ifndef __have9014__
#define __have9014__
#endif
//---------------------------------------------
void sendDataTo6554(void){
unsigned char data SEND_BYTE;
volatile bit bittmp;
bittmp=EA;
EA = 0;
#ifdef __have9014__
DSP_CLK = 0; // ;;__/---|WHEN CLK IS TERMINATED AT HIGH LEVEL
DSP_CE = 0; // ;;__/---|
DSP_DI_OUT = 0; // ;;____/---
DSP_DO_IN = 1; //
#else
DSP_CLK = 1; // ;;__/---|WHEN CLK IS TERMINATED AT HIGH LEVEL
DSP_CE = 1; // ;;__/---|
DSP_DI_OUT = 1; // ;;____/---
DSP_DO_IN = 0; //
#endif
//**************************(1)**********************************************
for(i=0;i<7;i++){
TRANS_BUF[i] = 0x00;
}
TRANS_BUF[0] = DSP_BUF[0];
TRANS_BUF[1] = DSP_BUF[1];
for(i=1;i<5;i++)
{
SEND_BYTE = DSP_BUF[i+1];
TRANS_BUF[i] |= ((SEND_BYTE<<4) & 0xf0);
TRANS_BUF[i+1] |= ((SEND_BYTE>>4) & 0x0f);//just s0s1=00 in TRANS_BUF[5]
}
TRANS_BUF[5] |= PT6554SLEEP; //b7b6 is sleep function
// SEND_BYTE = DSP_BUF[3];
// TRANS_BUF[2] |= ((SEND_BYTE<<4) & 0xf0);
// TRANS_BUF[3] |= ((SEND_BYTE>>4) & 0x0f);
// for(i=0;i<6;i++){
// TRANS_BUF[i] = DSP_BUF[i];
//}
// TRANS_BUF[5] &= 0x0f; //s0s1=00
//dir DR SC P1P0 k1k0
//00 0 0 00 01 = 0X01
TRANS_BUF[6] = 0x01; //k1k0=01,p0p1=00,sc=0,dr=0,dire=00
SEND_BYTE = 0x42;
#ifdef __have9014__
DSP_CE = 1; // send 8 clock= P0^5;//CE: Chip enable
#else
DSP_CE = 0; // send 8 clock= P0^5;//CE: Chip enable
#endif
write6554Data(SEND_BYTE);
#ifdef __have9014__
DSP_CE = 0; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 0; //
#else
DSP_CE = 1; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 1; //
#endif
//==============================================================
for (jj=0;jj<7;jj++){
SEND_BYTE = TRANS_BUF[jj];
write6554Data(SEND_BYTE);
}
#ifdef __have9014__
DSP_CE = 1; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 1; //
#else
DSP_CE = 0; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 0; //
#endif
//*******************************(2)******************************************
EA=bittmp;
for (i=0;i<5;i++){
TRANS_BUF[i] = DSP_BUF[i+6];
}
SEND_BYTE = 0X42;
bittmp=EA;
EA = 0;
#ifdef __have9014__
DSP_CE = 1; // send 8 clock= P0^5;//CE: Chip enable
#else
DSP_CE = 0; // send 8 clock= P0^5;//CE: Chip enable
#endif
write6554Data(SEND_BYTE);
#ifdef __have9014__
DSP_CE = 0; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 0; //
#else
DSP_CE = 1; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 1; //
#endif
//==============================================================
for (jj=0;jj<5;jj++){
SEND_BYTE = TRANS_BUF[jj];
write6554Data(SEND_BYTE);
}
SEND_BYTE = 0x00;
write6554Data(SEND_BYTE);
SEND_BYTE = 0x80;
write6554Data(SEND_BYTE);
#ifdef __have9014__
DSP_CE = 1; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 1; //
#else
DSP_CE = 0; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 0; //
#endif
//*********************************(3)***************************************
EA=bittmp;
//for (i=0;i<5;i++)
//{
// TRANS_BUF[i] = DSP_BUF[i+12];
//}
for(i=0;i<7;i++){
TRANS_BUF[i] = 0x00;
}
TRANS_BUF[0] = DSP_BUF[11];
TRANS_BUF[1] = DSP_BUF[12];
SEND_BYTE = DSP_BUF[13];
TRANS_BUF[1] |= ((SEND_BYTE<<4) & 0xf0);
TRANS_BUF[2] |= ((SEND_BYTE>>4) & 0x0f);
bittmp=EA;
EA = 0;
SEND_BYTE = 0X42;
#ifdef __have9014__
DSP_CE = 1; // send 8 clock= P0^5;//CE: Chip enable
#else
DSP_CE = 0; // send 8 clock= P0^5;//CE: Chip enable
#endif
write6554Data(SEND_BYTE);
#ifdef __have9014__
DSP_CE = 0; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 0; //
#else
DSP_CE = 1; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 1; //
#endif
//==============================================================
for (jj=0;jj<5;jj++)
{
SEND_BYTE = TRANS_BUF[jj];
write6554Data(SEND_BYTE);
}
SEND_BYTE = 0x00;
write6554Data(SEND_BYTE);
SEND_BYTE = 0x40;
write6554Data(SEND_BYTE);
#ifdef __have9014__
DSP_CE = 1; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 1; //
#else
DSP_CE = 0; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 0; //
#endif
//*********************************(4)***************************************
EA=bittmp;
//for (i=0;i<5;i++){
// TRANS_BUF[i] = DSP_BUF[i+12]
//}
SEND_BYTE = 0X42;
bittmp=EA;
EA = 0;
#ifdef __have9014__
DSP_CE = 1; // send 8 clock= P0^5;//CE: Chip enable
#else
DSP_CE = 0; // send 8 clock= P0^5;//CE: Chip enable
#endif
write6554Data(SEND_BYTE);
#ifdef __have9014__
DSP_CE = 0; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 0; //
#else
DSP_CE = 1; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 1; //
#endif
//==============================================================
for (jj=0;jj<6;jj++)
{
// SEND_BYTE = TRANS_BUF[jj];
SEND_BYTE = 0x00;
write6554Data(SEND_BYTE);
}
SEND_BYTE = 0xc0;
write6554Data(SEND_BYTE);
#ifdef __have9014__
DSP_CE = 1; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 1; //
#else
DSP_CE = 0; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 0; //
#endif
EA=bittmp;
} //sendDataTo6554(void)
//=====================================================
//void write6554address(unsigned char SENDBYTE){
// for(i=0;i<8;i++) {
// DSP_CLK = 0;
// SENDBYTE=SENDBYTE>>1;
// DSP_DI_OUT=(bit)(SENDBYTE&0x01);
// iic_delay();
// DSP_CLK = 1;
// iic_delay();
// }
//}
//=====================================================
void write6554Data(unsigned char data SEND_BYTE){
for(i=0;i<8;i++)
{
#ifdef __have9014__
DSP_CLK = 1;
DSP_DI_OUT=~(bit)(SEND_BYTE&0x01);
#else
DSP_CLK = 0;
DSP_DI_OUT=(bit)(SEND_BYTE&0x01);
#endif
// iic_delay();
_nop_();
_nop_();
_nop_();
#ifdef __have9014__
DSP_CLK = 0;
#else
DSP_CLK = 1;
#endif
// iic_delay();
_nop_();
_nop_();
_nop_();
SEND_BYTE=SEND_BYTE>>1;
}
}
//=====================================================
void write6554Data1(unsigned char data SEND_BYTE){
for(i=0;i<8;i++)
{
#ifdef __have9014__
DSP_CLK = 1;
DSP_DI_OUT=~(bit)(SEND_BYTE&0x01);
#else
DSP_CLK = 0;
DSP_DI_OUT=(bit)(SEND_BYTE&0x01);
#endif
// iic_delay();
_nop_();
_nop_();
_nop_();
#ifdef __have9014__
DSP_CLK = 0;
#else
DSP_CLK = 1;
#endif
// iic_delay();
_nop_();
_nop_();
_nop_();
SEND_BYTE=SEND_BYTE>>1;
}
}
//=====================================================
void radio_freq_fm_display(void){
// BYTE pll_love;
unsigned int pll_love;
unsigned long DSP_Frequency;
unsigned char SendErr=0;
// radio_read(); //get_frequency
// led(frequency); //get bcd code for freq.
SendErr = radio_read_M() ; // 讀取搜索結果
//if(radio_read()){
// get_pll();
//}
// PT6554_8GDE1039(tbFreq4);
// PT6554_9GDE1039(tbFreq3);
// PT6554_10GDE1039(tbFreq2);
// PT6554_11GDE1039(tbFreq1);
if(SendErr == 0){
frequency += 50;
frequency /= 100;
frequency *= 100;
DSP_Frequency = frequency;
DSP_Frequency /= 100;
PT6554_11GDE1039(DSP_Frequency%10);
DSP_Frequency /= 10;
PT6554_10GDE1039(DSP_Frequency%10);
DSP_Frequency /= 10;
PT6554_9GDE1039(DSP_Frequency%10);
DSP_Frequency /= 10;
if((DSP_Frequency%10) != 0){
PT6554_8GDE1039(DSP_Frequency%10);
}else{PT6554_8GDE1039(0x0a); }
}
// sendDataTo6554();
/*
if(KEY_NUMBER){
pll_love = SearchStation[(KEY_NUMBER-1)]; //pll;
PT6554_8GDE1039(pll_love%10); //
pll_love /= 10;
PT6554_7GDE1039(pll_love%10); //
pll_love /= 10;
PT6554_6GDE1039(pll_love%10); //
pll_love /= 10;
PT6554_5GDE1039(pll_love%10); //
pll_love /= 10;
PT6554_4GDE1039(pll_love%10); //
}
*/
DSP_BUF[9] &= 0x7f; // no colen
DSP_BUF[10] |= 0x80; // light a dot
DSP_BUF[11] &= 0x7f; // no letter 5
DSP_BUF[12] |= 0x04; // 0x02;// MHz
}
//=====================================================
void radio_fm1_display(void){
PT6554_1GDE1039(0x00); //F(M)
PT6554_2GDE1039(0x02); //(F)M
PT6554_3GDE1039(0x00); //1
PT6554_4GDE1039(0x0a); //
}
//=====================================================
void rd_control_key_number(void){
if(KEY_VALUE == 0x00){
bKEY_VALUE_longflag = 0;
if((B_TUNER_DURING_MOR_FLAGON == 0)&&(bMEMORYKEY_SHORT_flag == 1)){
bMEMORYKEY_SHORT_flag = 0;
DELAY_5S = 0x0F0;
MAIN_FUNCT1_0XFC = 0x01;
PWM_INIT();
}else{
B_TUNER_DURING_MOR_FLAGON = 0;
bMEMORYKEY_SHORT_flag = 0;
DELAY_5S = 0x0F0;
}
}
else if(KEY_BACK != 0x00){
// if(KEY_COUNTER >= 0x32){
if((bKEY_VALUE_longflag == 1)&&(KEY_COUNTER == 0x00)){
if(!B_TUNER_DURING_MOR_FLAGON){
B_TUNER_DURING_MOR_FLAGON = 1;
//do long key...
bMEMORYKEY_SHORT_flag = 0;
if((MAIN_FUNCT1_0XFC != 0x02)&&(MAIN_FUNCT1_0XFC != 0x03)&&(MAIN_FUNCT1_0XFC != 0x05))
{
PWM_INIT();
MAIN_FUNCT1_0XFC = 0x02;
}
}
}
}else{
if(MAIN_FUNCT1_0XFC == 0x10){
#if 1
MAIN_FUNCT1_0XFC = 0x0;
PWR_MUTE = 0;
bKEY_VALUE_longflag = 0;
B_TUNER_DURING_MOR_FLAGON = 1;
#endif
}else{
bMEMORYKEY_SHORT_flag = 1;
if(bKEY_VALUE_longflag == 0){
bKEY_VALUE_longflag = 1;
KEY_COUNTER = 0x064; //0x0d;
}
}
}
}
//=====================================================
void rd_frequency_fm_address(void){
}
//=====================================================
void READ6554(void){
unsigned char data SEND_BYTE;
#ifdef __have9014__
DSP_CE = 1; // send 8 clock= P0^5;//CE: Chip enable
#else
DSP_CE = 0; // send 8 clock= P0^5;//CE: Chip enable
#endif
SEND_BYTE = 0x43; //
write6554Data(SEND_BYTE);
#ifdef __have9014__
DSP_CE = 0; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 0; //
#else
DSP_CE = 1; // ;;__/---CASE 2: CLK IS TERMINATED AT “HIGH” LEVEL
DSP_DO_IN = 1; //
#endif
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -