单片机学习小组
直播中

范佳慧

7年用户 147经验值
私信 关注

基于MCS-51单片机的调频立体声发射BH1415F芯片的单片机控制程序

//陈永飞于2016年1月,调频立体声发射BH1415F芯片的单片机控制
//是用MCS-51单片机实现的,四位共阳数码管显示频率
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define nop _nop_
#define nop() nop;nop;nop
#define duan P0 //宏定义数码管段选端口
***it SCL=P3^7;  //接BH1415F芯片的时钟引脚
***it SDA=P3^6;  //接BH1415F芯片的数据引脚
***it CE=P3^5;   //接BH1415F芯片的锁存引脚
***it led1=P2^0; //数码管千位位选
***it led2=P2^1; //数码管百位位选
***it led3=P2^2; //数码管十位位选
***it led4=P2^3; //数码管个位位选
***it key1=P1^1; //频率加按键
***it key2=P1^0; //频率减按键
uint pin_li=888;
uchar code tab[]={        0xC0,/*0*/
         0xF9,/*1*/
         0xA4,/*2*/
         0xB0,/*3*/
         0x99,/*4*/
         0x92,/*5*/
         0x82,/*6*/
         0xF8,/*7*/
         0x80,/*8*/
         0x90,/*9*/
};
///////////////////////////////////////////////////////////////////////////
void wriet_BH1415(uint shu)
{
uchar x;
shu=shu|0x0800; //方式控制为立体声
CE=1;
nop();
for(x=0;x<16;x++)
{
   SDA=shu&0x01;
   nop();
   SCL=1;
   nop();
   SCL=0;
   shu>>=1;
   nop();
}
CE=0;
SDA=0;
}
//////////////////////////////////////////////////////////////////////////////////
void delay()
{
uchar a;
for(a=0;a<100;a++);
}
/////////////////////////////////////////////
void desplay(uint k)
{
duan=tab[k/1000];
led1=0;
delay();
led1=1;
duan=tab[k%1000/100];
led2=0;
delay();
led2=1;
duan=tab[k%100/10]&0x7f;    //点亮这位小数点
led3=0;
delay();
led3=1;
duan=tab[k%10]|0x80;    //关小数点
led4=0;
delay();
led4=1;
}
/////////////////////////////////////////////////////
void key()
{
if(!key1)
{
   delay();
   if(!key1)
   {
    pin_li--;
    if(pin_li<760)pin_li=1088;
    wriet_BH1415(pin_li);
   }
}
if(!key2)
{
   delay();
   if(!key2)
   {
    pin_li++;
    if(pin_li>1088)pin_li=760;
    wriet_BH1415(pin_li);
   }
}
}
///////////////////////////////////////////////////
void main()
{
P2=0;
P3=0;
P2=0;
wriet_BH1415(pin_li);
while(1)
{
   key();
   desplay(pin_li);
}
}









更多回帖

发帖
×
20
完善资料,
赚取积分