/* 实验说明: ?? ?此程序兼容了有源和无源蜂鸣器 实验接线: ?? ?独立按键模块-->单片机管脚 ?? ?K1-->P31 ?? ?K2-->P30 ?? ?蜂鸣器模块-->单片机管脚 ?? ?BEEP-->P15 实验现象: ?? ?按下K1键,蜂鸣器发出声音,按下K2键,蜂鸣器停止发声 */
#include "reg52.h"?? ??? ??? ? //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16;?? ? ?//对数据类型进行声明定义 typedef unsigned char u8;
sbit k1=P3^1; sbit k2=P3^0;
sbit beep=P1^5;
u8 start=0;
/******************************************************************************* * 函 数 名 ? ? ? ? : delay * 函数功能?? ??? ? ? : 延时函数,i=1时,大约延时10us *******************************************************************************/ void delay(u16 i) { ?? ?while(i--);?? ? }
void sound() { ?? ?u8 i=100; ?? ?while(i--) ?? ?{ ?? ??? ?beep=~beep; ?? ??? ?delay(100);?? ? ?? ?} } void keypros() { ?? ?if(k1==0)?? ??? ??? ? //开始 ?? ?{ ?? ??? ?delay(1000); ?? ??? ?if(k1==0) ?? ??? ?{ ?? ??? ??? ?start=1;?? ??? ? ?? ??? ?} ?? ??? ?while(!k1); ?? ?} ?? ?if(k2==0)?? ??? ??? ? ?//停止 ?? ?{ ?? ??? ?delay(1000); ?? ??? ?if(k2==0) ?? ??? ?{ ?? ??? ??? ?start=0;?? ??? ? ?? ??? ?} ?? ??? ?while(!k2); ?? ?} } /******************************************************************************* * 函 数 名 ? ? ? : main * 函数功能?? ??? ? : 主函数 * 输 ? ?入 ? ? ? : 无 * 输 ? ?出 ? ??? ? : 无 *******************************************************************************/ void main() {?? ? ?? ?while(1) ?? ?{ ?? ??? ?keypros(); ?? ??? ?if(start==1) ?? ??? ?{ ?? ??? ??? ?sound(); ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?beep=1; ?? ??? ?}?? ??? ? ?? ?}?? ??? ? }
?
|