基于51单片机的wifi无线温度测控系统毕业(设计)论文.doc

上传人:可****阿 文档编号:91625004 上传时间:2023-05-27 格式:DOC 页数:40 大小:2.80MB
返回 下载 相关 举报
基于51单片机的wifi无线温度测控系统毕业(设计)论文.doc_第1页
第1页 / 共40页
基于51单片机的wifi无线温度测控系统毕业(设计)论文.doc_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《基于51单片机的wifi无线温度测控系统毕业(设计)论文.doc》由会员分享,可在线阅读,更多相关《基于51单片机的wifi无线温度测控系统毕业(设计)论文.doc(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、计算机技术与科学学院课程设计报告( 2014 2015 学年 第 二 学期)课程名称:_ project3_ 班 级: 电子1201 学 号: 1402120119 1402120120 姓 名: 李栋 李凌锋 指导教师: 胡方强 武晓光 袁建华 包亚萍 毛钱萍2015 年 7 月目录第一部分 总体设计与选型分析41.1总体设计41.1.1受控模块41.1.2测温模块51.1.3单片机系统51.1.4显示模块51.1.5控制模块51.1.6 wifi模块51.1.7上位机51.2选型分析51.2.1受控模块方案51.2.2测温模块方案51.2.3控制模块方案61.2.4显示模块方案6第二部分

2、电路硬件设计72.1受控模块72.2测温模块72.3单片机系统82.4显示模块92.5控制模块102.6 wifi模块112.7 上位机13第三部分 系统软件设计133.1主程序设计143.2子程序设计153.2.1 LCD1602子程序153.2.2 DS18B20子程序163.2.3 串口中断程序173.2.4 定时器中断程序173.2.5 PID子程序18第四部分 PID调试194.1 PID调节器控制原理194.2 位置式PID算法20 4.3 PID参数整定20 4.3.1 整定比例带20 4.3.2 整定积分时间20 4.3.3 优化参数21 4.3.4 关于微分21 4.3.5

3、死区设置21第五部分 系统性能优化215.1反应速度优化215.2稳定性优化225.3 优化前后系统性能对比23第六部分 问题总结246.1 硬件问题246.1.1 MOS管开关无法正常工作246.1.2 电脑无法连接WIFI模块246.1.3 下位机返回数据乱码246.1.4 液晶无法显示246.2 软件问题246.2.1 上位机与下位机无法正常通信246.2.2 PID程序无法调用256.2.3 DS18B20测温不稳定25第七部分 总结25参考文献25附录A 仿真图26附录B 受控模块实物图27附录C 程序28基于单片机的WIFI无线温度测控系统摘要:温度是一个非常重要的物理量,因为它直

4、接影响燃烧、化学反应、发酵、蒸馏、浓度、结晶以及空气流动等物理和化学过程。温度控制失误可能引起生产安全、产品质量、产品产量等一系列问题。本文介绍的是一个以单片机为核心的无线温度控制系统,主要通过WIFI模块完成远程温度控制功能。在一定的区间内,在自动控制系统的控制下,温度始终在人们要求的范围之内。它利用单片机STC89C52、温度传感器DS18B20及LCD等器件实现。基本工作原理是单片机利用DS18B20对温度进行采集,通过串口传递给WIFI模块,再利用无线信号将数据传递给上位机(笔记本电脑或手机)进行温度显示。同时,上位机可以利用无线信号和通信串口发送目标温度给单片机,单片机利用内置的PI

5、D算法进行控温。关键词:单片机;WIFI发送接收;PID;温度控制;LCD显示第一部分 总体设计与选型分析系统的总体设计方案应在满足系统整体性能指标的前提下,充分考虑系统使用的环境,所选的结构要尽量简单实用、易于实现,器件的选用要着眼与合适的参数、稳定的性能、较低的功耗、低廉的成本以及较好的互换性能。1.1总体设计以下为本设计的总体框图显示模块wifi模块单片机系统测温模块受控模块上位机控制模块1.1.1受控模块受控对象为水泥电阻和12v供电的风扇,水泥电阻使用12v电源进行加热,风扇用来对水泥电阻进行降温,使其达到目标温度,从而实现温度控制。1.1.2测温模块测温电路核心器件是温度传感器DS

6、18B20。DS18B20测得水泥电阻的温度传输给单片机进行相应的处理。1.1.3单片机系统本设计的单片机使用51单片机。单片机系统连接受控模块、显示模块、控制模块、wifi模块四个部分。1.1.4显示模块显示模块使用LCD1602进行显示,由单片机驱动,显示测温对象的当前温度以及目标温度。1.1.5控制模块控制部分使用MOS管作为开关器件来控制对受控对象的加热以及降温从而达到温度控制的效果。单片机根据内置的PID程序输出不同占空比的PWM波,控制MOS管的通断,从而达到控温的目的。1.1.6 wifi模块wifi模块为有人的USR-WIFI232-T。wifi模块通过串口与单片机系统之间进行

7、双向的数据传输,具体数据由与wifi模块连接的上位机决定。1.1.7上位机上位机软件使用wifi模块配套的软件,而不去重新编写以加快进度。上位机通过wifi模块向下位机发送两种指令。一种是查询指令,要求下位机返回受控对象当前的温度;另一种是控制指令,修改测温对象的目标温度。1.2选型分析1.2.1受控模块方案方案一:将水泥电阻和风扇均直接置于外界环境中。该方案利于风扇对水泥电阻的降温,但外界环境的空气流动以及温度变化将会对水泥电阻的加热产生较大影响。方案二:将水泥电阻和风扇均至于密闭的容器内。该方案可以减小外界环境变化对水泥电阻加热的影响,但由于空气难以流动使得风扇的降温效果较差。方案三:将水

8、泥电阻置于容器内,将风扇固定在容器外,并在容器上风扇扇叶位置钻孔。钻孔的容器仍有较好的隔热效果,且风扇工作时容器内外的空气能较好的进行热交换。综合考虑,本设计采用方案三。1.2.2测温模块方案方案一:使用数字型DS18B20温度传感器。DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。它是单线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;测温范围 55125,在10-50C范围内精度高达0.1C;支持多点组网功能,多个DS18B20可以并联在唯一的三线上;且在使用中不需要任何外围元件。方案二:使用pt100通过电桥将温

9、度变化转换为电压变化供单片机识别。铂电阻温度传感器是利用其电阻和温度成一定函数关系而制成的温度传感器,由于其测量准确度高、测量范围大、复现性和稳定性好等,被广泛用于中温(-200650)范围的温度测量中。PT100是一种广泛应用的测温元件,在-50600范围内具有其他任何温度传感器无可比拟的优势,包括高精度、稳定性好、抗干扰能力强等。由于铂电阻的电阻值与温度成非线性关系,所以需要进行非线性校正。方案二用的是温敏电阻传感器,它是将温度变化转化为电阻变化,再通过外围电路转换为电压信号,虽然测量范围较大,但操作复杂,且对外界的环境要求很高,不宜实现。方案一利用的是DS18B20传感器,可以用单片机驱

10、动,简单易于实施,所以基于以上的分析和题目的要求,我们选择方案一。1.2.3控制模块方案方案一:使用MOS管作为开关控制。MOS管为压控流型器件,通过单片机IO口电平的不同可以控制电源通断,反应迅速,但由于单片机IO口的电压限制难以直接驱动MOS管,因此需要在单片机IO口外接一个三极管以增加驱动电压,然后接MOS管控制电源通断。方案二:使用继电器作为开关控制。选用继电器可以将加热电路与控制电路分离,以避免相互之间的干扰,但继电器的开关会有机械振动,影响系统的稳定性切会产生较大噪声,而且继电器的开关寿命短,反应速度要比MOS管慢得多,不适用于需要频繁开关的电路。本设计控制方法为单片机IO口输出不

11、同占空比的PWM波以调节水泥电阻的加热功率,以及风扇的降温功率,因此采用方案一比较合适。1.2.4显示模块方案方案一: 采用通用的LED数码管。该方案成本较低,电路设计简单,程序的编写也相对来说较方便。但数码管只能显示数字,且显示位数越多所需的驱动电流就越大,需要另外设计驱动电路。方案二:采用LCD1602液晶。LCD1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。这样在显示温度数据的时候就比较直观,同时在一定程度上也增加了字符的丰富感。但成本较高,编程较为

12、复杂。方案三:采用LCD12864液晶。带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。但成本高,编程复杂。为了更加方便的满足设计要求,并节约成本,我们采用了方案二,采用LCD1602进行显示。第二部分 电路硬件设计设计由受控模块,测温模块,单片机系统

13、等部分构成,具体框图请参照第一页的总体框图。该设计的核心为单片机系统。测温模块测得温度之后传递给单片机,单片机根据当前温度与目标温度调用不同的程序去驱动控制模块对受控模块进行控制。单片机作为下位机,与上位机进行双向的数据传输。下位机接受上位机的指令并给出一定的反馈。2.1受控模块受控模块的受控对象为水泥电阻和12v供电的风扇,因为水泥电阻和风扇无法仿真,在仿真电路中以LED串联10K电阻来模拟,LED的亮灭指示加热电路通断以及风扇是否工作。本设计将四个3欧姆的水泥电阻串联焊接在电路板上并将其悬挂于用亚克力板制成的密封容器内。由于容器内相对静止的空气有较好的隔热效果,可以减小外界环境对水泥电阻温

14、度的影响。两个水泥电阻缝隙间的温度较为稳定,利于温度传感器读取稳定的温度值。风扇固定在容器外部,并在容器上风扇扇叶的位置以及容器上该面的相对面上的相应位置钻孔。当风扇工作时容器内外的空气通过容器两个相对面上的小孔流通,从而打到降温的效果。另外,我们在小孔位置悬挂了一片塑料膜,当风扇工作时塑料膜被吹起,可以指示风力的大小,当风扇不工作时塑料膜覆盖在小孔上,从而减小外界环境通过小孔对容器内部的影响。2.2测温模块测温模块使用DS18B20。DS18B20是美国Dallas半导体公司的新一代数字式温度传感器,它具有独特的单总线接口方式,即允许在一条信号线上挂接数十甚至上百个数字式传感器,从而使测温装

15、置与各传感器的接口变得十分简单,克服了模拟式传感器与微机接口时需要的A/D转换器及其他复杂外围电路的缺点,而且,可以通过总线供电,由它组成的温度测控系统非常方便,而且成本低、体积小、可靠性高。DS18B20的测温范围-55+125最高分辨率可达0.0625,由于每一个DS18B20出厂时都刻有唯一的一个序列号并存入其ROM中,因此CPU可用简单的通信协议就可以识别,从而节省了大量的引线和逻辑电路。Dallas公司的单总线技术具有较高的性价比,适用于低速测控场合,测控对象越多越显示出其优越性;硬件施工、维修方便,抗干扰性好;具有CRC校验功能,可靠性高;软件设计规范,系统简明直观,易于掌握。DS

16、18B20的温度传感器是通过温度对振荡器的频率影响来测量温度的,如下图所示。DS18B20内部有两个不同温度系数的振荡器。低温系数振荡器输出的时钟脉冲信号通过由高温系数振荡器产生的门开通周期而被计数,通过该计数值来测量温度。计数器被预置为与-55对应的一个基数值,如果计数器在高温系数振荡器输出的门周期结束前计数到零,表示测量的温度高于-55,被预置在-55的温度寄存器的值就增加一个增量,同时为了补偿和修正温度振荡器的非线性,计数器被斜率累加器所决定的值进行预置,时钟再次使计数器计数直至零,如果开门通时间仍未结束,那么重复此过程,直到高温系数振荡器的门周期结束为止。这时温度寄存器中的值就是被测的

17、温度值。这个值以16位二进制补码的形式存放在便笺式存储器中。温度值由主机通过读存储器命令读出,经过取补和十进制转换,得到实测的温度值。2.3单片机系统本设计采用的单片机是STC89C52(仿真图中是AT89C52)。STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。下图为proteus仿真图中的最

18、小系统部分,包括了STC89C52以及周围的复位电路和晶振电路。晶振电路中使用的电容为22pf,晶振为11.0592HZ。复位电路中的电阻为10K,电容为22uf。2.4显示模块1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,它显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。设计采用LCD1602液晶,它与单片机P0和P3口相连接,单片机根据所测得的温度数据和内部存储

19、的目标温度通过编程实现在LCD1602上显示。在proteus中1602的VSS/VDD/VEE都默认接上相应电压,无须再接,背光源省略。值得一提的是本设计中8位数据位接的是单片机的P0口,由于P0口的驱动能力较弱,此处使用10k的排阻进行上拉。RS接单片机P34口,来选择传输的是命令还是数据。使能端E接单片机P35口来控制液晶的开启与关闭。读写控制端RW接P36,控制液晶操作是读还是写。2.5控制模块控制模块的电路图如下所示(受控对象由LED与电阻串联模拟)。控制电路共两个,分别控制水泥电阻的加热和风扇的工作,因为两个电路相同,此处只列出一个。控制模块工作原理:当单片机控制端加低电平时,三极

20、管Q1导通,这时Q1的上端,也就是C极被系统拉到0V左右,这时MOS管Q3的G极为0V,所以此时MOS管的DS端不会导通。当单片机控制端加高电平时,三极管Q1不导通,这是Q1的上端,也就是C极电位为Vcc(15V)-R4两端的压降,电流穿过R3后被稳压管D3稳压在12V,则此时MOS管的G极电压为12V,所以MOS管导通,负载工作。2.6 wifi模块wifi模块为采用实验室提供的有人USR-WIFI232-T。下图分别为USR-WIFI232-T外观图和管脚定义。本设计只用到该模块的1至6号管脚。USR-WIFI232-T管脚功能定义单片机采用5v供电,而wifi模块采用3.3.v供电,因此

21、需要转换电路,否则下位机无法正确返回数据。2.7 上位机本设计中使用笔记本电脑作为上位机,通过wifi模块配套的串口助手发送指令。当发送查询指令(十六进制00)时,下位机返回当前温度,并显示TURN ON THE 18B20!。当发送控制指令(十六进制29至3D,对应的十进制数为目标温度,例如发送2D,即将目标温度修改为45)时,目标温度被修改,返回提示信息TARGET has been changed! The TARGET is *,并立刻在下位机控制的LCD上显示。当发送其他指令时,下位机关闭温度返回,显示TURN OFF THE 18B20!。第三部分 系统软件设计温度测量系统的功能是

22、在程序控制下实现的。该系统的软件设计方法与硬件设计相对应,同样采用模块化的设计思想,按整体功能分成多个不同的程序模块,分别进行设计、编程和调试,最后通过主程序和中断处理程序将各程序模块连接起来。这样有利于程序修改和调试,增强了程序的可移植性。温度测量系统的软件主要分为:温度采集、温度控制、温度显示和数据无线传输。3.1主程序设计系统的主程序设计主要完成系统初始化以及判断调用各模块程序,即主要实现各程序模块的连接。具体有定时器0和定时器1的工作方式设置及初始化,LCD的初始化,PID程序的初始化,串口通信参数的设置,各变量的初始化。下图为主程序流程图。开始初始化显示目标温度读取当前温度显示当前温

23、度串口是否收到数据是执行对应操作并返回信息否是是否需要发送当前温度发送当前温度否返回3.2子程序设计3.2.1 LCD1602子程序该子程序包含若干子函数,用于驱动LCD1602的显示。因为本设计中单片机对LCD的操作速度较慢,因此不必等待,不必读取LCD的状态。写指令流程图写数据流程图RS=1RS=0P0=dataP0=command延时,EN=1延时,EN=1延时,EN=0延时,EN=0LCD初始化流程图EN=0RW=0写指令1写指令2写指令3写指令4写指令53.2.2 DS18B20子程序该子程序包含若干子函数,用于驱动DS18B20获取当前温度。DS18B20数据线定义为DQ。初始化函

24、数流程图 读字节函数流程图 写字节函数流程图DQ=0,写一位DQ=0,读一位DQ=1,稍作延时DQ=1DQ=1DQ=0,延时大于480us否写满8位读满8位DQ=1,稍作延时是返回返回读取温度函数流程图初始化DS18B20启动温度转换读取温度寄存器数值转换返回3.2.3 串口中断程序当上位机发送数据给下位机时进入串口中断,调用串口中断程序。该程序主要是设置标志位供主程序查询。RI=0将接收的数据传递给aflag_uart=1根据a设置flag_on返回3.2.4 定时器中断程序定时器中断用来设置PID调用周期以及生成PWM波。重装初值是计时达100ms计时清零,执行pid否count1+cou

25、nt+是是count1hightime1counthightimepwm=1pwm=1否否pwm=0pwm=0返回3.2.5 PID子程序PID程序是控温的核心程序,当当前温度与目标温度不同时PID程序便会一直调节加热和降温的功率,使当前温度靠近目标温度。开始是是否否否否是是全速加热目标温度大于当前温度更新存储的目标温度,sun_i清零目标温度是否改变存储目标温度是否第一次执行返回相差3度以上调节降温pwm占空比调节加热pwm占空比第四部分 PID调试4.1 PID调节器控制原理在控制系统中,控制器最常用的控制规律是PID控制。PID控制系统原理框图如图3.1所示。系统由PID控制器和被控对象

26、组成。图3.1 PID控制系统原理框图PID控制器是一种线性控制器,一种它根据给定值rin(t)与实际输出值yout(t)构成控制偏差:Error(t)=rin(t)-yout(t)PID控制就是对偏差信号进行比例、积分、微分运算后,形成一种控制规律。即,控制器的输出为: (3.1)或写成传递函数的形式: (3.2)左中, kp比例系数;Ti积分时间常数;T d微分时间常数。简单说来,PID控制器各校正环节的作用如下:(1) 比例环节:成比例地反映控制系统的偏差信号error(t),偏差一旦产生,控制器立即产生控制作用,以减小偏差。比例控制: Gc(s)= Kp (2) 积分环节:主要用于消除

27、静差,提高系统的无差度。积分作用的强尽弱取决于积分时间常数Ti,Ti越大,积分作用越弱,反之则越强。积分控制: Gc(s) = Kp/T is(3) 微分环节:反偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。微分控制: Gc(s) =KpT ds4.2 位置式PID算法 基本PID控制器的理想算式为 (3.3) 式中u(t)控制器(也称调节器)的输出;e(t)控制器的输入(常常是设定值与被控量之差,即e(t)=r(t)-c(t));Kp控制器的比例放大系数;Ti 控制器的积分时间;Td控制器的微分时间。设u

28、(k)为第k次采样时刻控制器的输出值,可得离散的PID算式 (3.4)式中 , 。由于计算机的输出u(k)直接控制执行机构(如阀门),u(k)的值与执行机构的位置(如阀门开度)一一对应,所以通常称式(2)为位置式PID控制算法。位置式PID控制算法的缺点:当前采样时刻的输出与过去的各个状态有关,计算时要对e(k)进行累加,运算量大;而且控制器的输出u(k)对应的是执行机构的实际位置,如果计算机出现故障,u(k)的大幅度变化会引起执行机构位置的大幅度变化。4.3 PID参数整定4.3.1 整定比例带 先把系统设置为纯比例作用。也就是说积分时间无穷大,微分增益为0。逐渐加大比例作用,一直到系统发生

29、等幅震荡。当我们把kp加大到20时,达到了上述效果。根据经验公式,把比例增益乘以0.8,kp定为16。此时观察被调量曲线,发现衰减率大概为0.75,符合要求。4.3.2 整定积分时间 为了消除静态误差,要添加积分作用。从0.01开始逐步增加ki。过程中发现被调量会剧烈变化。经检验发现是积分量sum_i没有设阈值导致其变量溢出。于是给它设定范围为【-1000-1000】。当增加到0.08时,发现被调量波动小。系统稳定时间也比较短。于是设ki为0.08。4.3.3 优化参数 为了进一步加快稳定时间,给PID函数设置了一个执行范围,当目标温度比实际温度多于三度时,使加热占空比为100%,当实际温度比

30、目标温度多于一度时,使散热占空比为100%。 此时曲线波动小但是震荡频繁,于是减小比例系数至14。然后观察被调量曲线发现其在第一个起伏使恢复至设定值所需时间较长,于是减小积分系数,当减至0.06时,曲线波动小而平缓。调试结果较为满意。故选定积分参数为0.06,比例参数为14。 4.3.4 关于微分 微分有超前调节的功能,但是微分作用在测量值存在不间断的微小波动时,反而会造成调节干扰,不如不要。考虑到温度会有小波动,我们最终决定只做PI调节。Kd为0。4.3.5 死区设置 为了减少执行器动作次数,可以对PID调节器设置死区。但是死区过大会降低调节精度,也会降低稳定性,因为它造成了调节滞后。权衡利

31、弊之后,我们决定不设置死区以换取高精度。第五部分 系统性能优化我们的初步设计没有降温措施,只是加热。在初步完成设计之后我们发现虽然温度可以稳定在非常接近目标温度的范围内,但从系统开始工作到温度稳定时间很长,因此,我们对系统进行了硬件设计优化以及参数优化。5.1反应速度优化上图为未经优化的系统控制水泥电阻温度稳定在40度的温度变化曲线(横坐标为采样个数,每两个点之间的时间间隔约为0.8s)。从下位机返回的数据可以看出温度误差已经控制在低于目标温度0.1度和目标温度直接的范围内,但从图像可以看出温度变化很慢,从开始加热到完全稳定需要将近十分钟。因此,我们加上风扇进行降温。我们在加上风扇并微调参数后

32、得到上图所示的温度变化曲线。从下位机返回的数据可以看出温度误差有所增大,为0.1。从图像可以看出此时的温度出现轻微的波动。5.2稳定性优化由上图可以看出,当温度第一次上升至目标温度并下降后需要较长时间才能再次达到目标温度并稳定,我们在多次调节参数没有效果之后稍微改进了一下算法。使当前温度低于目标温度时控制加热的PWM波有一个基础的占空比,这样就能在当前温度低于目标温度后尽快的上升至目标温度。下图为改进后的温度曲线。由上图可以看出,虽然温度还是有一些波动,但较之前而言能更快的接近目标温度。5.3 优化前后系统性能对比本设计的功能除了将水泥电阻稳定在一个温度之外还可以更改目标温度并再次稳定。我们测

33、试了从室温上升至40度,再上升至45度的情况。以下三幅图像分别为优化前,第一次优化后以及第二次优化后的图像。由以下图像对比可知优化后虽然误差有了稍微的增大,但稳定所需时间大大缩短了。第六部分 问题总结6.1 硬件问题6.1.1 MOS管开关无法正常工作在制作控制电路时我没有考虑MOS管的型号,直接在网上找了一幅MOS管管脚分布图作为参考,然而那幅图的漏极和源级的分部与我所用的MOS管刚好相反。MOS管的管脚分布要参考官方资料,源级和漏极接反会导致Vgs一直为高,从而使MOS管一直导通,达不到控制的效果。6.1.2 电脑无法连接WIFI模块在实验室时电脑无法连接WIFI模块,但在宿舍可以,应该是

34、实验室相同型号的WIFI模块较多,相互干扰导致无法连接,此问题暂未解决。6.1.3 下位机返回数据乱码用上位机通过WIFI模块给下位机发送数据,下位机能够正常接收,并且能做出相应的正确反应,但下位机本应返回给上位机的数据丢失或者返回的是乱码。经过查阅资料知道是电平不匹配的问题。单片机使用5V供电,WIFI模块使用3.3V供电,需要增加电平转换电路才能正常工作。6.1.4 液晶无法显示开始以为是程序问题或者是接线问题,经检查发现是液晶损坏。6.2 软件问题6.2.1 上位机与下位机无法正常通信单片机使用11.0592HZ的晶振,波特率设置为9600,但WIFI模块的波特率默认为115200,未修

35、改时WIFI模块与单片机之间无法正常进行串口通信。6.2.2 PID程序无法调用PID设计为每100ms调用一次,调用方法是由定时器中断处理函数置标志位,PID调用结束后标志位复位。但由于主函数中有较多延时函数,导致中断处理函数置位后PID程序未来得及执行标志位又复位了。解决办法是将PID的调用放置在中断处理函数中判断。6.2.3 DS18B20测温不稳定定时器中断开启使得18b20读数不稳定。因为定时器中断是强制性的,一旦计时溢出,无论程序执行到何处都会被暂停,优先去执行中断服务程序。 DS18B20这种对时序有严格要求的单总线通讯,在发送和接收数据时被定时器中断扰乱了时序,所以无法通讯。解

36、决办法是直接在读取温度时就把中断关闭,不让PWM的中断打扰,读取温度的时间应该很短,影响不大。第七部分 总结本次课程设计由我们两人共同完成,一人负责硬件电路的设计制作以及部分辅助程序的编写,另一人负责核心PID算法的设计以及整体程序的调试。与独自制作相比分工合作效率更高。但由于都是第一次与他人合作去完成课设,我们各自写的程序移植性又不够好,导致两人写的程序不能完全兼容,花了一定的时间来调试。PID参数整定时意识到:比例,积分,微分三个参数的大小都不是绝对的。切不可以为我发现一个参数比较合适,就把其固定死,不管别的参数怎么变化,永远不变前面固定的参数。而要在多个参数之间反复权衡,既要把握原则性,

37、又要把握灵活性。我们从本次课程设计中收获很大,除了专业知识以及分析问题解决问题的经验外我们还学会了如何系统地去完成一个设计。我们已经能够系统地一步步去分解任务去完成去总结,而不再是像无头苍蝇一样做到哪里算哪里。参考文献新概念51单片机C语言教程:入门、提高、开发、拓展全攻略/郭天祥编著.-北京:电子工业出版社,2009.1PID调节控制 V1.1Jan 23,2006 中文版中国电子网技术论坛附录A 仿真图附录B 受控模块实物图附录C 程序#include#include #include#include#define uchar unsigned char#define uint unsig

38、ned intuchar code table=target:;uchar code table1=current:;sbit lcden=P34;sbit lcdrs=P35;sbit lcdrw=P36;sbit DQ=P22;sbit pwm=P24;sbit pwm1=P25; sbit dula=P26;sbit wela=P27;sbit led=P10;/指示风扇PID函数执行sbit led0=P11;/指示主函数执行float TARGET=37;uchar num;uint hightime,hightime1,count1=0,count=0,qqq=1;float uk

39、,e1,e2,sum_i,kp,ki,kd,sum_i1,uk1;float temp,temp1;uchar flag_on,flag_uart,flag_time=0,a,t0_num=0,deliever,jr_time=0;/以下是LCD1602驱动程序/延时函数void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/写指令函数void write_com(uchar com)lcdrs=0;P0=com;delay(5);lcden=1; delay(5);lcden=0;/写数据函数void write_data(uch

40、ar date)lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;/初始化函数void init()P0=0XFF;/关掉数码管的位选信号。阻止数码管受到P0口信号的影响。(为了方便,使用开发板上的部分硬件资源,因此需要做一些屏蔽操作,防止不用的部分产生干扰)delay(5);wela=1;delay(5);wela=0;dula=0;lcden=0;lcdrw=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);/以上是LCD160

41、2驱动程序/以下是DS18B20驱动程序/延时函数void delay1(unsigned int i)while(i-);/初始化函数Init_DS18B20(void)unsigned char x=0;DQ = 1; /DQ复位delay1(8); /稍做延时DQ = 0; /单片机将DQ拉低delay1(80); /精确延时 大于 480usDQ = 1; /拉高总线delay1(14);x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay1(20);return 0;/读一个字节ReadOneChar(void)unsigned char i=0;unsig

42、ned char dat = 0;for (i=8;i0;i-)DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号if(DQ) dat|=0x80;delay1(4);return(dat);/写一个字节WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;delay1(5);DQ = 1;dat=1;return 0;/读取温度uint ReadTemperature(void)unsigned char a=0;unsigned char b=0;unsigned int t=0;fl

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com