资源描述
××大学××学院
《过程控制系统》课程设计
设计题目:智能化压力控制系统设计
学生姓名:
专 业:测控技术和仪器
班级学号:
指导老师:
设计时间:.6.23-.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显示、报警电路和放气阀驱动电路。
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高密度非易失存放器制造技术制造,和工业标准MCS-51指令集和输出管脚相兼容。因为将多功效8位CPU和闪速存放器组合在单个芯片中,ATMELAT89C51是一个高效微控制器,AT89C2051是它一个精简版本。AT89C51单片机为很多嵌入式控制系统提供了一个灵活性高且价廉方案。外形及引脚排列图所表示。
(1)AT89c51关键特点
·和MCS-51 兼容
·4K字节可编程FLASH存放器
·寿命:1000写/擦循环
·数据保留时间:
·全静态工作: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口被外部下拉为低电平时,将输出电流,这是因为内部上拉缘故。在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:来自反向振荡器输出。
5、压力传感器1210——030G—3S
网上查找了很多压力传感器,其中较为经典常见是上海名动企业生产MD—PS系列和MD—GA高精度绝压传感器,不过因为二者全部不适合此次课程设计压力范围(0~200kPa),最终选择1210—030G—3S压力传感器,它测压范围为30*6.895=207kPa,输出电流范围是75~150mA,性能参数以下:
经典应用电路以下:
设计仿真时因为PROTEUS中没有传感器,所以用一个范围为75~150分压电路替换传感器输出电流,使仿真得以进行。
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上。其引脚图及真值表以下:
四、参考文件
1.谢宜仁. 《单片机硬件接口电路和工程实践》 电子工业出版社。
2. 《单片机原理和接口技术》第二版 马淑华等 北京邮电大学出版社。
3. 《微型计算机原理和接口技术》第二版 冯博琴 吴宁 清华大学出版社。
4.彭伟. 《单片机C语言程序设计实训100例--基于8051+Proteus仿真》。
5.《数字电子技术基础》 阎石主编。
五、结束语
此次课程设计历时一周,除键盘电路外基础完成了所要求设计任务。本课设是基于AT89C51单片机测量和显示,经过压力传感器将压力转换为电信号,再经过运算放大器进行信号放大,送至ADC0809,将模拟信号转换成单片机能够识别数字信号,再经过单片机转换成LED显示器能够识别信息,显示输出。
此次课设,我学会了使用proteus软件进行单片机系统仿真,我们组内组员经过仪器讨论,分工合作,从找元器件开始学起,讨论并研究处理一个一个问题,我们从中学会了很多知识。该课设用到学过单片机知识,有些芯片我们之前没接触过,经过查阅资料,熟悉芯片管脚和芯片引脚功效。此次课程设计顺利完成,离不开我们大家团结合作和共同努力,在此感谢大家辛劳付出,也感谢老师给我们这次宝贵锻炼机会。
六、完整程序
#include<reg51.h>
#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
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<PP<176)
{
ALARM=0;
delay1(1000);
}
}
else if(64<PP<176)ALARM=0; //10s后压力正常则不报警
}
}
七、仿真结果
正常压力范围,放气阀关闭
压力超出上限,放气阀打开
压力超出上限10S后仍未恢复正常报警
八、程序步骤图N
N
Y
开始
初始化
P<64||P>176?
打开放气阀
开启A/D转换
采集模拟信号转化成0-207KPa压力
扫描数据并进行
LED动态显示
P>176?
N
P<64?
Y
10S后任成立报警
关闭出气阀
Y
10S后任成立报警
展开阅读全文