数字温度计课程设计报告(stc89c52rc 18b20)_第1页
数字温度计课程设计报告(stc89c52rc 18b20)_第2页
数字温度计课程设计报告(stc89c52rc 18b20)_第3页
数字温度计课程设计报告(stc89c52rc 18b20)_第4页
数字温度计课程设计报告(stc89c52rc 18b20)_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、 数字温度计的设计 单片机原理及应用课程设计单片机原理及应用课程设计报告书题 目:DS18B20数字温度计的设计姓 名:黄飞学 号:103522021专 业:10电气工程及其自动化(工业控制)指导老师:王耿设计时间:2012年11月目录1.引 言31.1.设计意义31.2.系统功能要求31.3.本组成员所做的工作32.方案设计33.硬件设计43、4硬件框图 43.2 单片机的选择 43.3复位电路设计 43.4温度显示电路 43.5温度传感器 536整体电路图 64.软件设计125.系统调试1146.设计总结147.附 录A;源程序178.附 录B;作品实物图片219.参考文献22数字温度计的

2、设计1、引 言1、1设计意义(字体小4号,黑体)本设计是一款简单实用的小型数字温度计,所采用的主要元件有温度传感器18B20,单片机AT89C52RC,四位共阳极数码管一个,电容电阻若干。18B20支持“一线总线”接口,测量温度范围-55°C+125°C。在-10+85°C范围内,精度为±0.5°C。18B20的精度较差为± 2°C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。1、2统功能要求本次数字温度计的设计共分为

3、五部分,主控制器,数码管显示部分,传感器部分,复位部分,时钟电路。主控制器即单片机部分,用于存储程序和控制电路;LED显示部分是指四位共阳极数码管,用来显示温度;传感器部分,即温度传感器,用来采集温度,进行温度转换;复位部分,即复位电路。测量的总过程是,传感器采集到外部环境的温度,并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。本设计能完成的温度测量范围是-55°C+128°C。1、3本组成员所做的工作(字体小4号,黑体)黄飞:负责数字温度计proteus仿真及源程序编写张侃:焊接外接硬件电路,调试运行刘新宇:搜集STC89C52RC等芯片相关外围接线资

4、料,校核整理实验元器件。2、方案设计方案: 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效 应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。方案设计框图如下: 热敏电阻组成的感温电路 AD转换 数码管显示电路方案:考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。从以上两种方案,很容易看出,方案二电路比较

5、简单,软件设计也比较简单,故采用了方案。3、硬件设计3.1硬件框图按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。数字温度计总体电路结构框图所示: DS18B20AT89C52RC 主控制器 显示电路 扫描驱动3.2 单片机的选择单片机AT89S52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用4节电池供电。3.3复位电路设计单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R采用6.8K的阻值,电容采用电容值为10的电解电容。3.4温度显示电路四位共阳极数码管,能够显示小数和负

6、温度。零下时,第一个数码管显示负号。当温度超过99.9时,四个数码管全部亮。列扫描用P3.0P3.3口来实现,列驱动用9012三极管。电路图如下:3.5温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。电路图如下:3.6系统总电路图如下:3、6整体电路图3.6单片机单片机处理模块部分选用的芯片为STC89C52RC,属于89C51RC系列。选用STC单片机的理由:降低成本,提升性能,原有程序直接使用,硬件无需改动。使产品更小,更轻,

7、功耗更低用STC提供的专用工具可很容易的将2进制代码、16进制代码下载进STC相关的单片机。3.6.1如图为STC89C52RC的引脚图; STC89C52RC引脚图3、62各引脚功能如表 89C52RC引脚功能管脚管脚编号说明管脚LQFP44PDIP40PLCC44说明P0.0 P0.737-3039-324336P0:P0口既可作为输入/输出口,也可作为地址/数据复用总线使用。当P0口作为输入/输出口时,P0是一个8位准双向口,上电复位后处于开漏模式。P0口内部无上拉电阻,所以作I/O口必须外接10K-4.7K的上拉电阻。当P0作为地址/数据复用总线使用时,是低8位地址线A0A7,数据线的

8、D0D7,此时无需外接上拉电阻。P 1.0/T2401 2P 1.0标准I/O口 PORT 0P .0/T240 2T2定时器/计数器2的外部输入P1. 1/T2EX4123P . 标准I/O口 PORT 1P . /T2EX4 23T2EX定时器/计数器2捕捉/重装方式的触发控制P 1.24234标准I/O口 PORT 2P 1.34345标准I/O口 PORT 3P 1.44456标准I/O口 PORT 4P 1.5 167标准I/O口 PORT 5P 1.6278标准I/O口 PORT 6P 1.7389标准I/O口 PORT 7P2.0 P2.7 18-2521 -2824-3Port

9、2: P2口内部有上拉电阻,既可作为输入/输出口,也可作为高8位地址总线使用(A8 A 5)。当P2口作为输入/输出口时,P2是一个8位准双向口。P3.0/RxD5 10 11P3.0标准I/O口 PORT30P3.0/RxD5 0 RxD串口1数据接收端P3.1 /TxD7 11 3P3.1 标准I/O口 PORT31P3. /TxD7 3TxD串口1数据发送端P3.2/INT08 12 14P3.2标准I/O口 PORT32P3.2/INT08 2 4INT0外部中断0,下降沿中断或低电平中断P3.3/INT 9 13 15P3.3标准I/O口 PORT33P3.3/INT 9 3 5IN

10、T 外部中断1,下降沿中断或低电平中断P3.4/T0 1014 16P3.4标准I/O口 PORT34P3.4/T0 0 4 6T0定时器/计数器0的外部输入P3.5/T 11 15 17P3.5标准I/O口 PORT35P3.5/T 5 7T1 定时器/计数器1的外部输入P3.6/WR 12 16 18P3.6标准I/O口 PORT36P3.6/WR 2 6 8WR#外部数据存储器写脉冲P3.7/RD131719P3.7标准I/O口 PORT37RD#外部数据存储器读脉冲P4.0 1723P4.0标准I/O口 PORT40P4.1 2834P4.1 标准I/O口 PORT41P4.2/INT

11、3#391 P4.2标准I/O口 PORT42INT3#外部中断3,下降沿中断或低电平中断P4.3/INT2#6 12P4.3标准I/O口 PORT43INT3#外部中断2,下降沿中断或低电平中断P4.4/PSEN#262932P4.4标准I/O口 PORT44PSEN#外部程序存储器选通信号输出引脚P4.5/ALE273033P4.5标准I/O口 PORT45ALE地址锁存允许信号输出引脚/编程脉冲输入引脚P4.6/EA#2931 35P4.6标准I/O口 PORT46EA#内外存储器选引脚RST49 10RST复位脚XTAL1 15 1921 内部时钟电路反相放大器输入端,接外部晶振的一个

12、引脚。当直接使用外部时钟源时,此引脚是外部时钟源的输入端。XTAL2 14 1820内部时钟电路反相放大器的输出端,接外部晶振的另一端。当直接使用外部时钟源时,此引脚可浮空,此时XTAL2实际将XTAL1输入的时钟进行输出。VCC384044电源正极Gnd 162022电源负极,接地3、6.3 STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RX和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部式产生。内部方式的时钟电路如图 所示,在RXD和TXD引脚上外接定元件内部电路部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的联谐振回路。晶体振荡频率可以在

13、1.212MHz之间选择,电容值在530pF间选择,电容值的大小可对频率起微调的作用。外部方式的时钟电路如图所示,RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。(a)内部方式时钟电路 (b)外部方式时钟电路时钟电路3、6、4复位及复位电路A 复位操作复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键

14、重新启动。除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如表所示。 一些寄存器的复位状态寄存器复位状态寄存器复位状态PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXX000000BSBUF不定IE0X000000BPCON0XXX0000BTMOD00HB 复位信号及其产生RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。产生复位信号的

15、电路逻辑如图2-4所示复位信号的电路逻辑图整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。复位操作有上电自动复位相按键手动复位两种方式。A、上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图所示。这佯,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。B、按键手动复位有电平方式和脉冲方式两种。其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图所示;而按键脉冲复位则是利用R

16、C微分电路产生的正脉冲来实现的。其电路如图所示: (a)上电复位 (b)按键电平复位 (c)按键脉冲复位复位电路上述电路图中的电阻、电容参数适用于6MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。本系统的复位电路采用图(b)上电复位方式时钟电路STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图 所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.212MHz之间选择,电容值在53

17、0pF之间选择,电容值的大小可对频率起微调的作用。外部方式的时钟电路如图所示,RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。(a)内部方式时钟电路 (b)外部方式时钟电路图时钟电路YN4、软件设计4、1主程序 主程序的主要功能是负责温度的实时显示、读出并处理DS18B20主流程图如下:调用显示程序初始化初次上电Y1s到?N读出温度值温度计算处理显示数据刷新发温度转换开始命令4、2读出温度子程序 读出温度子程序的主要功能是读出RAM中的9字节,流程图如下

18、:发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNYY4、3温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。流程图如下:发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束4、4计算温度子程序 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。开始温度零下?NY置“+”标志温度值取补码置“-”标志计算小数位温度BCD值 计算整数位温度BCD值 结束4、5显示数据刷新子

19、程序 显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号)结束5、系统调试硬件调试比较简单,首先检查电感的焊接是否正确,然后可用万用表测试或通电检测。软件调试首先,并不是把编号的程序直接烧进单片机,而先用Keil C51编译器进行调试。在使用Keil C51编译器时,对工程成功地进行编译(汇编)、连接以后,在主菜单中打开“调试”栏,点击“开始/停止调试模式”,即可进入软件模拟仿真调试状态,Keil C51内建了一个仿真CPU用来模拟执行程序,

20、该仿真CPU功能非常强大,可以在没有硬件和仿真器的情况下进行程序的调试,但是在时序上,软件模拟仿真是达不到硬件的时序的。进入调试状态后,“调试”栏菜单项中原来不能用的命令现在已经可以使用了。调试程序看是否能仿真,如果运行正常再将在Keil C51编译器中调试好的程序烧写至单片机。 可根据电路的运行情况推测出程序出错的部分,修改程序后再经过Keil C51编译器调试后烧到单片机,反复检测直到能工作完全正常。由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用单片机汇编或C语言编写用Keil C51编译器编程

21、调试。软件调试到能显示温度值,并且在有温度变化时显示温度能改变,就基本完成。6、设计总结 本次的课程设计使我们进一步巩固了书本上的知识,做到了学以致用。通过系统仿真软件protues和编译软件keil,使我们进一步了解了单片机的设计制作过程,其中最为困难的是软件部分,即编程部分,我们上网找了好多资料,虽然经过自己的修改,但还是有很多功能不能实现,如温度上下限设置。最后一步的焊接硬件也遇到了不少麻烦,P0端口没有加上拉电阻,P1端口没有加电阻导致数码管不亮或者亮度不够。总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。其次,要学致用,理论联系实际,这样才会

22、取得事半功倍的效果。此次课程设计断断续续经历了3个星期,我从中学到了许多。从最开始的资料的收集,核对元器件,中间的电路板的焊接,程序的设计,到最好的调试和再调试。这些都使我学到了好多,成长了好多。通过查找各种资料,我更加熟练的运用所学过的信息检索方法。也懂得了耐心的重要性,焊接电路培养了我的细心,调试过程挑战了我的坚持能力,打磨了我的性格。这次经历不仅仅扩充了我的知识面,培养了动手能力,还教会了我怎样做好一件事的方法。课程设计的过程带给我的是对所学知识的复习,是对新知识的拓展.是对遇到各种困难的坚持,也是对坚持就是胜利这种信仰的肯定。 虽然在这中间走过许多歪路,遇到很多失败,但是最终带给我是成

23、功,是胜利的微笑。在大学毕业走向社会的这个过度过程,它使我受益匪浅。附 录A源程序(字体4号,黑体,居中)/使用STC89C52RC单片机,12MHZ晶振,用共阳LED数码管/P1口输出段码,P3口扫描/#pragma src(d:aa.asm)#include "reg51.h"#include "intrins.h" /_nop_();延时函数用#define Disdata P1 /段码输出口#define discan P3 /扫描口#define uchar unsigned char#define uint unsigned intsbit

24、DQ=P37; /温度输入口sbit DIN=P17; /LED小数点控制uint h;/*温度小数部分用查表法*/uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;uchar code dis_712=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf;/* 共阳LED段码表 "0" "1" "2" "3&qu

25、ot; "4" "5" "6" "7" "8" "9" "不亮" "-" */ uchar code scan_con4=0xfe,0xfd,0xfb,0xf7; / 列扫描控制字uchar data temp_data2=0x00,0x00; / 读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00;/显示单元数据,共4个数据,一个运算暂存用/*11微秒延时函数*/void delay(

26、uint t)for(;t>0;t-);/*显示扫描函数*/scan()char k; for(k=0;k<4;k+) /四位LED扫描控制 Disdata=dis_7displayk; if(k=1)DIN=0; discan=scan_conk;delay(90);discan=0xff; /*18B20复位函数*/ow_reset(void)char presence=1;while(presence)while(presence) DQ=1;_nop_();_nop_();DQ=0; /delay(50); / 550usDQ=1; / delay(6); / 66uspr

27、esence=DQ; / presence=0继续下一步 delay(45); /延时500uspresence = DQ;DQ=1; /*18B20写命令函数*/向 1-WIRE 总线上写一个字节void write_byte(uchar val)uchar i;for (i=8; i>0; i-) /DQ=1;_nop_();_nop_(); DQ =0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usDQ =val&0x01; /最低位移出delay(6); /66usval=val/2; /右移一位DQ = 1;delay(1);

28、/*18B20读1个字节函数*/从总线上读取一个字节uchar read_byte(void)uchar i;uchar value = 0;for (i=8;i>0;i-)DQ=1;_nop_();_nop_();value>>=1;DQ = 0; /_nop_();_nop_();_nop_();_nop_(); /4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=0x80;delay(6); /66usDQ=1;return(value);/*读出温度函数*/read_temp()ow_reset(

29、); /总线复位write_byte(0xCC); / 发Skip ROM命令write_byte(0xBE); / 发读命令temp_data0=read_byte(); /温度低8位temp_data1=read_byte(); /温度高8位ow_reset();write_byte(0xCC); / Skip ROMwrite_byte(0x44); / 发转换命令/*温度数据处理函数*/work_temp()uchar n=0; /if(temp_data1>127)if(temp_data0!=0x00) temp_data1=(255-temp_data1);temp_data0=(256-temp_data0);n=1;/负温度求补码else temp_data1=(256-temp_data1);n=1;/负温度求补码disp

温馨提示

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

评论

0/150

提交评论