资源描述
开关控制报警器
设计题目:开关控制报警器
设计要求:
1) 根据功能图写出源代码。
2) 调试代码并实现功能。
3) 用开关K1控制报警器,程序控制P1.0输出两种不同的频率 的声音,模拟出很逼真的报警效果。
设计目的:
1) 学会使用控制报警器。
2) 掌握开关控制报警器的编程方法,灵活运用。
3) 熟悉认识单片机课程,对单片机进一步有了深刻了解。
4) 锻炼自己自学与探索的方式提高解决单片机问题能力。
设计过程:
1.原理介绍:程序使P1.0端口输出不同频率的信号,产生方波的程序模拟出很逼真的报警效果,有参数t形成不同的频率,利用了Alarm函数的双重for循环,内循环中的不同频率使SPK=~SPK有了可变的延时间隔,而外循环的延时间隔决定了声音的长短,即报警声音的持续时间,本题是由P1.7端口的开关直接控制的,当开关断开时,报警声停止。
2.系统程序原理图:
开关控制报警器程序框图
3.程序流程图报警器响起
While(1)?
开始
开关K1==1?
?
硬件初始化
:
Yes
Yes No
No
结束
返回
报警器响起
显示子程序入口
SPK=~SPK的时间相等?
No
不报警
Yes
4.程序源代码:
//------------------------------------------------------------
// 名称:开关控制报警器
//--------------------------------------------------------------
//说明:用K1开关控制报警器,程序控制P1.0输出两种不同频率的声音,模拟很逼真的报警效果。
//----------------------------------------------------------------
#include <reg52.h>
#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<t;j++);//由参数t形成不同的频率//
}
}
void main()
{
while(1)
{
if(K1==1)
{
Alarm(90);
Alarm(120);
}
}
}
5.程序说明:
程序由主函数和Alarm函数两部分组成。
此题关键在于Alarm函数的设计,函数中SPK=~SPK语句向P1.0引脚持续输出1010101010这样的序列,形成的脉冲使SOUNDER发出警报。如果SPK=~SPK语句的间隔相等,系统会发出单调的声音,不会模拟出报警的效果。
还有就是在Alarm函数的双重for循环中,内层的for循环使用了参数t,不同的t值使SPK=~SPK具有可变的延时间隔,因此形成了可变频率,从而模拟出报警声音的效果。本题中的Alarm(90)和Alarm(120)使SOUNDER循环发出两种不同频率的声音,模拟出很逼真的报警效果。
6.程序调试:
a) 软件调试:在KEIL中新建project文件,建立.uv2文件,再新建.C文件编写并完成程序,并进行编译生成HEX文件。过程中也出现了很多问题。刚开始调试时出现好多错误,只能对程序重新编写及调试,经过反复调试终于生成HEX文件了。
b) 硬件调试:在proteus软件仿真时。因为原理图是老师给过的,只要把生成的HEX导入调试运行就可以了。直到达到自己想要的结果。
设计总结:
两周的单片机课程设计终于完成了,其中包含着快乐,也有心酸,我的课程题目是开关控制报警器,大家都觉得这个题目是比较简单的,其实并不是这样。做了之后发现老师给的电路图简单。但我认为他真正的困难是C语言设计程序,我刚看到题目时真是一头雾水,不知道从何下手,老师把程序框图给了我们,让我们根据程序框图及硬件电路写出程序代码。而这对于我来讲真的很困难,在平时只是学一些单片机的理论知识,真正应用到实践中还是比较少的,不过,通过查阅资料,终于写好了程序。在这之前可是遇到了好多困难啊,经过老师的,同学的帮助,终于都修改正确,并运行成功了。
在完成单片机课程设计后,我发现自己还有好多的不足,所学的知识根本就是皮毛,更多的只是需要自己去探索,以以至于这次的设计还有些功能不能主动的完成。但通过这次的实验,提高和巩固了我的单片机知识。特别是软件方面,让我们认识到要把理论和实践结合在一起,理论应用到实践中是多么的重要。
参考文献:
《单片机C语言程序设计实训100例——基于8051+proteus仿真》
彭伟 编著 电子工业出版社
《MCS-51系列单片机应用系统设计》
何立民 编著 北京航空航天大学出版社
《A/D D/A转换接口技术及数据采集系统设计》
王秀玲 编著 北京清华大学出版社
《MCS-51/96系列单片机原理及应用》
孙涵芳 编著 北京航空航天大学出版社
《单片机的C语言应用程序设计》
马忠梅 编著 北京航空航天大学出版社
《单片微型计算机原理、应用与实验》
张友德 编著 上海复旦大学出版社
《MCS-51/96系列单片微型计算机原理及其应用》
薛钧义 编著 西安交通大学出版社
展开阅读全文