版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1. 引言12. 总体方案23. 多点温度采集系统的硬件设计33.1 AT89C5133.1.1 AT89C51简介33.1.2 AT89C51主要特性33.1.3 AT89C51管脚说明:33.2. 温度传感器DS18B2053.2.1 DS18B20的外形和内部结构53.2.2 DS18B20的主要特性63.2.3 DS1820使用中注意事项63.2.4 DS18B20接线原理图73.3 单总线1-wire83.3.1 概述83.3.2 硬件结构83.3.3、命令序列83.4 1602液晶模块103.4.1 1602液晶模块简介103.4.2、1602的基本参数及引脚功能103.4.3
2、 1602LCD的RAM地址映射及标准字库表113.5、硬件原理图124. 多点温度采集系统的软件设计134.1 1602液晶驱动函数模块设计144.2多点温度采集应用系统的仿真与实物14总结16致谢17参考文献18附录A19附录B271. 引言随着信息时代的到来,作为获取信息的手段-传感器技术取得了显著进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。因此,了解并掌握各类传感器的基本结构、工作原理及特性是非常重要的。由于传感器能将各种物理量、化学量和生物量等信号转变为电信号,使得可以利用计算机实现自动测量、信息处理和自动
3、控制,但是他们都不同程度地存在温漂和非线性等影响因素。因此,不仅需要掌握各类传感器的结构、原理及其性能指标,还必须懂得传感器经过适当的接口电路调整才能满足信号的处理、显示和控制的要求,而且只有通过对传感器应用实例的原理和智能传感器实例的分析了解,才能将传感器和信息通信和信息处理结合起来,适应传感器的生产、研制、开发和应用。另一方面,传感器的被测信号来自于各个应用领域,每个领域都为了改革生产了、提高工效和时效,各自都在开发研制适合应用的传感器,于是种类繁多的新型传感器系统不断涌现。温度传感器是其中一类传感器。其发展速度之快,以及其应用之广,并且还有很大潜力。为了提高对传感器的认识和了解,尤其是对
4、温度传感器的深入研究及其用途的发掘,本文结合单片机技术来设计这一温度监控系统。该系统只是记录多点数据,没有对相关量进行控制的功能。2. 总体方案单片机应用系统对于温度信号采集有两种常见的方法:(1)、数字温度传感器采集。通常利用两个不同温度系数的晶振控制两个计数器进行计数,利用温度对晶振精度影响的差异测量温度。(2)、PT铂电阻采集。利用金属在不同温度下的电阻值和不同的原理来测量温度。两种采集方法比较如下表:表2.1 采集方法对照表PT铂电阻数字温度传感器温度精度高,很容易达到0.1低,0.5左右测量范围几乎没有限制有相当的限制采样速度快,受到模数字转换器件的限制慢,几十至几百毫秒体积小,但是
5、需要额外的器件较大和51单片机的接口需要通过电压调理电路和模数字转换器件数字接口电路安装位置任意位置有限制需要注意的是PT铂电阻根据温度变化的只是其点阻值,所以在实际使用过程中,需要额外的辅助器件将其转换为电压信号,并通过调整后送到模数字转换器件才能让单片机进行处理。在多点温度采集系统中,选择使用1-wire总线接口和温度传感器DS18B20来测量温度,这是因为系统对采集精度要求不高,而且温度传感器额外的附加器件,比较方便和51单片机连接。3. 多点温度采集系统的硬件设计3.1 AT89C513.1.1 AT89C51简介 AT89C51是一种带4k字节闪烁可编程可擦除只读存储器的低电压,高性
6、能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.1.2 AT89C51主要特性n 与MSC51兼容n 4K字节可编程闪烁存储器n 寿命:1000写/擦循环n 数据保留时间:10年n 全静态工作:0Hz-24Hzn 三级程序存储器锁定n 128*8位内部RAMn 32可编程I/O线n 两个16位定时器/计数器n 5个中断源n 可编程串行通道n 低功耗的闲置和
7、掉电模式n 片内振荡器和时钟电路 图3.1 AT89C51管脚图3.1.3 AT89C51管脚说明VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流
8、,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部
9、上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3 (外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST: 复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE:
10、 当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 :外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信
11、号将不出现。:当保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,将内部锁定为RESET;当端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的
12、高低电平要求的宽度。整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。3.2 温度传感器DS18B203.2.1 DS18B20的外形和内部结构DS18B20内部结构主要由4部分组成:6
13、4位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图2所示,DQ为数字信号输入输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。图3.2为DS18B20实物图及管脚图:图3.2 DS18B20实物图及管脚图(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同
14、,这样就可以实现一根总线上挂接多个DS18B20的目的。 (2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。 图3.3为DS18B20内部存储图:图3.3为DS18B20内部存储图:3.2.2 DS18B20的主要特性 (1)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电(2) 温范围55125,在-10+85时精度为0.5。 (3)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(4) DS1
15、8B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。(5) DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。3.2.3 DS
16、1820使用中注意事项DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题: (1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此 ,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对 DS1820操作部分最好采用汇编语言实现。 (2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个 DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要
17、解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时 要加以注意。 (3)连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的 测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正 常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考 虑总线分布电容和阻抗匹配问题。 (4)在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦 某个DS1820
18、接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予 一定的重视。 测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。3.2.4 DS18B20接线原理图图3.4 DS18B20连线原理图3.3 单总线1-wire3.3.1 概述1-wire 单总线是 Maxim 全资子公司 Dallas 的一项专有技术。与目前多数标准串行数据通信方式,如 SPI/I2C/MICROWIRE 不同,它采用单根信号线,既传输时钟,又传输数据而且数据传输是双向的。它具有节省 I/O 口线
19、资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。1-wire 单总线适用于单个主机系统,能够控制一个或多个从机设备。当只有一个从机位于总线上时,系统可按照单节点系统操作;而当多个从机位于总线上时,则系统按照多节点系统操作。1-Wire总线技术具有节省I/O资源,结构简单、成本低廉、便于总线扩展维护等优点。将地址线、数据线、控制线合为一根信号线。1-Wire使用自身的网络接口的传感器和其它器件。该接口的数据通信和供电仅需通过一根数据线再加一根地线,这意味着微控制器仅需一个端口即可与1-Wire传感器通信。1-Wire网络工作于一主多从模式(多点网络)。时序非常灵活,允许从机以高达16kb
20、ps的速率与主机通信。每个1-Wire器件都有一个全球唯一的64位ROM ID,允许1-Wire主机精确选择位于网络任何位置的一个从机进行通信。1-Wire总线采用漏极开路模式工作,主机(或需要输出数据的从机)将数据线拉低到地表示数据0,将数据线释放为高表示数据1。这通常通过在数据线和VCC之间连一个分立电阻实现。3.3.2 硬件结构顾名思义,单总线只有一根数据线。设备(主机或从机)通过一个漏极开路或三态端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。单总线端口为漏极开路。单总线要求外接一个约 5k 的上拉电阻;这样,单总线的闲置状态为高电平。不管什么原
21、因,如果传输过程需要暂时挂起,且要求传输过程还能够继续的话,则总线必须处于空闲状态。位传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态(高电平)。 如果总线保持低电平超过 480 s 总线上的所有器件将复位。另外,在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间 EEPROM 写入等)具有足够的电源电流,必须在总线上提供强上拉。3.3.3、命令序列典型的单总线命令序列如下:第一步:初始化第二步:ROM 命令(跟随需要交换的数据)第三步:功能命令(跟随需要交换的数据)每次访问单总线器件,必须严格遵守这个命令序列,如果出现序列混乱,则单总线器件不会响应主机。但是,这个
22、准则对于搜索 ROM 命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。(1)、初始化:基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道,总线上有从机设备,且准备就绪。复位和应答脉冲的时间详见单总线信号部分。(2)、ROM命令:在主机检测到应答脉冲后,就可以发出 ROM 命令。这些命令与各个从机设备的唯一64 位 ROM 代码相关,允许主机在单总线上连接多个从机设备时,指定操作某个从机设备。这些命令还允许主机能够检测到总线上有多少个从机设备以及其设备类型,或者有没有设备处于
23、报警状态。从机设备可能支持 5 种 ROM 命令(实际情况与具体型号有关),每种命令长度为 8 位。主机在发出功能命令之前,必须送出合适的 ROM 命令。(3)、功能命令:在主机发出 ROM 命令 以访问某个指定的 DS18B20,接着就可以发出 DS18B20 支持的某个功能命令。这些命令允许主机写入或读出 DS18B20 暂存器、启动温度转换以及判断从机的供电方式。DS18B20 的功能命令总结于表 3.1 中,并在图 3 流程图中作了说明。表1 DS18B20 功能命令集命令描述命令代码发送命令后,单总线上的响应信息注释温度转换命令转换温度启动温度转换44h无1存储器命令读暂存器读全部的
24、暂存器内容,包括CRC字节BehDS18B20传输多达9个字节至主机2写暂存器写暂存器2、3和4个字节的数据(即TH,TL和配置寄存器)4Eh主机传输3个字节数据至DS18B203复制暂存器将暂存器中的TH,TL和配置字节复制到EEPROM中48h无1回读E2PROM将TH,TL和配置字节从EEPROM回读至暂存器中B8hDS18B20传送回读状态至主机注释:(1) 在温度转换和复制暂存器数据至 EEPROM 期间,主机必须在单总线上允许强上拉。并且在此期间,总线上不能进行其它数据传输;(2)通过发出复位脉冲,主机能够在任何时候中断数据传输; (3) 在复位脉冲发出前,必须写入全部的三个字节。
25、3.4 1602液晶模块3.4.1 1602液晶模块简介1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市
26、面上大部分的字符型液晶。3.4.2 1602的基本参数及引脚功能图3.5 LCD1602引脚图(1)1602主要技术参数:显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm(2)1602引脚功能说明:表3.2 LCD1602引脚功能表编号符号引脚说明编号符号引脚说明1VSS电源地8D1数据2VDD电源正极9D2数据3VL液晶显示偏压10D3数据4RS数据/命令选择11D4数据5R/W读/写选择12D5 数据6E使能信号13D6数据7D0数据14D7数据(3)1602的指令说明及时序表3.3 LCD1
27、602的指令说明及时序序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容(4)LCD1602时序表表3.4 LCD1602时序表读状态输入RS=L,R/W=H,E=H输出D0
28、D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无3.4.3 1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图3.6是1602的内部显示地址:例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位
29、D7恒定为高电平1所以实际写入的数据应该是B(40H)+B(80H)=B(C0H)。图3.6 1602的内部显示地址1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。3.5 硬件原理图1602液晶显示模块可以和单片机AT89C51直接接口,电路图如图3.7所示:图3.7 硬件原理图4.多点温度采集系统的软件设计DS18B20
30、的驱动函数模块主要用于对DS18B20进行操作,它包括了初始化函数void Initialization( ),向DS18B20写入一个字节的函数void WriteB(unsigned char btData),从DS18B20读出一个字节的函数unsigned char ReadByte( ),ROM匹配函数void MatchROM(const unsigned char *pMatchData)和温度读取函数TEMPDATA ReadTemperature( ),其中最关键的函数是TEMPDATA ReadTemperature,其流程如图所示。在应用代码中,定义了一个结构体tagTe
31、mpData用于存放当前的温度输出,其未了便于显示,把温度数据都拆开存放到结构体中。Typedef struct tagTempDataunsigned char btThird; /百位数据 unsigned char btSecond;/十位数据unsigned char btFirst;/个位数据unsigned char btDecimal;/小数点最后一位数据unsigned char btNegative;/是否为负数;TEMPDATA;TEMPDATA m_TempData;图4.1 TEMPDATA ReadTemperature温度读取函数的流程4.1 1602液晶驱动函数模
32、块设计1602液晶驱动模块包括以下函数:l void Busy():判断1602液晶是否处于忙状态。l void WriteCommand(unsigned char btCommand):向1602写入一个字节的命令。l void WriteData(unsigned char btData):向1602写入一个字节的数据。l void Clear():清除液晶当前显示。l void Init():初始化液晶模块。l void DisplalyOne(bit bRow, unsigned char btColumn, unsigned char btData,bt bIsNumber):在b
33、Row行,btColumn上显示单个字符。l void DisplalyString(bit bRow, unsigned char btColumn, unsigned char *pData):在bRow行,btColumn上显示一串字符。4.2多点温度采集应用系统的仿真与实物在Protues在绘制如图4.2所示电路:图4.2 多点温度采集应用系统的仿真图电路图中涉及的典型Protues器件如下表4.1所示:表4.1 典型Protues器件表器件名称库子库说明AT89C52Micoprocessor Ics8051Family51单片机RESResistorsGeneric通用电阻CAPC
34、apactiorsGeneric电容CAP-ELECCapactiorsGeneric极性电容CRYSTALMiscellaneous-晶体震荡器DS18B20Data ConvertersTemperature SensorsDS18B20温度传感器POT-HGResistorsVariable滑动变阻器LM016LOptoelectronicsAlphanumeric LCDs1602液晶模块实物图如下图所示:图4.3 多点温度采集应用系统的实物图经过proteus仿真,硬件搭建及调试之后,硬件运作成功。最开始1602上只能显示一个温度值(如图4.2),经过改进后,可同时上下显示两个温度值
35、(如图4.3)。通电后,按下总开关开启系统,按下对应温度传感器对应的开关显示温度值,开关按下显示温度,未按下则显示初始值000.00。图4.3所示的温度分别为13.5和14.9摄氏度。总结基于单片机的温度检测系统的设计已基本完成,各部分功能都已经基本上实现。单片机片上资源比较丰富,使得课题外围电路相对的简单,还留有大部分I/O口,以便今后扩展。温度采集模块是使用DS18B20来实现,电路简单,并且价格便宜,精度和稳定度都比较高。液晶显示模块采用LCD1602来显示终端的温度。上位器的辅助功能设计为用户提供了一个良好的人机接口。但是对于这方面我还是不怎么熟悉,在未来的时间里我会进一步的学习和使用
36、。而且我做的系统也有很多应该完善的地方,例如说温度报警的级别是不是也能够通过用户设置,不一定要超过1度就报警,可以通过用户的自身实际情况通过键盘输入,这样显得更加人性化,并且更方便,更实际,但由于时间原因,好多想到的功能还没有能够展开实践,在以后的学习中,我会注意加强!在此期间,首先,通过查阅相关书籍、文献,搞清楚原理框图,为今后的实验及论文写作奠定比较扎实的理论;其次,在原理的基础之上,设计具体的程序,利用将一个大而复杂的系统分解转化为多个小而简单的模块的思想,在进行整合、连接,将复杂的问题简单化。了解了更多关于单片机的知识,对以后的学习和工作有了莫大的帮助,并从理论的高度对设计工作的现代化
37、提高一些有真惰性的建议和设想,检验学习成果,看一看课堂学习与实际工作到底有多大差距,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,更边学习内容提供实践依据。致谢课程设计随着论文的完成也接近尾声了,虽然在课程设计中遇到了很多难题,但是最后都在老师以及同学们的帮助下完成了,感谢指导老师以及其他老师对我的指导,导师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。不禁使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。参考文献1 张新. 51单片机应用开发2
38、5例:基于Proteus仿真M. 北京:电子工业出版社,2013.10.2陈立周.单片机原理及其应用M. 北京:机械工业出版社,2008.5.3陈忠平.单片机原理及接口M. 北京:清华大学出版社,2011.5.4郭天祥.新概念51单片机C语言教程:入门、提高、开发、扩展全攻略M.北京;电子工业出版社,2009.1.5Stephen Prata.C Primer PlusM. 北京:人民邮电出版社,2005.2.6:Oppenheim A V and Schafer. Digital Signal ProcessingM. Engelwood Cliffs,NJ:Prentice-Hall In
39、c.,1975.7:Lyons R G.Understanding Digital Signal ProcessingM. 北京:科学出版社,2003.8 李元斌.DS18B20数字传感器温度检测显示系统J .湖北:华中科技大学生命学院试验中心,.9 马云峰.单片机与数字温度传感器DS18B20的接口技术J.山东:潍坊学院信息与控制工程系,.附录A程序:#include #include #defineDATA P1 /1602驱动端口/ROM操作命令#define READ_ROM 0x33 /读ROM #define SKIP_ROM 0xCC /跳过ROM #define MATCH_R
40、OM 0x55 /匹配ROM #define SEARCH_ROM 0xF0 /搜索ROM #define ALARM_SEARCH 0xEC /告警搜索/存储器操作命令#define ANEW_MOVE 0xB8 /重新调出E2数据#define READ_POWER 0xB4 /读电源#define TEMP_SWITCH 0x44 /启动温度变换 #define READ_MEMORY 0xBE /读暂存存储器#define COPY_MEMORY 0x48 /复制暂存存储器#define WRITE_MEMORY 0x4E /写暂存存储器/数据存储结构typedef struct ta
41、gTempDataunsigned char btThird;/百位数据unsigned char btSecond;/十位数据unsigned char btFirst;/个位数据unsigned char btDecimal;/小数点后一位数据unsigned char btNegative;/是否为负数TEMPDATA;TEMPDATA m_TempData;/引脚定义sbit DQ = P27; /数据线端口sbit RS=P20;sbit RW=P21;sbit E=P22;/DS18B20序列号,通过调用GetROMSequence()函数在P1口读出(读8次)const unsi
42、gned char code ROMData18 = 0x28, 0x33, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0xD7; /U1const unsigned char code ROMData28 = 0x28, 0x30, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x8E; /U2const unsigned char code ROMData38 = 0x28, 0x31, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0xB9; /U3const unsigned char code ROMData48 = 0x28, 0x3
43、2, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0xE0; /U4const unsigned char code ROMData58 = 0x28, 0x34, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x52; /U5const unsigned char code ROMData68 = 0x28, 0x35, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x65; /U6const unsigned char code ROMData78 = 0x28, 0x36, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x3
44、C; /U7const unsigned char code ROMData88 = 0x28, 0x37, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x0B; /U8/判断忙指令void Busy()DATA = 0xff;RS = 0;RW = 1; while(DATA & 0x80) E = 0; E = 1; E = 0;/写指令程序void WriteCommand(unsigned char btCommand)Busy();RS = 0;RW = 0;E = 1;DATA = btCommand;E = 0;/写数据程序void WriteData(unsi
45、gned char btData)Busy();RS = 1;RW = 0;E = 1;DATA = btData;E = 0;/清屏显示void Clear()WriteCommand(1);/初始化void Init()WriteCommand(0x0c);/开显示,无光标显示WriteCommand(0x06);/文字不动,光标自动右移WriteCommand(0x38);/设置显示模式:8位2行5x7点阵/显示单个字符void DisplayOne(bit bRow, unsigned char btColumn, unsigned char btData, bit bIsNumber
46、)if (bRow) WriteCommand(0xc0 + btColumn);else WriteCommand(0x80 + btColumn);if (bIsNumber) WriteData(btData + 0x30);else WriteData(btData);/显示字符串函数void DisplayString(bit bRow, unsigned char btColumn, unsigned char *pData)while (*pData != 0) if (bRow) WriteCommand(0xc0 + btColumn); /显示在第1行 else Write
47、Command(0x80 + btColumn); /显示在第0行WriteData(*(pData+); /要显示的数据btColumn+; /列数加一 /延时16us子函数void Delay16us()unsigned char a;for (a = 0; a 4; a+);/延时60us子函数void Delay60us()unsigned char a;for (a = 0; a 18; a+);/延时480us子函数void Delay480us()unsigned char a;for (a = 0; a 158; a+);/延时240us子函数void Delay240us()
48、unsigned char a;for (a = 0; a 78; a+);/延时500ms子函数void Delay500ms()unsigned char a, b, c;for (a = 0; a 250; a+)for (b = 0; b 3; b+)for (c = 0; c 220; c+);/芯片初始化void Initialization()while(1)DQ = 0;Delay480us(); /延时480usDQ = 1;Delay60us();/延时60usif(!DQ) /收到ds18b20的应答信号DQ = 1;Delay240us();/延时240usbreak;
49、/写一个字节(从低位开始写)void WriteByte(unsigned char btData)unsigned char i, btBuffer;for (i = 0; i i;if (btBuffer & 1)DQ = 0;_nop_();_nop_();DQ = 1;Delay60us();elseDQ = 0;Delay60us();DQ = 1;/读一个字节(从低位开始读)unsigned char ReadByte()unsigned char i, btDest;for (i = 0; i = 1;DQ = 0;_nop_();_nop_();DQ = 1;Delay16us();if (DQ) btDest |= 0x80; Delay60us();return btDest;/序列号匹配void MatchROM(const unsigned char *pMatchData)unsigned char i;Initialization();WriteByte(MATCH_ROM);for (i = 0; i 8; i+) WriteByte(*(pMatchData
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022026 年 水利岗面试题型分析 含答案含解析
- 2026 综合岗面试易错题集 事业编 含解析
- 2026 年人教版高中地理必修第一册单元基础测试卷
- 安全生产工作展望讲解
- 小学数学教资面试几何专项题库及答案 2026下半年
- 2026年南昌市烟草专卖局人员招聘考试题库及答案详解
- 2026年天津渤海国有资本投资有限公司人员招聘考试题库及答案详解
- 烧伤诊疗指南(2026版)
- 2026年供热管网运维检修题库及答案
- 2026年四川国际博览集团有限公司人员招聘笔试参考试题及答案详解
- 中国邮政储蓄银行2027届校园招聘考试备考题库及答案解析
- 量化投资入门全景进阶课件
- 2026年秋统编版九年级语文上册期中真题卷02含作文范文
- 脑机接口技术在医疗领域的应用
- 2026广东茂名市高校毕业生基层公共就业创业服务岗位招募61人笔试备考试题及答案解析
- 医疗质量安全十八项核心制度(国家卫健委版)
- 2026苏教版二上数学第二单元第6课时《练习四》课件
- 【新教材】2026年秋人教版九年级上册英语:Units 1-8单元写作提升指导+练习题汇编(含答案+范文)
- 第5课《中国人民站起来了》第三课时(教学课件)
- 2026年广东东莞市初二地理生物会考真题试卷(含答案)
- 建筑物消防安全疏散设计规范2025版
评论
0/150
提交评论