基于usb串口的多点温度采集系统设计

基于usb串口的多点温度采集系统设计

ID:12934253

大小:628.21 KB

页数:41页

时间:2018-07-19

上传者:xinshengwencai
基于usb串口的多点温度采集系统设计_第1页
基于usb串口的多点温度采集系统设计_第2页
基于usb串口的多点温度采集系统设计_第3页
基于usb串口的多点温度采集系统设计_第4页
基于usb串口的多点温度采集系统设计_第5页
资源描述:

《基于usb串口的多点温度采集系统设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

*****************聊城大学东昌学院本科生毕业论文(设计)题目:基于USB串口多点温度采集系统的设计专业代码:071201作者姓名:***学号:070002100单位:**************指导教师:*******2011年5月15日35 *****************目录摘要1前言11.概述21.1课题研究背景21.2课题研究意义21.3相关软件介绍22.基于USB串口多点温度采集系统的设计42.1系统功能42.2系统结构42.2.1组成结构42.2.2工作原理53.核心控制器的设计63.1芯片的选择63.2芯片资源的分配64.显示模块的设计74.1数码管结构以及工作原理74.2动态显示74.3数码管接法74.4显示模块的编程及仿真结果85.温度采集模块的设计105.1DS18B20概述105.2DS18B20引脚描述115.3DS18B20工作原理125.4DS18B20功能指令1235 *****************5.5DS18B20操作时序分析135.6DS18B20连接电路图146.串行通信模块的设计166.1串口通信结构166.2串口通信的工作原理166.3串行通信的电路连接176.4串行通信的编程及仿真结果187.外部设备的电路设计207.1单片机控制外部设备简介207.2PC智能化控制的实现207.3强弱电的隔离208.系统的整体设计218.1系统程序设计218.2原理图219.系统的调试与检测239.1检测硬件电路239.2模块调试检测239.3整体调试检测23结束24参考资料25致谢2635 *****************摘要本课题主要介绍基于AT89S52单片机和DS18B20数字温度传感器的多点温度采集系统。该系统利用AT89S52单片机分别采集各个温度点的温度,实现温度显示、报警等功能。它以AT89S52单片机为主控制芯片,采用数字温度传感器DS18B20实现多路温度的检测,测量精度很高。该系统采用液晶显示模块,LCD1602A作为显示器,形象直观的显示测出的温度值。本文首先在绪论中介绍了此系统的背景以及功能。第二章确定设计方案。在第三章论述了总体的设计过程,确定了技术指标及器件的选择并且描述了系统硬件电路设计、硬件设计框图及所使用的各种芯片功能与特性。第四章重点剖析了软件设计的过程。最后一章中具体论述了系统的调试软件及调试中出现的问题。基于AT89S52单片机的单总线多点温度采集系统具有硬件组成简单、多点温度检测、读数方便、精度高、测温范围广等特点,在实际工程中得到广泛应用。关键词:温度采集;USB串口;CH372;DS18B20;AT89S52单片机35 *****************AbstractTheproblemintroducesAT89S52monolithicmachineandtheDS18B20figuretemperaturesensor-basedmultiplespottemperaturemeasurementsystemmainly.AT89S51singlechipusingthesystemwerecollectedatvarioustemperaturesofthetemperature,temperaturedisplayandalarmfunctions.ItAT89S52MCU-basedcontrolchip,digitaltemperaturesensorDS18B20therealizationofmulti-channeltemperaturedetection,measurementaccuracycanreach0.5℃.ThesystemusesLCD1602Aliquidcrystaldisplaymodules,LCD1602Aasadisplay,thedisplayofvisualimagestomeasurethetemperature.Thisarticlefirstdescribedintheintroductionofthissystem,aswellasbackgroundfeatures.Thesecondchaptertodeterminethedesign.Inthethirdchapterdiscussestheoveralldesignprocesstodeterminethetechnicalspecificationsandthechoiceofdevicesandadescriptionofthehardwarecircuitdesign,hardwaredesignanddiagramusedinavarietyoffeaturesandfunctionsofthechip.ChapterIVanalyzesthekeysoftwaredesignprocess.Thefinalchapterdiscussesthespecificsystemdebugginganddebugsoftwareproblems.AT89S52singlechipbasedonsingle-busmulti-pointtemperaturemeasurementandcontrolsystemwithsimplehardwarecomponents,multi-pointtemperature,easyreading,high-accuracy,widetemperaturerange,andothercharacteristicsoftheactualprojectsarewidelyused.Keywords:temperatureacquisition;USBserial-port;CH372;DS18B20;AT89S52SCM35 *****************基于USB串口多点温度采集系统的设计前言在当今社会中科研实验、车间实验检测、大棚蔬菜种植、各种动物养殖及卫生医疗等场合经常要用到多点温度采集系统。利用PC机将采集到的多点温度进行分析处理是非常方便的,目前PC机的数据接口最方便的就是通用串行总线USB。USB总线具有连接方便,无需外接电源,即插即用,支持热插拔,动态加载驱动程序等特有优点,在主机和数据采集系统之间可以实现简单、快捷、可靠的连接和通讯。在测试设备与计算机之间建立有效、灵活、低功耗、可靠的通讯方式。实现测试仪器高速、便捷、网络化是当今仪器发展的一个重要方向。所以,基于USB总线的多点温度采集系统是一种非常实用的温度采集方式。1.概述1.1课题研究背景35 *****************温度采集是工业生产经常遇到的过程控制,在很多工艺生产过程中,温度的控制效果直接影响到产品的质量,因而设计一种比较理想的温度控制系统是非常有价值的.日常生活中,温度值也是一个重要的参考量.人们的居室,医院等环境都要求对温度的有一定的控制.此外,对温度信息的采集,检测,控制,不仅保证产品质量,还节约能源,安全生活生产方面积极作用。这就使得温度的控制,温度值采集成为了人们日常生活生产中一个极有意义的工作。由于温度的采集,控制属于四遥(遥测、遥信、遥控、遥调)领域。单片机在凭借其在系统设计中的成本、复杂度和系统稳定性方面的优势,在控制领域中得到了广泛运用。设计开展之前,本人当前一些温度控制系统进行详细的调研,对比总结了其中的优缺点。基于当前的一些温度控制系统数据都没有传送至PC机。本设计将温度数据传送至PC上,方便后续处理。可将PC得到的数据,运用不同的PC应用软件,进行统计工作,远程操作。1.2课题研究意义基于温度控制在日常生活生产的重要意义,温度控制系统的设计成了重要的设计课题,当前温控系统种类繁多,而且功能不一,应用范围广泛。本文介绍一种智能化温度控制系统的设计。其硬件系统是以单片机作为控制器,通过控制温度传感器进行数据采集,同时建立起单片机与PC机的通信连接,方便温度数据传输,方便温度统计工作,还可扩展成为多点温度采集系统,温度环境的远程监控等功能。1.3相关软件介绍(1)Keil软件单片机开发中除必要的硬件外,同样离不开软件。Keil软件是目前最流行开发MCS-51系列单片机的软件。(2)Protues软件Protues软件是一款EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,目前最好的仿真单片机及外围器件的工具。(3)串口调试助手35 *****************一个很好而小巧的串口调试助手,支持常用的300-115200bps波特率,能设置校验、数据位和停止位,能以ASCII码或十六进制接收或发送任何数据或字符(包括中文),可以任意设定自动发送周期,并能将接收数据保存成文本文件,能发送任意大小的文本文件。2.基于USB串口多点温度采集系统的设计2.1系统功能结合实际情况,所设计的系统应具备以下功能:(1)实时采集并显示温度;35 *****************(2)自动报警;(3)串行传送数据;(4)控制外设;(5)可扩展,形成多点温度采集系统,具有远程监控等功能2.2系统结构2.2.1组成结构设计包括软件设计和硬件设计两方面,软件设计包括单片机控制程序和PC应用程序,系统结构图2-1。硬件上主要由以下几部分组成。(1)核心控制器:采用单片机;(2)温度采集模块:温度传感器;(3)温度显示模块:数码管;(4)外部设备控制电路;(5)温度智能化控制模块:PC机。图2-1温度采集系统的组成框图2.2.2工作原理35 *****************主机与单片机的通信由USB接口芯片CH372实现,它通过USB总线向PC机上传采集到的温度数据。主机为带有USB接口的PC机,对接受到的温度信号进行监测,并对温度超限等情况分析,必要时可通过外接指示灯或蜂鸣器来提供报警信号。数字温度传感器DS18B20完成采集温度并将其转换为单片机可接收的数字信号。数码管显示及驱动电路则可以实时显示当前的温度值。CH372是一个USB总线的通用设备接口芯片,是CH371的升级产品,是CH375芯片的功能简化版。在本地端,CH372具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上;在计算机系统中,CH372的配套软件提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写文件。CH372内置了USB通讯中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。在内置固件模式下,CH372自动处理默认端点0的所有事务,本地端单片机只要负责数据交换,所以单片机程序非常简洁。在外置固件模式下,由外部单片机根据需要自行处理各种USB请求,从而可以实现符合各种USB类规范的设备。3.核心控制器的设计3.1芯片的选择35 *****************在总多的51系列单片机中,ATMEL公司生产的89系列较为实用,因他不但与8051,8052指令,管脚完全兼容,而且其片内的程序存储器是FLASH工艺,用户可以用电的方式瞬间擦除、改写.AT89S52单片机是ATMAL公司生产的89系列单片机的一种。应用广泛。它是89C51,C52等C系列的替代品,能用下载线在线编程(ISP,使用简单的电路连接,就可以通过电脑上边的程序来对单片机编程,省掉调试程序时,不断拆卸和插入带来的芯片损坏),而C系列则没有这个功能。因此选用89S52作为核心控制器。3.2芯片资源的分配(1)AT89S52单片机的P0口和P2口分别分配给显示模块数码管的段选和位选。(2)AT89S52单片机的P1口中的P1.0分配给传感器的信号传输端;P1.1,P1.2,P1.3分配为外设控制端口;将P1.4,P1.5,P1.6,P1.7作为ISP编程器引脚。(3)89S52单片机的P3口中P3.0(RXD),3.1(TXD)引脚作为串行通信口;P3.7作为报警端口。4.显示模块的设计35 *****************为了清楚地了解DS18B20的工作情况,设计了此显示模块,也有利于数据传输的准确性验证。4.1数码管结构以及工作原理常用的数码管显示器为8段,每一段对应一个发光二极管.分为共阳和共阴两种。共阴极LED显示的发光二极管的阴极连接在一起,通常此公共阴极接地。当发光二极管的阳极为高电平时,发光二极管被点亮,相应的段被显示。同样,共阳极LED的的发光二极管的阳极连接在一起,通常此公共阳极接高电平,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。4.2动态显示LED显示器有静态显示和动态显示两种显示方式。本设计考虑实际应用情况,采用动态显示方式.选用了4位共阴数码管,这种显示器共有12个引脚,其8个位段选的引脚.4个是位选的引脚。若只让一位选通,而其他位选处于关闭状态,同时在段码引脚上输出相应信号,就能在一个时刻内,显示出要求在选通位显示的字符。4.3数码管接法将单片机的P0口作为段码信号输出口,P2口作为位选端口,电路图4-1:图4-1数码管接法4.4显示模块的编程及仿真结果(1)程序代码:#include35 *****************#defineucharunsignedchar#defineuintunsignedintucharcodeseg[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};//0-9,-,NONEvoiddelay(uinti)//10us延时{while(i--);}voiddisplay()//显示函数,动态扫描{ucharj=200;P2=0xfe;P0=seg[1];delay(j);P0=0x00;//防止前后2位的段码显示干扰delay(j);P2=0xfd;P0=seg[2];delay(j);P0=0x00;delay(j);P2=0xfb;P0=seg[3];delay(j);P0=0x00;delay(j);P0=seg[4];P2=0xf7;delay(j);35 *****************P0=0x00;delay(j);}main(){while(1)display();}(2)仿真如图4-2图4-2显示模块仿真图5.温度采集模块的设计5.1DS18B20概述35 *****************传统的热敏电阻等一些测量温度的元件一般输出的是电压,要转化成控制需要用到的温度数据,需要一系列的外加电路,不仅会使制作成本变高,同时会使得硬件电路更加复杂。DSl8B20温度传感器与传统传感器不同,DS18B20可直接将采集到的温度转换成数字信号,通过单条数据先串行发送出去。只要严格严格遵循其规定时序逻辑和脉冲间隔,就能舍去了同步时钟信号线,做到了器件引脚最少化,达到温度采集目的。5.2DS18B20引脚描述采用TO-92封装的DS18B20有3个引脚,其外观形状跟普通三极关非常类似,如图5-1.图5-1TO-92封装的DS18B20图1、GND为电源地2、DQ为数字信号输入/输出端3、VDD为外接供电电源输入端(在寄生电源接线方式时接地)。由于外部电源供电方式,工作稳定可靠,抗干扰能力强,电路简单,是DS18B20较好的工作方式.,因此采用外部供电方式如图5-2:图5-2外部电源供电接法35 *****************在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。5.3DS18B20工作原理DS18B20核心是一个直接的数字化的温度传感器,可将-55℃~+125℃之间的温度值按9位、10位、11位或12位分辨率进行量化,对应的温度增量分别是0.5℃、0.25℃、0.125℃和0.0625℃,器件上电后默认是12位分辨率。当DS18B20接收到主机发出温度转换命令后,启动温度转换,将结果放于16位,最低位LSB在前,最高位MSB为符号位,温度数据格式如表5-1。MSB字节的高5位为温度的符号位,当温度为正时,该5位统一为0,温度为负值时,统一为1.MSB字节中的低3位和LSB的高4位组成温度值的整数部分,LSB的低4位为小数位,采用二进制补码方式存储温度数据。由于作为小数的二进制位仅4位,仅16种取值情况,故可以采用数组的方式存储计算好的小数值[3].ucharcodepoint[16]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};5.4DS18B20功能指令(1)启动温度转化代码44H,如果主设备在该命令之周输出读时隙,那么DS18B20就会输出0表示正在转换,转换结束后立即返回1如果DS18B20使用寄生电源,主设备就必须在输出温度转换结构后500ms内维持强上拉。(2)跳过读系列号操作代码CCH,该命令用于时系统跳过读DS18B20系列号操作,本设计就采用一路传感器,故可跳过。(3)读寄存器操作代码BEH,该指令用于读取温度寄存器内容,共9个,其中前面两位就是温度值。35 *****************表5-1温度格式表5.5DS18B20操作时序分析初始化时序如图5-4,图5-4初始化时序读写操作时序如5-5,35 *****************图5-5读写时序5.6DS18B20连接电路图DS18B20的DQ口与单片机的P1.0口连接,GND接地,VDD接电源.通过AT89S52驱动DS18B20工作,并设数码管显示,电路如图5-6,35 *****************图5-6DS18B20连接电路图5.7仿真结果仿真结果如图5-7图5-7温度仿真图35 *****************6.串行通信模块的设计6.1串口通信结构MCS-51系列内部含有一个可编程全双工串行通信接口,具有UART(通用异步接收和发送器)的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。可构成双机或者多机通信系统。6.2串口通信的工作原理在进行异步通信时,数据的发送和接收分别在各自的时钟(TCLK和RCLK)控制下进行的,但都必须与字符位数的波特率保持一致。MCS-51串行口的发送和接收时钟可由两种方式产生,一种是由主机频率fosc经分频后产生,另一种方式是由内部定时器T1或T2的溢出率经16分频后提供。(1)收发过程:发送和接收的过程如下:串行口的发送过程启动时由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平)及其它控制位(如奇偶位等),然后在移位脉冲SHIFT的控制下,低位在前,高位在后,从TXD端(方式0除外)一位位地向外发送。串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。接收端RXD一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI置“1”,并向CPU申请中断。CPU响应中断,把接收缓冲器SBUF(收)的内容读入累加器。TI和RI是由硬件置位的,但需要用软件复位。(2)相关寄存器1、SBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。串行口对外有两条独立的收发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工。2、SCON寄存器用来控制串行口的工作方式和状态,可按位寻址,其字节地址为98H。3、PCON中的SMOD用来控制波特率加倍。35 *****************4、TMOD设置定时器1的工作方式,用来产生波特率。5、如果用到中断,则还需要用到中断相关的寄存器IE,IP等。(3)工作方式MCS-51系列单片机有4种工作方式,可通过SCON中的SM0、SM1的设置进行选择。6.3串行通信的电路连接图6-2USB串口温度采集系统原理图CH372芯片具有通用的被动并行接口,可以直接连接多种单片机、DSP、MCU等。在本系统中,CH372芯片就通过8位被动并行接口的D7~D0、RD#、WR#、CS#、A0直接挂接到单片机U2的系统总线上。其中CH372的数据总线D7-D0与单片机的并行接口P0.7-P0.0相连;CH372的读选通输出RD#和写选通输出WR#分别连接到U2的3.7(RD#)和P3.6(WR舟);CS#35 *****************一般由地址译码电路驱动,可用于单片机具有多个外围器件时进行设备选择,本系统中只有一个外围设备,因此CS#直接与U2的P2-7相连;单片机U2的P2.O引脚用以驱动CH372的地址线A0。另外CH372的中断输出INT#连接到U2的外部中断引脚INT0(P3.2)。CH372通过UD+和UD一引脚与USB端13P1连接,而PC机可以通过USB连接线与P1相连,从而实现了主机与USB设备CH372的数据通信。DSl8820通过一个单线接口发送或接收信息,因此在单片机和DS18B20之间仅需一条连接线(加上地线),本设计中单片机U2通过P1.0引脚实现与8个DS18B20的连接。另外DS18820的供电方法采用#I'/JU电源方式(也可采用寄生电源方式),即DS18820的VCC引脚需接入外部+5V电源,这样f/0线上不需要加强上拉。6.4串行通信的编程及仿真结果(1)在PROTUES中可以省略电平转换模块仿真如下。单机仿真如下图6-3串行通信仿真图(单机)(2)利用串口调试助手,与PC程序连接如下35 *****************·图6-4串行通信仿真(连接至PC)35 *****************7.外部设备的电路设计7.1单片机控制外部设备简介单片机的输出作为控制信号,再通过继电器、可控硅等器件,控制电机、照明用具等。7.2PC智能化控制的实现一般用电脑串口跟单片机建立通信,在PC上用软件控制串口,实现控制数据的输入输出,对于单片机来说,在接收到相应的控制信号后,执行对外部设备的控制。7.3强弱电的隔离采用光电偶合器,在光电耦合器输入端加电信号使发光源发光,光的强度取决于激励电流的大小,此光照射到封装在一起的受光器上后,因光电效应而产生了光电流,由受光器输出端引出,这样就实现了电一光一电的转换。通过将弱电信号—光信号—强电信号,达到强弱点隔离的目的。35 *****************8.系统的整体设计8.1系统程序设计(1)程序流程图见图8-1图8-1程序流程图(2)源程序详细见附录18.2原理图开始串口初始化采集温度中断服务程序启动转换显示温度延时发送温度数据执行对应操作退出中断关中断,清标志发送温度信号?控制信号?NYYN35 *****************图8-2原理图35 *****************9.系统的调试与检测9.1检测硬件电路电路板制作完后,先检查了电路线路,由于线宽设为60mil,所以没发现断线现象。同时为了防止氧化,涂上了松香助焊剂。将元器件焊接完毕后,检测各焊点,没发现问题。9.2模块调试检测(1)烧写了数码管的检测程序,检测到数码管显示正常。(2)烧写温度采集模块程序,发现问题,数码管上实现85,初步诊断是温度传感器出故障或者程序有问题,通过对程序进行仔细的检测,确定程序没有错误.于是换了一个传感器,上电调试,读数正常,显示时温26.4℃,故障排除。9.3整体调试检测烧写系统整体程序,正常读取显示温度,自动报警。也可以同计算机进行串行通信。35 *****************结束经过几个月的不断学习和努力,在丰老师的谆谆教导下,在其他老师及同学们的热心帮助与指导下,基于单片机的单总线多点温度测控系统的毕业设计即将结束,基本完成了老师所规定的各项工作任务。本次设计的基于USB串口多点温度采集系统的设计,可以广泛应用于电力工业、煤矿、森林、火灾、高层建筑等场合。系统采用单总线技术,按照DS18B20的通信协议,由主机向DS18B20发送命令,读取DS18B20转换的温度,从而实现对多个环境的温度的测量。本文介绍了用单片机AT89S52控制DS18B20以及着重分析各单元电路的设计,以及各电路与单片机的接口技术。最后还给出系统的软件的设计过程,使用了C语言进行程序设计。本文是采用模块化的方式进行叙述,对各模块的设计进行了比较详细地阐述。在还没有做毕业设计之前,我认为只不过是对我们三年学习的一个总结而已,但是当我开始接触这个设计的时候才发现这不仅是对三年学习的一个总结,而且对自己的动手能力和人际关系的处理也有了很大能力的提高,开始以为这个设计很容易做出来,有点眼高手低的感觉.但是,当我真正做起来的时候才发现自己的知识还很欠缺,还有很多知识没有掌握.通过这次设计我明白了学习是个不断积累的过程,在生活和工作中应当不断的积累,才能提高自己.在这次毕业设计中使我和老师的关系更进了一步,在这几周的时间里,我和指导老师经过了很多次交流,通过和老师的交流使我学会了很多设计技巧及方法.有不懂的地方及遇到自己难以解决的问题便向老师请教,老师每次都是不厌其烦的耐心指导我,并一步一步把我引向成功.我在老师那里不仅学到了很多额外的知识,同时也学到了不少解决问题的方式方法,在此我非常感谢帮助过我的指导老师丰焕亭老师.经过这一次毕业设计,我学了不少的知识,学会了怎样查阅资料和利用工具书,以及熟练地使用PROTEUS仿真软件和KEIL开发工具。通过这次毕业设计,我更加深刻地认识到只有将书本与具体的实践相结合,才会有真正的收获,才能巩固自已的所学,认识到自己的不足。35 *****************参考资料[1]何立民,单片机高级教程.北京航空航天大学出版社.2004.7[2]粟世明,刘湘涛.单片机原理与应用.电子工业出版社.2006.8[3]何立民,单片机中级教程.北京航空航天大学出版社.1999.12[4]李华,MCU-51系列单片机实用接口技术.北京:北京航空航天大学出版社,1993.6[5]陈光东,单片机微型计算机原理与接口技术(第二版).武汉:华中理工大学出版社,1999.4[6]徐淑华,程退安,姚万生.单片机微型机原理及应用.哈尔滨:哈尔滨工业大学出版社,1999.6.[7]锻九州,放大电路实用设计手册.沈阳:辽宁科学技术出版社,2002.5[8]马田华等,可编程单总线数字式温度传感器DS18B2的原理与应用.电子质量,2004.7[9]于永学等,1-Wire总线数字温度传感器DS18B20及应用.电子产品世界,2003.12[10]张胜全,D18B20数字温度计在微机温度采集系统中的序编制. 南京:南京大学出版社1998. 3[11]周晗晓,袁慧梅.单片机系统的印制板设计与抗干扰技术.电子工艺技术,2004 .635 *****************致谢毕业论文终于完成了,在此之际,我思绪万千,心情久久不能平静。回顾四年学习期间的一千余个日日夜夜,自己为课题的研究,静心钻研,潜心研究,并取得初步研究成果而感到欣慰。欣慰之余,心里感动一丝沉重:我即将离开我的老师和同学们。非常感谢学校的领导,感谢丰焕亭老师及我的答辩老师。他们为我做毕业设计提供了条件,并且在百忙之中抽出时间对我的毕业设计给予了详细的指导和细心的修改。在他们的帮助下,我的课题的设计任务得以顺利完成。他们严谨的治学态度和踏实的工作作风给我留下了深刻的印象,是我学习的榜样。在此,向丰老师致以最诚挚的谢意。同时还要感谢教育和指导过我的所有老师,你们给予我的不仅仅是知识,还有你们对知识孜孜不倦的追求精神和对生活的积极向上态度,使我终身受益。我将在以后的工作中继续努力,不断学习,努力提高自己。路漫漫其修远兮,吾将上下而求索。我愿在未来的学习和研究过程中,以更加丰厚的成果来答谢曾经关心、帮助和支持过我的所有领导、老师、同学、同事和朋友,一并表示感谢!最后,再次向他们表示我最诚挚的谢意,我将以最大的热情投入到工作中,以报答所以帮助我过的老师和同学。35 *****************附录:源程序编写在单片机上的C语言程序如下:#include#defineucharunsignedchar#defineushortunsignedshort#defineuintunsignedintucharcodeseg[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};//0-9,-,NONEucharcodepoint[16]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};//小数位提供的取值ushorttemperature;uchartemp_d[4];sbitcon1=P1^1;sbitcon2=P1^2;sbitcon3=P1^3;//3个输出,可做外设控制位sbitDQ=P1^0;//单总线sbitBELL=P3^7;//蜂鸣报警端口voiddelay(uinti)//10us延时{while(i--);}voiddisplay(uchar*temp)//显示函数,动态扫描{intk;for(k=0;k<100;k++){ucharj=100;P0=seg[temp[0]];35 *****************P2=0xfe;delay(j);P0=0;delay(j);P0=seg[temp[1]];P2=0xfd;delay(j);P0=0;delay(j);P0=seg[temp[2]]|0x80;//个位数的右下角显示小数点P2=0xfb;delay(j);P0=0;delay(j);P0=seg[temp[3]];P2=0xf7;delay(j);P0=0;delay(j);}}voidInit_DS18B20(void)//DS18B20初始化函数{uchark=0;loop:DQ=1;delay(7);DQ=0;delay(50);//505.74us延时,大于480us作为初始化信号DQ=1;delay(8);35 *****************k=DQ;//k=0初始化成功,反之失败返回delay(10);if(k)gotoloop;}ucharReadOneChar(void)//读一字节{uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat>>=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;//获取一位数据delay(4);}return(dat);}voidWriteOneChar(uchardat){uchari=0;for(i=8;i>0;i--){35 *****************DQ=0;DQ=dat&0x01;delay(5);DQ=1;dat>>=1;}}35 *****************voidReadTemp(void){ucharData_L=0;ucharData_H=0;uchart=0;Init_DS18B20();//初始化DS18B20WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换delay(80);Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度Data_L=ReadOneChar();//读取温度值低位Data_H=ReadOneChar();//读取温度值高位temperature=(Data_H<<8);//高8位左移8位temperature+=Data_L;//获取16位温度数据}voidconvert()//16位温度数据转化十进制函数{uchartemp_point;//小数位取数ushortNeg_temp;//做装入负温度值用if((temperature&0xf800)==0)//正{temp_d[0]=(temperature>>4)/100;if(temp_d[0]==0)//温度低于100度{temp_d[0]=11;temp_d[1]=(temperature>>4)/10;temp_d[2]=(temperature>>4)%10;35 *****************temp_point=(uchar)(temperature&0x000f);temp_d[3]=point[temp_point];}35 *****************else//温度过百度{temp_d[1]=(temperature>>4)/10%10;temp_d[2]=(temperature>>4)%10;temp_point=(uchar)(temperature&0x000f);temp_d[3]=point[temp_point];}}else//负{Neg_temp=(~temperature)+1;temp_d[0]=10;temp_d[1]=(Neg_temp>>4)/10;temp_d[2]=(Neg_temp>>4)%10;temp_point=(uchar)(Neg_temp&0x000f);temp_d[3]=point[temp_point];}}35 *****************voidserial_init(void)//串口初始化程序{TMOD=0x20;TH1=0xFd;TL1=0xFd;PCON=0x80;SCON=0x50;ES=1;TR1=1;EA=1;}voidserial_send(ucharidata*_data)//发送数据{uchari;for(i=0;i<4;i++){SBUF=_data[i]+1;while(!TI);TI=0;}}voidser_int()interrupt4//串口中断函数{ucharrecv;ES=0;35 *****************RI=0;recv=SBUF;if(recv==0x31){serial_send(temp_d);}else{if(recv==0x61)con1=0;if(recv==0x62)con1=1;if(recv==0x63)con2=0;if(recv==0x64)con2=1;if(recv==0x65)con3=0;if(recv==0x66)con3=1;}ES=1;}35 *****************voidmain(){uintz;doubletemp;BELL=1;serial_init();ReadTemp();for(z=0;z<103;z++)delay(750);//屏蔽刚开始不准确的数据,85度,屏蔽显示的时间大概是在启动后的750MSwhile(1){ReadTemp();delay(1);convert();delay(1);temp=temp_d[1]*10+temp_d[2];if(temp>=32.0||temp<20.0){BELL=0;}else{35 *****************BELL=1;}EA=0;display(temp_d);EA=1;delay(1);}}35

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭