您的位置:首页 > 其它

51单片机控制的收音机(带串口,遥控,芯片89S52+LC72131+LA1845N)

2016-01-11 14:01 330 查看
本方案采用89S52做为主控芯片,LC72131+LA1845N做为收音模块,支持按键控制,红外线遥控控制,也可通过串口上位机控制,可以通过计算机并口更新单片机软件程序。

音量用两块DS1804控制,频率信息用一块1602液晶显示。





单面板,飞线很多,呵呵。







硬件方案.rar
(Protel99)



PC端控制软件.rar
(VC++7.1,即Visual
Stdio .Net 2003)

本方案的单片机软件使用C语言编写(Keil uVision3),LC72131芯片的驱动稍微麻烦,他使用SPI总线与单片机芯片通讯:

//SPI总线数据传输

//首先发送高位,延时必须大于1.5us。

void WriteLC72131(INT32 _DATA)

{

data INT8 i=0;

PIN_CE=0; //CE默认为低电平

PIN_CL=1; //CL默认为高电平

for(i=1;i<=32;i++)

{

PIN_CL=0; // CL产生下降沿

Delay_2CP(1);

if(_DATA & 0x80000000)

{

PIN_DI=1;

}

else

{

PIN_DI=0;

}

PIN_CL=1; // CL产生上升沿

Delay_2CP(1);

if(i==8)

{

PIN_CE=1;

Delay_2CP(1);

}

_DATA=_DATA<<1;

}

PIN_CE=0;

}

//封装了输入模式1的数据

extern idata union _IN1_DATA

{

INT32 _IN1_DATA_32;

struct _IN1_DATA_BITS

{

INT8 Address :8;

INT16 Frequency :16;

INT8 R3 :1;

INT8 R2 :1;

INT8 R1 :1;

INT8 R0 :1;

INT8 XS :1;

INT8 CTE :1;

INT8 DVS :1;

INT8 SNS :1;

}IN1_DATA_BITS;

}IN1_DATA;

//封装了输入模式2的数据

extern idata union _IN2_DATA

{

INT32 _IN2_DATA_32;

struct _IN2_DATA_BITS

{

INT8 Address :8;

//位域:对于每个独立的位,C语言要求低位写在前边;

//字节顺序不受影响,仍然是高字节在前。

INT8 B04 :1;

INT8 B03 :1;

INT8 B02 :1;

INT8 B01 :1;

INT8 IO2 :1;

INT8 IO1 :1;

INT8 IOC2 :1;

INT8 IOC1 :1;

INT8 DZ1 :1;

INT8 DZ0 :1;

INT8 UL1 :1;

INT8 UL0 :1;

INT8 DOC2 :1;

INT8 DOC1 :1;

INT8 DOC0 :1;

INT8 DNC :1;

INT8 TEST2 :1;

INT8 TEST1 :1;

INT8 TEST0 :1;

INT8 IFS :1;

INT8 DLC :1;

INT8 TBC :1;

INT8 GT1 :1;

INT8 GT0 :1;

}IN2_DATA_BITS;

}IN2_DATA;

完整源代码:

单片机软件.rar


备注:该方案是学习51单片机时的习作。

推荐一个这方面的技术大牛:Ningpanda工作室 http://ningpanda.21ic.org

http://blog.21ic.com/user1/2339/archives/2008/52580.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: