单片机课程设计安防声光报警器.docx
《单片机课程设计安防声光报警器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计安防声光报警器.docx(18页珍藏版)》请在冰豆网上搜索。
单片机课程设计安防声光报警器
目录
第一章:
序言………………………………………(3)
第二章:
设计任务书………………………………(3)
第三章:
电路组成和工作原理……………………(3)
第四章:
程序设计…………………………(7)
第五章:
Proteus仿真……………………………(16)
第六章:
硬件制作及组装调试部分………………(17)
第七章:
组装及调试部分…………………………(18)
第一章序言
单片机课程设计是一门实践课程,要求学生具有制作调试单片机最小系统及外设的能力,能够掌握单片机内部资源的使用。
单片机课程设计内容包括硬件设计、制作及软件编写、调试,学生在熟练掌握焊接技术的基础上,能熟练使用单片机软件开发环境KeilC51编程调试,并使用STCISP调试工具采用串口下载方式联调制作的单片机最小系统。
单片机课程设计题目包含基本部分及扩展部分,基本部分即单片机最小系统部分,扩展部分是对单片机内部资源及外部IO口的功能扩展,使制作的单片机系统具有一定的功能。
第二章设计任务书
一、设计题目:
简易安防声光报警器
二、设计任务及要求:
自制一个单片机最小系统,包括串口下载、复位电路,采用两路外部中断输入门禁和红外探测两路信号(采用两个小按键模拟),中断信号输入后能将报警信息在四位一体数码管上显示,并输出声光报警信号。
三、设计内容
1.芯片简介
2.电路各部分的组成和工作原理。
3.元器件的选取及其电路逻辑图和功能。
4.电路各部分的调试方法。
5.在整机电路的设计调试过程中,遇到什么问题,其原因及解决的办法。
第三章电路组成和工作原理
一.MSC-51芯片简介
MCS-51单片机内部结构
8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
·中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
.数据存储器(RAM)
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
图1
·程序存储器(ROM):
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
·定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
·并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
·全双工串行口:
8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
·中断系统:
8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
·时钟电路:
8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。
INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。
下图是MCS-51系列单片机的内部结构示意图2。
二.设计过程和有关说明:
(1)警情探测:
在该设计中,需采用两路外部中断输入门禁报警和红外报警,分别采用两个小按键模拟。
其中一个按键模拟门禁报警,对应外部中断0;另一个按键模拟红外报警,对应外部中断1。
(2)报警设计:
正常状态下,数码管不显示,当发生门禁报警时,系统发出声光报警信息并在数码管显示1;,当发生红外报警时系统发出声光报警信息并在数码管显示2。
只有由主人按下报警接触按钮或系统复位后,才能解除声光报警并将数码管的数字重置为0。
三.硬件电路设计:
本系统是基于51系列单片机的简易安防声光报警系统,主要包括的硬件电路模块有:
单片机最小系统、七段数码管显示模块、安防报警器(点触开关模拟)、声光报警。
1.单片机最小系统简介
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路。
结构图如右图所示:
各部分的功能介绍如下:
复位电路:
由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.
晶振电路:
典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)
.其电路系统框图如下:
图1系统原理框图
特别说明:
由于实验条件有限,本课程设计中所涉及到的报警器装置采用点触开关模拟,具体电路图如图2所示。
当有报警事件发生时,即开关被按下,报警器输出低电平,单片机由此产生一个中断事件,并对其作出相应的处理,图中C53是用于消除点触开关动作时产生的干扰,防止单片机发生误动作。
图2报警器模拟电路
整体的硬件电路图如图3所示。
图3:
硬件电路原理图
第四章程序设计
基于STC89C51单片机的功能特点,并根据系统的要求编写出基于keilC51的程序,首先单片机上电复位,并进行初始化包括寄存器和数码管,当发生报警事件时,单片机驱动声光报警装置并且在数码管上显示相应的报警信息,退出中断时,单片机检测报警解除按钮,当报警解除按钮被按下时单片机关闭声光报警并清除数码管上的报警信息,具体的程序流程如图4所示。
图4主程序流程图
图5中断函数流程图
参考程序如下所示:
#include
#defineucharunsignedchar
#defineuintunsignedint
//ucharcodetable_data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
//ucharcodetable_select[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//uchartable_buffer[]={0,0};
ucharcount0,count1;
sbitLEDREDCON=P0^0;
sbitLEDGREENCON=P0^1;
sbitspe=P2^0;
sbitKint0=P3^2;
sbitKint1=P3^3;
sbitRS=P3^7;
sbitRW=P3^6;
sbitE=P3^5;
ucharFRQ=0x00;
voiddelay(uintms)
{
uchari;
while(ms--)
{
for(i=0;i<120;i++);
}
}
voidcheck_busy()//判断LCD忙,要不停的检测,所以需要有个大循环
{
while
(1)
{
E=0;//当RS=0和RW=1时,可以读忙信号。
delay(3);
RS=0;
delay(3);
RW=1;
delay(3);
E=1;
delay(3);
if((P1&0x80)==0)
{
break;
}
E=0;
}
}
voidwrite_command(uchartempdata)
{
E=0;//当RS=0和RW=0时,可以写入指令或者显示地址。
delay(3);
RS=0;
delay(3);
RW=0;
P1=tempdata;
delay(3);
E=1;//此处高电平是将数据锁存起来
delay(3);
E=0;
check_busy();
}
voidinit_1602()//LCD1602的初始化子函数
{
write_command(0x38);//写指令
write_command(0x0c);//显示开和光标位置
write_command(0x01);//显示清屏
write_command(0x06);//显示光标移动设置
}
voidwrite_data(uintj)//向LCD1602液晶显示器写数据
{
E=0;//当RS=1和RW=0时,可以写入数据。
delay(3);
RS=1;
delay(3);
RW=0;
P1=j;
delay(3);
E=1;//此处高电平是将数据锁存起来
delay(3);
E=0;
check_busy();
}
voidinit()//初始化子函数
{
TMOD=0x11;
TH0=0x00;
TL0=0xff;
IT0=1;
IT1=1;
IE=0x8f;//EA=1;ET1=1;EX1=0;ET0=1;EX0=1;
IP=0x05;
TR0=0;
TR1=0;
}
voidmain()
{
init();
init_1602();
while
(1)
{
FRQ++;
delay
(1);
}
}
voidexternal_int0()interrupt0
{
TR1=!
TR1;
write_command(0x01);
LEDGREENCON=1;
if(LEDREDCON==1)
{
LEDREDCON=0;
}
else
{
LEDREDCON=1;
}
if(Kint0==0)
{
while(!
Kint0);
delay(5);
LEDREDCON=0;
write_data('0');
spe=~spe;
}
}
voidexternal_int1()interrupt2
{
write_command(0x01);
LEDREDCON=1;
if(LEDGREENCON==1)
{
LEDGREENCON=0;
}
else
{
LEDGREENCON=1;
}
if(Kint1==0)//低电平有效
{
while(!
Kint1);
delay(5);
LEDGREENCON=0;
write_data('1');//显示数据
}
}
voidtimer0()interrupt1
{
TH0=0xfe;
TL0=FRQ;
spe=~spe;
}
voidtimer1()interrupt3
{
TH0=-5000/256;
TL0=-5000%256;
}
第五章Proteus仿真
ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
①实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SP
I调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
②支持主流单片机系统的仿真。
目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
③提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。
④具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
本课程设计在做完方案设计和程序编辑后后就是利用Proteus进行硬件仿真,先把需要的元器件从元件库里面调出来,再按照接线原理图把线连接好,检查线路准确无误后再把用KELL生成的HEX程序文件导入单片机里,一切就绪后开始进行联调,若仿真结果与设计的不同,则先找有无硬件设置错误,再检查程序,不断检查,直至仿真成功。
仿真联调过程如下:
1、KeilC51v7.50软件和Proteus7.0SP软件,分别进行安装。
2、把Proteus安装目录下VDM51.dll(C:
\ProgramFiles\LabcenterElectronics\Proteus6
Professional\MODELS)文件复制到Keil安装目录的\C51\BIN目录中。
3、编辑C51里tools.ini文件,加入TDRV1=BIN\VDM51.DLL("PROTEUSVSMMONITOR51DRIVER")
4、Keil里设置:
project-->optionsforproject-->debugtab
5、选中useProteusVSMmonitor51
6、载入Proteus文件
7、KeilC与Proteus连接仿真调试
单击仿真运行开始按钮,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。
在LED显示器上,循环显示1-4。
8、若联调失败,则返回重新检查再进行调试。
报警器硬件仿真图如下:
第六章硬件制作及组装调试部分
一、硬件制作
在软件仿真成功交老师检查后,就可以去领取器件做硬件设计了。
硬件制作所要求的就是细心,再就是经验。
硬件制作过程如下:
1、领取元器件,检查元器件是否是自己所需要的;
2、规划,综合考虑各个器件的引脚及接电源和节点的情况,对接线路径进行规划,尽量避免线路的重叠,要求做的美观、使用;
3、焊接固定座槽,注意不要短路和段路;
4、连接各条线路,不要错漏,也不要重复,这里尤其要小心;
5、接线完毕进行检查,再把芯片装上去;
6、下载程序
7、接通电源,测试
8、测试成功则交老师检查,否则返回5重做。
二、程序调试过程
1、现对调试过程中出现的问题做如下说明:
(1)硬件:
这部分没有多大的难题。
主要是在最开始对最小系统的理解和参数的选择上面。
单片机最小系统是指用最少的元件组成的单片机可以工作的系统。
应该包括:
单片机、晶振电路、复位电路等。
由于之前没有这类概念,因此查了很多资料才开始有所理解,并开始动手焊接板子。
而在参数的选择方面,有很多参数都是经典的参数,但我也要求自己认真去分析了一下为什么要这么选择。
有些是因为单片机内部要求,有些是用于上拉电阻,还有些则要通过模电中的相关知识进行计算。
对于这部分现在虽有所了解了,但面对一个很复杂的、完全需要自己搭建系统时,我想现在还远远不够。
所以,尽管课程设计结束了,但对单片机的学习不能结束。
(2)软件:
软件的编程选用C来编程,容易理解和掌握。
但是跟我们所学的汇编又有很多的差异。
首先,我学习了KEIL_C51最基本的使用:
从头文件到中断入口地址的编程,再到如何定义和使用单片机的资源,我学到了很多。
比如最开始,我不知道在编程中P0.0口需写为P0^0口,以及大小写都要注意;另外,在数字的使用中不要写在最前面等等很多细节要注意。
我想,如果以后编写更大的一个系统,碰到的问题将会更多,也能收获更多。
(3)但是,在整个设计过程中我没有先使用仿真再进行实物的连接,这是一个不好的习惯,以后必须改掉,以免不必要的损失。
第七章总结
经过两周的努力,我终于完成了单片机课程设计——简易安防声光报警器电路系统。
通过两周不断的查找资料的过程让我积累了很多实际操作经验,已初步掌握了单片机的应用技术,以及单片机的知识和有关器件的应用。
我深刻地体会到单片机技术对当代社会发展的重要作用。
在这次课程设计中,我学会了Proteus的使用和操作,学会了如何利用网络资源,学会了怎么看电路图,读电路图,这些都使我受益匪浅,并为我以后的学习和工作积累了丰富的经验。
使我在单片机的编程设计思路技巧的掌握方面向前迈了一大步。
同时这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,要把所学的理论知识与实践相结合起来,而这次的设计正是从人们所需出发,做出一个有实际应用意义的东西,从而真正做到学以致用,为今后的学习指明了方向。
而且在焊板子的时候要充分细心,我在做最小系统的时候,检查了很久,但是恁是觉得自己的电路没错,也没搭接在一起,后来还是李渥湘同学给我检查出来的,一般元件都是要跨两个孔的,而那个开关却要只要跨一个孔,而板子一般是三个孔连在一起的,导致了,本来只是对角相连的,却成了四个角都连上了,根本就没要了开关的作用。
最后做扩展的时候,还遇到了一个小问题,本来按下去就要报警,在没有复位之前,按其他键都应该不能是它报警暂停的,可是我那个接触有点不好,而且程序方面之前也是没考虑到这点的,导致有时候工作很正常,有的时候声光报警就突然消失了。
经过这次课程设计,我学到很多东西。
社会的不断发展电子产品实践使我认识到我现在所学的知识还远远不够,在实际操作应用中有些问题还不能解决,所以我要在今后的学习中更加努力,学好自己的专业知识以充实自己,来适应日新月异的现代社会。
.