您好,欢迎来到划驼旅游。
搜索
您的当前位置:首页数字温度计课程设计报告样本

数字温度计课程设计报告样本

来源:划驼旅游
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

一.数字温度计的总体方案设计

根据系统设计的功能, 本时钟温度系统的设计必须采用单片机软件系统实现, 用单片机的自动控制能力来测量、 显示温度数值。

初步确定设计系统由单片机主控模块、 测温模块、 显示模块共3个模块组成, 电路系统框图如图1.1所示。

图1.1 系统基本方框图

对于单片机的选择, 如果用8051系列, 由于它没有内部RAM, 系统又需要一定的内存存储数据。ATS52是一个低功耗、 高性能CMOS 8位的单片机, 片内含8k Bytes ISP的可重复擦写1000次的Flash只读程序存储器, 兼容标准MCS-51指令系统及80C51引脚结构, 功能强大的ATS52可为许多嵌入式控制应用系统提供高性价比的解决方案。而ATS52与ATC51相比, 外型管脚完全相同, ATC51的HEX程序无须任何转换可直接在ATS52运行, 且ATS52比ATC51新增了一些功能, 相比较后, 在本设计中选用ATS52更能很好的实现温度计控制功能。

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

测温电路能够使用热敏电阻之类的器件, 利用其感温效应, 将被测温度变化的电压或电流采集过来, 进行A/D转换后, 就能够用单片机进行数据处理。可是这种感温电路比较复杂, 且采用热敏电阻精度低, 重复性、 可靠性都比较差。

如果采用温度传感器DS18B20能够减少外部硬件电路, 而且能够很容易直接读取被测温度值, 进而转换, 且成本低、 易使用, 能够很好的满足设计要求。因此本文采用传感器DS18B20代替传统的测温电路。

温度的显示能够采用LED数码管来显示, LED亮度高、 醒目, 可是电路复杂, 占用资源多且信息量小。而采用液晶显示器有明显的优点: 工作电流比LED小几个数量级, 功耗低; 尺寸小, 厚度约为LED的1/3; 字迹清晰、 美观、 使人舒服; 寿命长, 使用方便, 可得性强。故本设计采用LCD来显示温度。 二、 系统器件的具体选择 2.1单片机的选择

本次设计采用的是单片机ATC52。

ATC52是一个低电压, 高性能CMOS 8位单片机, 片内含8k bytes的可重复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器( RAM) , 器件采用ATMEL公司的高密度、 非易失性存储技术生产, 兼容标准MCS-51指令系统, 片内置通用8位处理器和Flash存储单元, ATC52单片机在电子行业中有着广泛的应用。

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

图2.1 PDIP封装的ATC52 引脚图 ATC52为8 位通用微处理器, 采用工业标准的C51内核, 在内部功能及管脚排布上与通用的8xc52 相同, 其主要用于会聚调整时的功能控制。

功能包括对会聚主IC 内部寄存器、 数据RAM及外部接口等功能部件的初始化, 会聚调整控制, 会聚测试图控制, 红外遥控信号IR的接收解码及与主板CPU通信等。

主要管脚有: XTAL1( 19 脚) 和XTAL2( 18 脚) 为振荡器输入输出端口, 外接12MHz 晶振。RST/Vpd( 9 脚) 为复位输入端口, 外接电阻电容组成的复位电路。VCC( 40 脚) 和VSS( 20 脚) 为供电端口, 分别接+5V电源的正负端。P0~P3 为可编程通用I/O 脚, 其功能用途由软件定义, 在本设计中, P0 端口( 32~39 脚) 被定义为N1 功能控制端口, 分别与N1的相应功能管脚相连接, 13 脚定义为IR输入端, 10 脚和11脚定义为I2C总线控制端口, 分别连接N1的SDAS( 18脚) 和

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

SCLS( 19脚) 端口, 12 脚、 27 脚及28 脚定义为握手信号功能端口, 连接主板CPU 的相应功能端, 用于当前制式的检测及会聚调整状态进入的控制功能。 2.2 温度传感器的选择

2.2.1 DS18B20的简单介绍

DS18B20温度传感器是一种改进型智能温度传感器, 与传统的热敏电阻等测温元件相比, 它能直接读出被测温度, 而且可根据实际要求经过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:

①独特的单线接口仅需要一个端口引脚进行通信;

②多个DS18B20能够并联在惟一的三线上, 实现多点组网功能;

③无须外部器件;

④可经过数据线供电, 电压范围为3.0~5.5V; ⑤零待机功耗;

⑥温度以9或12位数字;

⑦负电压特性, 电极接反时, 温度计不会因发热而烧毁, 只是不能正常工作。

2.2.2 DS18B20的外形和内部结构

DS18B20内部结构主要由四部分组成: 位光刻ROM、 温度传感器、 非挥发的温度报警触发器TH和TL、 配置寄存器。

DS18B20的管脚排列、 各种封装形式如图 2.3 所示, DQ 为

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下, 也能够向器件提供电源; GND为地信号; VDD为可选择的VDD引脚。当工作于寄生电源时, 此引脚必须接地。

图2.2 外部封装形式 图2.3 DS18B20的电路

DS18B20采用3脚PR-35封装或8脚SOIC封装, 其内部结构框图如图2-4所示。

存储器与6 I/4 C 温度传高温触发低温触发器配置寄位 ROM Vdd 和高速缓8位CRC发生 图2-4 DS18B20内部结构

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

位ROM的结构开始8位是产品类型的编号, 接着是每个器件的惟一的序号, 共有48位, 最后8位是前面56位的CRC检验码, 这也是多个DS18B20能够采用一线进行通信的原因。

DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为9字节的存储器。头2个字节包含测得的温度信息, 第3和第4字节TH和TL的拷贝, 是易失的, 每次上电复位时被刷新。第5个字节, 为配置寄存器, 它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。低5位一直为1, TM是工作模式位, 用于设置DS18B20在工作模式还是在测试模式, DS18B20出厂时该位被设置为0, 用户要去改动, R1和R0决定温度转换的精度位数, 来设置分辨率。

2.2.3 DS18B20的测温原理

DS18B20的温度值的位数因分辨率不同而不同, 温度转换时的最大延时为750ms。 DS18B20测温原理如图2.5所示。图中低温度系数晶振的振荡频率受温度影响很小, 用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变, 所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数, 当计数器1的预置值减到0时, 温度寄存器的值将加1, 计数器1的预置将重新被装入, 计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数, 如此循环直到

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

计数器2计数到0时, 停止温度寄存器值的累加, 此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性, 其输出用于修正计数器1的预置值。

图2.5 DS18B20测温原理

2.2.4 DS18B2的外部电路图

根据设计要求, 传感器的硬件电路图如图2.6所示。

图2.6 DS18B20外部电路图

三.程序流程

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

图3.1 DS18B20温度计主程序流程图 图3.2 读出温度子程序流程图

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

图3.3计算温度子程序 图3.4显示数据刷新子程序流程图

四.Proteus仿真调试结果及分析

温度计电路设计原理图如图4.1所示,控制器使用单片机ATC2052,温度计传感器使用DS18B20,用液晶实现温度显示。

本温度计大致分三个工作过程。首先, 由DS18820温度传感器

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

芯片测量当前的温度, 并将结果送入单片机。然后, 经过C2052单片机芯片对送来的测量温度读数进行计算和转换, 井将此结果送入液晶显示模块。最后, SMC1602A芯片将送来的值显示于显示屏上。

由图4.1可看到, 本电路主要由DSl8820温度传感器芯片、 SMCl602A液晶显示模块芯片和C2052单片机芯片组成。其中, DSI8B20温度传感器芯片采用”一线制”与单片机相连, 它地完成温度测量以及将温度测量结果送到单片机的工作。

图3.1 温度计电路设计仿真图

五.硬件调试结果及分析

5.1软件调试

根据流程图编写程序软件。本次设计系统的调试以程序的调试为主。

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

程序的调试我们采用Keil C51.Keil C51 软件是众多单片机应用开发的优秀软件之一, 它集编辑, 编译, 仿真于一体, 支持汇编,PLM 语言和 C 语言的程序设计, 界面友好, 易学易用。

5.2系统调试

软硬件分别调试完成以后, 将程序下载入单片机中, 电路板接上电源, 按刷新按钮LCD显示当前温度。用手去碰触温度传感器, 按刷新按钮, 温度显示值出现变化, 显示当前手的温度值。

完成了我们预期的要求。

六.设计感受与看法

本次综合实训是针对MCS-51系列的单片机芯片STCC52来设计一个数字温度计, 该设计充分利用了温度传感器DS18B20功能强大的优点, 如DS18B20能够直接读出被测温度值, 进行转换; 而且采用三线制与单片机相连, 减少了外部的硬件电路, 具有低成本和易使用的特点, 大大简化了硬件电路, 也使得该数字温度计不但具有结构简单、 成本低廉、 精确度较高、 反应速度较快、 数字化显示和不易损坏等特点, 而且性能稳定, 适用范围广, 因此特别适用于对测温要求比较准确的场所。

在这次设计中, 熟悉了制作一个产品的总体流程, 能熟练使用一些必要的设计工具和仿真工具等。经过选认元件, 连线, 调试检测等过程, 锻炼自己的理论联系实际的能力和实际操作能力, 从而综合性地巩固所学的知识, 为将来的工作做一次实战演习。

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

经过将近2周的综合实训, 终于完成了我的数字温度计的设计, 虽然没有完全达到设计要求, 但从心底里说, 还是高兴的,

从这次的课程设计中, 我真真正正的意识到, 在以后的学习中, 要理论联系实际, 把我们所学的理论知识用到实际当中, 学习单机片机更是如此, 程序只有在经常的写与读的过程中才能提高, 这就是我在这次实训中的最大收获。

七.附件一: 元器件清单

STCC51 1个 温度传感器DS18B20 1个 插针 1排 LCD1602 1个 40脚插座 1个 12MHZ晶振 1个 电容 30PF 2个 22UF 1个 电阻 10K 2个 4.7K 1个

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

附件二: 源程序 #include

#define uchar unsigned char #define uint unsigned int

sbit DQ=P3^7;//ds18b20与单片机连接口 sbit RS=P3^0; sbit RW=P3^1; sbit EN=P3^2;

unsigned char code str1[]={\"temperature: \ unsigned char code str2[]={\" \ uchar data disdata[5]; uint tvalue;//温度值 uchar tflag;//温度正负标志 /*************************lcd1602**************************/

void delay1ms(unsigned int ms)//延时1毫秒( 不够精确的) {unsigned int i,j; for(i=0;ivoid wr_com(unsigned char com)//写指令//

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

{ delay1ms(1); RS=0; RW=0; EN=0; P2=com; delay1ms(1); EN=1;

delay1ms(1); EN=0; }

void wr_dat(unsigned char dat)//写数据// { delay1ms(1);; RS=1; RW=0; EN=0; P2=dat; delay1ms(1); EN=1;

delay1ms(1); EN=0; }

void lcd_init()//初始化设置//

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

{delay1ms(15);

wr_com(0x38);delay1ms(5); wr_com(0x08);delay1ms(5); wr_com(0x01);delay1ms(5); wr_com(0x06);delay1ms(5); wr_com(0x0c);delay1ms(5); }

void display(unsigned char *p)//显示// {

while(*p!='\\0') {

wr_dat(*p); p++;

delay1ms(1); } }

init_play()//初始化显示 { lcd_init(); wr_com(0x80); display(str1); wr_com(0xc0); display(str2);

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

}

/*****************ds1820

*********************************/

void delay_18B20(unsigned int i)//延时1微秒 {

while(i--); }

void ds1820rst()/*ds1820复位*/ { unsigned char x=0; DQ = 1; //DQ复位 delay_18B20(4); //延时 DQ = 0; //DQ拉低

delay_18B20(100); //精确延时大于480us DQ = 1; //拉高 delay_18B20(40); }

程序

uchar ds1820rd()/*读数据*/ { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--)

{ DQ = 0; //给脉冲信号 dat>>=1;

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

DQ = 1; //给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); }

return(dat); }

void ds1820wr(uchar wdata)/*写数据*/ {unsigned char i=0; for (i=8; i>0; i--) { DQ = 0;

DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; } }

read_temp()/*读取温度值并转换*/ {uchar a,b; ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0xbe);//*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else

{tvalue=~tvalue+1; tflag=1; }

tvalue=tvalue*(0.625);//温度值扩大10倍, 精确到1位小数 return(tvalue); }

/*******************************************************************/

void ds1820disp()//温度值显示 { uchar flagdat;

disdata[0]=tvalue/1000+0x30;//百位数

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

disdata[1]=tvalue%1000/100+0x30;//十位数 disdata[2]=tvalue%100/10+0x30;//个位数 disdata[3]=tvalue%10+0x30;//小数位

if(tflag==0)

flagdat=0x20;//正温度不显示符号 else

flagdat=0x2d;//负温度显示负号:- if(disdata[0]==0x30)

{disdata[0]=0x20;//如果百位为0, 不显示 if(disdata[1]==0x30)

{disdata[1]=0x20;//如果百位为0, 十位为0也不显示 } }

wr_com(0xc0);

wr_dat(flagdat);//显示符号位 wr_com(0xc1);

wr_dat(disdata[0]);//显示百位 wr_com(0xc2);

wr_dat(disdata[1]);//显示十位 wr_com(0xc3);

wr_dat(disdata[2]);//显示个位

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

wr_com(0xc4);

wr_dat(0x2e);//显示小数点 wr_com(0xc5);

wr_dat(disdata[3]);//显示小数位 }

/********************

***********************************/void main()

{ init_play();//初始化显示 while(1)

{read_temp();//读取温度 ds1820disp();//显示 } }

九.附录三: 实物图及使用说明

说明: 按键刷新温度

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务