版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学中山学院学生实验报告学院:机电工程 专业:课程名称: 单片机原理与接口技术实验班级:姓名: 学号: 组别:实验名称:实验五 数字温度传感器实验实验时间:注:实验报告应包括:实验目的、实验仪器、实验原理、实验内容、实验步骤、实验数据处理及结果分析等。、实验目的和任务1、熟悉单总线及DS18B20专感器的特性和工作原理。2、掌握DS18B20测温系统的硬件结构及程序实现方法。、实验原理简介温度传感器有热电阻、热电偶、PN结、数字温度传感器等类型。其中,数字温度传感器采 用集成电路技术,将温度传感元件、数字量转换电路、数据存储器、外部通信接口等部件集成在 一块芯片上,可在单片机控制下,通
2、过申行信号线输出数字形式的温度值。DS18B20是DALLAS公司生产的单总线(1-Wire)接口的数字温度传感器,数据传输仅需 一根信号线。温度测量范围为-55+125C,在-10+85C范围内,精度可达i0.5C ,有效数据 位数可通过程序设置为912位,12位时分辨率可达0.0625C。每个DS18B20具有唯一 64位 序列码,多个器件可并联在一根数据线上,实现多点测温。图5.1为实验DS18B20测温电路的原理图。DS18B20的数据线DQ外加4.7K上拉电阻并与2位)单片机P3.5相连,8位共阳极LED数码管用于显示DS18B20所测温度(实际只用.捻 1 *C- 让哂桃幅闺N:心
3、相 ai.T 1 4'.占- 加刑前R.HPJPNM-U-ptFIMpr叼prplw 三 rnnrn图5.1DS18B20测温电路原理图、实验内容1、在proteusk建立如图5-1所示的电路原理图。fWA EC 0S2、编写程序,利用DS18B20检测温度,并通过数码管显示。 在Keil中编写源程序。C语言参考程序参考实验报告里实验五第一个程序: /* 本程序利用 DS18B20检测温度,并通过数码管显示。*/*头文件声明 */#include <reg51.h>/*数据类型定义 */typedef unsigned char uchar;typedef char int
4、8;typedef unsigned int uint16;/*/O口 线分配 */#define SEGCODEPORT P0#define BITCODEPORT P2sbitCS1=P3A6;/LED 使能 sbit DQ=P3A5;/*常量数组(段码表)声明 */uchar code SegCodeTable尸0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 ;/*函数原型声明 */void DS18B20Init();void WriteOneChar(uchar Byte);uchar ReadOneChar();void GetT
5、emperature();void DispTemperature();void Delay(int ms);void delay_18B20(unsigned int i);/*int Temperature=0;/*全局变量声明 */主函数 */void main() CS1=0;whileGetTemperature(); 获取当前温度 DispTemperature(); / 显示当前温度 /*DS18B20初始化函数 */void DS18B20Init()unsigned char x=0;DQ = 1; /DQ 复位delay_18B20(8); / 稍做延时DQ = 0; 单片
6、机将 DQ拉低delay_18B20(80); 精确延时 大于480usDQ = 1; 拉高总线delay_18B20(14);x=DQ; 稍做延时后如果x=0则初始化成功x=1则初始化失败delay_18B20(20);/*DS18B20 void WriteOneChar(uchar dat) unsigned char i=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01; / 取最低位 delay_18B20(5);DQ = 1;/上升沿将数据送入 dat>>=1;/*DS18B20字节写操作函数 */字节读操作函数 */uch
7、ar ReadOneChar() ucha门=0;uchar dat = 0;for (i=8;i>0;i-)DQ = 0;/给脉冲信号dat>>=1; /数据右移一位DQ = 1;/给脉冲信号if(DQ)dat|=0x80;/按位或,取最高位 delay_18B20(4);return(dat); 返回读到的 8位数温度获取函数 */* void GetTemperature() unsigned char a=0;unsigned char b=0;unsigned char t=0;DS18B20Init();WriteOneChar(0xCC); 跳过读序号列号的操作
8、WriteOneChar(0x44); / 启动温度转换delay_18B20(100); this message is wery importantDS18B20Init();WriteOneChar(0xCC); 跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器)前两个就是温度delay_18B20(100);a=ReadOneChar(); /读取温度值低位b=ReadOneChar();读取温度值高位Temperature=b<<4;/左移四位,扩大 16倍,变为一个字节的高四位Temperature+=(a&0xf
9、0)>>4;取温度值的低位的高四位,右移四位后与温度的高四位相加得到温度值 / Temperature=(b<<8)+a;/*void DispTemperature()显示温度值的十位(若为温度显示函数*/0则不显示)5位位置SEG_CODE_PORT=SegCodeTableTemperature/10; BIT_CODE_PORT=0xF6; 显示在8位数码管的第 Delay;BIT_CODE_PORT=0xFF;显示温度值的个位(带小数点)SEG_CODE_PORT=SegCodeTableTemperature%10;6位位置BIT_CODE_PORT=0xF
10、7; 显示在8位数码管的第 Delay(1);BIT_CODE_PORT=0xFF;/*软件延时函数*/41void Delay(int ms) uint16 i;do i=790;while(-i); 延时 1ms(STC12C5A60S2,11.0592MHzc51 代码优化级别设为5) while(-ms);/*ds18b20延迟子函数(晶振 12MHz ) */ void delay_18B20(unsigned int i) while(i-);程序结束 */*在Keil中创建工程,加入源程序文件,设置选项,进行汇编 /编译、连接、转换处理 成HEX文件。 将HEX文件导入到prot
11、eu颜目单片机模块里,仿真运行,成功运行后再进行以下操作 调整数字温度传感器里的温度数字,查看数码管显示是否正确。6而R ,由 t .;4工- O十 * *、二l<3平.i-E:-iWl3、在步骤2的基础上,设置警报数值,超过32C,蜂鸣器报警,并且在点阵管里显示警报图 案。将程序写到下方:/*本程序利用DS18B20检测温度,并通过数码管显示*/*头文件声明 */#include <reg51.h>/*数据类型定义 */typedef unsigned char uchar;typedef char int8;typedef unsigned int uint16;/*I/
12、O口 线分配 */#define SEGCODEPORT P0#define BIT_CODE_PORT P2 sbit CS1=P3A6; /微码管使能 sbit CS2=P3A7; /led® 能sbit BUZZER=P1A0;sbit DQ=P3A5;/*常量数组(段他表)声明*/uchar code SegCodeTable"0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;uchar code ledcode"0xFF,0xE7,0xE7,0xE7,0xE7,0xFF,0xE7,0xFF;/*函数原型声
13、明 */void DS18B20Init();void WriteOneChar(uchar Byte);uchar ReadOneChar();void GetTemperature();void DispTemperature();void Delay(int ms);void delay_18B20(unsigned int i); uchar warming();void buzzer();void displed();/*全局变量声明 */int Temperature=0;/*主函数 */void main()while(1)GetTemperature(); /欧取当前温度 Di
14、spTemperature(); /显示当前温度 buzzer();displed();/*DS18B20初始化函数 */void DS18B20Init()unsigned char x=0;DQ = 1; DQ 复位delay_18B20(8); 稍做延时DQ = 0; /单片机将DQ拉低delay_18B20(80);/精确延时大于 480usDQ = 1; 拉高总线delay_18B20(14);x=DQ; 稍做延时后如果x=0则初始化成功x=1则初始化失败delay_18B20(20);字节写操作函数 */*DS18B20 void WriteOneChar(uchar dat) u
15、nsigned char i=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01; /取最低位 delay_18B20(5);DQ = 1;/上升沿将数据送入 dat>>=1;/*DS18B20字节读操作函数 */uchar ReadOneChar()uchar i=0;uchar dat = 0;for (i=8;i>0;i-)DQ = 0; /给脉冲信号 dat>>=1; /数据右移一位 DQ = 1; /给脉冲信号 if(DQ) dat|=0x80;/按位或,取最高位 delay_18B20(4);return(d
16、at);/返回读到的 8位数温度获取函数 */* void GetTemperature() unsigned char a=0;unsigned char b=0; unsigned char t=0;DS18B20Init();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delay_18B20(100); /this message is wery importantDS18B20Init();WriteOneChar(0xCC);/跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可
17、读9个寄存器)前两个就是温度delay_18B20(100);a=ReadOneChar(); /读取温度值低位b=ReadOneChar(); /犊取温度值高位Temperature=b<<4; /左移四位,扩大16倍,变为一个字节的高四位Temperature+=(a&0xf0)>>4;/取温度值的低位的高四位,右移四位后与温度的高四位 相加得到温度值/ Temperature=(b<<8)+a;温度显示函数 */* void DispTemperature()/显示温度值的十位(若为 0则不显示)CS1=0;SEG_CODE_PORT=SegC
18、odeTableTemperature/10;BIT_CODE_PORT=0xF6; 显示在8位数码管的第 5位位置Delay(1);BIT_CODE_PORT=0xFF;/显示温度值的个位(带小数点)SEG_CODE_PORT=SegCodeTableTemperature%10;BIT_CODE_PORT=0xF7; 显示在8位数码管的第 6位位置Delay(1);BIT_CODE_PORT=0xFF;CS1=1;/*软件延时函数 */ void Delay(int ms) uint16 i;do i=790;while(-i); while(-ms);/*ds18b20延迟子函数(晶振 12MHz )
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44709-2024旅游景区雷电灾害防御技术规范
- 铝业加工厂二零二四年租赁合同
- 三峡课文的知识课件
- 轮胎企业市场营销策划与实施合同(二零二四年度)
- 全新集体合同模板
- 2024版艺术品交易居间协议3篇
- 2024年度原材料采购长期供货协议3篇
- 介绍英国汽车课件
- 化工原理实验下:吸收实验511
- 人教版九年级化学第一单元复习课件
- 概率论与数理统计10大案例
- 六人英语话剧《三打白骨精》剧本
- 食品安全法-食品安全法基本内容课件
- 胎心监护及判读-课件
- CJT121再生树脂复合材料检查井盖
- 油菜人工割晒一机械脱粒收获技术
- 2023年重庆市旅游业统计公报要点
- 789乘法练习题【模板】
- 真菌性脓毒症诊治对策
- 纺织非遗:让世界读懂中国之美智慧树知到答案章节测试2023年天津工业大学
- GB/T 8905-2012六氟化硫电气设备中气体管理和检测导则
评论
0/150
提交评论