51 单片机 控制节拍产生示例程序
#include
sbit speaker=P3^7;
unsigned char Do=108;
unsigned char beat_H=(65536-62500)/256,beat_L()=(65536-62500)%256;
unsigned char tone_H=(65536-1908)/256,tone_L()=(65536-1908)%256;
char times,counts=5;
bit beat_flag;
//=====Timer0中断子程序======================
void tone_timer(void)interrupt 1
{TH0=tone_H;
TL0=tone_L;
speaker=~speaker;
}
main()
{char i;
IE=0x82;
TH0=beat_H;
TL0=beat_L;
for(i=0;i {times=2;
beat_flag=0;
TR0=1;
if(beat_flag==0)
{speaker=~speaker;delay8us(tone[Do]);}
//===静音(1/4拍)=====================================
speaker=0;
times=2;
beat_flag=0;
TR0=1;
while(beat_flag=0);
}
}
//======================================================
void beat_timer(void)interrupt 1
{TH0=beat_H;
TL0=beat_L;
if(--times==0)
{beat_flag=1;
TR0=0;
}
}
//============================================
void delay8us(unsigned charx)
{unsigned char i,j;
for(i=0;i for(j=0;j<1;j++);
}
关键字:51单片机 控制节拍
引用地址:
51单片机控制节拍产生示例程序
推荐阅读最新更新时间:2024-03-16 15:52
基于89C51单片机的环境噪声测量仪的设计
环境噪声监测,是人类提高生活质量,加强环境保护的一个重要环节,在各大城市的繁华街区和居民区,已有大型环境噪声显示器竖立街头。但目前国内的便携式噪声测试仪,多为价格昂贵的进口专用设备,除卫生、计量等环保专业部门拥有外,无法作为民用品推广普及。本文介绍一种以89C51单片机为核心,采用V/F转换技术构成的低成本、便携式数字显示环境噪声测量仪。该仪器工作稳定、性能良好,经校验定标后能满足一般民用需要,可广泛应用于工矿企业、机关学校等需要对环境噪声进行测量和控制的场合。 1 声压级的测量机理 人耳的听阈一般是20m Pa (微帕),痛阈一般是200Pa(帕),其间相差107倍,这样宽广的声压范围很不易测量,而且人耳对声压的相对
[单片机]
51单片机实验板DS18B20测温程序
/*********************************************** ** 实验名:51单片机实验板温度测量(DS18B20) ** 创建人: 谢军洋 ** 描 述:P3.7口输入,输出数据。 **------------------------------------------------------------------ ** CPU:MCS-51 ** 语言:汇编 ** Fosc=12M 此次试验的仿真图 ***************************************************/ GE_BIT EQU 30H SHI_BIT EQU 31H BAI_BI
[单片机]
MCS-51单片机在饱和蒸汽的流量计量补偿中的应用
0 引 言
流体流量的检测与控制是各行各业加强能源、物料管理、进行经济分析、结算和决策的重要依据,也是监控生产过程使其保持优质、安全、提高效率和改善环境的重要手段。尽管目前流量计量计已有几十种之多,然而对于越来越高的计量精确性而言,往往都要采用补偿措施。如用差压式流量计检测饱和蒸汽的流量,设计压力为0.5MPa,当蒸汽压力变化到1.0MPa时其流量误差达-26%左右 [1] 。工况变化越大,引入的误差越大。所以,在一些需要精确计量或者工况波动范围大而且波动频繁的场合必须采用补偿措施。
流体计量补偿技术,就是针对不同的流量计,检测不同流体而建立的一种修正方法。随着自动化技术的进步,计算机及其它智能装置的出现,自动补偿的技
[单片机]
51单片机抢答器设计
任务描述 某企业承担了某抢答比赛抢答器系统的设计,要求如下:①可同时供3名选手参加比赛,他们的编号分别是1、2、3,每名选手各用一个抢答按钮,按钮的编号与选手的编号相对应,分别是S1、S2、S3。②给主持人设置两个控制开关“START”和”END”,用来控制系统中抢答的开始和结束。③抢答器具有数据所存、显示和声音提示的功能。抢答开始前,若有选手按动抢答按钮,视为违规,要显示其编号,并长响蜂鸣器;抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED数码管上显示出选手的编号,同时蜂鸣器给出音响提示,此外,要封锁输入电路,禁止其他选手抢答。优先抢答选手的编号将一直保存到主持人将系统清零为止。 硬件电路图 元件清单 C
[单片机]
基于51单片机ADC0808的proteus仿真
使用ADC0808的IN0通道,输入CLOCK为500KHZ,采用AT89C51单片机 ADC0808的ADDA、ADDB、ADDC为000对应通道IN0 ADC0808的ADDA、ADDB、ADDC为001对应通道IN1 ADC0808的ADDA、ADDB、ADDC为010对应通道IN2以此内推。 START和ALE可以共用一个I/O口,它们是同步的。 本文采用IN0通道所以ADDA、ADDB、ADDC直接接地。 数码管显示部分代码,数码管采用共阴极显示 #include REGX52.H #include Delay.h sbit we1=P3^0; sbit we2=P3^1; sbit w
[单片机]
基于51单片机的CAN通讯协议C语言程序
//-----------------------函数声明,变量定义-------------------------------------------------------- #include reg52.h sbit int0 = P3^2; //-----------------------定义寻址的基址-------------------------------------------------------- #define base_Adr 0x00 //-----------------------定义总线定时寄存器的值-----------------------------------
[单片机]
51单片机:用ADC0832做模数转换,测量电压大小
问题要求 利用51单片机,外加一个ADC0832模数转换器,设计一个可以实时测量电压的电路。测量电压的范围是0-5V(允许误差),要求测出的电压用数码管实时显示,精确到小数点后两位。 代码编写: //---------------------------------------------------------- // 用ADC0832测量电压,并将测量值显示在数码管上 //---------------------------------------------------------- #include reg51.h #include intrins.h #define uchar unsigned char
[单片机]
51单片机精确延时设计
在我们使用单片机的时候,很多情况下需要用到精确的延时。比如在跟DS18B20进行通讯的时候需要遵循严格的时序,这就需要我们严格把控程序执行的时间。 一般我们都是通过执行空语句的方式来使程序延时。这种方法是用循环嵌套的方式使程序执行空操作,达到延时的目的;除此之外还有使用中断的方式等。 我们可以通过debug来验证我们的函数延时是否准确。本次实验采用12M的晶振进行仿真模拟,应当对软件进行一些设置。在option中将晶振频率改为12M。用12M的晶振是因为这时候一条指令周期恰好是1us,方便我们计算。 首先我们构建一个延时函数void delay_10us( unsigned char tick ),即每次延时的最小单位
[单片机]