




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*功能:通过单片机模拟I2C总线来控制TEA5767收音模块,通过4个按键 调整收音频率,达到换台的目的设计者:姚松金联系QQ:190719416编写日期:2015年7月20日*/#include #include #include #include #define uchar unsigned char#define uint unsigned int/*位定义及变量定义*/sbit key5=P15;/手动搜索加sbit key6=P16;/手动搜索减sbit key7=P14;/向上自动搜索sbit key4=P17;/向下自动搜索uchar idata sbuf5;/要写入5767的数据uchar idata rbuf5;/缓存读出的数据uint temp1;/计算频率合成时用的变量unsigned long PLL,frequency=104300;/开机初始化的电台频率为104.3MHzextern bit flag1,flag2;bit led_flag,hisi;uchar code led2=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,/从左边开始递增亮灯0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,/从右边开始递增亮灯0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,/从左边开始递减灭灯0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,/从右边开始递减灭灯0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,/一个亮灯从左边开始移动0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,/一个亮灯从右边开始移动0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,/一个暗灯从左边开始移动0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,/一个暗灯从右边开始移动0x81,0xc3,0xe7,0xff,0xe7,0xc3,0x81,0xff,/从外向内灭灯/从内向外灭灯0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0xff;/*子函数声明*/void delayus(uchar x);void delayms (uchar b);void iic_start();void iic_stop();void iic_ack();/i2c应答bit iic_testack();void iic_write8bit(uchar input);/i2c写8位数uchar iic_read8bit();/读取8bit数据void write_com(uchar com);/写1602命令函数void write_data(uchar date);/写1602数据函数void init1602();/1602初始化函数void LCD1602_String(uchar *str);void LCD1602_setXY(uchar y,uchar x);/*计算PLL(单位KHZ)函数*/void get_pll() unsigned long freq1,y=frequency;freq1=y;hisi=sbuf2&0x10;if(hisi)PLL=(uint)(float)(freq1+225)/(float)8.192);elsePLL=(uint)(float)(freq1-225)/(float)8.192);/*计算频率(单位HZ)函数*/void get_frequency()uint y=0;y=PLL; hisi=sbuf2&0x10; if(hisi)frequency=(unsigned long int)(y*(float)8.192-225);elsefrequency=(unsigned long int)(y*(float)8.192+225);/*写5个字节到收音模块,在写字节前需要先写器件地址*/void radio_write(void) uchar i; iic_start(); iic_write8bit(0xc0); /TEA5767写地址 if(!iic_testack() for(i=0;i5;i+) iic_write8bit(sbufi); iic_ack(); delayus(5); iic_stop(); /*从收音模块读5个字节出来,读字节前需要先写器件的读地址指令*/void radio_read()uchar i,tempH,tempL;iic_start();iic_write8bit(0xc1);/写读命令iic_testack(); for(i=0;i108000)/频率如果大于108.5MHzfrequency=87500;/频率设定为87.5MHz else frequency-=100;/手动设置频率,-0.1MHz; if(frequency108000)/频率如果大于108.5MHzfrequency=87500;else frequency-=100;/手动设置频率,-0.1MHz; if(frequency=7);sbuf0&=0x7f;radio_write();LCDshow();/*收音机按键扫描函数*/void radio_key_scan(void)static bit curr_encoder_b,last_encoder_b;static bit st=0;uchar i,num,led;temp1+;if(led_flag)if(temp14000)temp1=0;if(led=79)led=0;P3=led2led;led+;if(flag1=1) /此语句写空格刷新显示flag1=0;write_com(0x80+1);write_data( );write_com(0x80+2);write_data( );radio_read();num=(rbuf3&0xf0)/16/4;/显示天线信号强度for(i=0;inum;i+) write_com(0x80+i);write_data(i); LCD1602_setXY(1,11);if(rbuf2&0x80)write_com(0x80+14);/显示立体声标志write_data(3);write_com(0x80+15);write_data(4);else write_com(0x80+14);write_data( );write_com(0x80+15);write_data( ); radio_write();LCDshow();if(key7=0&key4!=0)/控制跑马灯开启或者关闭delayms(10);if(key7=0&key4!=0)Auto_Search(1);if(key4=0&key7!=0)delayms(10);if(key4=0&key7!=0)Auto_Search(0); if(key4=0&key7=0&flag1=1)flag1=0;led_flag=led_flag;/跑马灯标志位if(led_flag)P3=0x00; /当标志位为真时关闭跑马灯,系统上电默认跑马灯是开启的else P3=0xff;while(key4=0|key7=0);if(key5&key6)st=0;return;last_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025合作店合同范本xy
- 代办牛羊屠宰合同范本
- 拆除游乐设施合同范本
- 稻米加工合同范本
- 跨境鞋子转让合同范本
- 装修别墅合同范本
- 化粪池清运合同范本
- 个人卡车转让合同范本
- 装修签安全合同范本
- 工程牌匾质保合同范本
- 2025年发展对象考试题库附含答案
- 2025年兵团基层两委正职定向考录公务员试题(附答案)
- 2025年新专长针灸考试题及答案
- 高三生物一轮复习课件微专题5电子传递链化学渗透假说及逆境胁迫
- DBJ50-T-306-2024 建设工程档案编制验收标准
- 2025四川雅安荥经县国润排水有限责任公司招聘5人笔试历年参考题库附带答案详解
- 2025中国银行新疆区分行社会招聘笔试备考试题及答案解析
- 污水采样培训课件
- 药品医疗器械试题及答案
- 子宫内膜类器官构建与临床转化专家共识解读 2
- 幼师培训:如何上好一节课
评论
0/150
提交评论