|
上次假期實驗了一個收音機,感覺蠻好的,但是挺簡陋,小時候總喜歡小而精致的東西,于是這次就打板做了個小小的收音機。
鋰電供電,0.91oled,可充電,撥輪開關,左右撥動自動搜臺,按下功能切換,二級設置菜單,手動搜臺,音量調整,重低音,頻段等,中鍵長按關機,長按(1.5秒)開機。電池電量檢測,當然還有優化的地方,慢慢來吧,但是但是已經可以用了!上圖看看吧。
306bfd98897cd5d16c4a0e243715634.jpg (97.56 KB, 下載次數: 121)
下載附件
2020-7-24 16:03 上傳
比一塊89c52小點,旁邊是做好的空板。
4645d2b30eeec13ba842d6a109f0838.jpg (142.91 KB, 下載次數: 149)
下載附件
2020-7-24 16:03 上傳
開始調試
4fcc913315386d3ab35afa38f392f60.jpg (106.62 KB, 下載次數: 132)
下載附件
2020-7-24 16:03 上傳
基本完工的樣子,燒錄引腳引出腳還在。
51hei瀏覽器截圖20200724160807.jpg (102.51 KB, 下載次數: 120)
下載附件
2020-7-24 16:08 上傳
電路圖
51hei瀏覽器截圖20200724161112.jpg (61.95 KB, 下載次數: 130)
下載附件
2020-7-24 16:11 上傳
畫好的PCB,用的立創eda
51hei瀏覽器截圖20200724161228.jpg (26.21 KB, 下載次數: 122)
下載附件
2020-7-24 16:12 上傳
51hei瀏覽器截圖20200724161257.jpg (24.52 KB, 下載次數: 116)
下載附件
2020-7-24 16:13 上傳
正面背面
下面是部分代碼
---------------------------------------------------------------又亂又長,沒優化------------------------------------------------------------
#include<rda.h>
#include<ec11.h>
#include<i2c.h>
#include<5807.h>
#include<oled.h>
#include<bmp.h>
u8 keynum,see=4,seen,zz=0,zz1,tt1,Bs=1,Bsn=1,bass=1,bassn=1;
u32 rxfreq=9480,vol=2,tn=0,vol1,xfreq,yfreq,drs,drss,txt,fh=0,fh1=0,adcdat=0,adcdat1=1;
u8 nk=0,nk1=1,//功能鍵狀態判斷
nsk=0,nsk1=5;//次級功能鍵判斷
void adcint()
{
P1ASF=0x01;
ADC_RES=0;
ADC_CONTR=0xe0;//復位
}
u32 adcget()
{
u32 temp;
ADC_CONTR|=0x08;
_nop_();
_nop_();
_nop_();
_nop_();
while(!(ADC_CONTR&0x10));
ADC_CONTR=0xe0;//復位清除轉換完成標志
temp=(ADC_RES*33)>>8;
return temp;
}
void ztxs()//上電初始化
{
adcint();
oledinit();
rdainit(); //RDA5807 初始化
freqset(rxfreq); //頻率設置
volset(vol);
seeset(see); //搜臺靈敏度設置 0~15 默認是 7 越低接受到的電臺越多
seektion(1); // 搜臺方向 1 向上搜索 0 向下搜索
delay_ms(300);
oledclr();
oledbmp(0,0,7,1,BMP2);
if(nk==0)
{
oledchar(32,2,'<',16);
oledchar(64,2,'.',16);
oledstr(88,2,"MHz>",16);
}
oledstr(76,-1,"Bass",8);
}
void guanji()
{
oledoff();//關閉顯示
FMen(0);//關閉收音機
INT_CLKO|=0x10;//開啟中斷INT02
EA=1;//中斷使能
PCON=0x02;//掉電
_nop_();
_nop_();
delay_ms(1000);
oledon();
FMen(1);
freqset(rxfreq);
}
void kkpass()
{
keynum=kpass();
if(keynum!=0)
{
fh=0;
fh1=0;
if(keynum==6)//長按關機開外部中斷
{
guanji();
}
if(keynum==10)//特殊情況P3.3重啟進入boot
IAP_CONTR=0x60;
--------------------------------------------代碼又亂又長,有附件各位慢慢看。-----------------------------------------------------------------------
eba58a0301163de8624850000c55919.jpg (99.33 KB, 下載次數: 125)
下載附件
2020-7-24 16:16 上傳
!!!!
|
評分
-
查看全部評分
|