资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
学年论文学年论文 (课程论文、课程设计)(课程论文、课程设计) 题题 目:目:DS18B20DS18B20 温度温度传感器传感器, ,蜂鸣器实验蜂鸣器实验 姓姓 名名 学学 号:号: 所在学院:所在学院: 专业年级:专业年级: 20152015 年年 9 9 月月 2121 日日 目录目录 1 绪 论 1.1 本论文的目的 . 1.2 关于 AT89C52 单片机基本概念. 1.3 使用的软件介绍. 1.4 本论文的主要内容 . 2 基于单片机的 DS18B20 温度传感器用数码管显示温度. 2.1 DS18B20 传感器介绍 2.2 数码管显示数字的基本原理 2.3 电路的连接方法 . 2.4 系统功能方框图 . 2.系统的程序. 3 单片机蜂鸣器实验. 3.1 蜂鸣器介绍 . 3.2 系统功能图 3.3 电路的连接方法 . 3.4 系统的基本设计方法 . 3.5 系统C程序 . .总结 1.1.绪绪 论论 1.11.1 本论文的背景本论文的背景 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给 人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。数字化 控制、智能控制为现代人的工作、生活、科研等方面带来方便。其中数字温度计就是 一个典型的例子。 数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温精确、功能 多样话等优点。其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该 设计使用 STC89C52 单片机作控制器,数字温度传感器 DS18B20 测量温度,单片机 接受传感器输出,经处理用 LED 数码管实现温度值显示。 1.2 关于关于 AT89C52 单片机基本概念单片机基本概念 1) 、何谓单片机 一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、 控制) 、RAM(数据存储) 、ROM(程序存储) 、输入/输出设备(例如:串行口、并 行输出口等) 。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的 印刷线路板上。 2)、MCS51 单片机和 8051、8031、89C51 等的关系我们平常老是讲 8051,又有什么 8031,现在又有 89C51,它们之间究竟是什么关系? MCS51 是指由美国 INTEL 公司 (对了,就是大名鼎鼎的 INTEL)生产的一系列单片机的总称,这一系列单片机包括 了好些品种,如 8031,8051,8751,8032,8052,8752 等,其中 8051 是最早最典型 的产品,该系列其它单片机都是在 8051 的基础上进行功能的增、减、改变而来的, 所以人们习惯于用 8051 来称呼 MCS51 系列单片机,而 8031 是前些年在我国最流行 的单片机,所以很多场合会看到 8031 的名称。 1.3 使用的软件介绍使用的软件介绍 单片机的程序设计需要在特定的编译器中进行。编译器完成对程序的编译、连接 等工作并且最终生成可执行文件(.hex 文件) 。对单片机程序的开发,一般采用 Keil 公司的 Vision 系列的集成开发环境。 Vision 开发工具当前的最高版本是 Vision4,它支持汇编语言以及 C51 语言的程序设计。本章主要介绍 Vision4 集成 开发环境,以及如何运用 Vision4 集成开发环境进行单片机程序设计与仿真。 Keil Vision 系列是非常优秀的编译器,受到广大单片机设计者的广泛使用。其特点 如下: 支持汇编语言、C 语言等多种单片机设计语言; 可视化的文件管理,界面友好; 支持丰富的产品线,除了 51 以及兼容的单片机内核外,还增加了对 ARM 核产 品的支持; 具有完备的编译连接工具; 具备丰富的仿真调试功能,可以仿真并口、串口、定时/计数器、中断、D/A 和 A/D 资源; 内嵌 RTX-51 实时多任务操作系统; 支持在一个工作空间中进行多项目的程序设计; 支持多极代码优化 1.4 本论文的主要内容本论文的主要内容 基于单片机的 DS18B20 数字温度计设计。 单片机蜂鸣器设计。 更理解单片机怎样设计电路,理解单片机怎样用,为毕业设计建立了一个基础。 2 2 基于单片机的基于单片机的 DS18B20DS18B20 温度温度传感器用数码管显示温度传感器用数码管显示温度 2.1 DS18B20 传感器介绍 独特的单线接口仅需一个端口引脚进行通信 简单的多点分布应用 无需外部器件 可通过数据线供电 测温范围-55+125,以 0.5递增 可编程的分辨率为 912 位,对应的可分辨温度分别为 0.5、0.25、 0.125和 0.0625 应用包括温度控制、工业系统、消费品、温度计和任何热感测系统 负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常 工作 .2. DS18B20 外形及引脚说明 图 3 DS18B20 外形及引脚 GND:地 DQ:单线运用的数据输入/输出引脚 VD:可选的电源引脚 2.2 数码管显示数字的工作原理介绍 数码管是一种常用数字显示原件,其内部是由多个并联的Led 灯构成。按照连接 led 的公共端的不同可以分为:共阴极数码管、共阳极数码管两种。数码管按照顺序 依次排列,有数学里个位、十位、百位、千位,对应与每一位数码管就有数码管 的为选概念,共阳极数码管高电平选通,共阴极数码管低电平选通;对于单个的数码 管每一个笔划,国际上有统一的规范,按顺时针顺序排列:a、b、c、d、e、f、g、h 是数码管的段信号。由此差别就晓得数码管的单片机控制方法了。图4.13 数码管示 意图 首先使用Proteus 绘制数码管显示电路,先添加数码管原件,此处绘制电路选用共阴 极数码管。单机键盘P的快捷键调出原件对话框,输入7seg 就可以看到:6 位的数码 管单个数码管的形状如上图所示:内部由8 个LED 灯构成,其中HGFEDCBA为段码,由 高到低的顺序排列。由于我们使用的是共阴数码管,把段码相应的位置2,同时把公 共端(又称位选端)置0,相应的数码管发光。如上显示数字“6” ,这相应的段码为 0x7d,即二进制01111101.共阴数码管段码显示0F 列举如下: 0x3f,0x06,0x5b,0x4f,0x66,/04 0x6d,0x7d,0x07,0x7f,0x6f,/59 0x77,0x7c,0x39,0x5e,0x79,/AE 2.3电路的连接方法 VCC链接到单片机的VCC端口,把GND端口链接到端口,然后端口链接到单 片机的.端口。然后把单片机是上面的口链接到数码管,按循序链接到别 的。 2.4 系统功能方框图 本方案设计的系统由单片机系统、温度传感器、数码管显示模块、其总体架构如下图: 图1 系统总体方框图 系统的程序 DS18B20 单片机测温度系统程序 #include “reg52.h“ #include “intrins.h“ #define SkipRom 0xcc #define ConvertTemperature 0x44 #define ReadScratchpad 0xbe sbit DQ=P27; unsigned int buffer6; unsigned char code buff12=0X3f,0X06,0X5b,0X4f,0X66, 0X6d,0X7d,0X07,0X7f,0X6f,0x40,0x00 单单 片片 机机 测温电路 时钟、复位电路 显示电 路 驱动电 路 ;/数字 09 及“EP=OC“共阴数码管代码 /*延时* /函数名称:void One_Wire_Delay(unsigned char delay_time) /函数功能:延时 /函数参数:delay_time /* void One_Wire_Delay(unsigned char delay_time) while(delay_time)delay_time-;/延时时间:=(8+delay_time*6)us; /*初始化* /函数名称:void init_ds18b20(void) /函数功能:初始化 DS18B20 /函数参数:无 /* void init_ds18b20(void) DQ=0;/复位信号 One_Wire_Delay(50);/延时 600us DQ=1; One_Wire_Delay(4);/延时 30us while(DQ=1); One_Wire_Delay(52);/延时 300us DQ=1; _nop_(); /*写一个字节* /函数名称:void wr_byte(unsigned int wdata) /函数功能:DS18B20 写一个字节 /函数参数:wdata /* void wr_byte(unsigned int wdata) unsigned int n; for(n=0;n1; DQ=1; _nop_(); One_Wire_Delay(5);/延时 128us /*读一个字节* /函数名称:unsigned int rd_byte(void) /函数功能:DS18B20 读一个字节 /函数参数:wdata /* unsigned int rd_byte(void) unsigned int m,bb=0; bit b; for(m=0;m1) flag_1=1; else flag_1=0; if(flag_1) msb=msb; lsb=lsb+1; t1=(msb4);/整数部分 t2=(lsb /if(flag) / / t1=t1; / t2=t2+1; / /t2=t2*0.06*100; if(flag_1) buffer0=10;/负数 else buffer0=11; buffer1=t1/100; buffer2=(t1/10)%10; buffer3=t1%10; buffer4=t2/1000; buffer5=(t2%1000)/100; /buffer6=(t2%100)/10; /buffer7=t2%10; /* /*ds18b20 显示* /函数名称:void display(void) /函数功能:DS18B20 显示 /函数参数:无 /* void display(void) unsigned int j,b=0xdf,k; for(j=0;j1)|0x80; for(k=0;k #define uchar unsigned char sbit beep=P04; uchar timer0h,timer0l,time; cod
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号