基于单片机的数字FM收音机设计(7)

2019-04-23 18:56

附录A

程序代码及注释

#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; sbit led2=P2^5; sbit led3=P2^6;

//频率显示的数码管位选端口 100兆,P2.4端口 //频率显示的数码管位选端口 10兆,P2.5端口 //频率显示的数码管位选端口 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端口

//开机初始化的电台频率为101.1MHz

unsigned long frequency=101100; unsigned int pll=101100;

//计算频率合成时用的变量

void Delayus(unsigned char x) {

for(;x>0;x--); }

void iic_start() { SDA=1; Delayus(4); SCL=1;

25

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() {

26

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; } }

void delays (unsigned char b) //按键消抖用的延时程序 {

unsigned char i; for(b;b>0;b--) for(i=0;i<250;i++); }

27

void radio_write(void) {

unsigned char i; iic_start();

iic_write8bit(0xc0); //TEA5767写地址 if(!iic_testack()) {

for(i=0;i<5;i++) {

iic_write8bit(radio_write_data[i]); iic_ack(); } }

iic_stop();

}//将显示的频率算好后写到TEA5767芯片里面实现调节,不用考虑TEA5767用于搜台的相关位:SM,SUD

void search() {

pll=(unsigned int) ((float)((frequency+225)) /(float)8.192); //计算合成频率数据,频率单位:k radio_write_data[0]=pll/256;

//将算好的频率高位数据写入TEA5767

radio_write_data[1]=pll%6; //将算好的频率低位数据写入TEA5767 radio_write_data[2]=0x70; //这是TEA5767开立体声,关静音

radio_write_data[3]=0x16; //中国制式,采用32768晶振,软静音关,立体声消噪

声开

radio_write_data[4]=0x80; radio_write(); }

void delay() {

28

//6.5M锁相环开,去加重时间75US

}

uchar k;

for(k=0;k<100;k++);

void desplay(uint aa) {

duan=tab[aa00/100]|0x80; //关这位数码管的小数点 led2=0; delay(); led2=1;

duan=tab[aa0/10]&0x7f; //点亮这位数码管的小数点 led3=0; delay(); led3=1;

duan=tab[aa]|0x80; led4=0; delay(); led4=1;}

//关这位数码管的小数点

duan=tab[aa/1000]|0x80; led1=0; delay(); led1=1;

//关这位数码管的小数点

void main() {

radio_write(); while(1) {

if(!KEY1) {

delays(250); //延时消抖

29

//写入初始化电台频率

//手动设臵频率,+0.1MHz;


基于单片机的数字FM收音机设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017-2018学年第二学期人教版六年级数学全册教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: