单片机研究性学习报告题目:铁路公路平交道口安全防护系统设计学院及专业:机电学院车辆专业指导教师:万里冰组员:许昶11225057 周庆朝12225030许双双11225056时间:2014.6.5目录一、工程背景二、系统设计功能三、小组分工四、仿真结果五、实验总结六、参考文献七、附录一、芯片介绍八、附录二、汇编程序一、工程背景随着我国城镇及城市化的进一步发展,以及火车时速的进一步提升,导致在某些大城市(如北京)出现“城区越长越大,荒郊野外成为繁华小区;火车越开越快,列车时速超过140公里”的现象,因而穿行平交火车道口变得愈发危险了。
就拿北京市而言,五环以内存在30多处平交道口,道口事故发生的潜在危险很大,而一旦发生事故,伤亡人数和经济损失都会很多。
道口平交改立交存在许多制约因素(比如经济方面的以及会影响周边地区列车通行)。
目前道口防护的改造,主要是增加道口信号、防护栏、警铃、派人看管等。
为了提高隔离与防护的效率,消除因人员疏忽导致事故的可能性,道口防护应采用信息化、科技化的手段,用科学技术引领平交道口的安全防护。
而这也是我们设计的“平交道口安全防护系统”所要实现的目的。
二、系统设计功能1.列车接近道口,触发防护系统:①警告灯闪,蜂鸣器发出警报,通知道口内公路车辆及行人在30s内撤出道口②30s后,道口栏木放下,将道口封闭2.列车驶入道口3.列尾清出道口,解除防护系统:警告灯停止闪烁,蜂鸣器停响,道口栏木开启三、小组分工四、仿真结果(1)程序开始执行(2)列车接近道口①灯亮铃响②30s延时,放道口栏木(3)列车驶出道口①灯灭,铃不响②道口栏木升起(4)再来一辆机车其余同理五、实验总结这次单片机研究性学习不仅巩固了以前所学过的知识,而且学到了很多在书本上没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。
通过这次研究性学习使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力,同时在设计的过程中发现了自己的不足之处。
经过三个人的共同努力,我们顺利完成研究性学习任务,这是一个磨练意志的过程。
从课程题目的选择开始,硬件和软件的设计,到最后的软件仿真完成,这其中经历了很多困难,但最重要的是我们在这个过程中得到了锻炼。
一方面通过51单片机等器件的设计让我们学习和掌握了单片机的基础知识和要点,也是以前学的知识得到了应用;另一方面使用软件进行设计和仿真的过程也让我们掌握了计算机辅助设计的方法。
这是需要不断尝试,校核,修改,最后完成一个合理的设计的过程。
需要很大的细心和耐心。
这在很大程度上培养了全组同学拼搏的工作精神,使我们每一个人都受益匪浅。
通过本次课程,我们不仅学到了许多有关单片机的知识,同时也感受到了团队合作的重要性。
同时利用图书馆和网络能帮助我们有效快速地找到需要的资料。
再者,与他人交流是成功的关键,在交流中不仅能强化自己的知识体系,也扩展了思维。
课程设计是思考,发问,动手,提高的过程。
我们会在以后的学习中不断学习,积累经验,完善自己。
六、参考文献[1]赵嘉蔚.《单片机原理与接口技术》.北京:清华大学出版社,2010.2[2]徐爱钧.《单片机原理实用教程:基于proteus虚拟仿真》(第2版).北京:电子工业出版社,2011[3]谢维成.《单片机原理与应用》[D].北京:清华大学.2003七、附录一芯片介绍(AT89C51)·与MCS-51 兼容·4K字节可编程FLASH存储器·寿命:1000写/擦循环·数据保留时间:10年·全静态工作:0Hz-24MHz·三级程序存储器锁定·128×8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路特性概述AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
管脚说明:VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(计时器0外部输入)P3.5 T1(计时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V 编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
八、附录二编程程序ORG 0000H 各种中断入口SJMP MAINORG 0003H ;INT0中断程序入口,即火车进入指定段钢轨AJMP WORK ;道口防护设施开始工作,使用INT0中断ORG 000BH ;T0中断程序入口;出发后,30s延时,防护门关闭,使用T0中断AJMP BARRIER ;道口栏木关闭,使用T0中断ORG 0013H ;INT1中断程序入口AJMP RSET ;道口防护解除,复原,使用INT1中断ORG 001BH ;T1中断程序入口AJMP SOUND ;生成方波,为蜂鸣器提供震荡电压,使用T1中断;主程序入口MAIN: CLR P1.0 ;关闭蜂鸣器CLR P1.1 ;关道口栏木信号初始化CLR P1.2 ;开道口栏木信号初始化CLR P1.3 ;灯不亮MOV IE, #8BH ;开EA(允许所有中断),ET1(允许T1中断);ET0(允许T0中断),EX0(允许INT0中断)终端初始化;设置30s延时,晶振频率为12MHZ MOV TMOD, #21H ;设置工作方式,T0工作于方式1(16位计数器);T1工作于方式2(8位自动重载计数器方式)MOV TH0, #3CHMOV TL0, #0B0H ;设置50ms一循环MOV R3, #03HMOV R2, #58H ;实际上,#258H 即600次循环后道口栏木就MOV TH1, #0C4H ;设置蜂鸣器的频率MOV TL1, #50H ;蜂鸣器的周期为50msMOV TCON, #05H ;设置INT0,INT1负跳变触发(下降沿触发)SJMP $WORK: SETB TR0 ;启T0计数,控制延时关门SETB TR1 ;启T1计数,控制蜂鸣器开,此时蜂鸣器开始响CLR EX0 ;不允许INT0中断,防止火车在道口时;另一火车进入而引起重复响应SETB P1.3 ;灯亮CLR P1.2 ;开道口栏木信号初始化CLR P1.1 ;关道口栏木信号初始化SETB EX1 ;允许INT1中断,即允许列车出去时解除防护RETI ;中断程序返回BARRIER: DJNZ R2, WAITMOV R2, #0FFHDJNZ R3, WAITCLR TR0 ;关T0计数MOV R3, #03HMOV R2, #58H ;重复赋值MOV R7, #0FFHSETB P1.1CYC:DJNZ R7, CYCCLR P1.1WAIT:RETI ;中断返回RSET: CLR TR1 ;停T1计数,控制蜂鸣器的关闭,此时蜂鸣器不响SETB EX0 ;允许INT0中断,即允许下一次响应;检测下一列火车是否进入设置的钢轨CLR EX1 ;不允许INT1中断,即有两列火车出去时不要重复响应CLR P1.3 ;灯不亮MOV R7, #0FFHSETB P1.2CYCO: DJNZ R7,CYCOCLR P1.2RETISOUND: CPL P1.0 ;取反RETI ;中断返回。