两个简单的报警程序,希望能对大家有所启发,让单片机发出更美妙的音响
/***********************************************
* 标题: 简单报警声程序
* 日期: 2008-4-30
* yongsheng.gys@163.com
***********************************************/
#include
#include
sbit SPK = P3^4;
unsigned char frq;
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
void timer0() interrupt 1 using 1
{
TH0 = 0xfe;
TL0 = frq;
SPK = ~SPK;
}
main()
{
TMOD = 0x01;
frq = 0x00;
TH0 = 0x00;
TL0 = 0xff;
TR0 = 1;
IE = 0x82;
while(1)
{
frq++;
delayms(1); //改变此处可以改变报警声的节奏长度
}
}
/***********************************************
* 标题: 单片机演奏消防车的报警声音
* 日期: 2008-4-30
* yongsheng.gys@163.com
***********************************************/
#include
#include
sbit SPK = P3^4; //喇叭接到P3.4上
unsigned char frq;
unsigned char flag;
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
void timer0() interrupt 1 using 1
{
TH0 = 0xfe;
TL0 = frq;
SPK = ~SPK;
}
void main()
{
TMOD = 0x01;
frq = 0x00;
TH0 = 0x00;
TL0 = 0xff;
TR0 = 1;
IE = 0x82;
flag=0;
while(1)
{
switch(flag)
{ case 0:frq++;break; //flag标志置0时,frq递增
case 1:frq--;break; //flag标志置1时,frq递减
}
if (!(frq^0xff)) flag=1; //当frq增加到FFH时,flag置1,准备frq递减
if (!(frq^0x00)) flag=0; //当frq递减到00H时,flag置0,准备frq递增
delayms(15); //^为逻辑异或改变此值可改变节奏
}
}
关键字:单片机 报警声
引用地址:
单片机报警声
推荐阅读最新更新时间:2024-03-16 15:21
关于51单片机扩展中断的四种方法
简介:MCS—51系列单片机内部只有两个外部中断源输入端,当外部中断源多于两个时,就必须进行扩展,下面介绍两种简单的扩展方法 一、采用硬件请求和软件查询的方法: 这种方法是:把各个中断源通过硬件“或非(高有效,如CD4002)”(与,低有效)门引入到单片机外部中断源输入端(INT0或INT1),同时再把外部中断源送到单片机的某个输入输出端口,这样当外部中断时,通过“或非”(与)门引起单片机中断,在中断服务程序中再通过软件查询,进而转相应的中断服务程序。显然,这种方法的中断优先级取决于软件查询的次序。其硬件连接和软件编程如下: Void zhongduan (void) interrupt 0 using 3 //中断函
[单片机]
MSP430单片机的中断机制
msp430教程之四 上次和大家聊到了GPIO的使用,但是讲的不是很全面,要是全面涉及的话就是我们后面要讲的内容了,这里我们就不多加描述。在后期的讲解中也会慢慢涉及我们没有讲到的一些功能的。今天我们要涉及一个对于单片机来说非常重要的一个概念和功能。 什么是中断? 我们不以专业术语来描述这个东西,我们以一个比较好理解的方式来讲。首先大家要有一个理解就是我们单片机是按照程序一步一步的执行的,通过仿真的时候大家也可以看出来我们点击单步运行我们就可以看到光标向下移动一步,也就是单片机向下移动一步。就是单步运行的。就像我们人一样,你只能在一个时刻内做一件事情,没有办法说一边吃饭一边喝水吧(极短的时刻内你不行的吧),当你要做另外一件事
[单片机]
c8051f单片机ad采样程序
//------------------------------------------------------------------------------------ // Main.c //------------------------------------------------------------------------------------ // Copyright (C) 2013 SINYD. // BY Wbr // Tool chain: KEIL Full 'c' // //#pragma CD OE DB SB // Compilation directives
[单片机]
加入低价战局 ST发售0.32美元32位元MCU
意法半导体(ST)发表售价达0.32美元32位元微控制器(MCU)。继英飞凌(Infineon)、恩智浦(NXP)及飞思卡尔(Freescale)之后,意法半导体亦推出首款价格逼近8位元的32位元MCU--STM32F030,并具备入门级32位元MCU中少见的功能,藉此大幅提升该款产品的性价比,准备大举抢攻8位元MCU市场。
意法半导体微控制器产品部产品行销经理Patrice Hamard表示,该公司借重制程、封装及测试最佳化的组合,开发出超低价入门级32位元MCU,准备积极抢攻8位元市场版图。系统客户经常面临效能和成本难以取舍的头痛问题,因此该公司发布兼具8位元价格与32位元性能优势的低价32位元MCU,助力系统业者设计出不
[单片机]
pic单片机ad转换c程序分享
A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。A/D转换后,输出的数字信号可以有8位、10位、12位、14位和16位等。 ad转换工作原理 逐次逼近法 逐次逼近式A/D是比较常见的一种A/D转换电路,转换的时间为微秒级。采用逐次逼近法的A/D转换器是由一个比较器、D/A转换器、缓冲寄存器及控制逻辑电路组成,如图所示。基本原理是从高位到低位逐位试探比较,好像用天平称物体,从重到轻逐级增减砝码进行试探。逐次逼近法转换过程是:初始化时将逐次逼近寄存器各位清零
[单片机]
51单片机之延时的哪点事儿
我说的是 单片机C ,书上的延时是这样的,如: void delay02() { unsigned char i,j,k; for(i=2;i 0;i--) for(j=200;j 0;j--) for(k=250;k 0;k--); } 它的时间是:2usX250X200X2=200 000us=0.5s 而这个时间是不精确的,我在家里总结出了一个对于这种时间计算法,它的结果和在KEILL中调试时的时间是一样的并且也分开始定义时的类型,char是以1us计算,int 是4us,如果上面的那里定义成int那结果就并不是0.5S啦! 分析法为: 以u
[单片机]
单片机与单片机串行通讯+键盘扫描+数码管显示
发送的子程序:
MOV TMOD,#20H
MOV SCON,#11010000B ANL PCON,#01111111B MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1
ALOOP1: INC R7 MOV A,R7 MOV 35H,A MOV SBUF,#0E1H JNB TI,$ CLR TI JNB RI,$ CLR RI MO
[单片机]
以C8051F340单片机为核心的USB数据采集系统设计
1引言 电子设备运行状态的稳定性直接影响到现代企业的生产, 设备发生故障后高昂的维修费以及设备停机后给企业生产带来的损失, 使得各个企业纷纷采取措施, 降低设备的故障率。通过数据采集系统准确的获取设备运行特征数据, 并对数据进行分析,判断设备的运行状态是否良好, 达到提前预防故障出现、减少停机检修的目的。实际应用中对数据采集系统的可靠性, 准确性和便携性要求很高。目前常用的数据传输网络(如RS232 /RS485, CAN 等)已经不能满足大量采集数据和高速实时数据传输的要求。而USB传输具有高速可靠传输的优势, 具有成本低、可靠性高、维护方便等优点。本文以带有片上USB 和高速AD转换器的C8051F340为核心控制器件, 利用
[单片机]