//本程序运用数码管显现频率,晶振是用12M,已经过测验, 已用全能板做好制品,
//在我的QQ空间里有全能板做的相片,高清的相片能够进QQ相册看,自己空间未加密。
//为了便利电子爱好者克己,本程序将一切的端口进行了宏界说,便利初学者自行修正,而且加了许多注释
// 陈永飞 先生写于2011年2月19号,QQ:49204743,邮箱:baiyni888@163.com.
//地址:江苏省南京市鼓楼区虎踞路180号苏宁电器售后服务中心牧场门网点
//本收音机的频率调理是用核算的办法,将显现的频率算好后写到TEA5767芯片里边完成调理的
//运用MCS-51单片机进行操控,两个按键完成自加或自减频率,加了接连加减功用!
//运用的是在淘宝上买的4.5元/片的简化版的TEA5767模块,在南京收到了十个电台
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
/////////////////////////////////////////////////////////////////////////////////////////////////////这
uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,}; //数码管段码表 /////些
sbit led1=P2^4; //频率显现的数码管位选端口 100兆,P2.4端口 /////是
sbit led2=P2^5; //频率显现的数码管位选端口 10兆,P2.5端口 /////端
sbit led3=P2^6; //频率显现的数码管位选端口 1兆,P2.6端口 /////口
sbit led4=P2^7; //频率显现的数码管位选端口 0.1兆,P2.7端口 /////,
sbit SDA=P3^0; //接在TEA5767的数据端口 /////可
sbit SCL=P3^1; //接在TEA5767的时钟端口 /////以
sbit KEY1=P1^0; //频率添加按键端口 /////自
sbit KEY2=P1^1; //频率减小按键端口 /////行
#define duan P0 //频率显现的数码管段选P0端口 /////修
/////////////////////////////////////////////////////////////////////////////////////////////////////改
//unsigned char radio_write_data[5]={0x33,0x8e,0x70,0x16,0x80}; //要写入TEA5767的数据,107.9M江苏旅行台
//unsigned char radio_write_data[5]={0x32,0x8e,0x70,0x16,0x80}; //要写入TEA5767的数据,105.8M 南京音乐台
//unsigned char radio_write_data[5]={0x31,0xd7,0x70,0x16,0x80}; //要写入TEA5767的数据,104.3M南京体育台
//unsigned char radio_write_data[5]={0x30,0x9a,0x70,0x16,0x80}; //要写入TEA5767的数据,101.7M南京经济台城市调频
unsigned char radio_write_data[5]={0x30,0x50,0x70,0x16,0x80}; //要写入TEA5767的数据,101.1M江苏交通播送网
//unsigned char radio_write_data[5]={0x2f,0xa5,0x70,0x16,0x80}; //要写入TEA5767的数据,99.7M江苏金色调频
//unsigned char radio_write_data[5]={0x2c,0xc9,0x70,0x16,0x80}; //要写入TEA5767的数据,97.5M江苏文艺台
//unsigned char radio_write_data[5]={0x2c,0xc9,0x70,0x16,0x80}; //要写入TEA5767的数据,93.7M江苏经济台居家播送
//unsigned char radio_write_data[5]={0x2b,0xb0,0x70,0x16,0x80}; //要写入TEA5767的数据,91.4M江苏播送
//unsigned char radio_write_data[5]={0x2a,0xe1,0x70,0x16,0x80}; //要写入TEA5767的数据,89.7M江苏音乐台
unsigned long frequency=101100; //开机初始化的电台频率为101.1MHz
unsigned int pll; //核算频率组成时用的变量
void Delayus(unsigned char x)
{
for(;x>0;x–);
}
void iic_start()
{
SDA=1;
Delayus(4);
SCL=1;
Delayus(4);
SDA=0;
Delayus(4);
SCL=0;
Delayus(4);
}
void iic_stop()
{
SCL=0;
Delayus(4);
SDA=0;
Delayus(4);
SCL=1;
Delayus(4);
SDA=1;
Delayus(4);
}
void iic_ack()
{
SDA=0;
Delayus(4);
SCL=1;
Delayus(4);
SCL=0;
Delayus(4);
SDA=1;
Delayus(4);
}
bit iic_testack()
{
bit ErrorBit;
SDA=1;
Delayus(4);
SCL=1;
Delayus(4);
ErrorBit=SDA;
Delayus(4);
SCL=0;
return ErrorBit;
}
void iic_write8bit(unsigned char input)
{
unsigned char temp;
for(temp=8;temp>0;temp–)
{
SDA=(bit)(input&0x80);
Delayus(4);
SCL=1;
Delayus(4);
SCL=0;
Delayus(4);
input=input<<1;
}
}