当前位置:文档之家› 压力控制系统 实验报告

压力控制系统 实验报告

硬件课程设计实验报告班级:计科13-1班姓名:***学号:************:**时间:2016年1月我们经常要控制压力在某一范围内变化,是压力不超过某以上限值也不低于某一下限值。

而压力控制系统在实际中也有较广泛的应用。

实例1:某大型化肥厂辅助锅炉生产10Mpa 的高压蒸汽。

在正常情况下,高压蒸汽全部通过高压蒸汽透平,然后抽气得4Mpa 的中压蒸汽。

中压蒸汽又分别通过空压机、原料压缩机、冰机等蒸汽透平,充分利用了整齐的能量。

为了确保蒸汽透平整长运转,要求高压蒸汽压力不致过高(<10.2Mpa),要求低压蒸汽不致锅底(>3.8)但并不要求压力维持在某一值不变。

实例2:如果要控制水塔内的水在一定的范围内,当管线水压低于设定的下限时,控制补水泵开启,自动补水。

当管线水位上升至上限时,控制补水泵停止工作由此,我们想到,如何控制其压力大小,使其在一定的范围内按照我们的期望变化。

对于在由风门控制的风道系统中,由人工来监测和控制风门附近的压力是一项很繁琐的工作,因为监测要求监测者进到再次行连续的不间断的循环工作。

监测之后要进行判断,并在数据不符合要求的情况下进行循环控制,直监测时所得的数据符合要求为止。

而且,在某些情况下人工控制是很难实现的,例如,当监测对象的压力很大的时候,或者是监测对象很难接近的时候。

为此,我们目前很需要开发一种简单的压力控制系统来替代人的工作。

这样既可以节省人力资源,又可以使这项繁琐而又难实现的工作变得简单又轻松。

真正实现我们所谓的监测和控制。

1 设计任务与要求---------------------------------------------------4 1.1选题报告------------------------------------------------------41.2提出问题------------------------------------------------------42 需求分析---------------------------------------------------------42.1设计思想------------------------------------------------------43 硬件方案---------------------------------------------------------4 3.1设备器材------------------------------------------------------4 3.2硬件的选择以及芯片说明----------------------------------------73.3实验连线图----------------------------------------------------84 软件方案---------------------------------------------------------8 4.1功能模块------------------------------------------------------84.2系统各模块程序流程图------------------------------------------95 源程序清单和注释------------------------------------------------106 运行结果--------------------------------------------------------187 问题分析与解决方案----------------------------------------------19 7.1实验设计前的问题与解决方案-----------------------------------207.2实验过程中的问题与解决方案-----------------------------------208 结论与体会------------------------------------------------------21 参考文献--------------------------------------------------------211设计任务与要求分析1.1、选题报告选择题目:压力控制系统1.2、提出问题使用可变电压源模拟压力输入,ADC0809进行A/D转换,8255将信息显示在液晶屏上,并控制步进电机转动。

2需求分析2.1设计思想使用0~5V电源输入,用0809 in0口采集数据,in1口输出数据,并将所采集数据量程转换为0.00~10.00Mpa,设置最低(2Mpa)最高(8Mpa)限定压力,8255接收数字信号,8255 a口将信息在液晶屏上显示,b口(pb0~pb3)控制步进电机正反转。

c口对液晶屏进行控制。

3硬件方案3.1、设备器材微机接口实验箱,8086,ADC0809,8255,液晶屏,步进电机3.2、硬件选择及芯片说明8086CPU外部具有16根数据总线,可并行传送16位数据信息;它具有20根地址总线,能直接寻址1MB的内存空间;用低16位地址线访问I/O端口,可以访问64k个I/O端口。

8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。

资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。

它提供64K 8 位元的输出输入(或32K 16 位元),以及固定的向量中断。

大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。

运算结果会储存在操作数中的一个寄存器。

从程序员和使用者的角度看到的结构,亦可称为功能结构。

从功能上来看,8086CPU可分为两部分,即总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。

8086CPU的内部功能结构如图3-2所示:ADC0809 是8 位逐次逼近型A/D转换器。

它由一个8路模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成(见图1)。

多路开关可选通8个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。

三态输出锁存器用于锁存A/D 转换完的数字量,当OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。

8255A是一种通用的可编程并行I/O接口芯片,具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。

它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。

8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。

它是为Intel系列微处理器设计的配套电路,也可用于其它微处理器系统中。

通过对它进行编程,芯片可以工作于不同的工作方式。

在微型计算机系统中,用8255A作为接口时,通常不需要附加外部逻辑电路就可直接为CPU与外设之间提供数据通道。

液晶显示屏是一种内置128×64-12汉字图形点阵的液晶显示控制模块,用于显示汉字及图形。12864A-1汉字图形点阵液晶显示模块集成ST7920驱动器,可显示汉字及图形,内置8192个中文汉字(16×16点阵)、128个字符(8×16点阵)及64×256点阵显示RAM(GDRAM)。

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

8255驱动PB0PB1PB3PB2BA BBBC BD 步进电机ACBD 3.3硬件接线芯片主要连接8086Y1Y382550809cscsin1PA7液晶屏PA0~PA7D0~D7步进电机PB0~PB3BA~BDD0~D70809的片选信号CS接Y3(298h~29fh),in0 接0~5V电压源,clock接8255的PA0,8255d的片选信号CS接Y1(288h~28fh),PA0~PA7接液晶屏的D0~D7,PC0~PC2接液晶屏的三个控制端口(E,RW,I/O),PB0~PB3接步进电机的DA~DB。

硬件连接图4软件方案4.1、功能模块实验设备分为五个模块:输入模块,数模转换模块,压力显示模块,压力异常模块。

(1)、压力传感模块:通过实验箱上的压力传感器(0~5V可变电压源模拟),给与压力传感器一定的压力,产生输入信号。

输入信号将随着压力的不断变化而变化。

(2)、数模转换模块:通过数模转换装置0809AD将输入的模拟信号转换为数字信号,使之能通过液晶屏显示出来。

(3)、显示模块:通过显示屏显示压力传感器读取到的压力值,并与设定的上下限进行比较,做出当前压力过高、正常、过低的判断。

(4)、压力异常模块:压力值应当在一定的范围内变化,当压力高于或低于这一范围时,步进电机将做出反应,开始正/反转4.2、模块程序流程图运行流程图 开始8255初始化启动0809读取0809量程转换压力值电机启动正传>=8Mpa电机启动反转正常<8Mpa拆分显示数值LED 清除LED 显示信息调用延时子程序返回压力值>2Mpa<=2Mpa5源程序IO_ADDRESS EQU 288hDATA SEGMENTHZ_TAB DW 0A1A0H, 0D1B9H,0C1A6H,0BFD8H,0D6C6H,0CFB5H,0CDB3H,0A1A0H ;0-14 标题DW 0C1A6H,0A3AEH,0A3AEH,0A3AEH,0A3AEH,0A1A0H,0D5D7H,0C5C1H;16-30 力XX.XX帕DW 0A3B0H,0A3B0H,0A3B0H,0A3D0H,0A1A0H,0A1A0H,0A1A0H,0A1A0H;32-46 显示状态DW 0A1A0H,0CAB5H,0D1E9H,0C8CbH,0A1C3H,0CDF5H,0B9FAH,0BDF0H;48-62 实验人:王国金HOUR DBMINUTE DBSECOND DBTIME DB 0TEMP DBHZ_ADR DB ? ;存放显示行起始端口地址DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,IO_ADDRESS+3MOV AL,80HOUT DX,AL ;8255初始化CALL TRANSFORM ;调用0809CALL CLEAR ;LCD 清除LEA BX, HZ_TABMOV CH,1 ;显示第1行信息CALL LCD_DISPLEA BX, HZ_TABMOV CH,2 ;显示第2行信息CALL LCD_DISPLEA BX, HZ_TABMOV CH,3 ;显示第3行信息CALL LCD_DISPLEA BX, HZ_TABMOV CH,4 ;显示第4行信息CALL LCD_DISPl1: JMP START ;l1CLEAR PROCMOV AL,0CHMOV DX, IO_ADDRESSOUT DX,AL ;设置CLEAR命令CALL CMD_SETUP ;启动LCD执行命令RETCLEAR ENDPTRANSFORM PROC ;启动0809MOV DX,298HOUT DX,ALMOV CX,0FFHAGAIN: LOOP AGAININ AL,DX ;读取0809的值MOV BL,AL ;量程转换,0.00-10.00MOV AH,0MOV BX,4MUL BXMOV CX,1000 ;将转换量程后的值进行拆分,使之能在LED屏上显示DIV CXMOV CX,AXADD CX,0A3B0HMOV [HZ_TAB+18],CX ;储存十位数值,显示MOV AX,DXMOV DX,0MOV CX,100DIV CXMOV CX,AXADD AX,0A3B0HMOV [HZ_TAB+20],AX ;储存个位数值,显示MOV AX,DXMOV DX,0MOV CX,10DIV CXADD AX,0A3B0HMOV [HZ_TAB+24],AX ;储存第一位小数数值,显示MOV AX,DXMOV DX,0MOV CX,1DIV CXADD AX,0A3B0HMOV [HZ_TAB+26],AX ;储存第二位小数数值,显示CMP [HZ_TAB+20],0A3B2HJNG LOW ;比较下限,小于等于2 lowCMP [HZ_TAB+20],0A3B8HJNL HIGH ;比较上限,大于等于8 highJMP NORMAL ;正常LOW:MOV [HZ_TAB+32],0A1A0HMOV [HZ_TAB+34],0A1A0HMOV [HZ_TAB+36],0D1B9H ;压力过低MOV [HZ_TAB+38],0C1A6HMOV [HZ_TAB+40],0B9FDHMOV [HZ_TAB+42],0B5CDHMOV [HZ_TAB+44],0A1A0HMOV [HZ_TAB+46],0A1A0HMOV DX,289H ;PB口输出脉冲信号 CALL DELAY00MOV AL,00000011B ;步进电机反转OUT DX,ALCALL DELAY00MOV AL,00000110BOUT DX,ALCALL DELAY00MOV AL,00001100BOUT DX,ALCALL DELAY00MOV AL,00001001BOUT DX,ALJMP NEXTRHIGH:MOV [HZ_TAB+32],0A1A0HMOV [HZ_TAB+34],0A1A0HMOV [HZ_TAB+36],0D1B9H ;压力过高MOV [HZ_TAB+38],0C1A6HMOV [HZ_TAB+40],0B9FDHMOV [HZ_TAB+42],0B8DFHMOV [HZ_TAB+44],0A1A0HMOV [HZ_TAB+46],0A1A0HMOV DX,289HCALL DELAY00MOV AL,00001100B ;步进电机正传 OUT DX,ALCALL DELAY00MOV AL,00000110BOUT DX,ALCALL DELAY00MOV AL,0000011BOUT DX,ALCALL DELAY00MOV AL,00001001BOUT DX,ALJMP NEXTRNORMAL: MOV [HZ_TAB+32],0A1A0H ;压力正常MOV [HZ_TAB+34],0A1A0HMOV [HZ_TAB+36],0D1B9HMOV [HZ_TAB+38],0C1A6HMOV [HZ_TAB+40],0D5FDHMOV [HZ_TAB+42],0B3A3HMOV [HZ_TAB+44],0A1A0HMOV [HZ_TAB+46],0A1A0HNEXTR: RETTRANSFORM ENDPFUNCUP PROCMOV AL, 34H ;LCD显示状态命令OUT DX, ALCALL CMD_SETUPRETFUNCUP ENDPLCD_DISP PROCLEA BX, HZ_TABCMP CH, 1 ;判断是否为第一行JZ DISP_SEC1CMP CH,2 ;判断是否为第二行JZ DISP_SEC2CMP CH,3 ;判断是否为第三行JZ DISP_SEC3MOV BYTE PTR HZ_ADR, 98H ;第四行起始端口地址ADD BX,48 ;指向第四行信息JMP NEXTDISP_SEC1: MOV BYTE PTR HZ_ADR,80H ;第一行起始端口地址ADD BX,0 ;指向第一行信息JMP NEXTDISP_SEC2: MOV BYTE PTR HZ_ADR,90H ;第二行起始端口地址ADD BX,16 ;指向第二行信息JMP NEXTDISP_SEC3: MOV BYTE PTR HZ_ADR,88H ;第三行起始端口信息 ADD BX,32 ;指向第三行信息JMP NEXTNEXT: MOV CL,8CONTINUE: PUSH CXMOV AL,HZ_ADRMOV DX, IO_ADDRESSOUT DX, ALCALL CMD_SETUP ;设定DDRAM地址命令MOV AX,[BX]PUSH AXMOV AL,AH ;先送汉字编码高位MOV DX,IO_ADDRESSOUT DX,ALCALL DATA_SETUP ;输出汉字编码高字节CALL DELAYTIME ;延迟POP AXMOV DX,IO_ADDRESSOUT DX, ALCALL DATA_SETUP ;输出汉字编码低字节CALL DELAYTIMEINC BXINC BX ;修改显示内码缓冲区指针INC BYTE PTR HZ_ADR ;修改LCD显示端口地址POP CXDEC CLJNZ CONTINUERETLCD_DISP ENDPCMD_SETUP PROCMOV DX,IO_ADDRESS ;指向8255端口控制端口ADD DX,2NOPMOV AL,00000000B ;PC1置0,pc0置0 (LCD I端=0,W端=0) OUT DX, ALCALL DELAYTIMENOPMOV AL,00000100B ;PC2置1 (LCD E端=1)OUT DX, ALNOPCALL DELAYTIMEMOV AL, 00000000B ;PC2置0,(LCD E端置0)OUT DX, ALCALL DELAYTIMERETCMD_SETUP ENDPDATA_SETUP PROCMOV DX,IO_ADDRESS ;指向8255控制端口ADD DX,2MOV AL,00000001B ;PC1置0,PC0=1 (LCD I端=1) OUT DX, ALNOPCALL DELAYTIMEMOV AL,00000101B ;PC2置1 (LCD E端=1)OUT DX, ALNOPCALL DELAYTIMEMOV AL, 00000001B ;PC2置0,(LCD E端=0)OUT DX, ALNOPCALL DELAYTIMERETDATA_SETUP ENDPDELAYTIME PROC ;延时子程序MOV CX,0FFFFHD1: LOOP D1RETDELAYTIME ENDPDELAY00 PROC NEAR ;延时子程序DELAY10: MOV CX,00fffh;05A4HDELAY20: LOOP DELAY20DEC BLJNZ DELAY10RETDELAY00 ENDPCODE ENDSEND START6运行结果按实验要求:液晶屏显示压力为0.00~10.00Mpa,当压力大于8MPa时,液晶屏第三行显示压力过高,步进电机启动开始正转;当压力小于2Mpa时,液晶屏显示压力过低,步进电机启动反转;压力正常时,液晶屏显示压力正常,步进电机不启动。

相关主题