久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10336|回復: 0
打印 上一主題 下一主題
收起左側

單片機fm收音機模塊TEA5767模塊電路圖與程序

[復制鏈接]
跳轉到指定樓層
樓主
TEA5767模塊電路圖與程序


單片機源程序如下:
  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include "uart.h"
  6. #include "I2C.h"

  7. sbit s1=P3^4;                    //手動減小鍵
  8. sbit s2=P3^5;                    //手動增加鍵
  9. sbit s3=P3^6;                    //自動減小鍵
  10. sbit s4=P3^7;                    //自動增加鍵

  11. #define max_freq 108000
  12. #define min_freq 87500

  13. unsigned int max_pll=0x339b;           //108MHz時的pll,
  14. unsigned int min_pll=0x299d;           //87.5MHz時的pll.

  15. unsigned char radio_write_data[5]={0x2a,0xb6,0x40,0x11,0x40};        //要寫入TEA5767的數據
  16. unsigned char radio_read_data[5];        //TEA5767讀出的狀態

  17. unsigned long frequency;
  18. unsigned int pll;

  19. void delay_ms(unsigned int i)           //us延時函數
  20. {
  21.   unsigned int j,k;
  22.   for(j=i;j>0;j--)
  23.     for(k=125;k>0;k--);
  24. }       

  25. void radio_write(void)
  26. {
  27.     unsigned char i;
  28.     iic_start();
  29.     iic_write8bit(0xc0);        //TEA5767寫地址
  30.     if(!iic_testack())
  31.     {
  32.         for(i=0;i<5;i++)
  33.         {
  34.             iic_write8bit(radio_write_data[i]);
  35.             iic_ack();
  36.         }
  37.     }
  38.     iic_stop();   
  39. }

  40. //由頻率計算PLL
  41. void get_pll(void)
  42. {
  43.     unsigned char hlsi;
  44.     unsigned int twpll=0;
  45.     hlsi=radio_write_data[2]&0x10;
  46.     if (hlsi)
  47.         pll=(unsigned int)((float)((frequency+225)*4)/(float)32.768);    //頻率單位:k
  48.     else
  49.         pll=(unsigned int)((float)((frequency-225)*4)/(float)32.768);    //頻率單位:k
  50. }


  51. //由PLL計算頻率
  52. void get_frequency(void)
  53. {
  54.     unsigned char hlsi;
  55.     unsigned int npll=0;
  56.     npll=pll;
  57.     hlsi=radio_write_data[2]&0x10;
  58.     if (hlsi)
  59.         frequency=(unsigned long)((float)(npll)*(float)8.192-225);    //頻率單位:KHz
  60.     else
  61.         frequency=(unsigned long)((float)(npll)*(float)8.192+225);    //頻率單位:KHz
  62. }

  63. //讀TEA5767狀態,并轉換成頻率
  64. void radio_read(void)
  65. {
  66.     unsigned char i;
  67.     unsigned char temp_l,temp_h;
  68.     pll=0;
  69.     iic_start();
  70.     iic_write8bit(0xc1);        //TEA5767讀地址
  71.     if(!iic_testack())
  72.     {
  73.         for(i=0;i<5;i++)
  74.         {
  75.             radio_read_data[i]=iic_read8bit();
  76.             iic_ack();
  77.         }
  78.     }
  79.     iic_stop();
  80.     temp_l=radio_read_data[1];
  81.     temp_h=radio_read_data[0];
  82.     temp_h&=0x3f;
  83.     pll=temp_h*256+temp_l;
  84.     get_frequency();
  85. }



  86. //手動設置頻率,mode=1,+0.01MHz; mode=0:-0.01MHz ,不用考慮TEA5767用于搜臺的相關位:SM,SUD
  87. void search(bit mode)
  88. {
  89.     radio_read();        
  90.     if(mode)
  91.     {
  92.         frequency+=10;
  93.         if(frequency>max_freq)
  94.             frequency=min_freq;
  95.     }
  96.     else
  97.     {
  98.         frequency-=10;
  99.         if(frequency<min_freq)
  100.             frequency=max_freq;
  101.     }         
  102.     get_pll();
  103.     radio_write_data[0]=pll/256;
  104.     radio_write_data[1]=pll%256;
  105.     radio_write_data[2]=0x41;
  106.     radio_write_data[3]=0x11;
  107.     radio_write_data[4]=0x40;
  108.     radio_write();
  109. }

  110. //自動搜臺,mode=1,頻率增加搜臺; mode=0:頻率減小搜臺,不過這個好像不能循環搜臺
  111. void auto_search(bit mode)
  112. {
  113.     radio_read();        
  114.     if(mode)
  115.     {
  116.         radio_write_data[2]=0xb1;
  117.         frequency+=20;
  118.         if(frequency>max_freq)
  119.             frequency=min_freq;
  120.     }
  121.     else
  122.     {
  123.                 radio_write_data[2]=0x41;
  124.         frequency-=20;
  125.         if(frequency<min_freq)
  126.             frequency=max_freq;
  127.     }         
  128.     get_pll();

  129.     radio_write_data[0]=pll/256+0x40;      //加0x40是將SM置為1 為自動搜索模式
  130.     radio_write_data[1]=pll%256;   
  131.     radio_write_data[3]=0x11;              //SSL1和SSL0控制搜索停止條件            
  132.     radio_write_data[4]=0x40;
  133.     radio_write();
  134.     radio_read();
  135.     while(!(radio_read_data[0]&0x80))     //搜臺成功標志
  136.     {
  137.         radio_read();
  138.     }   
  139. }


  140. void main()
  141. {
  142. P3=0xff;
  143. UART_Init();
  144. comm("http://shop35585928.taobao.com \r\n\0");
  145. comm("TEA5767 FM \r\n\0");

  146. radio_write();

  147. while(1)
  148. {


  149.   if(s1==0)
  150.   {delay_ms(1);
  151.    if(s1==0)
  152.    {
  153.      while(s1==0);
  154.      search(0);  send_fre(frequency);
  155.    }
  156.   }

  157.   if(s2==0)
  158.   {delay_ms(1);
  159.    if(s2==0)
  160. ……………………

  161. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
原理圖.rar (24.6 KB, 下載次數: 124)
程序.rar (33.49 KB, 下載次數: 123)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕精品一区久久久久 | 国产区视频在线观看 | 岛国毛片在线观看 | 久草色视频 | 色悠悠久 | 日韩综合在线 | 在线观看www视频 | 亚洲 中文 欧美 日韩 在线观看 | 欧美福利影院 | 黑人久久久 | 大香在线伊779 | 免费观看av网站 | 欧美嘿咻 | 少妇精品亚洲一区二区成人 | 91影院在线观看 | 亚洲成人综合社区 | 欧美亚洲视频 | www.亚洲区 | 亚洲午夜在线 | 一区二区三区四区毛片 | 国产欧美精品在线观看 | 天天天操 | 久综合 | h在线观看 | 黄色片在线 | 国产精品亚洲第一区在线暖暖韩国 | 国产亚洲网站 | 亚洲成人黄色 | jdav视频在线观看免费 | 99精品在线观看 | 男女啪啪网址 | 少妇性l交大片免费一 | 精品视频在线播放 | 亚洲一区成人 | 国产高清精品一区二区三区 | www日韩| 精品综合| 一区二区三区在线看 | 国产成人综合一区二区三区 | 欧美精品一二三 | 亚洲精品一二三区 |