收音机tea5767+温度18b20+时间ds1302+1602液晶显示+红外遥控=功放显示系统_第1页
收音机tea5767+温度18b20+时间ds1302+1602液晶显示+红外遥控=功放显示系统_第2页
收音机tea5767+温度18b20+时间ds1302+1602液晶显示+红外遥控=功放显示系统_第3页
收音机tea5767+温度18b20+时间ds1302+1602液晶显示+红外遥控=功放显示系统_第4页
收音机tea5767+温度18b20+时间ds1302+1602液晶显示+红外遥控=功放显示系统_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大家好! 我是 威虎小熊 , 下面这个就是我最近做的数字收音机 示系统,(初稿,后续会完善其他功能) +温度 +时间 +液晶显示 +红外遥控 =功放显 ,希望能和大家一起分享(哈哈) 。 功能说明:液晶显示 2. 红外遥控 时间 .温度,收音机频率) ( mini 红外遥控器) 3. 温度检测( ds18b20) 4. 时间显示( ds1302) 5. 收音机( TEA5767 无线功放) 电路图: PDF 图, DXP原图请到下载电路图 /功放显示下载。 ,呵呵 PCB图,用处不大,在此贴上,威虎科技集团是我将来的公司名字 PCB打样成品: 5cm* 非常小巧,很容易嵌入其他东西, 需要的朋

2、友可以找我联系 ,我去打样的成本 8 元一片,不过快递运费自付。 (好像不划算哦) Pcb 资源:见上图,很多吧, 除了现在已经调试的功能外,还可以做315M/无线遥控 AD采集,DA控制, LCD数码管口可以用作与其他器件的嵌入通讯。 好了,该上程序了。 +后面内容为中内容 + #include #include #include #include #include #include #define uint unsigned int #define uchar unsigned char uint key,nt,t05s,t2s; void io_init(void); void int_

3、init(void); void InitTimer0(void); show_time(uint wei) nt+. ; unsigned char code line1 = 2012 /06/15 09:52; unsigned char code line2 = FM: T:; unsigned char code L1 = 20 / / : ; void Wlcd595(uchar dat595 ) unsigned char nt; HC595CLK=0; HC595RCK=0; for(nt=8;nt0;nt-) LCM_Data=(dat595 dat595=1; HC595CL

4、K=0; HC595CLK=1; HC595CLK=1; HC595CLK=1; HC595CLK=0; HC595RCK=1; ; DisplayOneChar(7,2,(frequency%100000)%10000)%1000)/100+0 x30); void radio_write(void) unsigned char i; iic_start(); iic_write8bit(0 xc0); /TEA5767 写地址 if(!iic_testack() for(i=0;i5;i+) iic_write8bit(radio_write_datai); iic_ack(); iic_

5、stop(); / 由频率计算 PLL void get_pll(void) unsigned char hlsi; / unsigned int twpll=0; hlsi=radio_write_data2 /HLSI 位 if (hlsi) pll=(unsigned int)(float)(frequency+225)*4)/(float);/ 频率单位 :k else pll=(unsigned int)(float)(frequency-225)*4)/(float);/ 频率单位 :k / 由 PLL计算频率 void get_frequency(void) unsigned c

6、har hlsi; unsigned int npll=0; npll=pll; hlsi=radio_write_data2 if (hlsi) frequency=(unsigned long)(float)(npll)*(float);/ 频率单位 :KHz else frequency=(unsigned long)(float)(npll)*(float)+225);/ 频率单位 :KHz / 读 TEA5767状态 ,并转换成频率 void radio_read(void) unsigned char i; unsigned char temp_l,temp_h; pll=0; i

7、ic_start(); iic_write8bit(0 xc1); /TEA5767 读地址 if(!iic_testack() for(i=0;imax_freq)frequency=min_freq; else frequency-=25; if(frequencymax_freq) frequency=min_freq; else radio_write_data0=pll/ 256+0 x40; radio_write_data1=pll%256; radio_write_data3=0 x11; radio_write_data4=0 x40; radio_write(); radi

8、o_read(); while(!(radio_read_data0 /41 frequency-=40; if(frequencymin_freq) frequency=max_freq; get_pll(); / 加 0 x40 是将 SM 置为 1 为自动搜索模式 /SSL1 和 SSL0控制搜索停止条件 / 搜台成功标志 radio_read(); #endif + 的内容 + #define _ykong_H #include #include #define uint unsigned int #define uchar unsigned char uint key,rkey,nu

9、mkey; uchar RIGHT=0, LEFT=0; uchar timewei=1; sbit YK=P32; uchar stime11=0,1,2,0,6,1,5,2,3,5,7;/ 年月日时分各 2 位 / 数据存放位置 无 年 月 日 时 分 void showkey() /*DisplayOneChar(0,2,0 x30+key/10); DisplayOneChar(1,2,0 x30+key%10); */ showsstime() WriteComLCM(0 x0f); / 0 x0c 不显示光标, 0e 光标显示, 0d 光标闪动 DisplayListChar(0,

10、 2, *TIME SET* ); DisplayListChar(1, 1, 0); if(ET0=1) DisplayListChar(0, 2, line2); / 设置完毕后恢复显示; DisplayListChar(0, 1, L1); / 设置完毕后恢复显示; showfm(); / 恢复显示频率 WriteComLCM(0 x0C); / 关光标 ,恢复显示。 write_1302(0 x8e,0 x00); / 允许写,禁止写保护 if(timewei9)write_1302(0 x82,stime9*16+stime10);/ 分钟数据 if(timewei7)write_1

11、302(0 x84,stime7*16+stime8);/ 小时数据 if(timewei5)write_1302(0 x86,stime5*16+stime6);/ 日期数据 if(timewei3)write_1302(0 x88,stime3*16+stime4);/ 月份数据 if(timewei1)write_1302(0 x8c,stime1*16+stime2);/ 年份数据 write_1302(0 x8e,0 x80); / 打开写保护 timewei=1; void pkey() if(rkey!=key) switch(key) case 70 : ET0=ET0;sho

12、wsstime();break; / mode case 64 : LEFT=1;search(0);showfm();break; / case 21 : auto_search(0); showfm(); break; / - case 9 : auto_search(1); showfm(); break; / + case 68 : showfm();break; / | case 7 : if(ET0=0)ds1302_init(); break; / EQ / 进入和退出时间设置 向下微调 FM 向上微调 FM 自动向下搜台 自动向上搜台 / 在时间设置状态时初始化 1302 ca

13、se 22 : numkey=0; break; /0 case 12 : numkey=1; break; /1 case 24 : numkey=2; break; /2 case 94 : numkey=3; break; /3 case 8 : numkey=4; break; /4 case 28 : numkey=5; break; /5 case 90 : numkey=6; break; /6 case 66 : numkey=7; break; /7 case 82 : numkey=8; break; /8 case 74 : numkey=9; break; /9 ; 遥

14、控中断 void int_init(void)EX0=1; EA=1; 遥控服务程序 void interrupt0()interrupt 0 uchar i3=0,j3=0,k3=0,us=0; uchar addr4=0; EX0=0; for(i3=0;i3255;i3+) /9ms 内有高电平认为是干扰 if(YK) /255 的值实际时间为 800us EX0=1; return; while(!(YK); / 等待 9ms 低电平过去 for(i3=0;i34;i3+) for(j3=0;j38;j3+) while(YK); / 等待高电平过去 while(!(YK); / 等待

15、低电平后面的高电平 while(YK) / 计算这个高电平的时间 for(us=0;us=30)/ 高电平时间过长退出程序 EX0=1; return; addri3=addri31; / 接收一位数据 if(k3=8) addri3=addri3|0 x80; / 高电平大于,则为 1 k3=0; key=(addr2); / 二进制键值 EX0=1; pkey(); showkey(); #endif +ds18b20内容 + #ifndef _DS18B20_H #define _DS18B20_H #include sbit DQ=P33;/ds18b20 与单片机连接口 uchar

16、data disdata5; uint tvalue;/ 温度值 uchar tflag;/ 温度正负标志 *ds1820 程序 * void delay_18B20(unsigned int i9)/ 延时 1 微秒 while(i9-); void ds1820rst()/*ds1820 复位 */ DQ = 1; delay_18B20(4); / 延时 DQ = 0; delay_18B20(100); / 精确延时大于 480us DQ = 1; delay_18B20(40); uchar ds1820rd()/* 读数据 */ unsigned char i9=0; unsign

17、ed char dat2 = 0; for (i9=8;i90;i9-) DQ = 0;dat2=1; DQ = 1; if(DQ) dat2|=0 x80; delay_18B20(10); return(dat2); void ds1820wr(uchar wdata)/* 写数据 */ unsigned char i9=0; for (i9=8; i90; i9-) DQ = 0; DQ = wdata delay_18B20(10); DQ = 1; wdata=1; read_temp()/ 读取温度值并转换 uchar da1,da2; ds1820rst(); ds1820wr(0 xcc);/* 跳过读序列号 ds1820wr(0 x44);/* 启动温度转换 ds1820rst(); ds1820wr(0 xcc);/* 跳过读序列号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论