不能隨便出去的時期,用手頭的零件做個數字收音機,收音模塊5807M,IIC通訊,0.91寸OLED IIC通訊的,EC11,一對一編碼器,自帶一個按鍵,就用編碼器+自帶按鍵操作,單片機翻了翻盒子,發現兩片STC15W408AS,就這個了。
折騰了兩天,昨晚上調試成功,今天整了一份Kicad的圖紙,帶自己隨便畫的一個小板圖,還有程序全套。
制作出來的實物圖如下:
電路原理圖如下:
單片機源程序如下:
- /*---------------數字調頻收音機------------------*/
- /* 學習之用,請勿商用 */
- /* 轉載請注明:數字收音機RDAV1.0 */
- /*-----------------------------------------------*/
- #include<rda.h>
- #include<ec11.h>
- #include<i2c.h>
- #include<5807.h>
- #include<oled.h>
- #include<bmp.h>
- void main()
- {
- u8 keynum;
- u32 rxfreq=9480,vol=2,tn,vol1,xfreq,yfreq;
- oledinit();
- oledbmp(0,0,128,4,BMP1);
-
- rdainit(); //RDA5807 初始化
- freqset(rxfreq); //頻率設置
- volset(vol); //音量設置
- seeset(6); //搜臺靈敏度設置,靈敏度太高會導致雜音,越小靈敏度越高,最大15。
- seektion(1);
-
- delay_ms(3000);
- oledclr();
- oledchine(0,0,0);
- oledchine(16,0,1);
- oledchar(40,0,'-',16);
-
- oledchar(72,0,'.',16);
-
- oledstr(88,0,"MHz-",16);
- oledchine(0,2,2);
- oledchine(16,2,3);
- oledchar(64,2,'-',16);
- oledchar(88,2,'-',16);
-
- while(1)
- {
- keynum=kpass();
-
- switch(keynum)
- {
- case 0:
- break;
- case 1:
- rxfreq+=10; //頻率+
- if(rxfreq>10800)
- rxfreq=10800;
- freqset(rxfreq);
- break;
- case 2:
- rxfreq-=10; //頻率-
- if(rxfreq<8830)
- rxfreq=8830;
- freqset(rxfreq);
- break;
- case 3:
- vol+=1; //音量+
- if(vol>15)
- vol=15;
- volset(vol);
- break;
- case 4:
- vol-=1; //音量-
- if(vol<1)
- vol=1;
- volset(vol);
- break;
- }
- if(tn!=rxfreq|vol1!=vol)
- {
- tn=rxfreq;
- vol1=vol;
- xfreq=rxfreq/100;
- yfreq=rxfreq/10%10;
- olednum(72,2,vol,2,16);
- olednum(48,0,xfreq,3,16);
- olednum(80,0,yfreq,1,16);
- }
-
- }
- }
復制代碼
所有資料51hei提供下載:
rdAv0.1.7z
(47.46 KB, 下載次數: 308)
2020-2-28 20:04 上傳
點擊文件名下載附件
數字調頻收音
|