单片机课程考核报告.docx
《单片机课程考核报告.docx》由会员分享,可在线阅读,更多相关《单片机课程考核报告.docx(37页珍藏版)》请在冰豆网上搜索。
单片机课程考核报告
成绩
课程实践考核报告
题目基于单片机和DS18B20多
点温度检测控制装置
课程名称单片机应用系统设计
院部名称机电学院
专业电气工程及其自动化
班级电气工程及其自动化
(1)
学生姓名顾奇
学号1304102004
课程考核地点工科楼C304
任课教师李国利
金陵科技学院教务处制
绪论
在人类的生活环境中,温度扮演着极其重要的角色。
无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。
自18世纪工业革命以来,工业发展对是否能掌握温度有着绝对的联系。
在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎80%的工业部门都不得不考虑着温度的因素。
温度对于工业如此重要,由此推进了温度传感器的发展。
传感器主要大体经过了三个发展阶段:
模拟集成温度传感器。
该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。
此种传感器具有功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。
它是目前在国内外应用最为普遍的一种集成传感器,典型产品有AD590、AD592、TMP17、LM135等;模拟集成温度控制器。
模拟集成温度控制器主要包括温控开关、可编程温度控制器,典型产品有LM56、AD22105和MAX6509。
某些增强型集成温度控制器(例如TC652/653)中还包含了A/D转换器以及固化好的程序,这与智能温度传感器有某些相似之处。
但它自成系统,工作时并不受微处理器的控制,这是二者的主要区别;智能温度传感器。
能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的。
它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。
智能温度传感器内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。
有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。
智能温度传感器的特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。
温度传感器的发展趋势。
进入21世纪后,温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。
在传统的温度测量系统设计中,往往采用模拟技术进行设计,这样就不可避免地遇到诸如引线误差补偿、多点测量中的切换误差和信号调理电路的误差等问题;而其中某一环节处理不当,就可能造成整个系统性能的下降。
随着现代科学技术的飞速发展,特别是大规模集成电路设计技术的发展,微型化、集成化、数字化正成为传感器发展的一个重要方向。
美国Dallas半导体公司推出的数字温度传感器DS18B20,具有独特的单总线接口,仅需要占用一个通用I/0端口即可完成与微处理器的通信;在-10~+85℃温度范围内具有0.5℃精度;用户可编程设定9~12位的分辨率。
以上特性使得DS18B20非常适用于构建高精度、多点温度测量系统。
本次设计就是基于单片机和DS18B20的多点温度检测报警装置。
一、设计任务及要求
1.1设计任务
利用DS18B20和AT89C51设计一个温度测量系统,系统功能:
实现三点温度检测,用LCD显示温度;温度测量范围:
-55℃~125℃,精度0.1℃。
设定温度上下限,当温度高于上限值或低于下限值时,系统能自动驱动降温与升温设备工作。
要求一种合理、可行的温度检测报警系统。
1.2考察内容
①专业知识应用能力:
包括电路分析、电子技术、单片机、检测技术、电气控制等课程。
②运用知识的能力:
包括对DS18B20芯片、液晶LCD1602、按键,以及对Keil4软件、PROTEUS软件的学习,流程图绘制。
③要求完成的工作量包括:
1)现场仿真演示效果;
2)结合课题进行答辩;
3)上交课题要求的各类设计技术文档。
二、设计思路
2.1设计思路图
2.2设计框图
多点测温控制装置
2.3设计思路
通过多个DS18B20进行温度采集,采集信号传给单片机,单片机区分信号,将各个传感器的温度在LCD1602上显示。
由独立键盘设置温度高温、低温的数值,当温度低于设置的低温数值,单片机驱动发光二极管,代替电阻丝加热的过程;当温度高于设置的高温数值,单片机驱动直流电机转动,代表电风扇工作降温的过程。
三、系统硬件部分设计
3.1硬件介绍
AT89C51
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图所示。
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
DS18B20
DS18B20是美国DSLLAS半导体公司推出的第一篇支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串型数字信号供处理器处理。
1.DS18B20温度传感器特性
1)适应电压范围宽,电压范围在3.0~5.5V,在寄生电源方式下可有数据线供电。
2)独特的单线接口方式,它与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通信。
3)支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
4)在使用中不需要任何外围元件,全部传感器元件及转换电路集成在形如一只三极管的集成电路内。
5)测温范围-55℃~+125℃,在-10℃~+85℃时精度为±0.5℃。
6)可编程分辨率为9~12位,对应的可分辨率温度分别为0.5℃,0.25℃,0.125℃和0.0625℃,可实现高精度测温。
7)在9位分辨率时,最多在93.78ms内把温度转换为数字;12位分辨率时,最多在750ms内把温度转换为数字,显示速度快。
8)测量结果直接输出数字温度信号,以“一线总线”串行送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
9)负压特性。
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
2.应用范围
1)冷冻库、粮仓、储罐、电信机房、电力机房、电缆线槽等测温和控制领域。
2)轴瓦、缸体、纺织、空调等狭小空间工业设备测温和控制。
3)汽车空调、冰箱、冷柜以及中低纬度干燥箱等。
4)供热、制冷管道热量计量、中央空调分户热能计量等。
DS18B20实物图
接线方法
面对着扁平的那一面,左负右正,一旦接反就会立刻发热,有可能烧毁!
同时,接反也是导致该传感器总是显示85℃的原因。
特点
独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0V至5.5V无需备用电源测量温度范围为-55°C至+125℃。
华氏相当于是-67°F到257华氏度-10°C至+85°C范围内精度为±0.5°C
温度传感器可编程的分辨率为9~12位,温度转换为12位数字格式最大值为750毫秒,用户可定义的非易失性温度报警设置,应用范围包括恒温控制、工业系统、电子产品温度计、或任何热敏感系统
描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数)。
由于DS18B20是一条口线通信,所以中央微处理器与DS18B20只有一个一条口线连接。
为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。
因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。
这使得温度传感器放置在许多不同的地方。
它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。
DS18B20采用一线通信接口。
因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。
主要首先提供以下功能命令之一:
1)读ROM,
2)ROM匹配,
3)搜索ROM,
4)跳过ROM,
5)报警检查。
这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。
若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。
一个控制功能指挥指示DS18B20的演出测温。
测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。
温度报警触发器TH和TL都有一字节EEPROM的数据。
如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。
在片上还载有配置字节以理想的解决温度数字转换。
写TH,TL指令以及配置字节利用一个记忆功能的指令完成。
通过缓存器读寄存器。
所有数据的读,写都是从最低位开始。
DS18B20有六条控制命令
温度转换44H启动DS18B20进行温度转换
读暂存器BEH读暂存器9字节二进制数字
写暂存器4EH将数据写入暂存器的TH、TL字节
复制暂存器48H把暂存器的TH、TL字节写到E2PROM中
重新调E2PROMB8H把E2PROM中的TH、TL字节写到暂存器TH、TL字节
读电源供电方式B4H启动DS18B20发送电源供电方式的信号给主CPU
初始化
(1)先将数据线置高电平“1”。
(2)延时(该时间要求的不是很严格,但是尽可能的短一点)
(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60微秒时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1”后结束。
写操作
(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上
(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
读操作
(1)将数据线拉高“1”。
(2)延时2微秒。
(3)将数据线拉低“0”。
(4)延时3微秒。
(5)将数据线拉高“1”。
(6)延时5微秒。
(7)读数据线的状态得到1个状态位,并进行数据处理。
(8)延时60微秒。
①DS18B20寄生电源供电方式如下面图3.7(a)所示,在寄生电源供电方式下,DS18B20从单线信号线上汲取能量:
在信号线DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。
独特的寄生电源方式有三个好处:
1)进行远距离测温时,无需本地电源
2)可以在没有常规电源的条件下读取ROM
3)电路更加简洁,仅用一根I/O口实现测温要想使DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。
因此,该电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。
并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。
②DS18B20寄生电源强上拉供电方式改进的寄生电源供电方式如下面图3.7(b)所示,为了使DS18B20在动态转换周期中获得足够的电流供应,当进行温度转换或拷贝到E2存储器操作时,用MOSFET把I/O线直接拉到VCC就可提供足够的电流,在发出任何涉及到拷贝到E2存储器或启动温度转换的指令后,必须在最多10μS内把I/O线转换到强上拉状态。
在强上拉方式下可以解决电流供应不足的问题,因此也适合于多点测温应用,缺点就是要多占用一根I/O口线进行强上拉切换。
③DS18B20的外部电源供电方式如下面图3.7(c)所示,在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,其VDD端用3~5.5V电源供电,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。
注意:
在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。
DS18B20工作原理
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
DS18B20内部结构图
LCD1602
工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)
注:
为了表示的方便,后文皆以1表示高电平,0表示低电平。
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
1602采用标准的16脚接口,其中:
第1脚:
GND为电源地
第2脚:
VCC接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,
第6脚:
E(或EN)端为使能(enable)端,高电平
(1)时读取信息,负跳
变时执行指令。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电
源。
15脚背光正极,16脚背光负极。
3.2、系统电路设计
AT89C51单片机
这部分为单片机复位电路和时钟电路。
单片机复位后,程序计数器PC=0000H,即指向程序存储器0000H单元,使CPU从首地址重新开始执行程序。
产生单片机复位的条件是:
在RST引脚端出现满足复位时间要求的高电平状态,该时间等于系统时钟震荡周期建立时间再加2个机器周期时间(一般不小于10ms)。
时钟电路通过单片机的XTAL1和XTAL2引脚外接定时元件12M的晶振,电容C1和C2一般去30pF左右,主要作用是帮助振荡器起震。
晶体振荡频率高,则系统的时钟频率也越高,单片机运行速速也就越快。
DS18B20LCD1602显示电路
三个DS18B20采用单总线接线的方式
独立键盘设计小灯和直流电机控制模块
独立键盘由键盘设置高温和低温的数值。
直流电机由三极管驱动继电器组合控制,小灯用发光二极管直接接单片机。
3.3总电路图
因为单片机判断不同温度传感器的温度,并驱动动直流电机和发光二极管的方式和程序均相同,故只用一组直流电动机和发光二极管进行仿真,其余为节省器材,仿真时省略。
四、系统软件设计部分
4.1程序流程图
4.2程序开发过程
头文件部分内容(详见附录)
本次试验使用了LCD1602和DS1820两个特殊头文件,主要包括了LCD的初始化函数、读写显示函数等和DS1820的温度读取返回函数。
主函数主要内容(详见附录)
1、载入头文件并定义引脚功能
2、键盘扫描函数
3、直流电机和发光二极管控制函数
LD为发光二极管控制引脚的电平,DJ为直流电机控制引脚的电平,值为1时亮灯、电机转动,值为0时灯熄灭,直流电机不转动。
4、温度数据处理函数
temp1为需要显示的第一个温度传感器的温度
temp为第一个传感器中读取的温度的数据
先判断数据的正负,如果为负,显示符号为“-”,并取反加一,否则符号为“+”。
再对数据的整数位,和小数位进行转换。
五、系统仿真过程及结果
温度检测并显示,此时显示三点温度;下限22℃,上限28℃。
判断第一处温度在上下限中间,电机不转灯不亮。
判断第一个温度传感器的温度小于下限,电机不转灯亮。
判断第一个温度传感器的温度在大于上限,电机转动灯不亮。
按住调节按钮,调节高、低温数值分别为19℃和32℃之后的结果。
六、系统实物制作与调试
6.1系统实物器件清单
元件名称元件型号参数数量
单片机AT89C511个
温度传感器DS18B203个
液晶显示屏LCD16021个
按键6个
电阻10K9个
100Ω1个
滑动变阻器10K1个
电阻排8端口1个
电容1nF2个
1uF1个
晶振11.0592MHz1个
三极管2N39061个
继电器5V1个
直流电机3V1个
发光二极管红色1个
6.2实物制作过程
本次制作的是多点测温装置,一开始的时候是设计成三个传感器接三个端口的,但后来了解到DS18B20支持单总线的传输方式,就采取了现在的模式,我们小组利用手上的开发板和温度传感器来进行制作。
单点测温和多点测温是有很大区别的,只有一个传感器的时候,可以跳过序列码,但多个的时候,就要读取DS18B20的序列码并加以区分,一开始对这个序列码的功用不是很了解,查了许多资料,知道这个序列码有冗余码的算法,这给我们程序编程带来很大问题,为了解决这个问题,我们最后采用了一种方式,就是先利用DS18B20读取命令,编了序列码读取程序,把每个DS18B20的64位序列码给读出来,然后直接编在我们后来的程序里,这样程序就可以直接读已知序列码的对应传感器的温度。
再后来的外围电路制作过程中,我们发现单片机的负载驱动还是很小的,稍微大一点负载还是要用三级管来控制的。
最后因为是开发板的制作,所以整个制作过程并没有要焊接的地方,这给我们省了很多功夫。
6.3实物调试图片
七、心得体会
这次课程设计让我受益匪浅,无论从知识上还是其他的各个方面。
上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。
但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。
在这次课程设计中又让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我们就会在QQ群里讨论或者是同学之间相互帮助。
团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了