AT89S52+12MHZ+TEA5767的數(shù)碼管顯示調(diào)頻收音機(jī)
/**************************************************************************************************************/
//數(shù)據(jù)字節(jié)3的格式 radio_write_data[2]
//位7(高位) 位6 位5 位4 位3 位2 位1 位0(低位)
// SUD SSL1 SSL0 HLSI MS ML MR SWP1
//SUD SUD=1 增加頻率搜索 SUD=0 減小頻率搜索。
//SLL[1:0] 搜索停止標(biāo)準(zhǔn):見下表1。
//SSL0 SSL1 搜索停止標(biāo)準(zhǔn)
// 0 0 在搜索模式下禁止
// 0 1 低:ADC輸出大小為5
// 1 0 中:ADC輸出大小為7
// 1 1 高:ADC輸出大小為10
//HLSI 高/低充電電流切換:HLSI=1 高充電電流 HLSI=0 低充電電流。
//MS 立體聲/單聲道:MS=1 單聲道 MS=0 立體聲。
//ML 左聲道靜音:ML=1 左聲道靜音并置立體聲 ML=0 左聲道正常。
//MR 右聲道靜音:MR=1 右聲道靜音并置立體聲 MR=0 右聲道正常。
//SWP1 軟件可編程端口1:SWP1=1 端口1高電平 SWP1=0 端口1低電平。
radio_write_data[2] = 0x70; //這是TEA5767開立體聲 關(guān)靜音
/**************************************************************************************************************/
//數(shù)據(jù)字節(jié)4的各個(gè)位描述 radio_write_data[3]
//位7(高位) 位6 位5 位4 位3 位2 位1 位0(低位)
// SWP2 STBY BL XTAL SMUTE HCC SNC SI
//SWP2 軟件可編程端口2:SWP2=1,端口2高電平;SWP2=0,端口2低電平。
//STBY 等待:STBY=1 處于待機(jī)模式,STBY=0,退出待機(jī)模式。
//BL 波段制式:BL=1 日本調(diào)頻制式 BL=0,美國/歐洲調(diào)頻制式。
//XTAL 如果XTAL=1 那么fxtal=32.768KHz;如果XTAL=0 那么fxtal=13MHz。
//SMUTE 軟件靜音:SMUTE=1 軟靜音打開;SMUTE=0,軟靜音關(guān)閉。
//HCC 白電平切割:HCC=1 高電平切割打開 HCC=0 高電平切割關(guān)閉。
//SNC 立體聲噪聲去除:如果SNC=1,立體聲消噪除打開,如果SNC=0,立體聲消噪除關(guān)閉。
//SI 搜索標(biāo)志位:SI=1 SWPORT1輸出準(zhǔn)備好信號(hào) SI=0 SWPORT1作為軟件可編程端口1用。
radio_write_data[3] = 0x16; //中國制式 采用32768晶振 軟靜音關(guān) 立體聲消噪聲開
/**************************************************************************************************************/
//數(shù)據(jù)字節(jié)5的格式 radio_write_data[4]
//位7(高位) 位6 位5 位4 位3 位2 位1 位0(低位)
// PLLREF DTC -- -- -- -- -- --
//若PLLREF=1 6.5MHz的鎖相環(huán)參考頻率啟用;若PLLREF=0 6.5MHz的鎖相環(huán)參考頻率關(guān)閉。
//若DTC=1 去加重時(shí)間常數(shù)為75us;若DTC=0 去加重時(shí)間常數(shù)為50us。
//位5到0 未用 狀態(tài)不必考慮。
radio_write_data[4] = 0x80; //6.5M鎖相環(huán)開 去加重時(shí)間50US
/**************************************************************************************************************/
radio_write(); //寫入TEA5767
}
/**************************************************************************************************************
//讀模式
//數(shù)據(jù)字節(jié)1 數(shù)據(jù)字節(jié)2 數(shù)據(jù)字節(jié)3 數(shù)據(jù)字節(jié)4 數(shù)據(jù)字節(jié)5
//數(shù)據(jù)字節(jié)1的格式
//位7(高位) 位6 位5 位4 位3 位2 位1 位0(低位)
// RF BLF PLL13 PLL12 PLL11 PLL10 PLL9 PLL8
//7 RF 準(zhǔn)備好標(biāo)志:RF=1 有一個(gè)頻道被搜到或者一個(gè)制式已經(jīng)符合;RF=0 沒有頻道被搜到。
//6 BLF 波段制式:BLF=1 一個(gè)制式已經(jīng)符合 BLF=0 沒有制式已經(jīng)符合。
//5到0 PLL[13:8] 用于搜索和預(yù)設(shè)后的可編程頻率合成器設(shè)定結(jié)果。
//數(shù)據(jù)字節(jié)2的格式
//位7(高位) 位6 位5 位4 位3 位2 位1 位0(低位)
// PLL7 PLL6 PLL5 PLL4 PLL3 PLL2 PLL1 PLL0
//數(shù)據(jù)字節(jié)2的各個(gè)位描述
//PLL[7:0] 設(shè)定用于搜索和預(yù)設(shè)后的可編程頻率合成器設(shè)定結(jié)果。
//數(shù)據(jù)字節(jié)3的格式
//位7(高位) 位6 位5 位4 位3 位2 位1 位0(低位)
// STEREO IF6 IF5 IF4 IF3 IF2 IF1 IF0
//7 STEREO 立體聲標(biāo)志位:STEREO=1 立體聲接收 STEREO=0 單聲道接收。
//6到0 IF[6:0] 中頻計(jì)數(shù)器結(jié)果。
//數(shù)據(jù)字節(jié)4的格式
//位7(高位) 位6 位5 位4 位3 位2 位1 位0(低位)
// LEV3 LEV2 LEV1 LEV0 CI3 CI2 CI1 0
//7到4 LEV[3:0] ADC的輸出。
//3到1 CI[3:1]芯片驗(yàn)證號(hào)。
//0 ------ 該位內(nèi)部置0。
//數(shù)據(jù)字節(jié)5的格式
//位7(高位) 位6 位5 位4 位3 位2 位1 位0(低位)
// 0 0 0 0 0 0 0 0
//7到0 ------ 預(yù)留為擴(kuò)展用 由內(nèi)部置0。
/**************************************************************************************************************/
void delay()
{
uchar k;
for(k = 0;k < 100;k++);
}
/**************************************************************************************************************/
void desplay(uint aa)
{
/**************************************************************************************************************
duan = tab[aa / 1000] | 0x80; //關(guān)這位數(shù)碼管的小數(shù)點(diǎn)
led1 = 0;
delay();
led1 = 1;
duan = tab[aa % 1000 / 100] | 0x80; //關(guān)這位數(shù)碼管的小數(shù)點(diǎn)
led2 = 0;
delay();
led2 = 1;
duan = tab[aa % 100 / 10] & 0x7f; //點(diǎn)亮這位數(shù)碼管的小數(shù)點(diǎn)
led3 = 0;
delay();
led3 = 1;
duan = tab[aa % 10] | 0x80; //關(guān)這位數(shù)碼管的小數(shù)點(diǎn)
led4 = 0;
delay();
led4 = 1;
/**************************************************************************************************************/
dula = 0;
if((aa / 1000) == 0)
duan = dispcode[aa / 1000 + 10]; //這位為0數(shù)碼管不顯示
else
duan = dispcode[aa / 1000]; //這位數(shù)碼管顯示頻率百位
dula = 1;
dula = 0;
wela = 0;
duan = dispbit[2];
wela = 1;
wela = 0;
delay();
delay();
delay();
delay();
delay();
delay();
dula = 0;
duan = dispcode[aa % 1000 / 100]; //這位數(shù)碼管顯示頻率十位
dula = 1;
dula = 0;
wela = 0;
duan = dispbit[3];
wela = 1;
wela = 0;
delay();
delay();
delay();
delay();
delay();
delay();
dula = 0;
#ifdef gy
duan = dispcode[aa % 100 / 10] & 0x7F; //這位數(shù)碼管顯示頻率百位 開數(shù)碼管的小數(shù)點(diǎn)
#else
duan = dispcode[aa % 100 / 10] | 0x80; //這位數(shù)碼管顯示頻率百位 開數(shù)碼管的小數(shù)點(diǎn)
#endif
dula = 1;
dula = 0;
wela = 0;
duan = dispbit[4];
wela = 1;
wela = 0;
delay();
delay();
delay();
delay();
delay();
delay();
dula = 0;
duan = dispcode[aa % 10]; //這位數(shù)碼管顯示頻率小數(shù)位
dula = 1;
dula = 0;
wela = 0;
duan = dispbit[5];
wela = 1;
wela = 0;
delay();
delay();
delay();
delay();
delay();
delay();
}
評(píng)論