单片机的数字温度计设计方案(附代码及仿真)_第1页
单片机的数字温度计设计方案(附代码及仿真)_第2页
单片机的数字温度计设计方案(附代码及仿真)_第3页
单片机的数字温度计设计方案(附代码及仿真)_第4页
单片机的数字温度计设计方案(附代码及仿真)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

5/17基于STC89C52的数字温度计目录绪论………………...……….3方案选择2.1、主控芯片选择…………32.2、显示模块…………….………………...32.3、温度检测模块………………………..4系统硬件设计3.1、51单片机最小系统设计……….43.2、电源供电电路设计…………..……53.3、LCD显示电路设计…………..…….63.4、温度检测电路设计…………………….….………74、系统软件设计4.1、温度传感器数据读取流程图………..……...94.2、系统程序设计……………………….105、编程和仿真5.1、Keil编程软件…………………..…..115.2、proteus………………...115.3、仿真界面……………..116、总结…………..…..……..127、附录附录1、原理图………….12附录2、程序清单……………………..131、绪论在信息高速发展的21世纪,科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备的性能和结构发生了翻天覆地的变化。我们已经进入了高速发展的信息时代,测量技术也成为当今科技的一个主流,广泛地深入到研究和应用工程的各个领域。温度和人们的生活息息相关,温度的测量也就变得很重要。2、系统方案选择2.1主控芯片选择方案一:STC89C52RCSTC89C52RC是采用8051核的ISP在线可编程芯片,最高工作时钟频率80MHz,片内含8KB的可反复擦写1000次的Flash只读存储器,器件兼容MCS-51指令系统及8051引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,具有在线可编程特定,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。STC89C52RC系列单片机是单时钟周期、高速、低功耗的新一代8051单片机。方案二:ATmega8ATmega8是ATMAL公司在2002年第一季度推出的一款新型AVR高档单片机。在AVR家族中,ATmega8是一种非常特殊的单片机,它的芯片内部集成了较大容量的存储器和丰富强大的硬件接口电路,具备AVR高档单片机MEGA系列的全部性能和特点。但由于采用了小引脚封装<为DIP28和TQFP/MLF32),所以其价格仅与低档单片机相当,再加上AVR单片机的系统内可编程特性,使得无需购买昂贵的仿真器和编程器也可进行单片机嵌入式系统的设计和开发,同时也为单片机的初学者提供了非常方便和简捷的开发环境。由以上两种方案进行比较,我们选择STC89C52RC作为主控芯片,因为该芯片是入门级单片机,我们对该款单片机比较熟悉,而AVR单片机较为高端,这次的设计用STC89C52已经足够使用,引脚也够用,故用STC89C52作为主控芯片。STC89C52RC价格低廉,一般5元以内可以买到,在通银买也很方便。2.2时钟及显示模块方案一:数码管数码管亮度高,显示大,特别是显示的时间很直观,价格比较便宜,但多位的数码管在动态扫描的时候会出现闪烁。而且数码管占用的位置较大,且比较耗电。方案二:1602液晶屏1602液晶屏显示清晰且不会闪烁,在需要时还可以输出字符等内容,由于液晶屏是数字式的,因此和单片机系统的接口简单,操作方便。1602LCD液晶DS18B20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:•独特的单线接口仅需一个端口引脚进行通讯•简单的多点分布应用•无需外部器件•可通过数据线供电•零待机功耗•测温范围-55~+125℃,以0.5℃递增。华氏器件-67~+2570F,以0.90F递增•温度以9位数字量读出•温度数字量转换时间200ms<典型值)•用户可定义的非易失性温度报警设置•报警搜索命令识别并标志超过程序限定温度<温度报警条件)的器件。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图3.3.1所示,DQ为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。其电路图如图5.3.1所示.。图5.3.1外部封装形式在仿真软件中如图5.3.2所示图5.3.2DS18B20的测温原理如图5.3.3所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图5.3.3中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。另外,由于DS18B20单线通信功能是分时完成的,有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20<发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。图5.3.3在正常测温情况下,DS1820的测温分辨力为0.5℃。系统软件设计4.1:实验主程序流程图4.2:温度传感器数据读取流程图5、编程和仿真5.1编程软件Keil4KeilC51是美国Keilsoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境<uVision)将这些部分组合在一起。运行Keil需要win98、NT、win2000、winXP、win7等操作系统。2009年2月发布的KeiluVision4,KeiluVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方,新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁、高效的环境来开发应用程序。5.2仿真软件proteus7.7Proteus软件是Labcenterelectronics公司出版的EDA工具软件<该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教案的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具<仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2018年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。5.3仿真界面6、总结1、选择芯片和传感器时,够用易用就可以,综合考虑选择性价比最好的。2、在进行电路实际制作之前,应该用仿真软件进行仿真,可以使开发进程加快。3、在实际制作电路时,需要注意电源端和地端要检测过不导通后才能通电检测,防止烧坏芯片。7、附录附录1、原理图附录2、程序清单#include<reg52.h>//头文件#defineucharunsignedchar#defineuintunsignedintsbitrs=P2^0。sbitlcden=P2^1。//液晶使能端sbitDATA=P3^7。//DS18B20接入口ucharFLAG_DIS=0。ucharbai_18b20,shi_18b20,ge_18b20,num。//定义变量bitflag_Negative_number。//负数标志ucharcodetable[]={"tempreture:"}。//提示语/*****一毫秒定时*****/voiddelay_ms(uintz>{ uintx,y。 for(x=z。x>0。x--> for(y=110。y>0。y-->。}/*延时子函数*/voiddelay(uintnum>{ while(num-->。}/*液晶写命令*/voidwrite_lcd_com(ucharcom>{ rs=0。 lcden=0。 P0=com。 delay_ms(1>。 lcden=1。 delay_ms(1>。 lcden=0。 }/*液晶写数据*/voidwrite_lcd_date(uchardate>{ rs=1。 lcden=0。 P0=date。 delay_ms(1>。 lcden=1。 delay_ms(1>。 lcden=0。 }/*液晶初始化程序*/voidlcd_init(>{ write_lcd_com(0x38>。 write_lcd_com(0x0c>。 write_lcd_com(0x06>。 write_lcd_com(0x01>。}/*************DS18b20温度传感器函数*********************/voidInit_DS18B20(void> //传感器初始化{ ucharx=0。 DATA=1。//DQ复位 delay(10>。//稍做延时 DATA=0。//单片机将DQ拉低 delay(80>。//精确延时大于480us//450 DATA=1。//拉高总线 delay(20>。 x=DATA。//稍做延时后如果x=0则初始化成功x=1则初始化失败 delay(30>。}/*温度传感器读一个字节*/ReadOneChar(void>{ uchari=0。 uchardat=0。 for(i=8。i>0。i--> { DATA=0。//给脉冲信号 dat>>=1。 DATA=1。//给脉冲信号 if(DATA> dat|=0x80。 delay(8>。 } return(dat>。}/*温度传感器写一个字节*/voidWriteOneChar(uchardat>{ uchari=0。 for(i=8。i>0。i--> { DATA=0。 DATA=dat&0x01。 delay(10>。 DATA=1。 dat>>=1。 } delay(8>。}/*读取温度传感器温度*/intReadTemperature(void>{ uchara=0。 ucharb=0。 intt=0。 floattt=0。 Init_DS18B20(>。 WriteOneChar(0xCC>。//跳过读序号列号的操作 WriteOneChar(0x44>。//启动温度转换 Init_DS18B20(>。 WriteOneChar(0xCC>。//跳过读序号列号的操作 WriteOneChar(0xBE>。//读取温度寄存器等<共可读9个寄存器)前两个就是温度 a=ReadOneChar(>。//低位 b=ReadOneChar(>。//高位 t=b。 t<<=8。 t=t|a。 if(b&0x80> { t=~t+1。 flag_Negative_number=1。} else{flag_Negative_number=0。} tt=t*0.0625。 t=tt*10+0.5。 return(t>。}/*液晶显示温度*/voiddis_D18B20(void>{ inttemp。 temp=ReadTemperature(>。//读温度 bai_18b20=temp%1000/100。//显示十位 shi_18b20=temp%100/10。//显示个位 ge_18b20=temp%10。//显示十分位 if(flag_Negative_number> //负数 { if(bai_18b20==0> //十位为0,则不显示十位 { write_lcd_com(0x80+0x40>。 write_lcd_date(0x2D>。 write_lcd_date(0x30+shi_18b20>。 write_lcd_date(0x30+ge_18b20>。 write_lcd_date(0xDF>。 write_lcd_date(0x43>。 } else { write_lcd_com(0x80+0x40>。 write_lcd_date(0x2D>。 write_lcd_date(0x30+bai_18b20>。 write_lcd_date(0x30+shi_18b20>。 write_lcd_date(0xDF>。 write_lcd_date(0x43>。 } } else //正数 { if(bai_18b20==0> //十位为0,则不显示十位 { write_lcd_com(0x80+0x40>。 write_lcd_date(0x30+shi_18b20>。 write_lcd_date(0x2E>。 write_lcd_date(0x30+ge_18b20>。 writ

温馨提示

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

评论

0/150

提交评论