




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FM收音模块TEA5756程序设计与控制发布: 2010-8-23 14:15|作者: pcb_dz| 来源: 网络| 查看: 31次电子爱好者社区:cJ3 P g/x nlX /现在用830学习板来写FM收音板电子爱好者社区7,Ux z9r,/与手机对比收台的个数,比手机收的电台还要多,OKb&+KWS&0G3r0 ,vG&H,$msb9i0S x4j#l3a8o0#include 6!;G$le0nh0 /L+ZXj,|Ist0Lw!P u0char code reserve 3 _at_ 0x3b; /保留0x3b开始的3个字节电子爱好者社区m&Xq!B *gv/#include SRY
2、dD /K0 *h/a0e1eP0x#oJN0#define uchar unsigned charo!Nr C)Z0#define uint unsigned int电子爱好者社区#WFJo)dEE:JMXzm0#define max_freq 1080电子爱好者社区 Uo,e.hkd#define min_freq 8754o rL+cY#9utC_+I0 r3y;1Bmn)v0uchar data fm_w5=0x00,0x00,0x31,0x17,0x00;/这是要写入的数据e(sO iFY0uchar data fm_r5=0,0,0,0,0; /这是放读出的数据电子爱好者社区1A%
3、3uOv!Yi#Z电子爱好者社区$T/g-1GBT uchar code tabduan/不带点的数码管0-f:K$Q$ WiJ0=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,电子爱好者社区+E:k9t2NTym2?#g0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;5kXC9SW-0 a0Eb ;GFWPY0uchar code tabduan1 /带点的数码管0-9H9s:u6T/t6Ub_d0=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,;&Tk B:u$DbuP6
4、hE0 |X5HIaN0/位定义说明:u:=1向上自动搜台反之。I/j%C f*|Uw0电子爱好者社区D0 S vV l+jY$9A*Q bit SM,SUD,RF,SystemError,STEREO,u,SD,HISI=1,mode;电子爱好者社区lo9Aw/od电子爱好者社区zb z%ZL uchar zhong,IF,ADC,ADC1;8PXwT$c l_0uint fm,PLL,freq1;电子爱好者社区E ak loj kauint frequency=1043;电子爱好者社区U#JF9Ac_KpJ7M*|-?0B0/#includeFM_PLL.h/这里包涵的是FM收音的PLL值
5、电子爱好者社区S)I B m_:c电子爱好者社区?op0# sbit k3=P16;?Sfu.cwc0sbit k4=P17;8AD8E!M:o0sbit k2=P15;S/lc6J6Uj2OJ0sbit k1=P14;电子爱好者社区Xc9v8S G3e,wsbit k7=P34;电子爱好者社区rm#I5q9V/yk8wsbit k8=P35;电子爱好者社区$c Z5&F5f2n Q)y(vCrxc0sbit SDA=P35;电子爱好者社区B$Z _E1A)ga8fxsbit SCL=P34;电子爱好者社区$j K&n-AR1F |/uN电子爱好者社区%f8yF LC delayms(uint
6、 ms)0t&U2f40q/I#F&i Z7Q0uint i,j;S_.vq |nwu z0for(i=0;ims;i+)P U/PE#Q|1a0for(j=0;j=4;电子爱好者社区Di&YG *AuSTEREO=fm_r2&0x80;/最高位就是STEREO值I.B7G2k8zHr9x0电子爱好者社区 BU!dM G4H;ogmM:c0电子爱好者社区A;e2l;F BdX-dB /手动设置频率,mode=1,+0.1MHz; mode=0:-0.1MHz ,9U&_y:!xW-j L.g0/不用考虑TEA5767用于搜台的相关位:SM,SUD电子爱好者社区/CPzJ|void search
7、()电子爱好者社区O%TB)_.f3K*r电子爱好者社区,3gQjn/给频率+/-1,4EETj1l ;t0boK:s6sf3J4a0 if(mode)ge/lJN;mE|P2f0 电子爱好者社区|97o8pEW0CQ frequency+=1;电子爱好者社区P,)S7YnVe)x if(frequencymax_freq)电子爱好者社区 T,pfa:)fJ frequency=min_freq;电子爱好者社区L$i)EoS-j3B:k 电子爱好者社区;Z5J X18IAT7ui else电子爱好者社区 eKKpFZ&|n!R 电子爱好者社区,ix Y*kJ3V frequency-=1;8Z
8、A8(Ou-_$Q.x0 if(frequency0x3e)|(IF0x31)|(ADC7)|(!STEREO)|(!RF); /搜台成功标志电子爱好者社区!yMXQ#:eH&XCKB*U0!I4$GM.PF%R AO0电子爱好者社区Jkk /*id9BCk Wgx Z0 Vn xx%n6q5e;p5v0*/qa&Y9s(e#q0main(void)电子爱好者社区)|5Mn电子爱好者社区 HZ-TeDq Iifrequency=9801;/默认收台为104.3MHz电子爱好者社区!Yd7&e!|rWNget_pll();/计算PLL,差不多要1ms9QQQ+gt(d#?q0get_freq()
9、;&ma;ES*F6j0delayms(60);电子爱好者社区2q DNXw/bA ScHISI=1;,D!lk0s |0 iicInit();agY5Y0S1B0 delayms(300);/等待电源稳定后再发数据电子爱好者社区G.n0L2:kx?电子爱好者社区KH9y+N4U!zL m EA=1;电子爱好者社区$R.wg*yY&TET1=1;电子爱好者社区Hq0n%N se$rTMOD=0x10;电子爱好者社区 i8o8Q4HsTH1=(65536-5000)/256;f5VQEvpYG |.b0TL1=(65536-5000)%256;电子爱好者社区mx;LXW7xTR1=1;电子爱好者
10、社区xR8Yj3NINkDut*jY#Id0frequency=1043;/默认收台为104.3MHzxUZY C yx&u v0get_pll();/计算PLLW?2TdX7eE*U0fm_xing();/给PLL写入TEA5767中,并读出其中的状态q4?0r+o B0 iFZ+qGS0电子爱好者社区+U2s7E9T/#s$s电子爱好者社区R+n-i pD while(1)vut-f 9Y90 电子爱好者社区,o6f/E!(Kv:C电子爱好者社区 P0O;e!v7SM if(!k1)/向上搜台!n K#HR1C1vQ;m0 XeK%p?,A3C0 delayms(15);h;Kc8S*z3
11、qi0 if(!k1)电子爱好者社区k:X-N?,U/(BSe9u 电子爱好者社区Na;H3X1JR0m / while(!k1);/等松手8qiRA6N!n!a#CI0 mode=1;3?-V0F-S(t0 search();电子爱好者社区R4GA-kr%9E&toiW delayms(100);电子爱好者社区 gZ5P L9A6O $Q J eC;UN0_j0 电子爱好者社区&h1H04k oj|m if(!k2)/向上搜台电子爱好者社区 ON t4dl2U0y 6vtS(p#n C3Z1t0 delayms(15);电子爱好者社区RyvOF Hso :vp if(!k2)V%N3pMT:
12、js.U0 电子爱好者社区:W(d|C /while(!k3);/等松手电子爱好者社区(_yPA(OK mode=0;nrQ Eh9G w V0 search();Wv&UpM7X&8x0 delayms(100);5Z h?,D2p M0 8m)Tx/dRX2yo0 电子爱好者社区3aG:g-F-hV y FGb)aG+RRhTU)v0电子爱好者社区/?Lq-f6w/_电子爱好者社区pFk J-eu:D m*oJb s5b0 if(!k4)/向上搜台stbV#0 电子爱好者社区_N3ryg!AG delayms(15);电子爱好者社区3B6al:zw,_ if(!k4)电子爱好者社区Vu m
13、SID4i/Q*z 电子爱好者社区 kM9a9VcGz while(!k4);/等松手电子爱好者社区0z)u;U oD%U#G mode=1;|Q$W-Op3E0 auto_search();W7?G0 电子爱好者社区$b6ds.j$rPO*F 电子爱好者社区l3o1x7N7u1S%C if(!k3)/向上搜台m+T:E(xS a F&ad0 0G7yZn!G ZH!t0 delayms(15);D|$P*+k0 if(!k3)A#wzrD(yr*e?0 RJNKV_v0 while(!k3);/等松手.s4aqAz+a0 mode=0;%43-cU9r!m0 auto_search();电子
14、爱好者社区-M v cg4mU FKf(v.bq!?)v?0 *H,uw e DB0in0? gkg0)e!Q3OG;L,eh!CS+R0/while-end电子爱好者社区*P(wZ(?!U-(vJ B8L/main-end电子爱好者社区 TQLrdm3F:b#mKf$C6FE0/*/电子爱好者社区(zY/_B u D)zuWvoid time1() interrupt 3+wUD/?3l,MX0G?(L X t0TH1=(65536-2000)/256;B9z4Ci&V*0TL1=(65536-2000)%256;6lESL-|B/yv v0 0L6k(O#n&xm0zhong+;/用来数码
15、管计数电子爱好者社区:TU#o:v$B*lP2=0xff;/消余亮电子爱好者社区s)e T1O#zvF*switch(zhong)S-q,BtWX/Ie04nrP:Y mC2%B_d0case 1: P0=tabduanfrequency%10;电子爱好者社区 xuj;sn,d/T P2=0xef; /-5)W;YD7DJ0 break;gq p y6q0case 2: P0=tabduan1frequency%100/10;c Qb#E9i0 P2=0xdf; /-十位6i;n$g y Uaw;PF0 break;电子爱好者社区-k:gD0-b ZE _case 3: P0=tabduanf
16、requency%1000/100;电子爱好者社区9O;Cvy;Mu P2=0xbf; /-百位7Nc 2CF|)i1s0 break;FWD:etW0case 4: if(frequency/1000=0)P0=0xff;电子爱好者社区I(p,cc/m else P0=tabduanfrequency/1000;电子爱好者社区F+F$WC$jQA P2=0x7f;/-千位8电子爱好者社区_L/L&j9J |NXf$P / zhong=0;u0*RF5myv;C$i0 break;电子爱好者社区fwW Z3sXs)电子爱好者社区M$-S0B,R!Z case 5: P0=tabduan(IF%
17、16);P D9K5l7e/f6C0 P2=0xfe; /-1位个bW1E$A 0 break;电子爱好者社区+sK fKqj S R*D3RXcase 6: P0=tabduan(IF/16);电子爱好者社区,Xu/fXJ9 P2=0xfd; /-2位电子爱好者社区d0bR;ac break;电子爱好者社区EC x6h9c ;2gcase 7: P0=tabduanADC;6Q&o0RQ uv-K!qI)j0 P2=0xfb; /-3位电子爱好者社区,/Fx.VBmln$L%n break;电子爱好者社区K#X6e_!gcase 8: P0=tabduanRF;电子爱好者社区BfBB& Ct
18、I+E P2=0xf7; /-4位,电子爱好者社区Qo6l/Dua zhong=0;电子爱好者社区xil/wV3 i;+gq break;电子爱好者社区w/ L1K1YY)e:R82rK0pX o0XM9Akd0电子爱好者社区n Js2t# G/中断end5h+_X6W0#include j3Cku3F0#define delayNOP(); _nop_();_nop_();_nop_();_nop_();电子爱好者社区/RN-n;W2Z.Ye电子爱好者社区w);C9RW;f 79F;xQt d D1yg7c Rc0电子爱好者社区,H(pwn)AF6K /-电子爱好者社区F*Scee X/ 函
19、数名称: iic_start()alWxE%Cv*v0/ 函数功能: 启动I2C总线子程序_fvZUQ*Y(S0/-7Tpi!cY5|0void iic_start(void)电子爱好者社区w.dY7t2mHX /时钟保持高,数据线从高到低一次跳变,I2C通信开始电子爱好者社区)UQ8s,SDA = 1;电子爱好者社区 |#j,c0J_ D s,ESCL = 1;z8H4G7ZA+R0delayNOP(); / 延时5us9|3F1Z,R,a0q.u0 SDA = 0;电子爱好者社区MJ1g w:O YxldelayNOP();TI ?xO7V3G0 SCL = 0;k&PS9l6gV0电子爱
20、好者社区 OZ_n/-电子爱好者社区O1vxh(Wz/ 函数名称: iic_stop()电子爱好者社区8E_:SQ#c)xs o#a/ 函数功能: 停止I2C总线数据传送子程序b e* CbZ0/-电子爱好者社区3gN,(xe%l ?,lvoid iic_stop(void)r ?%pcX0电子爱好者社区#WOt)yZ;lSDA = 0; /时钟保持高,数据线从低到高一次跳变,I2C通信停止电子爱好者社区 L:Ai*BZC N)v$OSCL = 1;电子爱好者社区8 ?(d8zCw%zdelayNOP();电子爱好者社区 K%R!JEFSDA = 1;W*k!wx+gn p0delayNOP(
21、);4sP;xQ;SH0 SCL = 0;)J8l u3x0电子爱好者社区0e;p APHr/-电子爱好者社区CU o$?$n/ 函数名称: iicInit_()电子爱好者社区y(y2C&L2J hGM!A/ 函数功能: 初始化I2C总线子程序WH.l(m4_9Eag1q9S0/-电子爱好者社区y:P+a!q/Xvoid iicInit(void)UH,lcb Y&a0|7fd0 F3Wb%e.UZ-l0 SCL = 0;电子爱好者社区;(d)i,Rt.Q iic_stop();Q8r%I#SHv#d3j0 电子爱好者社区N8t1b$W+/-电子爱好者社区-o?1r-H |/ 函数名称: sl
22、ave_ACKeS.v-E-Dv0/ 函数功能: 从机发送应答位子程序电子爱好者社区!?)t.U)R)K*Bv#V/-电子爱好者社区Sv_ EX9d7w$Bvoid slave_ACK(void)电子爱好者社区bBd#r1Yb0t U7m.X$Z,k0SDA = 0;)Y9h3bZes1u0SCL = 1;XL7S$%a0delayNOP();电子爱好者社区P)Nsh fSCL = 0;E!c OZ8N0电子爱好者社区S7a; N Nk TQo/-d-Zo V6|)bT10/ 函数名称: slave_NOACK电子爱好者社区cDg&ee%j7R+f/ 函数功能: 从机发送非应答位子程序,迫使数
23、据传输过程结束电子爱好者社区,TX2PVpy6/-u*cSF)f&X0void slave_NOACK(void)3?x!nkLo Xxxa0电子爱好者社区,E!2LQ z7n8B bmSDA = 1;y6FQ3Q D0SCL = 1;dBg(oF/+dM0delayNOP();电子爱好者社区$QM.i ?XTSDA = 0;电子爱好者社区5s am kD&j2S SCL = 0;w5ef0W_8G.L3L;$08DvsI.p0/-电子爱好者社区v a:R!X5P/ 函数名称: check_ACK电子爱好者社区)gUJI-W/ 函数功能: 主机应答位检查子程序,迫使数据传输过程结束电子爱好者社
24、区4J T5Em2|(A3x/-M5X8KBle+w0void check_ACK(void)hd#G*0 d/a&wT)z:0 SDA = 1; / 将p1.1设置成输入,必须先向端口写1电子爱好者社区2HbEHx0EIHSCL = 1;电子爱好者社区:v3f$j&U6.F1VF0 = 0;-lbq#,o&!uy)F0delayNOP();dxZ6z?0if(SDA = 1) / 若SDA=1表明非应答,置位非应答标志F09yydE W?tRaL0 F0 = 1;Dr%l7v|Q,B;n0 SCL = 0;rq+ g? X(_u(ou 0N:L1MT8Q3O7J7g Sb0/-;b2bah3
25、$uc0/ 函数名称: IICSendByte电子爱好者社区i5? J(K/n:hSv.V/ 入口参数: ch1Bn/E _ o&K%vY1y?0/ 函数功能: 发送一个字节电子爱好者社区s%/q;G;b-l_5h/-;J!g2Yd/D LU2eBVx0void IICSendByte(uchar ch)p?8i#H /Z0|cl dPt$cd0%x)gT*a;|I0unsigned char idata n=8; / 向SDA上发送一位数据字节,共八位电子爱好者社区K_V2E hP-V电子爱好者社区6_.SF48M#nT:f while(n-)5wlq G O*VQNe0XYHF4wx/l0
26、if(ch&0x80) = 0x80) / 若要发送的数据最高位为1则发送位1#aD0U7n*S!rts0 电子爱好者社区;T9W H-b!L0mp SDA = 1; / 传送位15sWoP(Ga0 SCL = 1;G+S L*B8:p9d0 delayNOP();电子爱好者社区+NAJa k s / SDA = 0;电子爱好者社区TH at9Kc1Uk SCL = 0;z;V;C,I0q0 电子爱好者社区N2i8uaw0pg elseeL m0i2Jko0 电子爱好者社区 A#aF%r SDA = 0; / 否则传送位0电子爱好者社区jycb4Jm$? G SCL = 1;电子爱好者社区5f
27、1eUn-Q u delayNOP();fWR:I;EB0 SCL = 0;|I)Fv4X O.yO0 电子爱好者社区r#y7j,IE4wNJF s ch = ch1; / 数据左移一位7S#T#W9N9ujx-E0电子爱好者社区#iyII KKoF Fsn)pL2S-yB)O0/-电子爱好者社区j,JpeH/ 函数名称: IICreceiveByte电子爱好者社区d*o7Q Y+l+mKg9U7z/ 返回接收的数据电子爱好者社区nXPW4k/ 函数功能: 接收一字节子程序K8Ab C0/-AE OC-Df Ca0uchar IICreceiveByte(void):qb7q:h0T004q
28、n5 G ft+G0uchar idata n=8; / 从SDA线上读取一上数据字节,共八位buj)E8vk!hm0?0uchar tdata=0;!7e8h+Db0while(n-):aD-o8vfl:0电子爱好者社区yf0n W UI SDA = 1;4E0pdj:0 SCL = 1;电子爱好者社区 Q7j g,m N,ms tdata =tdata1; /左移一位电子爱好者社区vQ4I%N3h if(SDA = 1)VNc$RfSk&gq;e!Z0 tdata = tdata|0x01; / 若接收到的位为1,则数据的最后一位置1nTD lRd*t0L0 else6G;w. D P*S
29、6H*g 0 tdata = tdata&0xfe; / 否则数据的最后一位置03D!F P v0 SCL = 0;BT8Hhua0电子爱好者社区8T/iTFGj2DOkuafiL S7K3U0return(tdata);#D;Mt/J0电子爱好者社区|J2MTl/-7F%cU l%wP0/ 函数名称: DAC_PCF8591电子爱好者社区 oneV!yOG8?JRC/ 入口参数: slave_add从机地址,n要发送的数据个数电子爱好者社区7Z:o4c Ad(p%f/ 函数功能: 发送n位数据子程序RdV-X!t%c%|4T0/-电子爱好者社区Iy4J5-ivoid write_5byte(
30、)g D.m|XqHr;h1B0Nz9_L9q&9n9q3K2F0uchar i;电子爱好者社区F#cP9V2P$L5Yhiic_start(); / 启动I2CgV#w$;NTb/M5T0delayNOP();电子爱好者社区vU)LA$vi B,_电子爱好者社区L/Fky+Efq;R IICSendByte(0xc0); / 发送地址位-m5u-X7d&Iu0check_ACK(); / 检查应答位电子爱好者社区lW%u&?%w$nkXc if(F0 = 1)电子爱好者社区 (tR(|K b4o!y电子爱好者社区q*_)2B3l SystemError = 1;电子爱好者社区D rl3?!m
31、7E return; / 若非应答,置错误标志位电子爱好者社区3) s3A5v Zf y x)J+v2+AB0for(i=0;i5;i+)P4j693K6?0W I!nRA$J0 KvI QV F5s%|0 IICSendByte(fm_wi); /Control byte电子爱好者社区x%a?y:Q3x*O check_ACK();电子爱好者社区*O.TZ8u,:a*J:Q电子爱好者社区vUO3XAN hQM电子爱好者社区-e)Q4tI0u+zv5F 电子爱好者社区-r%nYVh|-iic_stop(); / 全部发完则停止i;S4B#w!s|0delayNOP();电子爱好者社区pn1tZ J&Ode
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年浙江公务员申论a真题及答案
- 《沉积岩特征解析》课件
- 领导者心智模式建立与创新(程钱都)
- 《心脏病换瓣术后的康复与护理》课件
- 《腹部器官标准切面》课件
- 水务公司通知函范本
- 高中生物竞赛课件 -组成细胞的分子基础课时7-生物膜与膜蛋白
- 《工程项目管理》课件2
- 双十二人才招聘策略
- 数学作业深度解读
- 2025年北京市西城区高三二模语文试卷(含答案)
- 玉石代理销售合同协议
- 强基计划个人陈述范文南京大学
- 16G362 钢筋混凝土结构预埋件
- Continual Improvement持续改进程序(中英文)
- 10x2000对称式三辊卷板机设计机械毕业设计论文
- RCA应用于给药错误事情的分析结果汇报
- 申论答题纸-方格纸模板A4-可打印
- 土石方测量方案完整版
- 律师事务所劳动合同范本2(律师助理和实习律师参照适用
- 施工单位动火申请书内容
评论
0/150
提交评论