您的位置 首页 被动

AT89C52单片机的调频台操控规划

AT89C52单片机的调频台控制设计-BH1415F调频台控制C程序 使用keilC51 通过调试

//使用AT89C52单片机,12MHz晶振,用共阳四位LED数码管

//P0口输出段码,P2口扫描

//#pragmaSRC(d:aa.asm)

#include“reg52.h”

#include“intrins.h”//_nop_();延时函数用

#defineDisdataP0//段码输出口

#definedisCANP2//扫描口

#definekeyioP1//键盘接口

#defineucharunsignedchar

BH1415F调频台操控C程序 运用keilC51 经过调试

//运用AT89C52单片机,12MHz晶振,用共阳四位LED数码管

//P0口输出段码,P2口扫描

//#pragmaSRC(d:aa.asm)

#include“reg52.h”

#include“intrins.h”//_nop_();延时函数用

#defineDisdataP0//段码输出口

#definedisCANP2//扫描口

#definekeyioP1//键盘接口

#defineucharunsignedchar

#defineuintunsignedint

sbitDA=P3^0;//数据输出

sbitCK=P3^1;//时钟

sbitCE=P3^2;//片选

sbitDIN=P0^7;//LED小数点操控

sbitmonolamp=P3^3;//立体声指示灯

uinth;//延时参量

//

//扫描段码表

ucharcodedis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};

/*共阳LED段码表“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”“不亮”“-”*/

ucharcodescan_con[4]={0xfe,0xfd,0xfb,0xf7};//列扫描操控字

uintdataf_data={0x00},f_data1;//频率数据,数据运算时暂存用

uchardatadisplay[4]={0x00,0x00,0x00,0x00};//显现单元数据,共4个数据

ucharbdatacondata=0x08;//1415操控字高5位,开机为立体声状况

sbitmono=condata^3;//单声道/立体声操控位

uchardataconcommand[2],keytemp;//组成后的2个操控字,键值寄存

//

/**********************************************************************/

//

//

/***********11微秒延时函数**********/

//

voiddelay(uintt)

{

for(;t》0;t–);

}

//

/***********LED显现动态扫描函数**********/

scan()

{

chark;

for(k=0;k《4;k++)//四位LED扫描操控

{

Disdata=dis_7[display[k]];

if(k==1){DIN=0;}

discan=scan_con[k];delay(90);discan=0xff;

}

}

//

//

/***********频率数据转化为显现用BCD码函数**********/

turn_bcd()

{

display[3]=f_data/1000;if(display[3]==0){display[3]=10;}//最高位为0时不显现

f_data1=f_data%1000;

display[2]=f_data1/100;//求显现十位数

f_data1=f_data1%100;

display[1]=f_data1/10;//求显现个位数

display[0]=f_data1%10;//求显现小数位

}

/***********操控字组成函数**********/

command()

{

concommand[1]=f_data/256;

concommand[0]=f_data%256;

concommand[1]=concommand[1]+condata;

}

/***********写入1个字节函数**********/

write(ucharval)

{

uchari;

CE=1;

for(i=8;i》0;i–)

{

DA=val&0x01;//

_nop_();_nop_();_nop_();_nop_();

CK=1;

_nop_();_nop_();_nop_();_nop_();

CK=0;

val=val/2;

}

CE=0;

}

/***********操控字写入1415函数**********/

w_1415()

{

write(concommand[0]);

write(concommand[1]);

}

//

//*************频率涮新*****************//

fup()

{

turn_bcd();//显现BCD码转化

command();//组成操控字

w_1415();//写入1415

}

//

/***********查键函数**********/

read_key()

{

keyio=0xf0;

keytemp=(~keyio)&0xf0;

if(keytemp!=0)

{

keytemp=keyio;

keyio=0x0f;

keytemp=keytemp|keyio;

while(((~keyio)&0x0f)!=0);//

switch(keytemp)

{

case238:{f_data++;if(f_data》1099){f_data=1099;}fup();break;}//加0.1MHZ

case222:{f_data–;if(f_data《800){f_data=800;}fup();break;}//减0.1MHZ

case190:{mono=~mono;if(mono){monolamp=0;}elsemonolamp=1;fup();break;}//立体声/单声道转化

case126:{f_data=1090;fup();break;}//预置109.0MHZ

case237:{f_data=1070;fup();break;}//预置107.0MHZ

case221:{f_data=1050;fup();break;}//预置105.0MHZ

case189:{f_data=1030;fup();break;}//预置103.0MHZ

case125:{f_data=1000;fup();break;}//预置100.0MHZ

case235:{f_data=970;fup();break;}//预置97.0MHZ

case219:{f_data=950;fup();break;}//预置95.0MHZ

case187:{f_data=930;fup();break;}//预置93.0MHZ

case123:{f_data=900;fup();break;}//预置90.0MHZ

case231:{f_data=870;fup();break;}//预置87.0MHZ

case215:{f_data=850;fup();break;}//预置85.0MHZ

case183:{f_data=830;fup();break;}//预置83.0MHZ

case119:{f_data=800;fup();break;}//预置80.0MHZ

default:{break;}//

}

}

keyio=0xff;

}

//

//

//

/**************主函数****************/

main()

{

Disdata=0xff;//初始化端口

discan=0xff;

keyio=0xff;

DA=0;//bh1415制止

CK=0;//

CE=0;//

for(h=0;h《4;h++){display[h]=8;}//开机显现“8888”

for(h=0;h《500;h++)

{scan();}//开机显现“8888”2秒

f_data=1000;//预置1000MHZ

monolamp=0;//开机立体声灯点亮

fup();//频率送入BH1415

while(1)

{

read_key();//查键按纽

scan();//显现4ms

}

}

//

//*********************完毕**************************//

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/345117.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部