开关控制报警器 设计题目:开关控制报警器 设计要求: 1) 根据功能图写出源代码。 2) 调试代码并实现功能。 3) 用开关K1 控制报警器,程序控制P1.0输出两种不同的频率 的声音,模拟出很逼真的报警效果。 设计目的: 1) 学会使用控制报警器。 2) 掌握开关控制报警器的编程方法,灵活运用。 3) 熟悉认识单片机课程,对单片机进一步有了深刻了解。 4) 锻炼自己自学与探索的方式提高解决单片机问题能力。 设计过程: 1 .原理介绍:程序使 P1.0 端口输出不同频率的信号,产生方波的程序模拟出很逼真的报警效果,有参数 t形成 不同的频率,利用了Alarm 函数的双重for 循环,内循环中的不同频率使SPK=~ SPK 有了可变的延时间隔,而外循环的延时间隔决定了声音的长短,即报警声音的持续时间,本题是由P1.7 端口的开关直接控制的,当开关断开时,报警声停止。 2.系统程序原理图: XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51LS2SOUNDER开关C122pFC222pFC310uFX112MR110k 开关控制报警器程序框图 3.程序流程图: Yes Yes No No No Yes 开始 硬件初始化 开 关K1==1? While(1)? 结束 报警器响起 显示子程序入口 SPK=~ SPK 的时间相等? 报警器响起 返回 不报警 4 .程序源代码: //------------------------------------------------------------ // 名称:开关控制报警器 //-------------------------------------------------------------- //说明:用K1 开关控制报警器,程序控制P1.0 输出两种不同频率的声音,模拟很逼真的报警效果。 //---------------------------------------------------------------- #include #define uchar unsigned char #define uint unsigned int sbit SPK = P1^0; sbit K1 = P1^7;//发声函数// void Alarm(uchar t) { uchar i,j; for(i=0;i<200;i++) { SPK = ~SPK; for(j=0;j