单片机收音机程序
时间: 2023-12-17 16:05:13 浏览: 74
基于51单片机的收音机程序
这是一个基于51单片机的简单收音机程序,使用 TEA5767 芯片作为收音机模块。
```c
#include <reg52.h>
#include <intrins.h>
#define SDA P2_0
#define SCL P2_1
sbit LED = P1^0;
unsigned char freq_H, freq_L; // 频率的高8位和低8位
unsigned char volume = 10; // 音量,范围为 0~15
void delay_us(unsigned char us) // 微秒级延时函数
{
while(us--) {
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void delay_ms(unsigned char ms) // 毫秒级延时函数
{
while(ms--) {
delay_us(1000);
}
}
void IIC_Start() // IIC 启动信号
{
SDA = 1;
SCL = 1;
delay_us(2);
SDA = 0;
delay_us(2);
SCL = 0;
}
void IIC_Stop() // IIC 停止信号
{
SDA = 0;
SCL = 1;
delay_us(2);
SDA = 1;
delay_us(2);
}
void IIC_WriteByte(unsigned char dat) // IIC 写一个字节
{
unsigned char i;
for (i = 0; i < 8; i++) {
SDA = (dat & 0x80) >> 7;
dat <<= 1;
SCL = 1;
delay_us(2);
SCL = 0;
delay_us(2);
}
SDA = 1;
SCL = 1;
delay_us(2);
SCL = 0;
}
unsigned char IIC_ReadByte() // IIC 读一个字节
{
unsigned char i, dat = 0;
SDA = 1;
for (i = 0; i < 8; i++) {
SCL = 1;
delay_us(2);
dat <<= 1;
dat |= SDA;
SCL = 0;
delay_us(2);
}
return dat;
}
void TEA5767_Init() // 初始化 TEA5767
{
IIC_Start();
IIC_WriteByte(0x60);
IIC_WriteByte(0x80);
IIC_WriteByte(0x04);
IIC_Stop();
}
void TEA5767_SetFreq(unsigned int freq) // 设置频率
{
freq = (freq - 875) * 4;
freq_H = (freq >> 8) & 0xff;
freq_L = freq & 0xff;
IIC_Start();
IIC_WriteByte(0x60);
IIC_WriteByte(freq_H);
IIC_WriteByte(freq_L);
IIC_WriteByte(volume << 4);
IIC_WriteByte(0x10);
IIC_Stop();
}
void main()
{
TEA5767_Init(); // 初始化 TEA5767
while(1) {
TEA5767_SetFreq(1000); // 设置频率为 1000kHz
LED = ~LED; // LED 翻转
delay_ms(500);
}
}
```
以上代码仅供参考,实际应用中需要根据具体的硬件和需求进行调整。
阅读全文