综合电子设计第五组报告_第1页
综合电子设计第五组报告_第2页
综合电子设计第五组报告_第3页
综合电子设计第五组报告_第4页
综合电子设计第五组报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、报告评分批改老师综合电子设计课程设计报告 题目:温度检测装置 专 业 应用电子技术 班 级 应电(1)班 指导教师 提交日期 2013 年 10 月 24 日第五组第一部分 设计任务1.1 设计要求1、装置能实时检测被测气体或液体的温度值;2、检测精度:0.1摄氏度;3、温度传感器使用18B20;4、可实时显示被测气体或液体的温度值;5、显示刷新周期2s;1.2 备选方案设计与比较1.2.1 方案一:温度传感器采用热敏电阻,显示器采用8位段数码管将单片机得到的数据通过数码管显示出来,控制采用单片机。1.2.2 方案一:温度传感器采用DS18B20测量温度,显示器采用液晶显示器,控制采用单片机。

2、1.2.3 各方案的分析与比较方案一:采用热敏电阻,热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度的信号是不适用的,也不能满足测量范围。在温度测量系统中,也常采用单片温度传感器,比如AD590,LM35等.但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温系统的硬件结构较复杂.另外,这种测温系统难以实现多点测温,也要用到复杂的算法,一定程度上也增加了软件实现的难度。采用8位段数码管,将单片机得到的数据通过数码管显示出来。该方案简单易行,但所需的元件较多,且不容易进行操作,可读性差,一旦设定后,很难再加入其他的功能,显示格式受限制,且耗电量大,不宜用电池给系统供

3、电。方案二:采用单总线数字温度传感器DS18B20测量温度,直接输出数字信号。便于单片机处理及控制,节省硬件电路。且该芯片的物理化学性很稳定,此元件线形性能好,在0100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS1820和微控制器AT89C52构成的温度测量装置,它直接输出温度的数字信号到微控制器。每只DS18B20具有一个独有的不可修改的64位序列号,根据序列号可访问不同的器件。同时,采用液晶显示器件,液晶显示平稳、省电、美观,更容易实现题目要求,对后续的功能兼容性高,只需将软件作修改即可,可读性和可操作性强,采用LCD12864

4、四行三十二个字符的显示,能同时显示日期、时间、星期、温度,还可添加图片,人性化强。综上分析,我们选用第二种方案.第二部分 系统硬件平台的设计2.1 总体设计方案说明 采用AT8952单片机作为控制核心对温度传感器DS18B20控制,读取温度信号并进行计算处理,并送入液晶显示器LCD12864显示。系统设计框图如图2.2所示温度传感器时钟电路复位电路LED显示单片机图2.2 2.2 单片机控制模块 该模块由AT89S52单片机做为主控制器,AT89C52的EA接高电平,其外围电路提供能使之工作的晶振脉冲、复位按键,四个I/O口分别接8路的单列IP座方便与外围设备连接。当AT8952芯片接到来自温

5、度传感器的信号时,其内部程序将根据信号的类型进行处理,并且将处理的结果送到显示模块。 该模块的硬件电路如下图2.3所示 图2.32.3 温度传感器模块DS18B20引脚功能: GND 电压地 DQ 单数据总线 VDD 电源电压 NC 空引脚 DS18B20工作原理及应用:DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解DS18B20的内部存储器资源。DS18B20共有三种形态的存储器资源,它们分别是: ROM 只读存储器:用于存放DS18B20ID编码,其前8位是单线系列编码(D

6、S18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。 RAM 数据暂存器:用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。E

7、EPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。DS18B20的1脚接地,2脚接单片机的P23脚,3脚接+5V高电平。 温度传感模块硬件电路如图2.4所示图2.42.4 复位模块 该模块的作用是按下K1且释放后,单片机会复位,所有数据重新运算,液晶显示屏的数据恢复初值。复位模块的电路如图2.5所示图2.52.5 显示模块图2.6IM016L的引脚连接如图2.6所示1脚接地,2脚接高电平3脚接一个下拉电阻,4脚脚单片机的P23脚,控制IM016L的读与写5脚接地6脚接单片机的P24脚,控制

8、IM016L的读与写714脚接单片机的P10P17脚用于双向数据传输IM016L的控制指令和LCD1602控制指令一样共有11条控制指令序号指令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读

9、数11读出的数据内容IM016L液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清零显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动

10、显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。第三部分 系统软件的设计与实现3.1主程序流程图清屏主程序的主要功能是负责温度的实时显示,读出并处理DS18B20的测量温度值,主流程图如下图2.7所示初始化调用显示函数读取温度显示

11、温度图2.73.2 读取温度子程序 读出温度子程序的主要功能是读取温度并转换,流程图如下图2.8所示。发DS18B20复位命令发跳过8个读序列号命令发读取温度命令扩大精确3位命令结束图2.83.3计算温度子程序 开始计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,流程图如下图2.9所示.温度零下?NY置“+”标志温度值取补码置“-”标志计算小数位温度BCD值 计算整数位温度BCD值 结束图2.93.4显示温度子程序 显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。流程图如下图3.0所示温度数据移入显示寄

12、存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号)结束图3.03.5 电路仿真3.5.1 软件仿真简介proteus软件是英国Labcenter公司研发的EDA工具软件。它是一个集模拟电路、数字电路、模/数混合电路以及多种微控制器系统为一体的系统设计和仿真平台。是目前同类软件中最先进、最完整的电子类仿真平台之一。它真正实现了在计算机上完成从原理图、电路分析与仿真、单片机代码调试与仿真、系统测试与功能验证到PCB板生成的完整的电子产品研发过程。Proteus软件提供了30多个元器件库、7000余种元器件。元器件涉及电阻、电容、二极管、三极管、变压器、继电器、各种放大器

13、、各种激励源、各种微控制器、各种门电路和各种终端等。Proteus软件还提供交直流电压表、逻辑分析仪、示波器、定时、计数器和信号发生器等虚拟测试信号工具。Proteus主要由个涉及平台组成:1、ISIS原理图涉及与仿真平台,它用于电路原理图的设计以及交互仿真;2、 ARES高级布线和编辑软件平台,它用于印制电路板的设计,并产生光绘输出文件。3.5.2 仿真电路图 仿真电路图见图3.1所示图3.13.5.3 仿真结果 仿真结果是显示The fifth group和Temp 23.000见图3.2所示图3.2第四部分 安装调试与性能测量6.1 系统软、硬件调试系统的调试以程序调试为主。硬件调试比较

14、简单,首先检查电感的焊接是否正确,然后可用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等的编程及调试由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用单片机汇编或C语言编写用Wave3.2或Keil C51编译器编程调试。软件调试到能显示温度值,并且在有温度变化时显示温度能改变,就基本完成。性能测试可用制作的温度机和已有的成品温度计同时进行测量比较。由于DS18B20的精度很高,所以误差

15、指标可以限制在0.5以内。另外,-55+125的测温范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持温度计。6.2 整机性能指标测量 经过实际测试,能够长时间的稳定显示时间和温度,温度误差1,精确到一位小数。总结历时本学期的综合电子设计已经结束了,在这个学期的时间里,我们在老师的指导下完成了基于DS18B20的数字温度计的设计和制作。在进行实验的过程中,我们了解并熟悉DS18B20、AT89C52以及LM016L的工作原理和性能。并且通过温度计的制作,我们将电子技能实训课堂上学到的知识进行运用,并在实际操作中发现问题,解决问题,更加增加对知识的认识和理解。在课程设

16、计的过程中,也遇到了一些问题。比如最开始根据课本上的电路图进行合理的设计布局和布线。有些同学的布局不合理,导致焊接的过程中任务相当繁重,并且不美观。在之后的烧程序调试的时候,出现问题之后,没有合理布线的同学在查找问题的过程中相当棘手。在焊接过程中,出现最多的就是虚焊问题。对于这个问题,在焊接的过程中,我尽量依照书中的指导,尽量将焊点焊成水滴状,最后接电后再根据数码管的显示情况进行逐个排查。总之,在本星期中,通过自己在实验室动手制作数字温度计,不仅将课本的知识与实践相结合,而且在实践中更加深入了解书中原本抽象的知识。这也是整个课程设计中最有收获的地方。参考文献1郭天祥 新概念51单片机C语言教程

17、.入门、提高、开发, 电子工业出版社 20122杨利军、洪志刚编 传感器原理及应用 中南大学出版社3百度文库中: DS18B20中文数据手册 LCD1602中文数据手册附录参考程序:main.c程序:#include#include /LCD1602驱动程序#include /DS18B02驱动程序/=#define uchar unsigned char/宏定义即 uchar = unsigned char#define uint unsigned int/宏定义即 uint = unsigned int/=/- 函数声明 -void W_Com(uchar); /LCD1602写命令函数v

18、oid W_Data(uchar); /LCD1602写数据函数void Lcd_Init(); /LCD初始化函数 read_temp(); /*读取温度值并转换*/void ds1820disp(); /温度值和定位显示void Lcd_Disp();/初始化显示“Temp:”/- 主函数 -void main() W_Com(0x01); /LCD清屏Lcd_Init(); /LCD1602初始化 Lcd_Disp();/初始化显示“Temp:”while(1)read_temp(); /读取温度 ds1820disp(); /显示温度 /=/- LCD1602显示函数 -/- W_Co

19、m(uchar): LCD1602写命令函数 /- W_Data(uchar): LCD1602写数据函数/=void Lcd_Disp() W_Com(0x80); /写上“The fifth group” 从第一行开始显示 W_Data(T); /第一行第一位写上“T” W_Com(0x80+1); W_Data(h); /第一行第二位写上“h” W_Com(0x80+2); W_Data(e); /第一行第三位写上“e” W_Com(0x80+4); W_Data(f); /第一行第五位写上“f” W_Com(0x80+5); W_Data(i); /第一行第六位写上“i” W_Com(

20、0x80+6); W_Data(f); /第一行第七位写上“f” W_Com(0x80+7); W_Data(t); /第一行第八位写上“t” W_Com(0x80+8); W_Data(h); /第一行第九位写上“h” W_Com(0x80+10); W_Data(g); /第一行第十一位写上“g” W_Com(0x80+11); W_Data(r); /第一行第十二位写上“r” W_Com(0x80+12); W_Data(o); /第一行第十三位写上“o” W_Com(0x80+13); W_Data(u); /第一行第十四位写上“u” W_Com(0x80+14); W_Data(p)

21、; /第一行第十五位写上“p” W_Com(0x80+0x40); /写上“Temp”,从第二行开始显示 W_Data(T);/第二行第一位写上“T” W_Com(0x80+0x40+1); W_Data(e); /第二行第二位写上“e” W_Com(0x80+0x40+2); W_Data(m);/第二行第三位写上“m” W_Com(0x80+0x40+3); W_Data(p);/第二行第四位写上“p” W_Com(0x80+0x40+4); W_Data(0x3a);/第二行第五位写上“ :” W_Com(0x80+0x40+15); W_Data(C); /第二行第十六位写上“C” D

22、S18B20程序:#include #define uchar unsigned char /宏定义即 uchar = unsigned char#define uint unsigned int /宏定义即 uint = unsigned intsbit DQ =P22; /ds18b20与单片机连接口uchar data disdata6; /定义6位的数组 用于显示温度数据uint tvalue; /温度值temp value16位数据uchar tflag; /温度正负标志 temp flag/*函数声明*/void W_Com(uchar); /写命令函数void W_Data(uc

23、har); /写数据函数/*ds18b20驱动函数*/void delay_18B20(unsigned int T) /延时函数 大致延时 T=tx2+5 uS while(-T);void ds1820rst() /*ds1820复位*/ DQ = 1; /DQ复位 delay_18B20(4); /延时 DQ = 0; /DQ拉低 delay_18B20(100); /精确延时应大于480us 但这里T太大了 不能正确仿真 DQ = 1; /拉高 delay_18B20(40); /DS18B20拉低信号大概60-240us uchar ds1820rd() /*读数据*/ uchar

24、i = 0; uchar dat = 0; for (i=8;i0;i-) DQ = 0; /给脉冲信号 dat=1; /单片机拉低10-15us DQ = 1; /给脉冲信号 if(DQ) /如果读到到底是1,则把1送给dat,否则默认送0给dat dat|=0x80; delay_18B20(10); /读取电平过后,延迟大约40-45 微妙 return(dat); /返回读取的值void ds1820wr(uchar wdata) /*写数据*/ uchar i = 0; for (i=8; i0; i-) DQ = 0; /单片机拉低10-15us 这里延时12us DQ = wda

25、ta&0x01;/写入最低位 delay_18B20(10); /单片机持续拉低20-45us DQ = 1;/单片机释放总线DQ wdata=1;/wdata右移一位 read_temp() /*读取温度值并转换*/ uchar a,b; ds1820rst(); /ds18b20复位 ds1820wr(0xcc); /*跳过读序列号*/ ds1820wr(0x44); /*启动温度转换*/ ds1820rst(); /ds18b20复位 ds1820wr(0xcc); /*跳过读序列号*/ ds1820wr(0xbe); /*读取温度*/ a=ds1820rd(); /读取低8位温度数据

26、b=ds1820rd(); /读取高8位数据 tvalue=b; /读取的高8位数据 tvalue=8; tvalue=tvalue|a;/高8位或上低8位 形成16位的数据 if(tvalue0x0fff) /判断温度的正负 tflag=0;/温度为正 else tvalue=tvalue+1; tflag=1; /温度为负 tvalue=tvalue*(62.5); /温度值扩大1000倍,精确到3位小数 return(tvalue);/返回读取的温度/*/void ds1820disp() /温度值和定位显示 uchar flagdat; disdata0=tvalue/100000+0

27、x30; /百位数 disdata1=tvalue%100000/10000+0x30; /十位数 disdata2=tvalue%10000/1000+0x30; /个位数 disdata3=tvalue%1000/100+0x30; /小数位 disdata4=tvalue%100/10+0x30; /第二位小数 disdata5=tvalue%10+0x30; /第三位小数 if(tflag=0) flagdat=0x20; /正温度不显示符号 else flagdat=0x2d; /负温度显示负号() if(disdata0=0x30)/判断百位是否为0 disdata0=0x20;

28、/如果百位为0,不显示 if(disdata1=0x30)/判断十位是否为0 disdata1=0x20; /如果百位为0,十位为0也不显示 W_Com(0x80+5+0+0x40); /第二行的第六个位置写入数据 W_Data(flagdat); /显示符号位 W_Com(0x80+5+1+0x40); /第二行的第七个位置写入数据 W_Data(disdata0); /显示百位 W_Com(0x80+5+2+0x40); /第二行的第八个位置写入数据 W_Data(disdata1); /显示十位 W_Com(0x80+5+3+0x40); /第二行的第九个位置写入数据 W_Data(di

29、sdata2); /显示个位 W_Com(0x80+5+4+0x40);/第二行的第十个位置写入数据 W_Data(0x2e); /显示小数点 W_Com(0x80+5+5+0x40);/第二行的第十一个位置写入数据 W_Data(disdata3); /显示第一位小数位W_Com(0x80+5+6+0x40);/第二行的第十二个位置写入数据 W_Data(disdata4); /显示第二位小数位W_Com(0x80+5+7+0x40);/第二行的第十三个位置写入数据 W_Data(disdata5); /显示第三位小数位 W_Com(0x80+8+6+0x40); /第二行的第十五个位置写入数据 W_Data(0xdf)

温馨提示

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

评论

0/150

提交评论