单片机课程设计之智能多点温度计.docx

上传人:大张伟 文档编号:10677847 上传时间:2021-05-30 格式:DOCX 页数:15 大小:312.36KB
返回 下载 相关 举报
单片机课程设计之智能多点温度计.docx_第1页
第1页 / 共15页
单片机课程设计之智能多点温度计.docx_第2页
第2页 / 共15页
单片机课程设计之智能多点温度计.docx_第3页
第3页 / 共15页
单片机课程设计之智能多点温度计.docx_第4页
第4页 / 共15页
单片机课程设计之智能多点温度计.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《单片机课程设计之智能多点温度计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计之智能多点温度计.docx(15页珍藏版)》请在三一文库上搜索。

1、单片机应用系统设计课 题:智能多点温度计的设计姓 名:姜远宁班 级:BQ1204学 号:121008140413指导老师:田玉冬日 期:第一章 绪论传统的方法是用温度计等测试器材,通过人工进行检测,对不符合温度要求的库房进行通风和降温等工作。 这种人工测试方法费时费力、 效率低, 且测试的温度误差大, 随机性大。 防潮、 防霉、 防腐、 防爆是仓库日常工作的重要内容,是衡量仓库管理质量的重要指标。首要问题是加强仓库内温度与湿度的监测工作。因此我们需要一种造价低廉、使用方便且测量准确的温湿度测量仪。第二章 方案传感器是实现测量与控制的首要环节,是测控系统的关键部件,如果没有传感器对原始被测信号进

2、行准确可靠的捕捉和转换, 一切准确的测量和控制都将无法实现。 工业生产过程主要依靠各种传感器来检测和控制生产过程中的各种参量,使设备和系统正常运行在最佳状态,从而保证生产的高效率和高质量。2.1 传感器的选择 1) 1) DSl8820 的特点DSl8820 是美国 Dallas 半导体公司继 DSl820 之后最新推出的一种改进型智能数字温度传感器。 与传统的热敏电阻相比, 它能够直接读出被测温度, 并且可根据实际要求通过编程实现912位的数字值读数方式;可以分别在93. 75ms 和 75O ms 内完成 9 位和 12 位的数字量; 从 DSl8820 读出信息或写入DSl8820 信息

3、仅需要1 根口线 (单线接口 );温度变换功率来源于数据总线,总线本身也可以向所挂接的 DSl8820 供电,而无需额外电源。使用 DSl8820 可使系统结构更趋简单,可靠性更高。 DSl8820 在测温精度、转换时间、传输距离、分辨率等方面较 DSl820 有了很大的改进。 2) DS18820内部结构及工作原理DS18820的内部结构如图1所示,主要包括寄生电源电路、64位只读存储器(ROM)和单线接口、存储器和控制逻辑、存放中间数据的高速暂存存储器、 温 度传感器、报警上限寄存器TH、报警下限寄存器TL、配置寄存器和8位CRC(循 环冗余校验码)发生器。寄生电源电路兽块 模64 位 R

4、OM和口DS18B20内部结构框2. 2 AT89C51 单片机AT89C51单片机是ATMEL公司生产的高性能8位单片机,主要功能特性如下:兼容MCS-51指令系统;32个双向I/O 口,两个16位可编程定时/计数器;1个串行中断,两个外部中断源;可直接驱动LED;低功耗空闲和掉电模式;4 kB可反复擦写(1 000 次)FLASI ROM ;该款芯片的超低功耗和良好的性能价格比使其非常适合嵌入式产品应用。第三章系统总体设计1 .硬件设计由DS18B20和Atmel公司推出的单片机 AT89C51以及相关外围电路组成的高 精度、多点温度测量系统的结构框图如图所示。系统采用 8片DS18B20

5、构成小 型温度传感器网络3,通过并行连接方式连接至单片机的通用I/O端口。单片机获得温度信息后,通过特定的算法,将处理后的温度信息通过LED显示出来,同时通过用行口送上位机处理。2 .软件系统设计主程序先对各DS18B20进行初始化,然后重复调用写命令和读数据模块,最 后将数据处理后送LED显示7。主程序执行流程如图3所示:Y图3系统软件流程开始/*数码管的显示*/void display(uint temp)uchar bai,shi,ge;bai=temp/100;shi=temp%100/10;ge=temp%100%10;dula=0;P0=tablebai; 显示百位dula=1;/

6、从0到1,有个上升沿,解除锁存,显示相应段dula=0;/从1到0再次锁存wela=0;P0=0xfe;wela=1;wela=0;delay(1);/延时约 2msP0=table1shi; 显示十位dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay(1);P0=tablege; /显示个位dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(1);3.软件仿真调试LCD!口.-TTF-T? iI* iU1 -EHC51- s_ kiXTALIXTAISRBTPDgtO FO.WABI PO3,ASe POJTACO 口*月M F

7、U班超 ,口后再婚 ,口1恒的FZUASFN 1gP2SACFEWPZ3TA11ALEFW百PN比值PZJSAU陞.T陋谷。,口P3BTRX&F1.1Fum0F12pzotwto打口P1.4P3XT0FijSP3snF1.P3.9WKF1.TP1.7/W涕宅三w?莹:FFFFF手第四章 结束语本系统具有如下特点:a. 结构简单,成本低廉,维护方便。b. 直接将温度数据进行编码, 可以只使用单根电缆传输温度数据, 通信方便,传输距离远且抗干扰性强。c. 配置灵活、方便、易于扩展。可扩展多路下位温度采集子系统,将它们通过RS485与上位PC机组网,形成多点温度采集网络。也可在各子系统中有选择 性地

8、增减温度传感器。d. 适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。在大范围温度多点监控系统中具有十分诱人的应用前景。附录 主程序#include reg52.h#include intrins.h#define uchar unsigned char#define uint unsigned intsbit ds=P2A2;sbit dula=P2A6;sbit wela=P2A7;uchar flag ;uint temp;/参数temp 一定要声明为 int 型uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d

9、,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/不带小数点数字编码uchar code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/带小数点数字编码/* 延时函数 */void TempDelay (uchar us)while(us-);void delay(uint count) / 延时子函数uint i;while(count) i=200; while(i0) i-;count-;/* 串口初始化,波特率9600 ,方式 1 */void init_com

10、()TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SM0=0;SM1=1;/ REN=1;PCON=0;/ SMOD=0;/ EA=1;/ES=1;/设置定时器1 为模式 2/装初值设定波特率/启动定时器/串口通信模式设置/串口允许接收数据/波特率不倍频/波特率不倍频/开总中断/开串行中断*/* 数码管的显示void display(uint temp)uchar bai,shi,ge;bai=temp/100;shi=temp%100/10;ge=temp%100%10;dula=0;P0=tablebai;/显示百位dula=1;dula=0;/从 0 到 1,有个上

11、升沿,解除锁存,显示相应段/从 1 到 0 再次锁存wela=0;P0=0xfe;wela=1;wela=0;delay(1); / 延时约 2msP0=table1shi;/ 显示十位 dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay(1);P0=tablege;/显示个位dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(1);void ds_reset(void)ds=1;_nop_();/1usds=0;TempDelay(80);当总线停留在低电平超过480us,总线上所以器件都将被复位,这里 /延时约530us总线停

12、留在低电平超过 480 ds总线上的所有器件都/将被复位。_nop_();ds=1;/产生复位脉冲后,微处理器释放总线 ,让总线处于空闲状态, 原因查 /18b20中文资料TempDelay(5); /释放总线后,以便从机18b20 通过拉低总线来指示其是否在线,存在检测高电平时间:1560us,所以延时44us,进行 1-wire presence/detect (单线存在检测)_nop_();_nop_();_nop_();if(ds=0)flag=1;/detect 18b20 successelseflag=0;/detect 18b20 failTempDelay(20);/存在检测

13、低电平时间:60240us,所以延时约140us_nop_();_nop_();ds=1;/ 再次拉高总线,让总线处于空闲状态/*/bit ds_read_bit(void) / 读一位bit dat;ds=0;/ 单片机(微处理器)将总线拉低_nop_();/读时隙起始于微处理器将总线拉低至少1usds=1;/拉低总线后接着释放总线,让从机18b20 能够接管总线,输出有效数据_nop_();_nop_();小延时一下,读取18b20上的数据,因为从ds18b20上输出的数据/在读时间隙 下降沿出现15us 内有效dat=ds;/主机读从机18b20 输出的数据,这些数据在读时隙的下降沿出现

14、/15us内有效TempDelay(10);/所有读时间隙必须 60120us,这里 77usreturn(dat); /返回有效数据uchar ds_read_byte(void ) / 读一字节uchar value,i,j;value=0;/一定别忘了给初值for(i=0;i8;i+)j=ds_read_bit();value=(j1); / 这一步的说明在一个word 文档里面return(value); /返回一个字节的数据void ds_write_byte(uchar dat) / 写一个字节uchar i;bit onebit;/一定不要忘了,onebit 是一位for(i=1

15、;i1;if(onebit)/ 写 1ds=0;_nop_();_nop_();看时序图,至少延时 1us,才产生写时间隙”ds=1;写时间隙开始后的15科s内允许数据线拉到高电平TempDelay(5); /所有写时间隙必须最少持续60uselse /写 0ds=0;TempDelay(8); /主机要生成一个写0 时间隙,必须把数据线拉到低电平并保持至少60W$这里64usds=1;_nop_();_nop_();void tem_change()ds_reset();delay(1);/约2msds_write_byte(0xcc);ds_write_byte(0x44);unit get temperature()float wend;char a,b;ds_reset();delay(1);/约2msds_write_byte(0xcc);ds_write_byte(0xbe);a=ds_read_byte();b=ds_read_byte();temp=b;temp0;a-)display( get_temperature();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1