具有语音警报功能的温控器仿真设计毕业论文_第1页
具有语音警报功能的温控器仿真设计毕业论文_第2页
具有语音警报功能的温控器仿真设计毕业论文_第3页
具有语音警报功能的温控器仿真设计毕业论文_第4页
具有语音警报功能的温控器仿真设计毕业论文_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 目 录1、前言12、总体方案设计22.1设计容22.2设计方案比较22.3方案论证32.4方案选择33、单元模块设计43.1各单元模块功能介绍与电路设计43.1.1 按键输入电路43.1.2 LED数码管显示电路53.1.3 温度采集电路73.1.4 报警模块设计73.1.5 串口通信模块设计83.1.6电源电路93.1.7 89C52单片机模块103.2特殊器件的介绍113.3.1 DS18B20器件介绍114、软件设计134.1软件设计原理与所用工具134.1.1设计原理134.1.2 KeilC、Proteus与VB软件介绍134.2设计流程图144.2.1 主程序设计原理144.2.

2、2 温度采集子程序流程图154.2.3 RS232串口通信的程序流程图165、系统调试175.1 硬件调试175.2软件调试176、系统功能、指标参数216.1 系统功能216.2 系统指标参数指标216.3系统功能与指标参数分析217、结论228、总结与体会238.1设计小结238.2设计体会238.3设计改进与建议239.辞2410、参考文献25附录一:相关设计图与源程序261系统的原理电路图262系统PCB图273源程序代码28附录二:外文资料翻译3847 / 491、前言温度测控系统是比较常见的和典型的过程系统,温度是工业生产过程中重要的被控参数之一,在冶金、机械、食品、化工等各类工业

3、生产过程中广泛使用的各种加热炉、热处理炉、反应炉,对工件的处理温度等均需要对温度严格测量控制。当今计算机控制技术在这方面的应用,已使温度测控系统达到自动化、智能化。在半导体技术的支持下,温度测控器件发展迅速。而温度传感器是各式各样的传感器中经常使用的一种,如今温度传感器的外形都非常小巧,这样更为我们的生活提供了许多功能和便利,并且也让它广泛应用于生产实践的各个领域中。21世纪以来,智能温度传感器正朝着高精度、多功能、高可靠性与安全性、总线标准化、网络传感器和开发虚拟传感器、研制单片测温系统等高科技的方向迅速发展。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而

4、且可靠性相对较差,测温准确度低,检测系统也有一定的误差。这里设计的数字温度测控系统具有读数方便,测温围广,测温精确,数字显示,串口通信,适用围宽等特点。本文所研究和开发的课题是温度测控的仿真设计,目的在于模拟空调的温度测控与自动开关系统。本设计选用Intel公司生产的STC89C52芯片作为主控制器件,DS18B20温度传感器作为温度测定采集系统,通过LED数码管实现实时温度和设定温度的显示,还可通过按键设定空调的目标温度,报警系统模拟空调的自动开关控制,通过串口还能与PC机通信以模拟空调的遥控系统。通过DS18B20温度传感器直接读取被检测的温度值,并进行数据的转换,此器件的线性度较好,物理

5、和化学性能也稳定,在0100围最大线性偏差小于0.01。该器件采用单线接口方式,DS18B20在与单片机连接时仅需要一条接口线就可以实现单片机与DS18B20的双向通讯,便于单片机处理和控制。2、总体方案设计2.1设计容设计一种基于单片机的温度测控的方法,以模拟空调的温度测控与自动开关系统,要求: (1)能够实时地检测温度,并能在空调主机和遥控器上显示出来。 (2)可通过空调主机和遥控器的按键设定目标温度,按键可移位。 (3)设定温度状态下,应能闪烁显示。 (4)实时温度超过设定温度的某一个门限围时,空调自动开启(用报警电路模拟即可)。2.2设计方案比较方案一:由单片机STC89C52来实现温

6、度控制系统的设计,外围电源采用+5V电源供电,通过DS18B20温度传感器采集实时温度,由按键电路设定目标温度,LED数码管可显示正常状态下的实时温度和设定状态下的目标温度,中央处理器由STC89C52单片机来完成,可通过串口与PC机通信,并在超出门限值时报警(模拟空调的自动开关控制)。这种方案,结构简单容易掌握,各部分电路实现起来都非常容易,在传统的温度测控设计中也应用得较为广泛,技术成熟。其原理框图如图2.1:LED显示PC机报警电路电源电路DS18B20温度传感器STC89C52按键电路图2.1单片机原理实现框图方案二是基于CPLD 温度采集系统,通过CPLD 构成的控制器输出一个脉冲给

7、MAX232部A/D 转换器的CLK 端,使其开始A/D 转换,同时将CPLD 部地址发生器产生的地址信号经地址选择器(在CPLD 部)直接送到存储器,A/D 转换器所采集到的数据经数据总线直接输入到存储器中保存,如此便完成一个采样周期,重复上述步骤,直到完成预定数量的数据采集。首先以外置的双极型二极管去感知外部的温度变化并且转化为电流信号;然后将电流信号传送给温度传感器进行ADC 转换;最后通过CPLD 完成数据的串并转化,并将数据发送到LED。方案二原理框图如图2.2所示。成批采集结束中断处理程序地址发生器产生地址信号存储器地址选择器控制器MAX232 A/D数据转换采集图2.2 CPLD

8、实现的原理框图2.3方案论证通过方案一和方案二的比较,可以看出方案一的设计使用单片机,而直接用单片机编程,用硬件电路搭建方便,通过STC89C52单片机编写程序,来控制LED的亮灭以与与PC机通信。这样可以大大简化系统结构,降低材料的成本。而方案二采用CPLD芯片实现的电路,在智能化领域,虽说CPLD功能更强大,但价位较高,对于这样一个小系统,没有必要用价格昂贵的集成芯片,这样会增加成本。2.4方案选择设计直接用单片机编程,用硬件电路搭建方便,通过STC89C52单片机编写程序,来控制LED的亮灭以与与PC机通信。这样可以大大简化系统结构,降低材料的成本。提高系统的先进性和可靠性,能实现控制器

9、的系统编程。所以从节约成本和功能方面综合考虑,本次设计我们采用了方案一。3、单元模块设计本节主要介绍系统各单元模块的具体功能、电路结构、工作原理、以与各个单元模块之间的联接关系;同时本节也会对相关电路中的参数计算、元器件选择、以与核心器件进行必要说明。3.1各单元模块功能介绍与电路设计经过以上所述的设计容与要求的分析,可以将主要电路分为以下几部分:温度采集模块,按键模块,LED显示模块,报警模块,串口通信系统。单片机初始化之后,将不停地扫描这些模块。温度采集模块会实时地采集当前温度,按键模块判断是否有按键按下,并实现对应的功能,显示模块能显示正常状态下的实时温度和设定状态下的目标温度,报警模块

10、实现越限报警功能,串口通信发送模块将采集到的实时温度值发送给上位机显示出来,串口通信接收模块能接收上位机发送下来的设定温度值。3.1.1 按键输入电路本设计采用行列式键盘,如图3.1,行列式键盘用于按键数量较多的场合,它由行线和列线组成,按键位于行、列交叉点上,也称矩阵键盘,相对于独立式键盘更加节省硬件资源。按键处理方法采用循环扫描,即直接在主程序中利用循环扫描查询和按键相连的I/O电平,然后进行相应处理。循环扫描又分为行扫描和列扫描,本设计采用的是列扫描,即行线连接的单片机I/O口作为输入口,列线连接的单片机I/O口作为输出口。具体方法如下:行初始化电平为1,列初始化电平为0。检查各行线输入

11、电平是否为全“1”。如果不是全“1”,则有键按下。然后逐列置零电平,其余各列为高,检查行线的电平是否变为零,有,则该行列交叉的按键判断为按下。本设计只使用前两列按键,即一个4行×2列的一个矩阵键盘。各个按键功能是:(1) S2:设定状态下对选定位加1。(2) S3:设定状态下对选定位减1。(3) S4:设定状态下左移选定位。(4) S5:设定状态下右移选定位。(5) S6:确定键(显示实时温度)。(6) S7;设定温度(显示设定温度)。(7) S9:启动/停止(开/关显示)。图 3.1 按键电路3.1.2 LED数码管显示电路 7段数码管一般由8个发光二极管组成,其中由7个细长的发光

12、二极管组成数字显示,另外一个圆形的发光二极管显示小数点。当发光二极管导通时,相应的一个点或一个笔画发光。控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。数码管显示电路采用共阳极数码管,P0作位选,P2作段选。位码:P0.7 P0.0 0xF7: 1 1 1 1 0 1 1 1LED2 LED1段码:h g f e d c b a0xC0: 1 1 0 0 0 0 0 0 图 3.2 数码管段码图 3.3 四位数码管图3.4 LED显示电路3.1.3 温度采集电路三针插孔用来插DS18B20的芯片,DS18B20的数据端二脚

13、接到单片机的P36 管脚,用单片机来控制DS18B20,实现电路对温度的监控。DS18B20为单总路线芯片,单片机通过对芯片二管脚的时序控制,来启动温度转换和写入温度上下限,读出温度转换值等一系列操作,并将温度转换的值存入单片机中,单片机通过串口将数据传输到电脑中,通过VB的控件MSCOMM1来接收数据,并用文本框TEXT显示出来。该设计对温度的测控是用温度芯片DS18B20来实现的,该模块的电路图如图3.5所示。通过单线总线端口访问DS18B20的协议如下:步骤1.初始化步骤2.ROM操作指令步骤3.DS18B20功能指令每一次DS18B20的操作都必须满足以上步骤,若是缺少步骤或是顺序混乱

14、,器件将不会返回值。图3.5 温度采集电路3.1.4 报警模块设计本设计采用蜂鸣器越限报方式(实际用LED代替),当采集到的实时温度超过设定温度的±2 围时,将P3.3引脚置为低电平,使LED发光二极管发光,其原理图如图3.6所示。图3.6 报警电路3.1.5 串口通信模块设计 MAX232是目前最常用的串行接口标准,也是美国电子工业协会正式公布的串行总线标准,用来实现计算机与外设之间、计算机与计算机之间的数据通讯。MAX232 串行接口总线适用于:传输速率最大为20kBps,设备之间的通讯距离不大于15m。MAX232 协议以-5V-15V表示逻辑1;以+5V15V 表示逻辑0。A

15、Tmega8单片机带有一个通用同步/异步全双工串行收发模块 USART,其主要特点如下:支持同步或异步操作;全双工操作;同步操作时,可主机时钟同步,也可从机时钟同步;支持5、6、7、8和 9位数据位,1 位或2 位停止位的串行数据帧结构;独立的高精度波特率发生器,不占用定时/计数器;由硬件支持的奇偶校验位发生和校验;数据溢出检测;帧错误检测;包括错误起始位的检测的噪声滤波器和数字低通滤波器;三个完全独立的中断,TX发送完成、TX 发送数据寄存器空、TX接收完成; 支持多机通信模式; 支持倍速异步通信模式。MAX232串行通信接口电路图如图3.7所示。图3.7 MAX232串口通信原理图3.1.

16、6电源电路电源电路如图3.8所示。电源电路为整个系统提供直流电。J16接USB接口,经USB接口提供+5V电压,开关S1控制电源是否导通,导通LED灯亮,单片机上电。电阻R10起到限流的作用,保护LED灯。图3.8 电源电路图3.1.789C52单片机模块此模块主要包含89C52单片机、时钟电路、复位电路。在此次设计中时钟电路之所以选择11.0592M的晶振是因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)常见的波特率相关。特别是较高的波特率(19600,19200),这些晶振的振荡频率都是准确的。在复位电路中复位高电平有效,当按键没有按下时,RST端接地,为低电平。按键按

17、下,VCC与R22导通,分压后RST为高电平,单片机复位。89C52是89C51增强型单片机版本,它结合了CMOS的低功耗特征与CMOS的高速与高密度技术,它基于标准的MCS-51单片机指令系统和体系结构,集成了向上或向下计数器和时钟输出等更多的功能,适合于类似机体控制等应用场合。89C52置8位中央处理单元、8k片程序存储器(ROM)、256字节部数据存储器(RAM)、32个双向输入/输出(I/O)口、3个16位定时/计数器、5个两级中断结构、一个全双工串行通信口和片时钟振荡电路,更优于89C51。图3.9 89C52单片机模块3.2特殊器件的介绍本系统中主要使用了DS18B20此功能器件。

18、下面就此器件的功能特点、主要参数和使用方法作相应说明。3.3.1 DS18B20器件介绍独特的单线接口仅需一个端口引脚进行通讯每个器件有唯一的64位的序列号存储在部存储器中简单的多点分布式测温应用无需其他多余外部器件可通过USB数据线供电。供电围为3.0V到5.5V。测温围为-55+125(-67+257)在-10+85围误差不超过±0.5温度计分辨率可选择为912位最多在750ms将温度转换为12位数字用户可定义的非易失性温度报警设置报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件与DS1822兼容的软件图3.10 DS18B20实物图4、软件设计4.1软件设计原理与所

19、用工具 本节主要介绍系统软件设计原理与KeilC、Proteus与VB软件开发环境。4.1.1设计原理 以单片机STC89C52为主控器件,利用DS18B20采集外部温度,并将温度值存入一个4位数组num1,按键模块先判断是否有按键按下,若有,则实现对应的功能对存设定温度值的数组num某一位进行加、减、左移、右移等,LED显示分两个状态,由按键控制,正常状态下显示num1中的实时温度,设定状态下显示num中的目标温度(门限温度),报警模块将数组num和num1转化为对应的数值并比较,若实时温度超过设定温度的一定围,则LED点亮报警,串口通信发送模块将数组num1中的数不断发送给上位机VB界面显

20、示出来,保证显示的温度为当前温度,串口通信接收模块接收上位机发送下来的设定温度值。4.1.2 KeilC、Proteus与VB软件介绍Keil C51是由美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、可读性、结构性、可维护性上有明显的优势,因而易学易用。使用汇编语言后再使用C来开发,体会更加深刻。Keil C51 软件提供丰富的函数库和功能强大的集成开发调试工具,全新Windows界面。另外重要的一点是,只要看一下编译后生成的汇编代码,就能明显体会到 Keil C51生成的目标代码效率是非常之高的,多数语句生成的汇编代码都很紧凑,容易

21、理解。在开发大型软件时更能体现高级语言的优势。Proteus软件是由英国Labcenterelectronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机与外围器件。它是目前最好应用最广的仿真单片机与外围器件的工具。虽然目前国推广刚刚起步,但已经受到单片机爱好者、从事单片机教学的老师、致力于单片机开发应用的科研工作者的青睐。Proteus是世界上著名的仿真软件,从原理图布图、程序调试到单片机与外围电路的协同仿真,一键切换至PCB设计,真正实现了从概念到产品上的完整设计。Proteus是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设

22、计平台。在编译方面,它也支持Keil、IAR和MPLAB等多种编译器。Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。它源自于BASIC编程语言。从任何标准来说,VB都是世界上使用人数最多的语言不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。同时VB拥有快速应用程序开发(RAD)系统和图形用户界面(GUI),可以轻易的使用RDO、DAO、ADO连接数据库,还可以轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。VB的程序可以包含一个主窗体和多个子窗体,或者是一个或多个窗体,类似于操作系统的样子。VB的组件既可以拥有用户界面

23、,也可以没有。有很少功能的对话框窗口(比如没有最大化和最小化按钮的窗体)可以用来提供弹出功能。这样一来,服务器端程序就可以处理增加的模块。4.2设计流程图4.2.1 主程序设计原理图4.1 软件设计流程图如图4.1所示,本设计程序流程可分为以下几个主要部分:首先初始化,声明子函数、全局变量,并且打开、设定相关中断,设置波特率。然后温度采集,建立DS18B20的温度采集协议,将DS18B20采集到的实时温度保存到数组中。接下来进行按键扫描,若没有按键按下,直接显示实时温度。若点设定温度键,显示设定温度值,并且选定的那一位闪烁,通过按键可对选定位加1,减1,左移,右移;再点确定键,返回正常显示状态

24、,显示实时温度值。然后再判断实时温度是否超过设定温度的门限围,若超过则报警,然后返回温度采集子程序,如此循环执行,若没有超过则直接返回温度采集进行循环。4.2.2 温度采集子程序流程图图4.2 温度采集子程序流程图 如上图所示,由于通过单线总线端口访问DS18B20必须遵守一定的协议,因此该子程序的设计也必须严格按照协议步骤的顺序实现。首先初始化,定义子程序变量,调用复位子程序,复位DS18B20准备采集温度。然后调用写字节子程序,执行ROM操作命令,将其跳过。然后再次调用写字节子程序,执行温度转换,这里需要一个延时,等待程序转换完成后,便可将采集到的温度值的各位对应的写入存放实时温度的数组n

25、um1。接下来再次初始化、执行ROM操作命令,然后执行存储器操作命令,将温度值读出并计算,从而得到实时温度值的每一位数值。4.2.3 RS232串口通信的程序流程图图4.3 串口通信RS232控件的程序流程图上位机使用RS232控件与下位机通信,程序中使用该控件的OnComm事件,使整个子程序循环执行,不断接收下位机传上来的数据。程序流程如图4.3所示,首先进行初始化,设置通信端口、波特率等参数,建立通信协议,然后接收数据并转换。当收到的数据为接收标志位时,则清空数据,等待接收数据,然后返回接收转换数据,接收完四个字节的数据后,将数据转换成数值型,最后显示在对应的文本框中,然后还要再次返回接收

26、数据,不断循环,以保证显示温度为当前的温度值。5、系统调试5.1 硬件调试经过Keil C和Proteus的仿真调试之后,我们将程序下载到了单片机实验板进行硬件仿真,基本实现了和软件仿真接近的结果,但是仍然有一些问题:第一,数码管总有一位不能点亮,但其位选标志P03口控制的LED灯是亮的。用万用表对连接在数码管上的三极管进行导通测量,发现三极管不能导通,换了一个三极管后,那位数码管还是不能点亮,再用万用表检测,发现是由于那块焊盘挨得比较紧密,焊接时不小心使相邻两个三极管相连,导致PNP不能正常工作。第二,键盘和单片机I/O口连线不正确,导致键盘不能起作用。后面结合原理图和程序重新连好线即可。由

27、于我们用了报警电路,其控制端口为P3.3口,在按键选用的时候,也用了P3.3口,导致报警电路不能正常工作,按键按下P3.3口,蜂鸣器就鸣叫,这个问题修改按键的控制端口即可。第三,液晶不能显示。调节W2即液晶的背光调节即可正常显示。5.2软件调试程序主要包括按键扫描,温度采集,LED数码管显示扫描,报警子程序以与串口通信发送、接收子程序。在程序设计初期遇到很多设计错误上的问题,通过反复整理思路,修改程序流程图,更正这些错误。在设计后期,程序调试的过程中,又遇到了几个可靠性和稳定性方面的问题,经过仔细地研究、反复地推敲和不断地尝试,也逐一解决了这些问题,是整个系统更加稳定可靠。下面介绍一下在整个调

28、试过程中遇到的问题,以与我们解决的方法。第一,按键时LED非正常闪烁。最初设计的按键扫描程序在调试的时,会出现一个问题每按下一次按键,LED就会闪烁一次;若按下按键不松开,则LED会不显示,直到松开按键才会重新显示。这是由于先前设计的程序中在执行按键功能之后有一个while语句判断按键是否松开,即while(P1&0xe2)!=0xe2);若所以当按键按下到松开按键的时间,整个程序一直在这里停留,所以不会显示或者执行其他子程序,从而就使得每按键一次LED显示闪烁一次。解决方法:设置一个按键标志位z,按前z=0,按下后按键子程序只讲将z置为1,然后跳出,继续执行其他子程序。下一次扫描按键

29、子程序的时候,先判断z的值,若为0,则不执行按键功能程序,若为1,则执行按键功能程序,并将z重新置为0,等待下一次按键的到来。这样,按键子程序不会进入while语句的死循环,因此LED显示在按键时也就不会闪烁,使得整个显示更加稳定、流畅。第二,闪烁显示时按键不灵敏。在LED闪烁显示设定温度时,按键不够灵敏,有时有效有时无效。这是由于LED闪烁显示是由两个90次的循环程序完成的。因此该子程序的延时会相对较大,所以导致按键时程序可能正在执行该循环,并没有扫描到按键,从而按键变得不灵敏。解决方法:解决这个问题的方法很简单,只需要在LED闪烁显示程序的每一次循环中都调用一次按键子程序Getch(),判

30、断是否有键按下。这样整个系统的按键会更加可靠、更加灵敏。第三,串口通信下位机接收错位。上位机通过串口向下位机发送设定温度时,下位机接收到的数据错开一位。这是由于上位机每一次发送4个数,而下位机程序却判断、接收了5次,因此错开一位。解决方法:将原程序中的while语句改成do.while语句并设置一个标志位t,以判断4个数是否接收完毕。以下是修改前的串口通信下位机接收子程序(左)和修改后的串口通信下位机接收子程序(右)的对比。void R_temp() unchar k; if(RI) for(k=0;k<4;k+) while(!RI); numk=SBUF; RI=0; void R_

31、temp()unchar k=0; do if(RI) numk=SBUF; RI=0; k+; t=1; if(k=4) t=0; ES=0; while(t);第四,延时问题。DS18B20器件对时序要求严格,之前由于延时问题,导致出现温度不能正常采集的情况。温度传感器DS18B20的延时首先是一个480960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。做为从器件的DS18B20在一上电后就一直在检测总线上是否有480960微秒的低电平出现,如果有,在总线转为

32、高电平后等待1560微秒后将总线电平拉低60240微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。写周期最少为60微秒,最长不超过120微秒。而完成一个读时序过程,也至少需要60us才能完成等等,对延时都有严格的要求,否则温度不能正常显示。温度采集仿真图如下:图5.1软件仿真图上位机显示图如下:图5.2上位机显示图6、系统功能、指标参数6.1 系统功能温度采集模块会实时地采集当前温度,按键模块判断是否有按键按下,并实现对应的功能,显示模块能显示正常状态下的实时温度和设定状态下的目标温度,报警模块实现越限报警功能,串口通信发送模块将采集到的实时温度值发送给上位机显示

33、出来,串口通信接收模块能接收上位机发送下来的设定温度值。6.2 系统指标参数指标本系统主要是对温度的实时监测与控制。所以测试系统指标参数时主要是对温度值的测试。表6.1 温度测量变化值测定次数123456LED显示手温变化()29.7530.1231.5031.8732.6234.506.3系统功能与指标参数分析本系统只实现了主要的温度测控功能,对于比较完善的系统功能实现则还有比较大的差距。1、本设计只能按键设定目标温度,不能设定目标温度的门限围,即门限围只能是目标温度±2,使用者无法通过按键设定这值。2、设计中可以把下位机采集到的实时温度通过串口发送给上位机显示,上位机也能把设定温

34、度通过串口发送给下位机,但是当下位机通过按键设定目标温度时,不能将设定的温度发送给上位机显示,所以程控部分还有待改善。3、上位机通过串口发送设定温度给下位机的VB程序中的延时,从10ms1000ms,经过反复调试最终设定为30ms,虽已能满足要求,但是不能在下位机显示设定温度状态下发送数据,否则接收错误。并且对于该延时对系统的影响仍不清楚,有待进一步的分析和思考。7、结论在本次设计中,基本完成了本设计的主要的要求与功能。在设计开始前我对各个模块进行了详细的分析和设计准备工作,设计过程中,相互协调,积极请教参与完成各个技术实现的难点。本设计要现报警温控器设计,实时温度是通过DS18B20采集的,

35、按键可以设定目标温度,实时温度超出设定的门限围,则将P3.3口置为低电平,LED灯点亮报警。VB界面能接收和显示下位机传上来的实时温度值,也能将设定温度值(一个4位的数组)发送给下位机,这是本次设计的难点,也是一个很大的创新点,真正实现了远程测控的功能,在VB程序中我们设置了通信端口选择,这并不会出现因为通信端口的不同而不能实现测控的情况,从而使上位机与下位机之间能够相互通信,远程测控功能对温度值有严格要求的系统来说是非常方便的。当然,在本次设计中,还有存在很多不足的地方。比如,下位机设定的目标温度不能发送给上位机显示,这在远程测控系统中是一个很大的不足,另外,上位机VB程序的延时与下位机接收

36、之间的问题也有待改善,这些不足希望可以在以后的设计中加以改善,使系统更加完善。8、总结与体会8.1设计小结在本次设计中,我遇到了很多不明白的地方,在寻求帮助的情况下,最终完成了设计。设计难免出现问题,但是出现问题最重要的就是学会解决,利用软、硬件的调试,将整个设计完善到最好。本次设计的主要任务我达到了,实现了设计的基本要求。本设计采用模块化设计思想,进行了软件设计,通过对系统主程序的流程进行分析,编写了系统程序,同时说明了各模块的功能,利用软件仿真、调试和硬件调试,最终设计出了具有报警功能的温控器,基本实现了其要求。8.2设计体会通过本次的智能化设计,不论是理论方面,还是实践方面,我都获益匪浅

37、,归纳起来,有以下几个方面的收获:(1)学习与掌握了STC89C52单片机的基本原理与其应用,对它的各种硬件接口与软件设计方法有更加深入的认识和理解。尤其是对串口通信有了更深的了解。(2)学会了基本的C语言编程,掌握了用C语言编程控制51单片机的方法以与它的具体程序实现步骤;(3)进一步巩固了VB知识,学会了用VB界面对电路系统的实时测控。(4)对利用万用表检测、调试硬件电路的方法有了非常大的认识与掌握,对利用万用表判断电路导通截止的方法也有了充分的掌握;(5)在这次设计中,充分认识到与人协作和与人交流是非常重要的,对电路各个板块有些不熟悉,但在遇到问题相互讨论交流才使问题能得以解决。8.3设

38、计改进与建议由于时间、条件和个人水平与经验所限,本次设计还有许多不足,需要改进。下位机设定的目标温度不能发送给上位机显示,这在远程测控系统中是一个很大的不足,另外,上位机VB程序的延时与下位机接收之间的问题也有待改善,这些不足希望能在以后的学习中改进。9.辞 在老师的辛勤指导下,在实验室同学的友好帮助下,我积极参与讨论和思考,完成本此毕业设计,此次设计,使我受益匪浅。我很珍惜有这次毕业设计的机会,感电气信息学院各位老师的帮助。在本次设计中,我要特别感海川老师与研究生师兄对我的指导,也要感同学们对我的帮助,有了你们的帮助,我才得以顺利完成设计。10、参考文献1 毅刚、喜元.单片机原理与应用M.:

39、高等教育,20032 海兵、敏.PROTEL电路设计实例与分析M. :人民邮电,20053 春葆、金晶.C语言程序设计辅导M.:清华大学,20074 将新、华军.单片机程序设计与应用(第三版)M. :电子工业,20065 鲁捷、焦振宇.PROTEL 2004 电路设计M. :清华大学,20066 康光华、大钦.电子技术基础模拟部分(第四版)M.高等教育.19877 自美 主编.电子线路设计.实验.测试(第二版)M华中理工大学,20058 康光华、邹寿彬.电子技术基础数字部分(第五版)M. :高等教育,20069 维成、勇.微机原理与接口技术M.华中科技大学,200910 徐凤霞,成安. STC

40、89C52单片机温度控制系统J. 大学学报 , 2004,(01)11 开生,郭国法. MCS-51单片机温度控制系统的设计J. 微计算机信息 , 2005,(07)12 萍. 单片机温度控制系统的设计与实现J. 师专学报 , 1999,(06)13 马明建数据采集与处理技术M交通大学,20059,(02)14 龙汉,安才,高占国MCS-51单片机原理与应用M,2004.1015 龚红军. 单片机温度控制系统J. 电气时代 , 2002,(10)附录一:相关设计图与源程序1系统的原理电路图2系统PCB图3源程序代码下位机程序:#include <reg51.h>#include &

41、lt;intrins.h>#define unchar unsigned char#define unint unsigned int#define nop() _nop_()sbit DQ=P36;sbitspeaker=P33;unsigned char dispbitcode8=0xf7,0xfb,0xfd,0xfe/*0xfe,0xef,0xdf,0xbf,0x7f*/;unsigned char dispcode11=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff;unchar t=0;unint temper;un

42、char a1,a2,a3,a4; void displys(void);void delay1ms(void);void delay_10ms(void);void TempDelay(unchar us);void write_byte(unchar date);unchar read_byte();void get_tem();void Alarm123();void Initial_();void T_temp();void R_temp();unint num=0,0,5,2; unint num1=0,0,0,0; unint s=0; unint z=0; unint q=0;u

43、nint mark=4; unint start=0;unsigned char x,y;void reset()unchar st=1;DQ=1;nop();nop();while(st) DQ=0; TempDelay(112);DQ=1;TempDelay(8);/56usif(DQ=1)st=1;elsest=0; TempDelay(74);void write_byte(unchar date)unchar i,temp;DQ=1;nop();nop();for(i=8;i>0;i-) temp=date&0x01;DQ=0;TempDelay(1); if(temp

44、=1)DQ=1; TempDelay(5); DQ=1;date=date>>1;unchar read_byte()unchar i,date;static bit j;for(i=8;i>0;i-)date=date>>1;DQ=1;nop();nop();DQ=0;nop();nop();nop();nop();nop();nop();DQ=1;nop();nop();nop();nop();j=DQ;if(j=1)date=date|0x80;TempDelay(2);return (date);void get_tem()unchar tem1,tem2

45、,tempnum;float aaa;reset();write_byte(0xCC);write_byte(0x44);for(tempnum=100;tempnum>0;tempnum-);num10=a4;num11=a3;num12=a2;num13=a1;reset();write_byte(0xCC); write_byte(0xBE); tem1=read_byte();tem2=read_byte(); aaa=(tem2*256+tem1)*6.25;temper=(int)aaa; a1=temper/1000;a2=temper%1000/100;a3=temper

46、%100/10;a4=temper%10;void TempDelay(unchar us)while(us-); void delay_10ms(void) unsigned char i,j; for(i=0;i>0;i-) for(j=248;j>0;j-);void Getch() P1=P1|0xE2; P3=0x7b; y=P1&0xe2; if(y!=0Xe2) delay_10ms(); if(y!=0Xe2) z=1; P3 = 0XFB; x=P1&0xe2; if(x!=0xe2) q=0; else P3 = 0X7F;x=P1&0x

47、e2; if(x!=0xe2)q=1; else if(z=1) z=0; if(q=0) switch(x) case 0xe0:if(nums=9)nums=0;break; nums=nums+1; break; case 0xc2: if(nums=0)nums=9;break;nums=nums-1;break; case 0xa2:if(s<3) +s,mark=s; break; case 0x62: if(s>0) -s,mark=s; break; else if(q=1) switch(x) case 0xe0: s=0;mark=4; break; case

48、0xc2: s=0;mark=0; break; case 0xa2: break; case 0x62: start=!start;s=0;mark=4;break; void displys() if(start=1) char k;char l;switch(mark) case 4:for(k=0;k<4;k+) P0 = dispbitcodek; P2 = dispcodenum1k;delay1ms(); if(k=2)P2&=0x7f;delay1ms(); P0=0xff; P2=0xc6;P0=0xdf;delay1ms(); P0=0xff; delay1m

49、s(); break; case 0: for(l=0;l<90;l+) Getch();for(k=0;k<4;k+)if(k=0)k+; P0 = dispbitcodek; P2 = dispcodenumk; delay1ms(); if(k=2)P2&=0x7f;delay1ms();P0=0xff; P2=0xc6;P0=0xdf;delay1ms(); P0=0xff; delay1ms();for(l=0;l<90;l+) Getch();for(k=0;k<4;k+) P0 = dispbitcodek; P2 = dispcodenumk;d

50、elay1ms();if(k=2)P2&=0x7f;delay1ms();P0=0xff; P2=0xc6; P0=0xdf;delay1ms();P0=0xff; delay1ms(); break; case 1: for(l=0;l<90;l+) Getch();for(k=0;k<4;k+) if(k=1)k+;P0 = dispbitcodek;P2 = dispcodenumk;delay1ms(); if(k=2) P2&=0x7f; delay1ms(); P0=0xff; P2=0xc6;P0=0xdf;delay1ms();P0=0xff; delay

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论