储罐液位系统设计

上传人:aa****6 文档编号:57415430 上传时间:2018-10-21 格式:PPT 页数:18 大小:315.50KB
返回 下载 相关 举报
储罐液位系统设计_第1页
第1页 / 共18页
储罐液位系统设计_第2页
第2页 / 共18页
储罐液位系统设计_第3页
第3页 / 共18页
储罐液位系统设计_第4页
第4页 / 共18页
储罐液位系统设计_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《储罐液位系统设计》由会员分享,可在线阅读,更多相关《储罐液位系统设计(18页珍藏版)》请在金锄头文库上搜索。

1、储罐液位系统设计,组员:李媛媛、刘璐、李盼菲、赵文贤、 冯雪、王凤、樊颖、司秀娟,硬件系统设计,核心:单片机 89s52 片外扩展:8KB RAM存储器6264,I/O口扩展8155 转换器:ADC0809,DAC0832 锁存器等:74HC373,74H377,74HC245和3-8译码器74HC138 输入/输出部件:6个LED,4个按键 89S52的RD及PSEN用与门接在一起后送入6264的OE端,使得 6264既可以作为数据存储器,也可以作为程序存储器。,各芯片片选地址分配如下,工作过程,液位信号(电压值)从ADC0809的IN0引脚输入,A/D转换后存储。 液位给定值由键盘设定,与

2、液位信号比较得出偏差值。若超限,则报警,LED4现实P,同时以P1.0驱动报警器,以P1.1驱动蜂鸣器。 按达林算法计算控制器的输出值。 输出值经D/A转换得到模拟电压值并输出。,液位信号的电压值经标度转换后,变为液位值存储,送LED显示。6个LED显示如图a所示。LED5显示H或L,LED4为超限指示,LED3LED0显示液位值,LED1数码管加小数点,显示范围为000.0999.9。显示器与键盘设置 LED5 LED4 LED3 LED2 LED1 LED0H 1 9 9. 5,键盘设定液位的高低报警限。采用4键方式,4个按键的功能如图b所示。显示与键盘循环扫描,无键按下时,LED显示实时

3、液位,右键按下时,进入液位报警限的修改。先按选择键方可进入修改,先按其他3个键无效。进入修改状态后,待修改的显示位LED5闪动,按+或-键可循环选择H或L,同时后4位LED显示对应的液位值。按确认件后调到下一个待修改的显示为LED3并闪动,按+或-键循环修改09数字,再按确认键调到下一位置,如此进行,知道4个数字修改完毕后退出修改状态。在修改状态时,若不按确认键,则8秒后退出修改状态。从视觉舒适的角度考虑,数字应为每0.4秒闪动一次。显示器与键盘设计选择 + - 确定,软件系统设计,数据采集:A/D转换,采样周期为10s。 数字滤波:采用5个数平均滤波法。 标度转换:将液位变送器的标准电压信号

4、转换为液位值。 动态显示:动态循环显示。 键盘扫描:读键值并判断功能。 控制计算:达林算法。 控制输出:D/A转换。 报警处理:超过高、低报警器限时驱动报警灯及蜂鸣器。,A/D转换,采样周期为10秒,#include “reg51.h“ #include “Absacc.h“ #define STARTAD XBYTE0x7F00 #define ADRESULT XBYTE0x7F08 sbit ADBUSY = P33; void Delay() unsigned char i;for(i=0; i100; i+); unsigned char AD0809(void) unsigned

5、char result;STARTAD = 0; /启动 ADwhile(ADBUSY = 1); /等待转换结束Delay();result = ADRESULT;return result; /返回转换结果 void A_D(void) unsigned char ADV;/变量while(1)ADV = AD0809();Delay(); /设置断点 ,对于采样周期为10秒,我们采用了中断,TH0=0x3c; TL0=0xb0; EA=1; ET0=1; TR0=1; Void timer0() TH0=0x3c;THL0=0xb0;num+;if(num=200) num=0;A_D(

6、);,平均值滤波法,#define N 5char filter() char count;int sum = 0;for ( count=0;count0;a-)for(b=100;b0;b-); void display() CLK=0;while(CLK=1) if(A1=1 ,键盘扫描,#include #include #define uint unsigned int #define uchar unsigned char sbit S1=P00; sbit S2=P01; sbit S3=P02; sbit S4=P03; sbit HSET=P04; sbit LSET=P05

7、;/*延时程序设计*/void delay10ms(void) unsigned char i,j,k; for(i=5;i0;i-) for(j=4;j0;j-) for(k=248;k0;k-); /*键盘扫描程序设计*/ uchar kscan(void) uchar x1, x2;KEY_IO =255;x1 = KEY_IO;if (x1 != 255) delay(100);/*延时以消除抖动*/x2 = KEY_IO;if (x1!= x2) return 255;while(x2!=255) x2 = KEY_IO;if (x1=0xfe) P2=0xfb;DISPLAY(H)

8、; /*默认首先显示“高“位值*/ if(x1=0xbf) DISPLAY(L); while (x1=0xf7) P2=0xf7; DISPLAY(); if(x1=0xfd) AA+; else if(x1=0xfb) AA-; P2=0xfb; while(x1=0xf7) DISPLAY(); if(x1=0xfd) AA+; else if(x1=0xfb) AA-; P2=0xfd; while(x2=0xf7) DISPLAY(); if(x1=0xfd) AA+; else if(x1=0xfb) AA-; if(P2=0xfe) DISPLAY(); if(x1=0xfd)

9、AA+; else if(x1=0xfb) AA-; else if(x1=0xf7) A/D() ; return 255; ,达林算法,#include float e=0,1,2,3,4,5,6,7,8,9; float u(int k) if(k=0)return 0;elsereturn(0.9355*u(k-1)+0.0645*u(k-6)+0.8377*ek-0.8054*ek-1); ,D/A转换,#include sbit wr=P36; sbit A1=P25; sbit A2=P26; sbit A3=P27; void D_A() A1=1;A2=1;A3=0;wr=0

10、;,报警处理,#include #define uchar unsigned char #define uint unsigned int sbit SPK=P10; sbit LED=P11; sbit K1=P12; void Alarm(uchar t) uchar i,j; for(i=0;i200;i+) SPK=SPK; for(j=0;jt;j+); /由参数t 行成不同的频率 void DelayMS(uint x) uchar i; while(x-) for(i=1;i120;i+); void alarm() SPK=0; while(1) if(K1=1) Alarm(60); Alarm(120); LED=LED; DelayMS(150); ,另附PROTEUS仿真图,谢谢观看!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号