××大学××学院
《过程控制系统》课程设计
设计题目:智能化压力控制系统设计
学生姓名:
专 业:测控技术与仪器
班级学号: 指导教师:
设计时间:2014.6.23-2014.7.6
目录
一、设计题目与设计任务 ............................................................................... 1 1.设计题目:单片机压力测控系统设计 .................................................. 1 2.设计任务 .................................................................................................. 1 二、前言 ........................................................................................................... 1 三、主体设计 ................................................................................................... 1 1、系统设计 ............................................................................................... 1 2、系统框图 ............................................................................................... 2 3、设计思路 ............................................................................................... 2 4、单片机处理模块...................................................................................2 5、压力传感器1210—030 G—3 S ........................................................... 5 6、AD模数转换芯片ADC0809 ............................................................... 6 7、地址锁存器74LS273............................................................................6 四、参考文献 ................................................................................................... 7 五、结束语 ....................................................................................................... 7 六、完整程序 ................................................................................................... 8 七、仿真结果 ................................................................................................. 10 八、程序流程图 ............................................................................................. 12
一、设计题目与设计任务
1.设计题目:单片机压力测控系统设计 2.设计任务
1、本设计是微机控制的压力测控系统。单片机系统通过压力传感器和检测比较器测得气缸内压力达到某一上限值(176 kPa)和下限值(64 kPa)时,单片机系统控制执行相应的动作(达到上限值时打开放气阀放气,达到下限值关闭放气阀进行充气)。在此过程中若充气或放气10 s仍达不到设定值(176 kPa和64 kPa)则进行光报警。 2、写出压力测量过程,绘制压力控制系统结构图。 3、(1)系统硬件电路设计。
单片机采用at89c51;选择适合上述测量范围的压力传感器,设计数据采集及信号调理电路,设计键盘显示电路及报警电路。 (2)编写压力测量程序。
二、前言
本设计为基于AT89C51单片机的气缸压力测量与控制系统,压力传感器选择1210—030G—3S,能够在0~207kPa范围内有效测量气缸的压力,并进行实时压力(LED)显示。单片机控制部分实现当压力超出上限值176kPa时,放气阀打开进行放气,当压力低于下限值64kPa时,放气阀关闭,气缸充气;压力在正常范围(64~176kPa)时,压力改变不影响放气阀的状态。报警功能实现当压力超出设定的压力范围(64~176kPa)10S时,发光二极管点亮进行报警。
关键词:AT89C51单片机、1210—030G—3S型压力传感器、LED显示、报警。
三、主体设计
1、系统设计
考虑到过程控制系统的一般组成及本次设计的任务要求,本设计主要由以下几部分组成:被控对象(气缸及附带的进气阀和放气阀)、压力传感器FT、A/D转换(ADC0809)、AT89C51单片机、LED显示、报警电路和放气阀驱动电路。
1
2、系统框图
基于AT89C51的压力测控系统
3、设计思路
压力传感器(1210—030G—3S)测量气缸中的压力(0~207kPa)输出电流信号(75~150mA),经A/D模数转换(结果为00000000~11111111即0~255)后给单片机,单片机进行算法处理将传感器的输出信号和测量的压力对应起来并实时显示在LED上,当所测压力大于176kPa时,放气阀打开进行放气,当所测压力小于64kPa时,放气阀关闭,进气阀给气缸充气。此过程中若放气或充气10S任没达到正常的压力范围则进行1S报警。当然A/D转换的启停、压力大小的判断、10S延时都由单片机来控制。
4、单片机处理模块
AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失
2
存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示。 (1)AT89c51主要特点
·与MCS-51 兼容
·4K字节可编程FLASH存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年
·全静态工作:0Hz-24MHz ·三级程序存储器锁定 ·128×8位内部RAM ·32可编程I/O线
·两个16位定时器/计数器 ·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 (2)引脚结构
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口被外部下拉
3
为低电平时,将输出电流,这是由于内部上拉的缘故。在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:来自反向振荡器的输出。
4
5、压力传感器1210——030G—3S
网上查找了很多压力传感器,其中较为典型常用的是上海名动公司生产的MD—PS系列和MD—GA高精度绝压传感器,但是由于二者都不适合本次课程设计的压力范围(0~200kPa),最终选择1210—030G—3S压力传感器,它的测压范围为30*6.895=207kPa,输出电流范围是75~150mA,性能参数如下:
典型应用电路如下:
设计仿真时由于PROTEUS中没有传感器,因此用一个范围为75~150分压电路代替传感器的输出电流,使的仿真得以进行。
5
6、AD模数转换芯片ADC0809
ADC0809是目前广泛使用的逐位逼近型8位单片A/D转换芯片,片内含8 路模拟开关,可允许8路模拟量输入。主要由3部分组成:模拟输入选择部分、转换器部分、输出部分。
ADC0809芯片为28引脚为双列直插式封装,ADC0809主要信号引脚功能说明如下: IN7~IN0——八路模拟量输入通道。 ALE——地址锁存允许信号。
START——转换启动信号。START=1转换启动。 A、B、C——地址线、 通道端口选择线。
CLK——时钟信号。ADC0809要求外接时钟频率为10kHz~1.2MHz。通常使用频率为500KHz的时钟信号。
EOC——转换结束信号。EOC=1,转换结束。 D7~D0——数据输出线。
OE——输出允许信号。OE=1,输出转换得到的数据。 Vcc—— +5V电源。
Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V)。
ADC0809与MCS-51单片机的连接主要涉及两个问题。一是8路模拟信号通道的选择,二是A/D转换完成后转换数据的传送。转换数据的传送有定时传送方式、查询方式、中断方式这三种方式。A、B、C的值与被选择的通道之间的关系如下表1—1所示:
表1—1 通道选择表
7、地址锁存器74LS273
工作原理:(1)1脚是复位/MR,低电平有效,当1脚是低电平时,输出脚Q1、Q2、Q3 、Q4 、Q5 、Q6 、Q7全部输出0,即全部复位;(2)当1脚是高电平时,脚11(即CP)是锁存器控制端,属于上升沿触发;当11脚有一个上升沿,立即锁存输入端的电平信号,并立即呈现在输出脚Q1、Q2、Q3 、Q4 、Q5 、Q6 、Q7上。其引脚图及真值
6
表如下:
四、参考文献
1.谢宜仁. 《单片机硬件接口电路与工程实践》 电子工业出版社。 2. 《单片机原理与接口技术》第二版 马淑华等 北京邮电大学出版社。 3. 《微型计算机原理与接口技术》第二版 冯博琴 吴宁 清华大学出版社。 4.彭伟. 《单片机C语言程序设计实训100例--基于8051+Proteus仿真》。 5.《数字电子技术基础》 阎石主编。
五、结束语
本次课程设计历时一周,除键盘电路外基本完成了所要求的设计任务。本课设是基于AT89C51单片机的测量与显示,通过压力传感器将压力转换为电信号,再经过运算放大器进行信号放大,送至ADC0809,将模拟信号转换成单片机可以识别的数字信号,再经过单片机转换成LED显示器可以识别的信息,显示输出。
本次课设,我学会了使用proteus软件进行单片机系统仿真,我们组内成员通过仪器讨论,分工合作,从找元器件开始学起,讨论并研究解决一个一个问题,我们从中学会了很多知识。该课设用到学过的单片机的知识,有些芯片我们之前没接触过,通过查阅资料,熟悉芯片管脚以及芯片引脚功能。此次的课程设计的顺利完成,离不开我们大家的团结合作和共同努力,在此感谢大家的辛苦付出,也感谢老师给我们这次宝贵的锻炼机会。
7
六、完整程序
#include #define uint unsigned int #define uchar unsigned char uchar code table[] ={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xf6,0xee, 0x3e,0x9c,0x7a,0x9e,0x8e}; //七段共阴数码管编码表 sbit START=P3^0; sbit EOC=P3^1; sbit OE=P3^2; sbit ONOFF=P3^3; //控制放气门开或关 sbit ALARM=P3^4; //报警显示 void delay(uint m) //LED显示延时子程序 { while(m--); } delay1(uint c) //循环间隔延时C毫秒子程序 { uchar a,b; for( ;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--); } void fun1(uint i) //AD转换及数据处理子程序 { uint P; extern uint PP; //定义全局变量PP START=1; START=0; while(i>0) //fun1只执行i次 { if(i>0) { OE=1; //转换结束输出使能 P=P0; //AD转换结果赋给P P=P*1.0/255*207; //完成75~150mA到0~207kPa的转换 OE=0; //停止输出 P2=0xfe; //个位位选 P1=table[P%10]; //个位段选 delay(500); //个位显示延时约1ms P2=0xfd; //十位位选 P1=table[P/10%10]; //十位段选 delay(500); //十位显示延时约1ms 8 P2=0xfb; //百位位选 P1=table[P/100%10]; //百位段选 delay(500); //百位显示延时约1ms if(P>176)ONOFF=1; //打开放气阀 if(P<64)ONOFF=0; //打开放气阀 i=i-1; delay1(100); //每次转换后延时100ms(0.1s) START=1; //启动下一次转换 START=0; } } } void main() //主程序 { ONOFF=0; //初始时放气阀关闭 START=0; //初始时不进行AD转换 ALARM=0; //初始时不报警 OE=0; while(1) //死循环 { fun1(1); //调用一次转换子程序 PP=P; //转换处理结果(压力值)给PP if(PP>176||PP<64) //判断压力是否超限 { fun1(100); //压力超限则调用转换子程序100次,用时约0.1*100=10s PP=P; if(PP>176) { ALARM=1; delay1(1000); } if(PP<64) { ALARM=1; delay1(1000); } if(64 } else if(64 } } 七、仿真结果 U2+1502627281234525242322+751216IN0IN1IN2IN3IN4IN5IN6IN7ADD AADD BADD CALEVREF(+)VREF(-)ADC0808CLOCKSTARTEOCOUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT81067212019188151417P30P31P07P06P05P04P03P02P01P00RV11k+112Volts+5VP17P16P15P14P13P12P11P10OE9P32模拟传感器输出+5V+150+75C122pfC222pfRP1U1+5V1P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27P30P31P32P33P34P35P36P3723456789RESPACK-8U3(CLK)G6B-2214P-US-DC-5XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617X11912MHz+5V9P23P22P21P20LED显示R2300频率=500KHz18XTAL2D11N914RL1D2LED-BLUERSTC320ufR41K293031PSENALEEAU3P33347813141718111LED-BLUED0D1D2D3D4D5D6D7CLKMR74LS273Q0Q1Q2Q3Q4Q5Q6Q7256912151619R11kQ12N3391AP10P11P12P13P14P15P16P1712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51R3300D3输出驱动电路 正常压力范围,放气阀关闭 10 U2+1502627281234525242322+751216IN0IN1IN2IN3IN4IN5IN6IN7ADD AADD BADD CALEVREF(+)VREF(-)ADC0808CLOCKSTARTEOCOUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT81067212019188151417P30P31P07P06P05P04P03P02P01P00RV11k+142Volts+5VP17P16P15P14P13P12P11P10OE9P32模拟传感器输出+5V+150+75C122pfC222pfRP1U1+5V1P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27P30P31P32P33P34P35P36P3723456789RESPACK-8U3(CLK)G6B-2214P-US-DC-5XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617X11912MHz+5V9P23P22P21P20LED显示R2300频率=500KHz18XTAL2D11N914RL1D2LED-BLUERSTC320ufR41K293031PSENALEEAU3P33347813141718111LED-BLUED0D1D2D3D4D5D6D7CLKMR74LS273Q0Q1Q2Q3Q4Q5Q6Q7256912151619R11kQ12N3391AP10P11P12P13P14P15P16P1712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51R3300D3输出驱动电路 压力超出上限,放气阀打开 压力超出上限10S后仍未恢复正常报警 11 因篇幅问题不能全部显示,请点此查看更多更全内容