AT89C52单片机控制BH1415F调频台C程序

发布者:创新之梦最新更新时间:2018-01-07 来源: eefocus关键字:AT89C52  单片机控制  BH1415F调  频台 手机看文章 扫描二维码
随时随地手机看文章

BH1415F调频台控制C程序 使用keil C51 通过调试 
//使用AT89C52单片机,12MHz晶振,用共阳四位LED数码管 
//P0口输出段码,P2口扫描 
//#pragma SRC(d:\aa.asm) 
#include "reg52.h" 
#include "intrins.h"     //_nop_();延时函数用 

#define  Disdata    P0   //段码输出口 
#define  disCAN     P2   //扫描口 
#define  keyio      P1   //键盘接口 
#define uchar unsigned char 
#define uint  unsigned int 
sbit  DA=P3^0;          //数据输出 
sbit  CK=P3^1;          //时钟 
sbit  CE=P3^2;          //片选 
sbit  DIN=P0^7;         //LED小数点控制 
sbit  monolamp=P3^3;    //立体声指示灯 
uint   h;                //延时参量 
// 
//扫描段码表 
uchar code dis_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" "不亮" "-" */                 
uchar code  scan_con[4]={0xfe,0xfd,0xfb,0xf7};   // 列扫描控制字 
uint  data  f_data={0x00},f_data1;               // 频率数据,数据运算时暂存用 
uchar data  display[4]={0x00,0x00,0x00,0x00};    //显示单元数据,共4个数据 
uchar bdata condata=0x08;                        //1415控制字高5位,开机为立体声状态 
sbit mono=condata^3;                            //单声道/立体声控制位 
uchar data  concommand[2],keytemp;               //合成后的2个控制字,键值存放 
// 
/**********************************************************************/ 
// 
// 
/***********11微秒延时函数**********/ 
// 
void delay(uint t) 

for(;t>0;t--); 

// 
/***********LED显示动态扫描函数**********/ 
scan() 

char k; 
    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(uchar val) 

uchar i; 
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) 

case 238:{f_data++;if(f_data>1099){f_data=1099;}fup();break;}//加0.1MHZ 
case 222:{f_data--;if(f_data<800){f_data=800;}fup();break;}  //减0.1MHZ 
case 190:{mono=~mono;if(mono){monolamp=0;}else monolamp=1;fup();break;}//立体声/单声道转换 
case 126:{f_data=1090;fup();break;}//预置109.0MHZ 
case 237:{f_data=1070;fup();break;}//预置107.0MHZ 
case 221:{f_data=1050;fup();break;}//预置105.0MHZ 
case 189:{f_data=1030;fup();break;}//预置103.0MHZ 
case 125:{f_data=1000;fup();break;}//预置100.0MHZ 
case 235:{f_data=970;fup();break;}//预置97.0MHZ 
case 219:{f_data=950;fup();break;}//预置95.0MHZ 
case 187:{f_data=930;fup();break;}//预置93.0MHZ 
case 123:{f_data=900;fup();break;}//预置90.0MHZ 
case 231:{f_data=870;fup();break;}//预置87.0MHZ 
case 215:{f_data=850;fup();break;}//预置85.0MHZ 
case 183:{f_data=830;fup();break;}//预置83.0MHZ 
case 119:{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 
  } 

// 
//*********************结束**************************// 


关键字:AT89C52  单片机控制  BH1415F调  频台 引用地址:AT89C52单片机控制BH1415F调频台C程序

上一篇:四字16*16点阵电子屏字符显示器
下一篇:AT89C51快热式热水器程序

推荐阅读最新更新时间:2024-03-16 15:51

基于ATmega8 单片机控制的正弦波逆变电源
本文正是 基于 这种情况下而设计的一种 基于 单片机 的智能化正弦 逆变电源 。 1正弦 逆变电源 的设计方案 本文所设计的逆变器是一种能够将DC 12 V直流电转换成220 V正弦交流电压,并可以提供给一般电器使用的便携式电源转换器。目前,低压小功率逆变电源已经被广泛应用于工业和民用领域。特别是在交通运输。野外测控作业。机电工程修理等无法直接使用市电之处,低压小功率逆变电源便成为必备的工具之一,它只需要具有一块功率足够的电池与它连接,便能产生一般电器所需要的交流电压。由于低压小功率逆变电源所处的工作环境,都是在荒郊野外或环境恶劣。干扰多的地方,所以对它的设计要求就相对很高,因此它必须具备体积小。重量轻。成本低。可靠性高。抗
[电源管理]
基于ATmega8 <font color='red'>单片机控制</font>的正弦波逆变电源
单片机控制板PCB设计原则
设计电路板最基本的过程可以分为三大步骤:电路原理图的设计,产生网络表,印制电路板的设计。不管是板上的器件布局还是走线等等都有着具体的要求。 例如,输入输出走线应尽量避免平行,以免产生干扰。两信号线平行走线必要是应加地线隔离,两相邻层布线要尽量互相垂直,平行容易产生寄生耦合。电源与地线应尽量分在两层互相垂直。线宽方面,对数字电路PCB可用宽的地线做一回路,即构成一地网(模拟电路不能这样使用),用大面积铺铜。 下面这篇文章就单片机控制板PCB设计需要注意的原则和一些细节问题进行了说明。 1.元器件布局 在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器、晶振、CPU的时钟输入端都易产生噪声,在放置的
[单片机]
单片机控制系统中实现DMA数据传送的方法
1 引 言     许多单片机控制系统中,信息的实时处理往往需要数据的批量传送。不管是采用软件查询,还是采用中断技术,它们都是依靠程序控制,每次传送数据都需要单片机执行若干条指令,因而传输速率受单片机指令运行速度的限制。例如,51系列单片机将外设某一数据存入片外RAM,至少要运行2周期指令MOVX和更改地址指针DPTR指令各两次,若采用12MHz时钟,则需4μs。可见,即使不考虑单片机的其它运算,其数据传送速度也只能达到 250Kbyte/s。对于象高速数据采集等需要成批交换数据的场合,速度实在是太慢了。为了实现单片机与高速外设的数据交换,应用接口扩展电路和DMA 控制器,在几乎不占用单片机资源的情况下,实现了单片机控制系统的D
[单片机]
<font color='red'>单片机控制</font>系统中实现DMA数据传送的方法
单片机控制LED亮灭
1.实验任务 如图所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。 2.电路原理图   3.系统板上硬件连线 (1).把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上; (2).把“单片机系统”区域中的P3.0端口用导线连接到“四路拨动开关”区域中的K1端口上; 4.程序设计内容 (1).开关状态的检测过程 单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即
[单片机]
用<font color='red'>单片机控制</font>LED亮灭
AT89C52单片机为控制器的多功能交通灯控制系统
汽车数量越来越多,而现在的红绿灯处的交通灯模式采用的是定时控制,由于车流量是随时变化的,当此时没有车通过,而相对的车要等到此方向的绿灯结束显示红灯才能通过,在时间和空间方面的应变性能较差,这样不仅浪费了时间,还使得相对方向的车辆造成“堵车”现象。要想解决城市红绿灯处的“大堵车”现象,改善原有的红绿灯处交通灯控制系统是很有必要的。 本文以AT89C52单片机为控制器的交通灯控制系统,该系统通过红外接收器接收信号实现特种车辆(119、120等)自动放行;通过车辆检测电路采集路况信号,经单片机处理后,分配各车道的绿灯时间,实现车流动态调节,LED数码管显示通行倒计时;系统除基本交通灯功能外,还具有通行时间手动设置、可倒计时显示、急车
[单片机]
<font color='red'>AT89C52</font>单片机为控制器的多功能交通灯控制系统
单片机控制的网络交换机设计与实现
引 言   随着计算机性能的提高及通信量的聚增,传统局域网已经越来越超出了自身负荷,交换式以太网技术应运而生,大大提高了局域网的性能。网络交换机能显著的增加带宽,可以建立地理位置相对分散的网络。局域网交换机的每个端口可并行、安全、实时传输信息,而且性能稳定、结构灵活、易于安装、便于管理,能很好地满足企业网和电信运营商宽带接入的需求。 1 网络交换机的硬件设计   随着人们对网络应用中的安全性和高带宽的需求,网络交换机的用途越来越广。本交换机采用了AL101芯片的ROX总线,将3个8口交换芯片连接起来,组成了1个24端口交换机,满足了用户对多交换端口的需求。 1.1 电路性能要求   交换机的高速PCB电路板,在EMC和ESD
[网络通信]
基于HR6P62单片机控制的汽车HID 灯控制系统
  单片机控制技术已经在汽车电子中得到广泛应用,它显著提高了汽车的智能控制水平和安全性能。本文将系统地介绍一款高性价比的海尔HR6P62单片机以及该单片机在HID灯控制器上的应用。 一、汽车前照灯的发展历程   据说第一个汽车前大灯是家用手提灯。汽车刚发明时是没有前照灯的,一个驾驶员在黑暗的旷野上迷路时,一位农民用手提灯把他引回家。1898年,哥伦比亚号电动汽车把电用于前灯和尾灯,这样车灯就产生了。最初的前大灯不能调光,所以在会车时有些晃眼。   第一代汽车前照灯是乙炔气前照灯   乙炔气火焰的亮度比当时的电光源所能达到的亮度高出一倍,因而,在1925年以前使用的汽车前照灯几乎全是乙炔前照灯。   第二代汽车前照灯是电光
[汽车电子]
基于HR6P62<font color='red'>单片机控制</font>的汽车HID 灯控制系统
单片机控制步进电机驱动器原理
script src="/jf/jf-arcMain-1.js" type=text/javascript /script 单片机控制步进电机驱动器原理 步进电机在控制系统中具有广泛的应用。它可以把脉冲信号转换成角位移,并且可用作电磁制动轮、电磁差分器、或角位移发生器等。 有时从一些旧设备上拆下的步进电机(这种电机一般没有损坏)要改作它用,一般需自己设计驱动器。本文介绍的就是为从一日本产旧式打印机上拆下的步进电机而设计的驱动器。 本文先介绍该步进电机的工作原理,然后介绍了其驱动器的软、硬件设计。 1. 步进电机的工作原理 该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通
[单片机]
<font color='red'>单片机控制</font>步进电机驱动器原理
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved