版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电热水器自动控温系统的设计与实现———下位机电热水器自动控温系统的设计与实现———下位机1主要内容模块总述下位机模块示意图元件介绍和参数的设置各部分电路设计程序参考文献主要内容模块总述2模块总述数据采集是此系统中较为重要得一个部分。它是单片机应用系统中最为普遍的应用需求。本实训采集的对象为温度,因为温度作为一个非电量的模拟量,我们需要经一个温度传感器将其转化为一个电量值。一般情况下,采集到的数据会含有一定的噪声且电压值较小,不适合A/D转换器的工作,为此在此之前需要经过滤波处理和运算放大器的放大。模块总述数据采集是此系统中较为重要得一个部分。它是单片机应用3因为单片机的处理对象为数字量,需通过A/D转换器将模拟量转换为数字量。A/D转换器得的主要指标是分辨率和转换时间。它的转换位数与其分辨率有直接的关系。8位转换器可以对满量程电压的1/256进行分辨。因为单片机的处理对象为数字量,需通过A/D转换器将模拟量转换4显示电路一般为液晶显示或数码管显示。本实训中,它既可以显示外界采集到的温度,也可以显示用户按键设置的温度档位,还可以显示由通信模块传过来的档位值。显示电路一般为液晶显示或数码管显示。本实训中,它既可以显示外5按键控制主要是为满足用户由按键来设定档位的需求。作为补充,本实训中还增加了用语音信号来控制档位。按键有一个RESET键、启/停键等(按需设置)、档位选择键(1-4)等。按键的响应可以采用中断方式,单片机的中断有两种方式一种是电平触发方式,一种是跳沿触发方式。如果采用的跳沿触发方式这样标志位的清零就不用外加电路。为消除键盘抖动,采用软件消抖,即通过一定的延时来实现消抖。按键控制主要是为满足用户由按键来设定档位的需求。作为补充,本6与通信模块之间的数据传递主要涉及到单片机的串行通信接口编程问题。综上所述,下位机包含数据采集,按键电路,晶振电路,显示电路。返回与通信模块之间的数据传递主要涉及到单片机的串行通信接口编程问7下位机模块示意图温度采集基本电路显示按键
单片机图1下位机模块示意图下位机模块示意图温度采集基本电路显示按键单片机图8基本电路:(1)复位:要求具有软硬件两种复位功能。清楚电路中每个电子器件的作用及取值范围。实训中采用上电外部复位。
RSTRSTVCCVCCGNDGND图1上电复位电路图2上电和外部复位组合电路基本电路:(1)复位:要求具有软硬件两种复位功能。清楚电路中9(2)晶振电路:清楚电路中每个电子器件的作用及取值范围。18051至内部时钟电路晶振XTAL1XTAL2图3内部时钟电路(2)晶振电路:清楚电路中每个电子器件的作用及取值范围。1810(3)电源电路:清楚电路中每个电子器件的作用。返回(3)电源电路:清楚电路中每个电子器件的作用。返回11元件选择、介绍和参数设置元件选择、介绍和参数设置12温度传感器
选用lm35:lm35是由NationalSemiconductor所生产的温度感测器,其输出电压与摄氏温标呈线性关係,转换公式如式(1),0°C时输出0V,每升高1°C,输出电压增加10mV。温度传感器
选用lm35:lm35是由NationalS13实际应用中,滤波是很重要的一步。滤波有软件滤波和硬件滤波之分。在单片机系统中常用的滤波算法有限幅滤波法、中值滤波法、算术平均滤波法、加权平均滤波法、滑动平均滤波等。硬件滤波即通过运放、电阻、电容组成电路图来实现的。实际应用中,滤波是很重要的一步。滤波有软件滤波和硬件滤波之分14运算放大放
选择lm358:LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器。运算放大放
选择lm358:LM358内部包括有两个独立的、15A/D转化选用0808时钟频率600khz。将引脚A、B、C均接地,选择IN0作为模拟信号电压的输入端。当向A/D转换器发出启动命令后,即进行软件延时,延时时间稍大于进行一次A/D转换所需要的时间,之后打开A/D转换器的输出缓冲器读数即为转换好的数字量。下图为adc0808的内部逻辑电路图:A/D转化选用0808时钟频率600khz。将引脚A、B、C16试谈电热水器自动控温系统的设计17由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。下图所示为引脚图,并对各个引脚进行介绍:由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与18试谈电热水器自动控温系统的设计19IN0-IN7:8条模拟量输入通道
ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:4条
ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。数字量输出及控制线:11条IN0-IN7:8条模拟量输入通道
ADC0809对输入20START(ST)为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。CLK为时钟输入信号线。因ADC0808的内部没有时钟电路,所需时钟信号必须由外界提供,使用频率的上限为640KHZ.在本系统中由于89c51的ALE无效,不能通过四分频电路获得相应的时钟,只能单独为其设置一个时钟发生器START(ST)为转换启动信号。当ST上跳沿时,所有内部寄21单片机
选择AT89C51:时钟频率1.0592MHZ。提供16为地址。P0口分时提供地址的低八位和数据,P2口提供高八位。P1口外接按键。P3口用于中断和发出各种控制信号。P0口发送段码,P2口发送位码。单片机
选择AT89C51:时钟频率1.0592MHZ。提供2251系列硬件组成和部分资源振荡器CPU总线控制器并行接口口串行接口内ROM内RAM定时计数器中断控制器MCS51单片机的硬件组成51系列硬件组成和部分资源振荡器CPU总线控制器并行接口串23运放电路
+15V+——13C-15V10k85k2Out48LM35ADC0808电压范围选择-15~+15可使晕方的工作状态更加稳定运放电路
+15V+——13C-15V10k85k2Out424滤波介绍
在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。下面介绍几种常见的滤波算法:滤波介绍
在单片机进行数据采集时,会遇到数据的随机误差,随机25限幅滤波算法
该运算的过程中将两次相邻的采样相减,求出其增量,然后将增量的绝对值,与两次采样允许的最大差值A进行比较。A的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样有效;否则取上次采样值作为本次数据的样本。限幅滤波算法
该运算的过程中将两次相邻的采样相减,求出其增量26#defineA//允许的最大差值chardata;//上一次的数据charfilter(){chardatanew;//新数据变量datanew=get_data();//获得新数据变量if((datanew-data)>A||(data-datanew>A))returndata;elsereturndatanew;}//A如何确定呢?#defineA//允许的27中值滤波算法
该运算的过程是对某一参数连续采样N次(N一般为奇数),然后把N次采样的值按从小到大排列,再取中间值作为本次采样值,整个过程实际上是一个序列排序的过程。中值滤波算法
该运算的过程是对某一参数连续采样N次(N一般为28#defineN11//定义获得的数据个数charfilter(){charvalue_buff[N];//定义存储数据的数组charcount,i,j,temp;for(count=0;count<N;count++)//获取数据{value_buf[count]=get_data();delay();//如果采集数据比较慢,那么就需要延时或中断}#defineN11//定义获得的数据个数29for(j=0;j<N-1;j++)//用冒泡法对数据进行排序,当然最好用其他排序方法{for(value_buff[i]>value_buff[i+1] {temp=value_buff[i];value_buff[i]=value_buff[i+1];value_buff[i+1]=temp;}}returnvalue_buff[(N-1)/2];}for(j=0;j<N-1;j++)30算术平均滤波算法
该算法的基本原理很简单,就是连续取N次采样值后进行算术平均。N取值一般为2的整数幂,即2,4,8,16.算术平均滤波算法
该算法的基本原理很简单,就是连续取N次采样31charfilter(){intsum=0;for(count=0;count<N;count++){sum+=get_data();delay():}return(char)(sum/N);}charfilter()32加权平均滤波算法
由于前面所说的“算术平均滤波算法”存在平滑度和灵敏度之间的矛盾。为了协调平滑度和灵敏度之间的关系,可采用加权平均滤波。它的原理是对连续N次采样值分别乘上不同的加权系数之后再求累加,加权系数一般先小后大,以突出后面若干采样的效果,加强系统对参数变化趋势的认识。加权平均滤波算法
由于前面所说的“算术平均滤波算法”存在平滑33charcodejq[N]={1,2,3,4,5,6,7,8,9,10,11,12};//code数组为加权系数表,存在程序存储区charcodesum_jq=1+2+3+4+5+6+7+8+9+10+11+12;charfilter(){charcount;charvalue_buff[N];intsum=0;for(count=0;count<N;count++){value_buff[count]=get_data(); delay();}for(count=0;count<N;count++) sum+=value_buff[count]*jq[count];return(char)(sum/sum_jq);}charcodejq[N]={1,2,3,4,5,6,734以上介绍和各种平均滤波算法有一个共同点,即每获取一个有效采样值必须连续进行若干次采样,当采速度慢时,系统的实时得不到保证。这里介绍的滑动平均滤波算法只采样一次,将一次采样值和过去的若干次采样值一起求平均,得到的有效采样值即可投入使用。如果取N个采样值求平均,存储区中必须开辟N个数据的暂存区。每新采集一个数据便存入暂存区中,同时去掉一个最老数据,保存这N个数据始终是最新更新的数据。采用环型队列结构可以方便地实现这种数据存放方式。以上介绍和各种平均滤波算法有一个共同点,即每获取一个有效采样35charvalue_buff[N];chari=0;charfilter(){charcount;intsum=0;value_buff[i++]=get_data();if(i==N)i=0;for(count=0;count<N;count++) sum=value_buff[count];return(char)(sum/N);}charvalue_buff[N];36显示器
选择六位8段阳极数码管,此外还用一些晶振、电阻,独立按键等。显示格式如下所示:如果当前温度为30.5度,档位为4,则显示为:4-30.5显示器
选择六位8段阳极数码管,此外还用一些晶振、电阻,独立37单片机串行通信
AT89C51的串行接口是一个可编程的全双工接口。考虑到下位机与上位机之间进行温度和档位的传递,采用全双工通信。可以通过设置串行接口的控制寄存器的值来获得相应的工作方式。下面简要介绍它的发送数据和接受数据的过程。单片机串行通信
AT89C51的串行接口是一个可编程的全双38接收数据时,SCON的REN置1即可,外界数据通过引脚RXD串行输入,书局的低位首先进入移位寄存器,一帧数据接受完毕之后在并行存入数据缓冲寄存器SBUF中,同时中断标志位置1,向CPU发出请求。CPU相应中断后读SBUF取数据,且软件请0,这样一次串行通信完成。接收数据时,SCON的REN置1即可,外界数据通过引脚RX39发送数据时,先将数据并行写入发送数据缓冲寄存器SBUF中,之后数据有引脚TXD串行发送出去。当发送结束之后,缓冲器空,由硬件发送中断标志,向CPU发出请求。CPU相应中断后,应由软件清0。返回发送数据时,先将数据并行写入发送数据缓冲寄存器SBUF中,之40各部分电路设计各部分电路设计41温度采集电路温度采集电路42运放电路运放电路43模数转换电路模数转换电路44单片机电路单片机电路45显示电路显示电路46按键电路按键电路47复位电路复位电路48晶振电路晶振电路49做电路图的一些经验方法总结利用总线;利用结点命名法;并列的多个电阻可使用电阻包;高版本的protues比低版本的可支持更多的仿真模型;可以使用电压探测笔对lm35和放大器的输出电压值进行测量,以修正放大倍数。做电路图的一些经验方法总结利用总线;50实现连调的方法
把keil安装目录\c51\bin\的vdm51.dll文件复制到\proteus\models目录下;修改keil安装目录下tools.ini文件,在c51字段加入“TDRV9=BIN\VDM51.DLL(PROTUES)”并保存。打开protues,在protues的debug菜单中选中“useremotedebugmoitor”;在keil的project菜单中进入“optionsfortarget‘工程名’”,在debug选项中选择“protuesdriver”,单击‘确定’即可。返回实现连调的方法
把keil安装目录\c51\bin\的vdm51程序程序52程序流程图
程序流程图
53主程序流程图主程序流程图开始初始化数据指针初始化A/D转化器和8255初始化INT0和T0允许INT0和T0中断启动A/D转换,调用A/D子程序等待INT0和T0中断转化结束否是调用中断子程序主程序流程图主程序流程图开始初始化数据指针初始化A/D转化器54开始送字形代码到段码口输出位控制信息到位码口显示缓冲单元加1,显示位右移4位显示完否返回显示位数初始化4为5指针指向显示缓冲单元取显示缓冲单元的字形代码显示程序流程图开始送字形代码到段码口输出位控制信息到位码口显示缓冲单元加155存放转化后的数据转化数字量为温度值存放温度值到显示缓冲区开始A/D转化的结果调用显示程序显示温度返回采集温度流程图存放转化后的数据转化数字量为温度值存放温度值到显示缓冲区开始56按键流程图开始调用显示子程序显示当前档位返回等待档位按键中断是否按键流程图开始调用显示子程序显示当前档位返回等待档位按键中断57程序
按键中断程序:voidkey()interrupt2{unsignedchari;for(i=0;i<30;i++);/*消抖*/if(int_1) { return;}if(!key1)level=1;
程序
按键中断程序:58if(!key2)level=2;if(!key3)level=3;if(!key4)level=4;levelflag=1;EX1=1;/*允许INT1中断*/}注:在书写中断子程序时,要注意在主程序的任何位置不能调用它。if(!key2)level=2;59显示程序voidshow(){unsignedinti;
for(i=0;i<6;i++) { P2=location[i];/*取位码*/ P0=ledtable[video_buff[i]];/*送段吗*/ delay(); }}显示程序voidshow()60采集数据程序unsignedchargettemper()/*adc转换一次*/{ unsignedchardat; EA=0; ALE=1; _nop_(); _nop_(); ALE=0; adcstart=1;_nop_(); _nop_(); adcstart=0;P0=0XFF; while(!EOC);OE=1; 采集数据程序unsignedchargettemper61dat=P0;OE=0; if(temper!=dat) { temperflag=1; } EA=1; returndat;}dat=P0;OE=0;62voidfiter() //均值滤波//对四次采样进行求平均,考虑到实际中温度的变化是一个比较缓慢的过程,//相邻的几次采样变化幅度不大,且为计算简便,N取值为4{intsum=0,count;for(count=0;count<N;count++) { temper=gettemper(); if(temperflag) processdata(); sum+=video_buff[2]*100+video_buff[3]*10+video_buff[5];delay(); }sum=sum/N;video_buff[2]=sum/100;video_buff[3]=sum%100/10;video_buff[5]=sum%10;}voidfiter() //均值滤波63与串口的通信程序voidsenddata(){if(!TI) { if(temperflag) { SBUF='t'; while(!TI); SBUF=video_buff[2]+0x30;//发送temperature while(!TI); SBUF=video_buff[3]+0x30; while(!TI); SBUF='.';与串口的通信程序voidsenddata()64while(!TI); SBUF=video_buff[5]+0x30; while(!TI);
temperflag=0; } if(levelflag) {SBUF='c'; //发送command标识 while(!TI); SBUF=video_buff[0]+0x30; while(!TI); levelflag=0;//按键状态清除 } }}//一定是软件清0while(!TI);65串口初始化程序voidinituart(){SCON=0X50;TMOD=0X20;TH1=0XFD;TL1=0XFD;TR1=1;ES=1;}串口初始化程序voidinituart()66延时子程序voiddelay(){ unsignedchari,j; for(i=0;i<10;i++) { for(j=0;j<90;j++); }}延时子程序voiddelay()67对采集到的数据处理程序voidprocessdata(){unsignedinttmp; tmp=temper*1.9646; video_buff[0]=level; video_buff[1]=10; video_buff[4]=11; video_buff[2]=tmp/100; tmp=tmp%100; video_buff[3]=tmp/10; tmp=tmp%10; video_buff[5]=tmp;}返回对采集到的数据处理程序voidprocessdata()返68参考文献参考文献69《模拟电子技术基础》高等教育出版社华成英童诗白《单片机原理与应用及C51程序设计》清华大学出版社谢维成杨加国《单片机原理及应用-C51编程技术》西南交通大学出版社靳桅《例说51单片机(C语言版)》人民邮电出版社张义和《单片机原理与应用实例仿真》北京航空航天大学出版社李泉溪返回《模拟电子技术基础》高等教育出版社华成英童诗白返回70谢谢!谢谢!71电热水器自动控温系统的设计与实现———下位机电热水器自动控温系统的设计与实现———下位机72主要内容模块总述下位机模块示意图元件介绍和参数的设置各部分电路设计程序参考文献主要内容模块总述73模块总述数据采集是此系统中较为重要得一个部分。它是单片机应用系统中最为普遍的应用需求。本实训采集的对象为温度,因为温度作为一个非电量的模拟量,我们需要经一个温度传感器将其转化为一个电量值。一般情况下,采集到的数据会含有一定的噪声且电压值较小,不适合A/D转换器的工作,为此在此之前需要经过滤波处理和运算放大器的放大。模块总述数据采集是此系统中较为重要得一个部分。它是单片机应用74因为单片机的处理对象为数字量,需通过A/D转换器将模拟量转换为数字量。A/D转换器得的主要指标是分辨率和转换时间。它的转换位数与其分辨率有直接的关系。8位转换器可以对满量程电压的1/256进行分辨。因为单片机的处理对象为数字量,需通过A/D转换器将模拟量转换75显示电路一般为液晶显示或数码管显示。本实训中,它既可以显示外界采集到的温度,也可以显示用户按键设置的温度档位,还可以显示由通信模块传过来的档位值。显示电路一般为液晶显示或数码管显示。本实训中,它既可以显示外76按键控制主要是为满足用户由按键来设定档位的需求。作为补充,本实训中还增加了用语音信号来控制档位。按键有一个RESET键、启/停键等(按需设置)、档位选择键(1-4)等。按键的响应可以采用中断方式,单片机的中断有两种方式一种是电平触发方式,一种是跳沿触发方式。如果采用的跳沿触发方式这样标志位的清零就不用外加电路。为消除键盘抖动,采用软件消抖,即通过一定的延时来实现消抖。按键控制主要是为满足用户由按键来设定档位的需求。作为补充,本77与通信模块之间的数据传递主要涉及到单片机的串行通信接口编程问题。综上所述,下位机包含数据采集,按键电路,晶振电路,显示电路。返回与通信模块之间的数据传递主要涉及到单片机的串行通信接口编程问78下位机模块示意图温度采集基本电路显示按键
单片机图1下位机模块示意图下位机模块示意图温度采集基本电路显示按键单片机图79基本电路:(1)复位:要求具有软硬件两种复位功能。清楚电路中每个电子器件的作用及取值范围。实训中采用上电外部复位。
RSTRSTVCCVCCGNDGND图1上电复位电路图2上电和外部复位组合电路基本电路:(1)复位:要求具有软硬件两种复位功能。清楚电路中80(2)晶振电路:清楚电路中每个电子器件的作用及取值范围。18051至内部时钟电路晶振XTAL1XTAL2图3内部时钟电路(2)晶振电路:清楚电路中每个电子器件的作用及取值范围。1881(3)电源电路:清楚电路中每个电子器件的作用。返回(3)电源电路:清楚电路中每个电子器件的作用。返回82元件选择、介绍和参数设置元件选择、介绍和参数设置83温度传感器
选用lm35:lm35是由NationalSemiconductor所生产的温度感测器,其输出电压与摄氏温标呈线性关係,转换公式如式(1),0°C时输出0V,每升高1°C,输出电压增加10mV。温度传感器
选用lm35:lm35是由NationalS84实际应用中,滤波是很重要的一步。滤波有软件滤波和硬件滤波之分。在单片机系统中常用的滤波算法有限幅滤波法、中值滤波法、算术平均滤波法、加权平均滤波法、滑动平均滤波等。硬件滤波即通过运放、电阻、电容组成电路图来实现的。实际应用中,滤波是很重要的一步。滤波有软件滤波和硬件滤波之分85运算放大放
选择lm358:LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器。运算放大放
选择lm358:LM358内部包括有两个独立的、86A/D转化选用0808时钟频率600khz。将引脚A、B、C均接地,选择IN0作为模拟信号电压的输入端。当向A/D转换器发出启动命令后,即进行软件延时,延时时间稍大于进行一次A/D转换所需要的时间,之后打开A/D转换器的输出缓冲器读数即为转换好的数字量。下图为adc0808的内部逻辑电路图:A/D转化选用0808时钟频率600khz。将引脚A、B、C87试谈电热水器自动控温系统的设计88由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。下图所示为引脚图,并对各个引脚进行介绍:由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与89试谈电热水器自动控温系统的设计90IN0-IN7:8条模拟量输入通道
ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:4条
ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。数字量输出及控制线:11条IN0-IN7:8条模拟量输入通道
ADC0809对输入91START(ST)为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。CLK为时钟输入信号线。因ADC0808的内部没有时钟电路,所需时钟信号必须由外界提供,使用频率的上限为640KHZ.在本系统中由于89c51的ALE无效,不能通过四分频电路获得相应的时钟,只能单独为其设置一个时钟发生器START(ST)为转换启动信号。当ST上跳沿时,所有内部寄92单片机
选择AT89C51:时钟频率1.0592MHZ。提供16为地址。P0口分时提供地址的低八位和数据,P2口提供高八位。P1口外接按键。P3口用于中断和发出各种控制信号。P0口发送段码,P2口发送位码。单片机
选择AT89C51:时钟频率1.0592MHZ。提供9351系列硬件组成和部分资源振荡器CPU总线控制器并行接口口串行接口内ROM内RAM定时计数器中断控制器MCS51单片机的硬件组成51系列硬件组成和部分资源振荡器CPU总线控制器并行接口串94运放电路
+15V+——13C-15V10k85k2Out48LM35ADC0808电压范围选择-15~+15可使晕方的工作状态更加稳定运放电路
+15V+——13C-15V10k85k2Out495滤波介绍
在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。下面介绍几种常见的滤波算法:滤波介绍
在单片机进行数据采集时,会遇到数据的随机误差,随机96限幅滤波算法
该运算的过程中将两次相邻的采样相减,求出其增量,然后将增量的绝对值,与两次采样允许的最大差值A进行比较。A的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样有效;否则取上次采样值作为本次数据的样本。限幅滤波算法
该运算的过程中将两次相邻的采样相减,求出其增量97#defineA//允许的最大差值chardata;//上一次的数据charfilter(){chardatanew;//新数据变量datanew=get_data();//获得新数据变量if((datanew-data)>A||(data-datanew>A))returndata;elsereturndatanew;}//A如何确定呢?#defineA//允许的98中值滤波算法
该运算的过程是对某一参数连续采样N次(N一般为奇数),然后把N次采样的值按从小到大排列,再取中间值作为本次采样值,整个过程实际上是一个序列排序的过程。中值滤波算法
该运算的过程是对某一参数连续采样N次(N一般为99#defineN11//定义获得的数据个数charfilter(){charvalue_buff[N];//定义存储数据的数组charcount,i,j,temp;for(count=0;count<N;count++)//获取数据{value_buf[count]=get_data();delay();//如果采集数据比较慢,那么就需要延时或中断}#defineN11//定义获得的数据个数100for(j=0;j<N-1;j++)//用冒泡法对数据进行排序,当然最好用其他排序方法{for(value_buff[i]>value_buff[i+1] {temp=value_buff[i];value_buff[i]=value_buff[i+1];value_buff[i+1]=temp;}}returnvalue_buff[(N-1)/2];}for(j=0;j<N-1;j++)101算术平均滤波算法
该算法的基本原理很简单,就是连续取N次采样值后进行算术平均。N取值一般为2的整数幂,即2,4,8,16.算术平均滤波算法
该算法的基本原理很简单,就是连续取N次采样102charfilter(){intsum=0;for(count=0;count<N;count++){sum+=get_data();delay():}return(char)(sum/N);}charfilter()103加权平均滤波算法
由于前面所说的“算术平均滤波算法”存在平滑度和灵敏度之间的矛盾。为了协调平滑度和灵敏度之间的关系,可采用加权平均滤波。它的原理是对连续N次采样值分别乘上不同的加权系数之后再求累加,加权系数一般先小后大,以突出后面若干采样的效果,加强系统对参数变化趋势的认识。加权平均滤波算法
由于前面所说的“算术平均滤波算法”存在平滑104charcodejq[N]={1,2,3,4,5,6,7,8,9,10,11,12};//code数组为加权系数表,存在程序存储区charcodesum_jq=1+2+3+4+5+6+7+8+9+10+11+12;charfilter(){charcount;charvalue_buff[N];intsum=0;for(count=0;count<N;count++){value_buff[count]=get_data(); delay();}for(count=0;count<N;count++) sum+=value_buff[count]*jq[count];return(char)(sum/sum_jq);}charcodejq[N]={1,2,3,4,5,6,7105以上介绍和各种平均滤波算法有一个共同点,即每获取一个有效采样值必须连续进行若干次采样,当采速度慢时,系统的实时得不到保证。这里介绍的滑动平均滤波算法只采样一次,将一次采样值和过去的若干次采样值一起求平均,得到的有效采样值即可投入使用。如果取N个采样值求平均,存储区中必须开辟N个数据的暂存区。每新采集一个数据便存入暂存区中,同时去掉一个最老数据,保存这N个数据始终是最新更新的数据。采用环型队列结构可以方便地实现这种数据存放方式。以上介绍和各种平均滤波算法有一个共同点,即每获取一个有效采样106charvalue_buff[N];chari=0;charfilter(){charcount;intsum=0;value_buff[i++]=get_data();if(i==N)i=0;for(count=0;count<N;count++) sum=value_buff[count];return(char)(sum/N);}charvalue_buff[N];107显示器
选择六位8段阳极数码管,此外还用一些晶振、电阻,独立按键等。显示格式如下所示:如果当前温度为30.5度,档位为4,则显示为:4-30.5显示器
选择六位8段阳极数码管,此外还用一些晶振、电阻,独立108单片机串行通信
AT89C51的串行接口是一个可编程的全双工接口。考虑到下位机与上位机之间进行温度和档位的传递,采用全双工通信。可以通过设置串行接口的控制寄存器的值来获得相应的工作方式。下面简要介绍它的发送数据和接受数据的过程。单片机串行通信
AT89C51的串行接口是一个可编程的全双109接收数据时,SCON的REN置1即可,外界数据通过引脚RXD串行输入,书局的低位首先进入移位寄存器,一帧数据接受完毕之后在并行存入数据缓冲寄存器SBUF中,同时中断标志位置1,向CPU发出请求。CPU相应中断后读SBUF取数据,且软件请0,这样一次串行通信完成。接收数据时,SCON的REN置1即可,外界数据通过引脚RX110发送数据时,先将数据并行写入发送数据缓冲寄存器SBUF中,之后数据有引脚TXD串行发送出去。当发送结束之后,缓冲器空,由硬件发送中断标志,向CPU发出请求。CPU相应中断后,应由软件清0。返回发送数据时,先将数据并行写入发送数据缓冲寄存器SBUF中,之111各部分电路设计各部分电路设计112温度采集电路温度采集电路113运放电路运放电路114模数转换电路模数转换电路115单片机电路单片机电路116显示电路显示电路117按键电路按键电路118复位电路复位电路119晶振电路晶振电路120做电路图的一些经验方法总结利用总线;利用结点命名法;并列的多个电阻可使用电阻包;高版本的protues比低版本的可支持更多的仿真模型;可以使用电压探测笔对lm35和放大器的输出电压值进行测量,以修正放大倍数。做电路图的一些经验方法总结利用总线;121实现连调的方法
把keil安装目录\c51\bin\的vdm51.dll文件复制到\proteus\models目录下;修改keil安装目录下tools.ini文件,在c51字段加入“TDRV9=BIN\VDM51.DLL(PROTUES)”并保存。打开protues,在protues的debug菜单中选中“useremotedebugmoitor”;在keil的project菜单中进入“optionsfortarget‘工程名’”,在debug选项中选择“protuesdriver”,单击‘确定’即可。返回实现连调的方法
把keil安装目录\c51\bin\的vdm122程序程序123程序流程图
程序流程图
124主程序流程图主程序流程图开始初始化数据指针初始化A/D转化器和8255初始化INT0和T0允许INT0和T0中断启动A/D转换,调用A/D子程序等待INT0和T0中断转化结束否是调用中断子程序主程序流程图主程序流程图开始初始化数据指针初始化A/D转化器125开始送字形代码到段码口输出位控制信息到位码口显示缓冲单元加1,显示位右移4位显示完否返回显示位数初始化4为5指针指向显示缓冲单元取显示缓冲单元的字形代码显示程序流程图开始送字形代码到段码口输出位控制信息到位码口显示缓冲单元加1126存放转化后的数据转化数字量为温度值存放温度值到显示缓冲区开始A/D转化的结果调用显示程序显示温度返回采集温度流程图存放转化后的数据转化数字量为温度值存放温度值到显示缓冲区开始127按键流程图开始调用显示子程序显示当前档位返回等待档位按键中断是否按键流程图开始调用显示子程序显示当前档位返回等待档位按键中断128程序
按键中断程序:voidkey()interrupt2{unsignedchari;for(i=0;i<30;i++);/*消抖*/if(int_1) { return;}if(!key1)level=1;
程序
按键中断程序:129if(!key2)level=2;if(!key3)level=3;if(!key4)level=4;levelflag=1;EX1=1;/*允许INT1中断*/}注:在书写中断子程序时,要注意在主程序的任何位置不能调用它。if(!key2)level=2;130显示程序voidshow(){unsignedinti;
for(i=0;i<6;i++) { P2=location[i];/*取位码*/ P0=ledtable[video_buff[i]];/*送段吗*/ delay(); }}显示程序voidshow()13
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国开00747+22003基础会计期末复习资料
- 第四单元 乘与除(复习课件)北师大版三年级数学上册课件+练习 (素养达标课件+教案+练习)三年级数学上册同步备课 (北师大版)
- 四川省内江市威远中学2024-2025学年高一上学期12月月考地理试题(含答案)
- 辽宁省鞍山市海城市西部集团2024-2025学年八年级上学期12月第三次质量监测英语试题(含答案无听力原文及音频)
- 河北省唐山市路南区2024-2025学年八年级上学期12月月考数学试题(无答案)
- 广东省梅州市梅雁中学2024-2025学年高三上学期12月月考地理试题(含答案)
- 2024-2025学年高一【数学(人教A版)】指数函数的图象和性质-教学设计
- 自动控制原理及应用知到智慧树章节测试课后答案2024年秋新疆工程学院
- 建筑力学知到智慧树章节测试课后答案2024年秋江西理工大学
- 高考英语3000词词性转换清单
- 年产12000吨水合肼(100%)项目环评报告书
- 城市规划原理课件(完整版)
- 2022年西南医院医护人员招聘笔试模拟试题及答案解析
- 初中音乐 人音版 八年级上册 多彩音乐剧-云中的城堡部优课件
- 围术期过敏反应诊治的专家共识(全文)
- 防汛应急抢险指挥与实务课件(PPT 89页)
- 农村信用社县级联社费用管控指导意见
- (完整版)八年级上综合性学习-我们的互联网时代-练习卷(含答案)
- 义务教育(数学)新课程标准(2022年修订版)
- 立式圆筒形钢制焊接储罐施工及验收规范》
- 地灾治理全套表格
评论
0/150
提交评论