• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: RDA5807M  

资源简介

RDA5807m+IIC +RDS 单片机驱动程序,内含了我自己写的RDS驱动,之前基本所有驱动没有这功能,我只有自己看寄存器增加了 。集合所有控制,实现所有的控制命令,对于使用者来说十分简单实用,只要调用接口即可 。

资源截图

代码片段和文件信息


#include “sys.h“


uchar code xian[4][4]={12345678910111213141516};
uchar code hang[]={0xfe0xfd0xfb0xf7};  //矩阵键盘扫描使用



sbit RW =P1^1;
sbit RS=P1^0;
sbit EN=P2^5;


//uchar code a[]=“FM:   .         “;
//uchar code b[]=“Vol:    RSSI:     “;
//uchar code shu[]=“0123456789“;
//uchar num ;


void delayms(uint x)    //延迟程序
{
    uint ij;
for(i=x;i>0;i--)
   for(j=113;j>0;j--);
}


/*----------------------------------------IIC通信程序---------------------------------------------------*/
void IIC_delayms()        //用于IIC延时
{
_nop_();_nop_();_nop_();_nop_();
}


void OpenIIC()  //IIC启动信号
{
SDA=1;
SCL=1;
IIC_delayms();  
SDA=0;
IIC_delayms();  
SCL=0;
}
void CloseIIC() //IIC停止信号
{
 SCL=0;
 SDA=0;
 IIC_delayms();  
 SCL=1; 
 SDA=1; 
 IIC_delayms();  
}

uchar IIC_Wait_Ack(void) //IIC发送字节后 等待从机发送响应信
{
uchar ucErrTime=0;  
SDA=1;
IIC_delayms();      
SCL=1;
IIC_delayms();    

while(SDA==1)
{
ucErrTime++;
if(ucErrTime>250)
{
CloseIIC();
return 1;
}
}
SCL=0;    
return 0;  



void IIC_Ack(void)   //发送应答信号
{
SCL=0;
SDA=0;   //0±íê?ó|′e
IIC_delayms();  
SCL=1;
IIC_delayms();  
SCL=0;
}
    
void IIC_NAck(void)  //IIC 非应答信号
{
SCL=0;
SDA=1;  
IIC_delayms();  
SCL=1;
IIC_delayms();  
SCL=0;
}        
void IICsendByte(uchar txd)  //IIC?写一个字节
{                        
    uchar t; 
    SCL=0;
    for(t=0;t<8;t++)
    {  
if(((txd&0x80)>>7)==1)
SDA=1;
else 
SDA=0;
        txd<<=1;    
IIC_delayms();   
SCL=1;
IIC_delayms();  
SCL=0;
IIC_delayms();  
    }  



uchar IICReadByte(unsigned char ack)  //IIC读一个字节
{
unsigned char xdata ireceive=0;
SDA=1;   //51单片机讲引脚置高可设为输入引脚
    for(i=0;i<8;i++ )
{
SCL=0; 
IIC_delayms();  
SCL=1;
receive<<=1;
if(SDA==1)receive++;   
IIC_delayms();  
    }
    if (!ack)
        IIC_NAck();
    else
        IIC_Ack();  
    return receive;
}

//uint8 read_data(uint8 reguint8 tBituint8 len)
//{
// uint buff=0;
//
// buff=ReadReg(reg);
//
// buff=buff&(1<//}

uint ReadReg(uchar regAddr) //芯片读寄存器
{
uint buf;
OpenIIC();
IICsendByte(RDA_WRITE);   //发送芯片地址 方向为写
IIC_Wait_Ack();
IICsendByte(regAddr); //发送寄存器地址
IIC_Wait_Ack();
OpenIIC();
IICsendByte(RDA_READ);    // 发送芯片地址 方向为读
IIC_Wait_Ack();
buf = IICReadByte(1); 
buf = buf<<8;
buf =buf|IICReadByte(0); 
CloseIIC();
return buf;
}


void WriteReg(uchar regAddruint val) //芯片写寄存器
{
OpenIIC();
IICsendByte(RDA_WRITE); //发送芯片地址 方向为写
IIC_Wait_Ack();  
IICsendByte(regAddr); //发送寄存器地址
IIC_Wait_Ack();  
IICsendByte(val>>8);
IIC_Wait_Ack();
IICsendByte(val&0XFF);
IIC_Wait_Ack();
CloseIIC();
}

void Vol_Set(uchar vol) //音量设置  0~15
{
uint xdata temp=0;
temp=ReadReg(RDA_R05);
temp&=0xfff0;    
WriteReg(0x05vol|temp) ;
}

void Mute_S

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6872  2018-08-11 17:14  RDA5807M.c

     文件       1944  2018-08-11 17:15  RDA5807M.h

----------- ---------  ---------- -----  ----

                 8816                    2


评论

共有 条评论

相关资源