大学方案正文天然气压力监控系统.docx
《大学方案正文天然气压力监控系统.docx》由会员分享,可在线阅读,更多相关《大学方案正文天然气压力监控系统.docx(19页珍藏版)》请在冰豆网上搜索。
大学方案正文天然气压力监控系统
1天然气压力监控系统的概念设计
本课题设计的天然气压力监控系统是通过调节天然气压力储气罐进气管道的流量使存气罐中的压力稳定在200Pa-800Pa之间,从而能使天然气通过储气罐的出气管稳定的供给给用户使用。
在压力值大于上限值或者小于下线值时,系统能发出声光报警并控制步进电机转动实现自动监控,同时也有人性化的人工手动控制。
2天然气压力监控系统总体方案设计
此天然气压力监控系统来来源于生产实际,设计要求既满足用户要求又使系统简单、经济、稳定、可靠。
本课题打算分四个模块进行解决:
压力数据采集与存储模块、数据显示模块、声光报警与步进电机驱动模块、人工控制模块。
系统硬件电路原理框图如下:
系统硬件电路原理框图
本系统中,通过扩散硅压力传感器将压力非电量转换为微弱的电信号,通过信号放大电路,将微弱的电信号转化为A/D能转化的阈值,使输入的模拟信号的电压为0-5V,压力传感器的量程为0-1000MPa。
然后将模拟信号转化成数字信号传送给8051单片机进行数据的处理;通过比较设定在8051单片机内的上、下限压力值参数,来决定是否应启动相应的报警与控制程序。
当前压力值超过设定的上限值时,系统会进行声光报警,并控制步进电机转动使天然气储气罐进气管的阀口关小,从而达到自动调节储气罐中压力的目的。
整个过程中的压力值变化会通过LED显示屏显示出来,便于记录与生产管理。
软件方面,我们使用汇编语言对8051单片机进行程序设计,用Proteus搭建仿真系统,用KeilC51进行程序汇编。
分为压力数据采集与存储模块、数据显示模块、声光报警与步进电机驱动模块、人工控制模块、这四大模块进行编写。
除了实现所要求的控制功能外,还要进行数据转换,即将所采集到的数据转换为十进制数
2.3天然气压力监控系统的硬件电路设计
根据总体方案设计,本监控系统的硬件电路可划为:
数据采集功能模块、数据显示功能模块、声光报警模块、步进电机驱动模块以及电路图五个部分。
2.3.1数据采集功能模块
压力传感器采用扩散硅压力传感器,在信号的调理电路中用仪表放大器,共模干扰、零漂、温漂的抑制,保证采集数据的精度和可靠度。
模数转换采用ADC0809,将信号预处理电路传送过来的调理信号进行模数转换才传送至8051单片机中进行各种处理。
ADC0809各脚功能如下:
LSB-MSB:
8位数字量输出引脚。
IN0-IN7:
8位模拟量输入引脚。
VCC:
+5V工作电压。
GND:
地。
REF<+):
参考电压正端。
REF<-):
参考电压负端。
START:
A/D转换启动信号输入端。
ALE:
地址锁存允许信号输入端。
<以上两种信号用于启动A/D转换)
EOC:
转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:
输出允许控制端,用以打开三态数据输出锁存器。
CLK:
时钟信号输入端<一般为500KHz)。
A、B、C:
地址输入线。
2.3.2数据显示模块
显示屏采用四位一体LED数码管,由于8051单片机的I/O接口有限,为了节约I/O口,我们采用8155芯片对单片机的I/O口进行扩展,将8051单片机的P0与8155的AD口做数据总线相连,8155的A口做LED数码管的段选信号线,B口做LED数码管的位选信号线。
8155各引脚功能说明如下:
RST:
复位信号输入端,高电平有效。
复位后,3个I/O口均为输入方式。
AD0~AD7:
三态的地址/数据总线。
与单片机的低8位地址/数据总线单片机与8155之间的地址、数据、命令与状态信息都是通过这个总线口传送的。
RD:
读选通信号,控制对8155的读操作,低电平有效。
WR:
写选通信号,控制对8155的写操作,低电平有效。
CE:
片选信号线,低电平有效。
IO/M:
8155的RAM存储器或I/O口选择线。
当IO/M=0时,则选择8155的片内RAM,AD0~AD7上地址为8155中RAM单元的地址<00H~FFH);当IO/M=1时,选择8155的I/O口,AD0~AD7上的地址为8155I/O口的地址。
ALE:
地址锁存信号。
8155内部设有地址锁存器,在ALE的下降沿将单片机P0口输出的低8位地址信息及,IO/的状态都锁存到8155内部锁存器。
因此,P0口输出的低8位地址信号不需外接锁存器。
PA0~PA7:
8位通用I/O口,其输入、输出的流向可由程序控制。
PB0~PB7:
8位通用I/O口,功能同A口。
PC0~PC5:
有两个作用,既可作为通用的I/O口,也可作为PA口和PB口的控制信号线,这些可通过程序控制。
TIMERIN:
定时/计数器脉冲输入端。
TIMEROUT:
定时/计数器输出端。
VCC:
+5V电源。
2.3.3声光报警模块
声光报警电路采用LM386驱动的蜂鸣器与发光二极管,从某一I/O单调输出一信号控制LM386驱动蜂鸣器和发光二极管进行声光报警,避免采用音乐报警以防止外界各种铃声信号的干扰,同时便于晚上能对报警地点进行准确快速的定位。
2.3.4步进电机的驱动模块
此处步进电机采用三相六拍的驱动方式,步进电机的主要功能是根据存储罐中的压力状况,来进行正反转的控制。
当存储罐中的压力低于设计的下限值时,步进电机进行正转,控制阀门开大;当存储罐中的压力高于设计的上限值时,步进电机进行反转,控制阀门关小,使得存气罐中的压力处于正常压力的范围之内。
2.3.5电路图
2.4天然气压力监控系统的软件设计
软件设计是测控系统的主要内容和重点,设计人员不仅要能够从事硬件设计,同时还必须掌握测控软建的设计,通常,软件设计是先画出软件的流程图,然后根据流程图用汇编语言或者高级语言进行编程。
本课题的程序打算分为数据采集与存储、数据显示、声光报警与电机驱动、人工手动四个模块进行设计。
在程序的编写中我们应该按照这设计的四大模块由上至下的进行编写,一一实现控制的要求。
程序的编译器我们选择KeilC51软件,电路仿真我们选择Proteus软件进行仿真电路的搭建。
2.4.1KeilC51的介绍
KeilC51集成开发环境主要由菜单栏、工具栏、源文件编辑窗口、工程窗口和输出窗口五部分组成。
工具栏为一组快捷工具图标,主要包括基本文件工具栏、建造工具栏和调试工具栏,基本文件工具栏包括新建、打开、拷贝、粘贴等基本操作。
建造工具栏主要包括文件编译、目标文件编译连接、所有目标文件编译连接、目标选项和一个目标选择窗口。
调试工具栏位于最后,主要包括一些仿真调试源程序的基本操作,如单步、复位、全速运行等。
在工具栏下面,默认有三个窗口。
左边的工程窗口包含一个工程的目标右边为源文件编辑窗口,编辑窗口实质上就是一个文件编辑器,我们可以在这里对源文件进行编辑、修改、粘贴等。
下边的为输出窗口,源文件编译之后的结果显示在输出窗口中,会出现通过或错误<包括错误类型及行号)的提示。
如果通过则会生成“HEX”格式的目标文件,用于仿真或烧录芯片。
MCS-51单片机软件KeilC51开发过程为:
1.建立一个工程工程,选择芯片,确定选项;
2.建立汇编源文件或C源文件;
3.用工程管理器生成各种应用文件;
4.检查并修改源文件中的错误;
5.编译连接通过后进行软件模拟仿真或硬件在线仿真;
6.编程操作;
7.应用。
2.4.2Proteus软件的介绍
Proteus软件是它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教案的教师、致力于单片机开发应用的科技工作者的青睐。
它从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2018年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
Proteus软件具有的功能:
原理布图;PCB自动或人工布线;SPICE电路仿真。
2.4.3程序设计流程图
<1)自动监控程序流程图
<2)中断程序流程图<手动控制控制)
2.4.4源程序
ORG0000
LJMPMAIN
STARTEQUP2.5
EOCEQUP2.6
BEEP_LEDEQU2.3
ORG4000
MAIN:
SEBTEA开中断
SEBTEX0开外部中断0
SEBTEX1开外部中断1
CLRIT0选择外部中断低电平触发方式
MOVA#0FFH将P1口置1
MOVP1A
LOOP1:
SEBTSTART启动ADC0809
JNBEOC$等待转换完成
MOVAP1读取数据
MOV34H初始数值存于34H单元
MOVB#4将数据化为实际的大小
MULAB
MOVR1A低八位暂存R1
MOVAB进行高八位的BCD转换
MOVB#25
MULAB
MOVB#100
DIVAB
MOV30HA千位数存30H单元
MOVAB
MOVB#10
DIVAB
MOV31HA百位数存31H单元
MOV32HB十位数存32H单元
MOVAR1进行低八位数的BCD
MOVB#100BCD转换,读百位数
DIVAB
ADDA31H低八位数与高八位数的百位数相加
MOV31HA相加结果存入31H
MOVABBCD转换,读十位数
MOVB#10
DIVAB
ADDA32H低八位数与高八位数的十位数相加
MOV32HA结果存入32H
MOV33HB个位数存入33H
LOOP2:
MOVA30H数据显示模块
DAA读千位数,进行十进制转换
MOVDPTR#TAB寻千位数的段码号
MOVCA@A+DPTR
MOVDPTA#7F01HDP指针指向段选地址
MOVX@DPTRA送入段选码
MOVDPTA#7F02HDP指针指向位选地址
MOVA#07H
MOVX@DPTRA送入位选码
ACALLDELAY延时0.2S
MOVA31H
DAA
MOVDPTR#TAB
MOVCA@A+DPTR
MOVDPTA#7F01HDP指针指向段选地址
MOVX@DPTRA送入段选码
MOVDPTA#7F02HDP指针指向位选地址
MOVA#0BH
MOVX@DPTRA送入位选码
ACALLDELAY延时0.2S
MOVA32H
DAA
MOVDPTR#TAB
MOVCA@A+DPTR
MOVDPTA#7F01HDP指针指向段选地址
MOVX@DPTRA送入段选码
MOVDPTA#7F02HDP指针指向位选地址
MOVA#0DH
MOVX@DPTRA送入位选码
ACALLDELAY延时0.2S
MOVA33H
DAA
MOVDPTR#TAB
MOVCA@A+DPTR
MOVDPTA#7F01HDP指针指向段选地址
MOVX@DPTRA送入段选码
MOVDPTA#7F02HDP指针指向位选地址
MOVA#0EH
MOVX@DPTRA送入位选码
ACALLDELAY延时0.2S
MOVR0#20H持续显示一段时间
DJNZR0LOOP2
LOOP3:
MOVA#32H设定下限值32H表示200Pa
CLRCY清零进位标志
SUBBA34H比较初始值是否小于200
JCLOOP5小于200则跳转电机反转程序
MOVA#8CH设定下限值32H表示800Pa
CLRCY
SUBBA34H
JNCLOOP4大于800则跳转电机正转程序
CLRBEEP_LED关闭蜂鸣器和发光二极管
LJMPMAIN跳转主程序继续检测
LOOP4:
SETBBEEP_LED启动蜂鸣器和点亮LED
SETBP2.0电机A相得电(A>
ACALLDELAY延时0.2S
SETBP2.1电机B相得电(AB>
ACALLDELAY延时0.2S
CLRP2.0电机A相失电(B>
ACALLDELAY延时0.2S
SETBP2.2电机C相得电(BC>
ACALLDELAY
CLRP2.1电机B相失电(C>
ACALLDELAY
SETBP2.0电机A相得电(CA>
ACALLDELAY
CLRP2.2电机C相失电
CLRP2.0电机A相失电
LJMPMAIN跳转主程序继续检测
LOOP5:
SETBBEEP_LED
SETBP2.2电机C相得电
SETBP2.0电机A相得电(CA>
ACALLDELAY
CLRP2.0电机A相失电(C>
ACALLDELAY
SETBP2.1电机B相得电(BC>
ACALLDELAY
CLRP2.2电机C相失电(B>
ACALLDELAY
SETBP2.0电机A相得电(AB>
ACALLDELAY
CLRP2.1电机B相失电(A>
ACALLDELAY
CLRP2.0电机A相失电
LJMPMAIN跳转主程序继续检测
ORG0003
INT0;PUSSACC
PUSSPSW
PUSSB
PUSS30H
PUSS31H
PUSS32H
PUSS33H
PUSS34H
SETBP2.0
ACALLDELAY
SETBP2.1
ACALLDELAY
CLRP2.0
ACALLDELAY
SETBP2.2
ACALLDELAY
CLRP2.1
ACALLDELAY
SETBP2.0
ACALLDELAY
CLRP2.2
CLRP2.0
POP34H
POP33H
POP32H
POP31H
POP30H
POPB
POPPSW
POPACC
REIT
ORG0013
INT1:
PUSSACC
PUSSPSW
PUSSB
PUSS30H
PUSS31H
PUSS32H
PUSS33H
PUSS34H
SETBP2.2
SETBP2.0
ACALLDELAY
CLRP2.0
ACALLDELAY
SETBP2.1
ACALLDELAY
CLRP2.2
ACALLDELAY
SETBP2.0
ACALLDELAY
CLRP2.1
ACALLDELAY
CLRP2.0
POP34H
POP33H
POP32H
POP31H
POP30H
POPB
POPPSW
POPACC
REIT
TAB:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
DELAY:
MOVR7#C8H延时0.2秒程序
DL1:
MOVR6#26H
DL0:
MOVR5#82H
DJNZR5$
DJNZR6DL0
DJNZR7DL1
RET
END
5.总结
本次毕业设计对我来说是收益匪浅,因为自己兴趣的原因,选择了单片机做为自己专业的扩展方向,在做毕业设计中,我深深地感受到了自己知识浅薄,对知识运用能力低,这让我产生了强烈的危机感,之后同过大量查阅与充电,看着自己作品逐渐完善,我充分体验到了学习的快乐与成就感,当然这也是离不开老师和同学们的帮助的。
毕业设计是对大学三年来的最后一次检阅,在毕业设计期间,也充分暴露我性格上的缺点,我是一个自制力较差的同学,思想上对毕业设计有一定的重视,但行动上不能统一,这让我在做毕业设计后期十分吃力与被动,虽最终将毕业设计做完,并完善,但我想其实还有更高的上升空间。
这个毛病我一定要改正,绝对不能带入今后的工作中。
本次毕业设计还提高我对问题的理性分析能力,面对问题我学会了冷静分析理清条理,分清主次,一一解决并总结。
如单片机程序设计中的模块化编程,模块化编程条理清楚,程序的移植和修改都很方便,这对我编程思想上有很大提升。
虽然马上要毕业,但今后的路还很长,现在的社会是学习型社会,我将坚持本着“以逻辑为手段,通过现象看本质”的心态,在工作上继续学习,将来为社会尽自己的一份力量。