标题: 调频立体声发射BH1415F芯片的单片机控制程序 [打印本页]

作者: xiaos    时间: 2015-4-3 00:17
标题: 调频立体声发射BH1415F芯片的单片机控制程序
//陈永飞于2016年1月,调频立体声发射BH1415F芯片的单片机控制
//是用MCS-51单片机实现的,四位共阳数码管显示频率
#include<reg51.h>
#include<INTRINS.H>
#define uchar unsigned char
#define uint unsigned int
#define nop _nop_
#define nop() nop;nop;nop
#define duan P0 //宏定义数码管段选端口
sbit SCL=P3^7;  //接BH1415F芯片的时钟引脚
sbit SDA=P3^6;  //接BH1415F芯片的数据引脚
sbit CE=P3^5;   //接BH1415F芯片的锁存引脚
sbit led1=P2^0; //数码管千位位选
sbit led2=P2^1; //数码管百位位选
sbit led3=P2^2; //数码管十位位选
sbit led4=P2^3; //数码管个位位选
sbit key1=P1^1; //频率加按键
sbit 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);
}
}














欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1