PICTEA5767数码管显示调频收音机精品文档14页.docx
- 文档编号:3323432
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:17
- 大小:21.72KB
PICTEA5767数码管显示调频收音机精品文档14页.docx
《PICTEA5767数码管显示调频收音机精品文档14页.docx》由会员分享,可在线阅读,更多相关《PICTEA5767数码管显示调频收音机精品文档14页.docx(17页珍藏版)》请在冰点文库上搜索。
PICTEA5767数码管显示调频收音机精品文档14页
TEA5767数码管显示调频收音机
在深圳本地目前能收到如下电台
/**************************************************************************************************************
unsignedcharradio_write_data[5]={0x2c,0xe1,0x70,0x16,0x80};//频率为93.9MHz广东音乐电台
unsignedcharradio_write_data[5]={0x30,0x5c,0x70,0x16,0x80};//频率为101.2MHz广东电台音乐之声
unsignedcharradio_write_data[5]={0x31,0x38,0x70,0x16,0x80};//频率为103.0MHz广东珠江经济电台
unsignedcharradio_write_data[5]={0x31,0xd7,0x70,0x16,0x80};//频率为104.3MHz宝安广播电台
unsignedcharradio_write_data[5]={0x32,0x20,0x70,0x16,0x80};//频率为104.9MHz中央人民广播电台华夏之声
unsignedcharradio_write_data[5]={0x33,0x2d,0x70,0x16,0x80};//频率为107.1MHz中国国际广播电台环球资讯
/**************************************************************************************************************/
把用来下载的M币给我算了,直上程序供复制。
哈哈!
/**************************************************************************************************************
AT89S52+12MHZ+TEA5767的数码管显示调频收音机
本程序使用数码管显示频率晶振是用12M已通过测试,收音机的频率调节是用计算的方法将显示的频率算好后写到TEA5767
芯片里面实现调节的两个按键实现自加或自减频率加了连续加减功能!
使用的是在淘宝上买的4.5元/片的简化版的TEA5767模块.
2019-05-08
/**************************************************************************************************************/
#include
#defineucharunsignedchar
#defineuintunsignedint
/**************************************************************************************************************/
sbitSDA=P3^0;//接在TEA5767的数据端口
sbitSCL=P3^1;//接在TEA5767的时钟端口
sbitKEY1=P3^4;//频率增加按键端口
sbitKEY2=P3^5;//频率减小按键端口
sbitKEY3=P3^6;//频率增加按键端口
sbitKEY4=P3^7;//频率减小按键端口
#defineduanP0//频率显示的数码管段选P0端口
//#definegy//使用共阴极时屏蔽这行
sbitdula=P2^6;
sbitwela=P2^7;
ucharIF,ADC,CH;
//bitRF,STEREO;
#ifdefgy
unsignedcharcodedispbit[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//显示位码
unsignedcharcodedispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//数码管显示编码
#else
/**************************************************************************************************************/
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//数码管显示编码
unsignedcharcodedispbit[]={0x7e,0x7d,0x7b,0x77,0x6f,0x5f};/*定义点亮的数码管与数组的关系*/
#endif
/**************************************************************************************************************
unsignedcharradio_write_data[5]={0x2c,0xe1,0x70,0x16,0x80};//频率为93.9MHz广东音乐电台
unsignedcharradio_write_data[5]={0x30,0x5c,0x70,0x16,0x80};//频率为101.2MHz广东电台音乐之声
unsignedcharradio_write_data[5]={0x31,0x38,0x70,0x16,0x80};//频率为103.0MHz广东珠江经济电台
unsignedcharradio_write_data[5]={0x31,0xd7,0x70,0x16,0x80};//频率为104.3MHz宝安广播电台
unsignedcharradio_write_data[5]={0x32,0x20,0x70,0x16,0x80};//频率为104.9MHz中央人民广播电台华夏之声
unsignedcharradio_write_data[5]={0x33,0x2d,0x70,0x16,0x80};//频率为107.1MHz中国国际广播电台环球资讯
/**************************************************************************************************************/
unsignedcharradio_read_data[5];
unsignedcharradio_write_data[5];
unsignedlongfrequency=104900;//开机初始化的电台频率为104.9MHz中央民广播电台华夏之声
unsignedintPLL;//计算频率合成时用的变量
/**************************************************************************************************************/
voidDelayus(unsignedcharx)
{
for(;x>0;x--);
}
/**************************************************************************************************************/
voidiic_start()//启动总线传输
{
SDA=1;
Delayus(4);
SCL=1;
Delayus(4);
SDA=0;
Delayus(4);
SCL=0;
Delayus(4);
}
/**************************************************************************************************************/
voidiic_stop()//结束总线传输
{
SCL=0;
Delayus(4);
SDA=0;
Delayus(4);
SCL=1;
Delayus(4);
SDA=1;
Delayus(4);
}
/**************************************************************************************************************/
voidiic_ack()//发送应答位
{
SDA=0;
Delayus(4);
SCL=1;
Delayus(4);
SCL=0;
Delayus(4);
SDA=1;
Delayus(4);
}
/**************************************************************************************************************/
bitiic_testack()
{
bitErrorBit;
SDA=1;
Delayus(4);
SCL=1;
Delayus(4);
ErrorBit=SDA;
Delayus(4);
SCL=0;
returnErrorBit;
}
/**************************************************************************************************************/
voidiic_write8bit(unsignedcharinput)//写一个字节的数据到总线上
{
unsignedchartemp;
for(temp=8;temp>0;temp--)
{
SDA=(bit)(input&0x80);
Delayus(4);
SCL=1;
Delayus(4);
SCL=0;
Delayus(4);
input=input<<1;
}
}
/**************************************************************************************************************/
uchariic_rdbyt()//从总线上读取一个字节的数据
{
uchara=0,i=0;
for(i=0;i<8;i++)
{
SDA=1;
SCL=1;
if(SDA==1)
{
a=(a<<1)+1;
SCL=0;
}
elseif(SDA==0)
{
a=a<<1;
SCL=0;
}
}
return(a);
}
/**************************************************************************************************************/
voiddelays(unsignedcharb)//按键消抖用的延时程序
{
unsignedchari;
for(b;b>0;b--)
for(i=0;i<250;i++);
}
/**************************************************************************************************************/
voidradio_write(void)//写入TEA5767
{
unsignedchari;
iic_start();//启动总线传输
iic_write8bit(0xc0);//TEA5767写地址
if(!
iic_testack())
{
for(i=0;i<5;i++)
{
iic_write8bit(radio_write_data);//写一个字节的数据到总线上
iic_ack();//发送应答位
}
}
iic_stop();//结束总线传输
}
/**************************************************************************************************************/
//将显示的频率算好后写到TEA5767芯片里面实现调节,不用考虑TEA5767用于搜台的相关位:
SM,SUD
//写模式
//数据字节1数据字节2数据字节3数据字节4数据字节5
voidsearch()
{
PLL=(unsignedint)((float)((frequency+225))/(float)8.192);//计算合成频率数据频率单位:
k
/**************************************************************************************************************/
//数据字节1的格式radio_write_data[0]
//位7(高位)位6位5位4位3位2位1位0(低位)
//MUTESMPLL13PLL12PLL11PLL10PLL9PLL8
//7MUTE如果MUTE=1则左右声道被静音;MUTE=0左右声道正常工作。
//6SM如果SM=1则处于搜索模式SM=0不处于搜索模式。
//5到0PLL[13:
8]设定用于搜索和预设的可编程频率合成器。
radio_write_data[0]=PLL/256;//将算好的频率高位数据存入将要TEA5767的数组里
/**************************************************************************************************************/
//数据字节2的格式radio_write_data[1]
//位7(高位)位6位5位4位3位2位1位0(低位)
//PLL7PLL6PLL5PLL4PLL3PLL2PLL1PLL0
//PLL[7:
0]设定用于搜索和预设的可编程频率合成器。
radio_write_data[1]=PLL%256;//将算好的频率低位数据存入将要TEA5767的数组里
/**************************************************************************************************************/
//数据字节3的格式radio_write_data[2]
//位7(高位)位6位5位4位3位2位1位0(低位)
//SUDSSL1SSL0HLSIMSMLMRSWP1
//SUDSUD=1增加频率搜索SUD=0减小频率搜索。
//SLL[1:
0]搜索停止标准:
见下表1。
//SSL0SSL1搜索停止标准
//00在搜索模式下禁止
//01低:
ADC输出大小为5
//10中:
ADC输出大小为7
//11高:
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开立体声关静音
/**************************************************************************************************************/
//数据字节4的各个位描述radio_write_data[3]
//位7(高位)位6位5位4位3位2位1位0(低位)
//SWP2STBYBLXTALSMUTEHCCSNCSI
//SWP2软件可编程端口2:
SWP2=1,端口2高电平;SWP2=0,端口2低电平。
//STBY等待:
STBY=1处于待机模式,STBY=0,退出待机模式。
//BL波段制式:
BL=1日本调频制式BL=0,美国/欧洲调频制式。
//XTAL如果XTAL=1那么fxtal=32.768KHz;如果XTAL=0那么fxtal=13MHz。
//SMUTE软件静音:
SMUTE=1软静音打开;SMUTE=0,软静音关闭。
//HCC白电平切割:
HCC=1高电平切割打开HCC=0高电平切割关闭。
//SNC立体声噪声去除:
如果SNC=1,立体声消噪除打开,如果SNC=0,立体声消噪除关闭。
//SI搜索标志位:
SI=1SWPORT1输出准备好信号SI=0SWPORT1作为软件可编程端口1用。
radio_write_data[3]=0x16;//中国制式采用32768晶振软静音关立体声消噪声开
/**************************************************************************************************************/
//数据字节5的格式radio_write_data[4]
//位7(高位)位6位5位4位3位2位1位0(低位)
//PLLREFDTC------------
//若PLLREF=16.5MHz的锁相环参考频率启用;若PLLREF=06.5MHz的锁相环参考频率关闭。
//若DTC=1去加重时间常数为75us;若DTC=0去加重时间常数为50us。
//位5到0未用状态不必考虑。
radio_write_data[4]=0x80;//6.5M锁相环开去加重时间50US
/**************************************************************************************************************/
radio_write();//写入TEA5767
}
/**************************************************************************************************************
//读模式
//数据字节1数据字节2数据字节3数据字节4数据字节5
//数据字节1的格式
//位7(高位)位6位5位4位3位2位1位0(低位)
//RFBLFPLL13PLL12PLL11PLL10PLL9PLL8
//7RF准备好标志:
RF=1有一个频道被搜到或者一个制式已经符合;RF=0没有频道被搜到。
//6BLF波段制式:
BLF=1一个制式已经符合BLF=0没有制式已经符合。
//5到0PLL[13:
8]用于搜索和预设后的可编程频率合成器设定结果。
//数据字节2的格式
//位7(高位)位6位5位4位3位2位1位0(低位)
//PLL7PLL6PLL5PLL4PLL3PLL2PLL1PLL0
//数据字节2的各个位描述
//PLL[7:
0]设定用于搜索和预设后的可编程频率合成器设定结果。
//数据字节3的格式
//位7(高位)位6位5位4位3位2位1位0(低位)
//STEREOIF6IF5IF4IF3IF2IF1IF0
//7STEREO立体声标志位:
STEREO=1立体声接收STEREO=0单声道接收。
//6到0IF[6:
0]中频计数器结果。
//数据字节4的格式
//位7(高位)位6位5位4位3位2位1位0(低位)
//LEV3LEV2LEV1LEV0CI3CI2CI10
//7到4LEV[3:
0]ADC的输出。
//3到1CI[3:
1]芯片验证号。
//0------该位内部置0。
//数据字节5的格式
//位7(高位)位6位5位4位3位2位1位0(低位)
//00000000
//7到0------预留为扩展用由内部置0。
/**************************************************************************************************************/
voiddelay()
{
uchark;
for(k=0;k<100;k++);
}
/**************************************************************************************************************/
voiddesplay(uintaa)
{
/**************************************************************************************************************
duan=tab[aa/1000]|0x80;//关这位数码管的小数点
led1=0;
delay();
led1=1;
duan=tab[aa%1000/100]|0x80;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PICTEA5767 数码管 显示 调频 收音机 精品 文档 14