《基于单片机的压力超限报警系统设计(共19页).doc》由会员分享,可在线阅读,更多相关《基于单片机的压力超限报警系统设计(共19页).doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上专心-专注-专业沈阳航空航天大学沈阳航空航天大学课课程程设设计计(论文)(论文)题目题目 基于单片机的压力超限报警系统设计班班级级学学号号学学 生生 姓姓 名名指指 导导 教教 师师精选优质文档-倾情为你奉上专心-专注-专业目目录录精选优质文档-倾情为你奉上专心-专注-专业基于单片机的压力超限报警系统沈阳航空航天大学自动化学院摘要:压力是工业生产过程中的重要参数之一。压力的检测或控制是保证生产和设备安全运行必不可少的条件,现压力检测与报警有常重要的意义。本设计主要通过单片机及专用芯片对传感器所测得的模拟信号进行处理,使其完成对压力的测量与报警,报警上线是通过按键值设定
2、的。关键字:压力;AT89C51 单片机;压力传感器;A/D 转换器;LED 显示。0. 前言近年来,随着微型计算机的发展,他的应用在人们的工作和日常生活中越来越普遍。工业过程控制是计算机的一个重要应用领域。其中由单片机构成的嵌入式系统已经越来越受到人们的关注。现在可以毫不夸张的说,没有微型计算机的仪器不能称为先进的仪器,没有微型计算机的控制系统不能称其为现代控制系统的时代已经到来。压力测量对实时监测和安全生产具有重要的意义。在工业生产中,为了高效、安全生产,必须有效控制生产过程中的诸如压力、流量、温度等主要参数。由于压力控制在生产过程中起着决定性的安全作用,因此有必要准确测量压力。通过压力传
3、感器将需要测量的位置的压力信号转化为电信号,再经过运算放大器进行信号放大,送至8 位 AD 转换器, 然后将模拟信号转换成单片机可以识别的数字信号, 再经单片机转换成 LED 显示器可以识别的信息,最后显示输出并判断是否超过警戒线,选择的单片机是基于 AT89C51 单片机的测量与显示,将压力经过压力传感器变为电信号,再通过运放将电信号放大为标准信号为 0-5V 的电压信号,然后进入 A/D 转换器将模拟量转换为数字量, 我们所采样的 A/D 转换器为 ADC0804, ADC0804 的辨率最高分辨可达 256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电
4、压输入在 05V 之间。键盘是单片机系统实现人机对话的常用输入设备。我们通过键盘,向计算机系统输入各种数据和命令,亦可通过使用键盘,让单片机系统处于预定的功能状态。要想实现压力的显示需硬件与软件配合,最终调试出来。1. 总体方案设计总体方案设计本次设计是以单片机组成的压力测量, 系统中必须有前向通道作为电信号的输入精选优质文档-倾情为你奉上专心-专注-专业通道,用来采集输入信息。压力的测量,需要传感器,利用传感器将压力转换成电信号后,再经放大并经 A/D 转换为数字量后才能由计算机进行有效处理。然后用 LED 进行显示, 并判断是否超过警戒压力, 键盘则是用来设定警戒压力大小的 原理图如图 1
5、所示。图 1压力报警系统原理图2. 硬件电路的设计硬件电路的设计2.1 单片机系统标准型 89 系列单片机是与 MCS-51 系列单片机兼容的。 在内部含有 4KB 或 8KB 可重复编程的 Flash 存储器,可进行 1000 次擦写操作。全静态工作为 033MHz,有 3级程序存储器加密锁定,内含有 128256 字节的 RAM、32 条可编程的 I/O 端口、23个 16 位定时器/计数器,68 级中断,此外有通用串行接口、低电压空闲模式及掉电模式。 AT89C51 相当于将 8051 中的 4KB ROM 换成相应数量的 Flash 存储器, 其余结构、供电电压、引脚数量及封装均相同,
6、使用时可直接替换。AT89C51 在内部采用 40 条引脚的双列直插式封装,引脚排列如图 2 所示:压 力传 感器A/D转换单片机键盘显示报警精选优质文档-倾情为你奉上专心-专注-专业图 2 AT89C51 芯片引脚管脚说明:P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH进行校验时,P0 输出原码,此时 P0 外部必须被拉高。P1 口:P1 口是一个内部提供上拉电阻的 8
7、位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1口作为第八位地址接收。P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时, P2 口的管脚被外部拉低, 将输出电流。 这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时, P2 口输出地址的高八位
8、。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作为 AT89C51 的一些特殊功能口:精选优质文档-倾情为你奉上专心-专注-专业P3 口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口
9、)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。因此它可用作对外部输出的
10、脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。 如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。 此时, ALE 只有在执行 MOVX, MOVC指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时
11、,/EA 将内部锁定为 RESET;当/EA端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.2 MPX4115压力传感器MPX4115 传感器是一个硅压力传感器。这个传感器结合了先进的微电子技术,能为高水准模拟输出信号提供一个均衡压力。压力测量范围为 15kp115kp,电压输出 0.27V4.76V。气压传感器 MPX4115 的管脚说明如表 1 所示,引脚图如图 3 所示。表 1 气压传感器 MPX4115 的管脚说明精选优质文档-倾情为
12、你奉上专心-专注-专业123456VOUTGNDVSN/SN/SN/S图 3 MPX4115 传感器2.3数据转换模块ADC0804 特性:工作电压:5V,即 VCC5V。模拟输入电压范围:05V,即 0Vin5V。 分辨率: 8 位, 即分辨率为 1/28=1/256, 转换值介于 0255 之间。 转换时间: 100us(fCK640KHz 时) 。转换误差:1LSB。参考电压:2.5V,即 Vref2.5V。ADC0804 的转换原理ADC0804 是属于连续渐进式(Successive Approximation Method)的 A/D 转换器,这类型的 A/D 转换器除了转换速度快
13、(几十至几百 us) 、分辨率高外,还有价钱便宜的优点,普遍被应用于微电脑的接口设计上。输出 8 位的 ADC0804,动作步骤如下表示:第一次寻找结果: (若假设值输入值,则寻找位假设位1)第二次寻找结果: (若假设值输入值,则寻找位假设位1)第三次寻找结果: (若假设值输入值,则寻找位该假设位0)第四次寻找结果: (若假设值输入值,则寻找位假设位1)第五次寻找结果: (若假设值输入值,则寻找位该假设位0)第六次寻找结果: (若假设值输入值,则寻找位假设位1)第七次寻找结果: (若假设值输入值,则寻找位假设位1)精选优质文档-倾情为你奉上专心-专注-专业第八次寻找结果: (若假设值输入值,则
14、寻找位该假设位0)这样使用二分法的寻找方式,8 位的 A/D 转换器只要 8 次寻找。AD0804 的具体电路如图 4 所示。图 4 ADC0804 电路图2.4键盘显示模块设置键按下时可以通过调节个位、十分位、百分位按键设置报警压力值,松开设置键系统进行压力值的测量显示以及比较,若大于报警压力值则进行报警。图 5 键盘显示模块数码管则使用动态显示。谓动态显示就是一位一位地轮流点亮各位显示器(扫描) ,对于显示器的每一位而言,每隔一段时间点亮一次。在同一时刻只有一位显示器在工作(点亮) ,利用人眼的视觉暂留效应和发光二极管熄灭时的余辉效应,看到的却是多个字符“同时”显示,态显示器的优点是节省硬
15、件资源,成本较低。精选优质文档-倾情为你奉上专心-专注-专业2.5整体电路图本系统整体电路是由单片机最小系统、压力传感器、键盘及显示模块、模数转换模块等组成,具体连接方式如图 6 所示。图 6 整体电路图3 软件设计3.1 报警系统软件实现压力传感器将输出的模拟信号输送给 ADC0804 单片机来控制 ADC0804 的工作状态,使传感器输出的模拟信号转化为数字信号进而输送给单片机, 单片机接收到信号后对该信号进行处理再输送到显示数码管端, 从而显示压力值, 该压力值同时还与按键设置的压力上限值进行比较,若超过压力上限值则进行报警。3.2 程序流程图开始初始化精选优质文档-倾情为你奉上专心-专
16、注-专业NY设置YNNY图 7 程序框图4.联合调试联合调试在 Protues 上进行仿真实验。首先使用 Keil vision 4 编写完成的程序编译生成 HEX文件,将 HEX 文件烧录到单片机中,进行仿真实验,结果如图 8 所示。设置键是否按下设置报警上限设置键是否按下显示当前压力值是 否 大 于警戒限报警结束精选优质文档-倾情为你奉上专心-专注-专业图 8 运行结果图5. 课设小结及进一步设想这次课程设计给我最大的收获, 应该是仿真过程当中学到的很多东西, 这个过程不仅使我重新回顾了 Protues 仿真软件的运用, 也使我更深的了解了一些东西。 其次就是软件编程,这次完全是运用以往积
17、累的经验,完成了仿真程序,其中的滋味,也就自己能体会得到,程序修改了很多次,也失败了不少,花费的时间和在 protues 画图差错上的时间应该是一样多的,同样都是很费脑筋的。在编程这一方面,我的感受就是编模块程序不是最难得, 最难得是能够连续运行, 进行全面的整合, 但想要整合好, 你还是的写好模块程序,相互制约,相互影响,是比较麻烦的,为了完成完整的键盘控制系统,在这一块是下功夫了的,这也算是自己第一次,这么完整的弄完一个小型的单片机系统。本次课设也有一些不足之处具体表现如下:系统的测量精度不能保证,可能是因为 ADC0804 的转换精度不够。键盘的消抖问题没有充分考虑。只能测量一路压力值,
18、无法测量多路压力值。精选优质文档-倾情为你奉上专心-专注-专业参考文献1 赖麒文.8051 单片机 C 语言彻底应用. 北京M:科学技术出版社,20022 朱定华,单片机原理及接口技术M. 北京:电子工业出版社 ,2001.63 王雪文, 传感器原理及应用.北京M:北京航空航天出版社,20044 张军,梅丽凤.单片机原理接口技术.北京交通大学出版社,2006.55 张婧武,周灵彬.单片机系统的 PROTEUS 设计与仿真.北京: 电工出版社,2007.46 周佩玲,彭虎.微机原理与接口技术.北京: 电子工业出版社,2005.47 朱定华.单片机原理及接口技术M. 北京:电子工业出版社 ,200
19、1.6附录 I元件清单精选优质文档-倾情为你奉上专心-专注-专业元件名称型号数量压力传感器MPX41151单片机AT89C511LED7seg-mpx4-cc-blue1转换芯片ADC08041电容1uf3电阻51R13导线若干按键Button4精选优质文档-倾情为你奉上专心-专注-专业附录 II 整体电路图精选优质文档-倾情为你奉上专心-专注-专业附录 III源程序清单#include /51 列单片机头文件#include #define uchar unsigned char#define uint unsigned intint t1,i;float t;void anjian();s
20、bit clock = P31;sbit u=P23;sbit uge=P20;sbit uxiao=P21;sbit uxiao2=P22;sbit cs=P24;sbit adwr=P36;/定义 AD 的 WR 端口sbit adrd=P37;/定义 AD 的 RD 端口sbit key1=P10;sbit key2=P11;sbit key3=P12;sbit ting=P30;uchar a,A1,A2,A3,adval;uchar num1=5,num2,num3;uchar code table0=0 xbf,0 x86,0 xdb,0 xcf,0 xe6,0 xed,0 xfd
21、,0 x87,0 xff,0 xef,0 xf7,0 xfc,0 xb9,0 xde,0 xf9,0 xf1;uchar code table1=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;void delayms(uint xms)uint i,j;for(i=xms;i0;i-)/i=xms 即延时约 xms 毫秒for(j=110;j0;j-);void display(uchar bai,uchar shi,uchar ge)/显示子函数P
22、2=0 xe0;精选优质文档-倾情为你奉上专心-专注-专业u=1;P0=0 x73;u=0;delayms(5);/延时uge=1;P0=table0bai;uge=0;delayms(5);/延时uxiao=1;P0=table1shi;uxiao=0;delayms(5);/延时uxiao2=1;P0=table1ge;uxiao2=0;delayms(5);/延时void display2(uchar b,uchar s,uchar g)/设置显示u=1;P0=0 xff;u=0;delayms(5);/延时uge=1;P0=table0b;uge=0;delayms(5);/延时uxi
23、ao=1;P0=table1s;uxiao=0;delayms(5);/延时uxiao2=1;P0=table1g;uxiao2=0;delayms(5);/延时void anjian()/按键设定阈值cs=1;精选优质文档-倾情为你奉上专心-专注-专业if(key1=0)delayms(20);if(key1=0)num1+;if(num1=6)num1=0;while(!key1);if(key2=0)delayms(20);if(key2=0)num2+;if(num2=10)num2=0;while(!key2);if(key3=0)delayms(20);if(key3=0)num3
24、+;if(num3=10)num3=0;while(!key3);void ADAD()cs=0;/置 CSAD 为 0,选通 ADCS 以后不必再管 ADCSwhile(1)精选优质文档-倾情为你奉上专心-专注-专业adwr=1;_nop_();adwr=0;/启动 AD 转换_nop_();adwr=1;for(a=10;a0;a-)display(A1,A2,A3);if(ting=0) break;while(t num1*100+num2*10+num3)/过线 报警clock=0;if(ting=0)num1=5;num2=0;num3=0;break;P1=0 xff;/读取 P
25、1 口之前先给其写全 1adrd=1;/选通 ADCS_nop_();adrd=0;/AD 读使能_nop_();/P1=adval;adval=P1;/AD 数据读取赋给 P1 口adrd=1;t = adval;t = t/255*500;t1 = t;A1= t1/100;/分出百,十,和个位A2= (t1%100)/10;A3= (t1%100)%10;void main()/主程序精选优质文档-倾情为你奉上专心-专注-专业while(1)ADAD();while(1)anjian();display2(num1,num2,num3);if(ting=1) break;while(t num1*100+num2*10+num3)/过线 报警clock=0;if(ting=0)num1=5;num2=0;num3=0;break;