矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 32802|回复: 82

用RDA5807做个简单的收音机,求助寄存器设置问题

[复制链接]
     
发表于 2017-9-22 18:43:42 | 显示全部楼层 |阅读模式
手里有几块数字收音块子RDA5807SP,一直没有用到的地方。
近日,孩子想唱卡拉OK,想做一个近距离无线话筒。
忽然有一个想法,因为其外围电路极其简单,决定用它做个固定频率的收音机,做无线话筒的接收部分。
无线话筒的发射部分用晶体振荡倍频两级放大,距离在家中10米即可。
说做就做,动手画板子,先简单腐蚀了两块5807的接收板。
就是一个基本的5807接收电路,单片机用的是2051,5伏供电串两个二极管后,有3.6伏供给5807.
焊接好原件。电路图如下
3.jpg
     
 楼主| 发表于 2017-9-22 18:55:17 | 显示全部楼层
单片机我是菜鸟,上网搜了5807的资料,多是英文的,看不太懂。
有搜了5807的一些控制程序,照虎画猫,竟然编译通过了。
本地有一调频台95MHZ,按照PDF文件上的公式,计算好数值,写入单片机。
上机通电试机,竟然响了,收到了电台。
但问题来了,电台的声音一会大一会小。
仔细检查后发现,带电拔掉单片机,收台声音正常。插上单片机,声音忽大忽小。
把5807的8脚SDA数据端对地短路,声音也正常。
分析可能是单片机一直在重复给5807送数据,造成声音忽大忽小的现象。
webwxgetmsgimg (1).jpg
webwxgetmsgimg (2).jpg

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

     
 楼主| 发表于 2018-10-9 23:33:09 | 显示全部楼层
是的,我的也是5807FP的片子。
正在看11F02的PDF文件,
感觉学编程比我做电路画板子还难,
英文的编程方法老是感觉怪怪的,头疼中
回复 支持 1 反对 0

使用道具 举报

     
 楼主| 发表于 2017-9-22 18:59:07 | 显示全部楼层
本帖最后由 w412321 于 2017-9-22 19:02 编辑

兄弟我的单片机水平实在是菜,只是刚刚入门。
恳请坛内高手指教。
同时,也请坛内高手仔细讲解一下5807的寄存器设置问题,
用5807做调频收音机,确实电路简单,灵敏度也高,音质也行。
我写了好几个附近的调频电台频率值,收台非常清晰,灵敏度确实不错。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2017-9-22 19:36:22 | 显示全部楼层
请 yangcheng84坛友指教。
发上来我写的小程序,见笑了。

5807小程序.rar

848 Bytes, 下载次数: 832

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2017-9-22 19:37:59 | 显示全部楼层
取消外循环,只运行一次?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2017-9-22 22:16:20 | 显示全部楼层
我用的是汇编语言写的,没有外循环
回复 支持 反对

使用道具 举报

     
发表于 2017-9-22 23:01:23 | 显示全部楼层
MOV A,55h
LCALL I2C_SEND8BIT
LCALL I2C_ACK
LCALL I2C_STOP
RET
;-----------------------------------------------------
改为:
MOV A,55h
LCALL I2C_SEND8BIT
LCALL I2C_ACK
LCALL I2C_STOP
L1: SJMP L1
;-----------------------------------------------------
回复 支持 反对

使用道具 举报

     
发表于 2017-9-23 11:19:07 | 显示全部楼层
不如用的TDA7021A做接收,灵敏度高而且稳频,灵敏度达到3uV,外围元件简单,TDA7021A是锁频环的设计,频率温度度高,卡拉OK无线话筒就是要求接收机频率稳定度高,不然唱着唱着跑频了。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2017-9-23 23:52:58 | 显示全部楼层
本帖最后由 w412321 于 2017-9-24 00:12 编辑
无声岁月 发表于 2017-9-22 23:01
MOV A,55h
LCALL I2C_SEND8BIT
LCALL I2C_ACK


感谢无声岁月坛友的回复。
刚才按照您修改的试了,效果不行,收不到台了。
按照我的程序,把单片机插到板子上,可以收到台,就是声音忽大忽小的。
这时候用表测量5807的第8脚,电压从1V到4.96V来回跳变。第7脚电压从4.96到4V左右有个小跳变。
8脚电压跳变的时候,声音一会儿大一会儿小。
把8脚对地短路,声音正常。
拔掉单片机,5807的8脚和7脚都是4.96V,收台声音正常。

下面,我把程序分段复制上来,高手给分析一下,毛病在哪儿。
SDA EQU P3.2 ;;
SCL EQU P3.3 ;;

ORG 0000H
START:


mov p3, #0ffh   ;2051  P3口P1口全置高
mov p1, #0ffh

setb  SCL ;;5807 7脚
setb   SDA ;;5807 8脚

lcall yanshi_350ms  调用延时

MOV SP,#5fH      堆栈



mov 50h, #11000000b    ;工作于5767模式
mov 51h, #2dh          ;;;;;;95mhz
mov 52h, #68h          ;;;;;;95mhz
mov 53h, #00011000b;;  5807寄存器设置
mov 54h, #00010000b;;   5807寄存器设置
mov 55h, #00000000b;;   5807寄存器设置

lcall I2C_WRITE   ;调用I2C写入程序
SETB SCL        时钟置高
SETB  SDA        数据置高
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2017-9-23 23:55:37 | 显示全部楼层

第二段,是往5807的寄存器送数据,送完调用停止程序
I2C_WRITE:          ;;;I2C写入数据
                     ;;
LCALL I2C_START     ;发送开始信号


MOV A,50h            ;50H送数;
LCALL I2C_SEND8BIT   ;;;调用送八位数据
LCALL I2C_ACK        ;;;发送接收确认信号
                    


MOV A,51h              51H送数
LCALL I2C_SEND8BIT      送八位数据
LCALL I2C_ACK          发送接收确认信号  


MOV A,52h
LCALL I2C_SEND8BIT
LCALL I2C_ACK


MOV A,53h
LCALL I2C_SEND8BIT
LCALL I2C_ACK


MOV A,54h
LCALL I2C_SEND8BIT
LCALL I2C_ACK



MOV A,55h
LCALL I2C_SEND8BIT
LCALL I2C_ACK
LCALL I2C_STOP          调用停止子程序
RET
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2017-9-23 23:58:00 | 显示全部楼层

第三段,I2C送数据的开始信号、停止信号和确认信号

I2C_START:       ;;;;;发送开始信号
SETB SCL       ;首先确保SDA  SCL都是高电平
SETB SDA
LCALL yanshi_2
CLR SDA       ;先拉低SDA
LCALL yanshi_2
CLR SCL        ;在拉低SCL
LCALL yanshi_2
RET
;=======================================================

I2C_STOP:    ;;;;发送结束信号
CLR SCL       ;首先拉低SCL SDA
CLR SDA
LCALL yanshi_2

SETB SCL         ;先拉高SCL
LCALL yanshi_2
SETB SDA           ;在拉高SDA
LCALL yanshi_2
RET
;=======================================================

I2C_ACk:    ;;;;;发送接收确认信号
SETB SDA
SETB SCL

LCALL yanshi_2
JB SDA,I2C_ACK0
CLR C
SJMP I2C_ACK_END
I2C_ACK0:
SETB C
I2C_ACK_END:
CLR SCL
RET
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2017-9-23 23:59:10 | 显示全部楼层
送8位数据的子程序和延时子程序。

I2C_SEND8BIT: ;;;;;送八位数据
MOV B,#08H
I2C_SEND8BIT_A:
RLC A
MOV SDA,C
SETB SCL

LCALL yanshi_2
CLR SCL
DJNZ B,I2C_SEND8BIT_A
RET
;=======================================================
;---------------------------------------------
yanshi_350ms:  mov r7, #50
y350ms_1:      mov r6, #255
djnz r6, $
djnz r7, y350ms_1
ret

yanshi_2:  mov r7, #50
y150ms_2:      mov r6, #50
djnz r6, $
djnz r7, y150ms_2
ret

end
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2017-9-24 00:08:41 | 显示全部楼层
ylong777 发表于 2017-9-23 11:19
不如用的TDA7021A做接收,灵敏度高而且稳频,灵敏度达到3uV,外围元件简单,TDA7021A是锁频环的设计,频率 ...

感谢兄台的回复和指教。
之所以用5807这个片子,
一是5807确实 收台灵敏度不低(和CXA1191对比)
二是5807电路很简单,音质也不错。
三是用5807作为学单片机编程练手,
我学会后,把程序贡献给大家,
给不会玩单片机的坛友讲清楚76-108MHZ频点的计算和设置方法,
供大家搞小制作玩。

我刚才发的小程序,写入单片机后,5807就可以收到电台,就是声音抑扬顿挫的
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2017-9-24 00:17:32 | 显示全部楼层
ylong777 发表于 2017-9-23 11:19
不如用的TDA7021A做接收,灵敏度高而且稳频,灵敏度达到3uV,外围元件简单,TDA7021A是锁频环的设计,频率 ...

5807的频率稳定度比TDA7021要好得多。
并且它的价格很便宜,频率范围宽,有的5807的频率范围68-108MHz。
学会单片机控制后,置频很方便。
回复 支持 反对

使用道具 举报

     
发表于 2017-9-24 00:28:19 | 显示全部楼层
所有数据传送完毕后,最后再发送一次置7、8脚低电平,如何??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-26 09:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表