您好,欢迎访问三七文档
*****************学校《C51程序设计》大作业设计题目:简易安防声光报警器班级:学号:姓名:成绩:2011年月1设计任务设计题目:简易安防声光报警器自制一个单片机最小系统,包括串口下载、复位电路,采用两路外部中断输入门禁和红外探测两路信号(采用两个小按键模拟),中断信号输入后能将报警信息在四位一体数码管上显示,并输出声光报警信号。(1)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系列单片机则采用普林斯顿结构。2电路原理图整体的硬件电路图如图2所示。图2:硬件电路原理图3系统流程图图3主程序流程图图4中断函数流程图4源程序参考程序如下所示:#includeintrins.h#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;中断入口显示报警信息声光报警退出中断上电复位EA=0数码管初始化INT0、INT1均为下降沿触发EA=1P3.4是否为0?检测P3.4解除报警信息是否终止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;i120;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;}参考文献[2]、《微型计算机接口技术及应用》刘乐善编华中理工大学出版社[3]、《计算机硬件技术基础试验教程》邹逢兴编高等教育出版社[4]、《16位微型计算机原理接口及其应用》周佩玲编中国科学技术大学出版社[5]、《微型计算机原理与接口技术》吴秀清编中国科学技术出版社[6]、《微型计算机接口技术》邓亚平编清华大学出版社[7]、《单片机应用程序设计技术》周航慈著北京航空航天大学出版社[8]、《单片机实用技术问答》谢宜仁主编人民邮电出版社
本文标题:简易安防声光报警器
链接地址:https://www.777doc.com/doc-4307795 .html