单片机课程设计-数字温度计(共18页)_第1页
单片机课程设计-数字温度计(共18页)_第2页
单片机课程设计-数字温度计(共18页)_第3页
单片机课程设计-数字温度计(共18页)_第4页
单片机课程设计-数字温度计(共18页)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、PAGE PAGE 武 夷 学 院 课程设计报告(bogo)课程名称:单片机及嵌入式技术设计题目:数字温度计学生班级:13计算机科学与技术(1)班学生姓名:陈圣盛、周鹏飞、刘犇指导教师:焦金涛完成日期:2015-12-25数学(shxu)与计算机学院 课程设计项目研究(ynji)报告目 录 TOC o 1-3 h z u HYPERLINK l _Toc1663 第 1 章 项目(xingm)简介 PAGEREF _Toc1663 3 HYPERLINK l _Toc21872 1.1 项目名称 PAGEREF _Toc21872 3 HYPERLINK l _Toc13070 1.2 开发人

2、员 PAGEREF _Toc13070 3 HYPERLINK l _Toc26773 1.3 指导(zhdo)教师 PAGEREF _Toc26773 3 HYPERLINK l _Toc5068 第 2 章 项目研究意义 PAGEREF _Toc5068 3 HYPERLINK l _Toc18930 2.1 课程设计概述 PAGEREF _Toc18930 3 HYPERLINK l _Toc28309 2.2 需求分析 PAGEREF _Toc28309 3 HYPERLINK l _Toc8219 2.3 研究意义 PAGEREF _Toc8219 4 HYPERLINK l _To

3、c3882 第 3 章 采用的技术 PAGEREF _Toc3882 4 HYPERLINK l _Toc20811 3.1 课程设计的方案设计论证 PAGEREF _Toc20811 4 HYPERLINK l _Toc20079 3.2 重要算法的设计、流程描述 PAGEREF _Toc20079 7 HYPERLINK l _Toc30749 第4 章 课程设计项目进度表 PAGEREF _Toc30749 8 HYPERLINK l _Toc5300 第5 章 课程设计任务分配表 PAGEREF _Toc5300 8 HYPERLINK l _Toc15166 第6 章 系统设计 PA

4、GEREF _Toc15166 9 HYPERLINK l _Toc14116 61 程序设计思想 PAGEREF _Toc14116 9 HYPERLINK l _Toc1940 62 程序最终实现结果 PAGEREF _Toc1940 9 HYPERLINK l _Toc20944 第7 章 源程序 PAGEREF _Toc20944 10 HYPERLINK l _Toc26790 第8 章 设计心得 PAGEREF _Toc26790 15 HYPERLINK l _Toc2802 第9 章 参考文献 PAGEREF _Toc2802 15 数学与计算机学院 第 1 章 项目(xing

5、m)简介1.1 项目名称 数字(shz)温度计1.2 开发人员 13计科1班 陈圣盛(组长)、周鹏飞、刘犇1.3 指导(zhdo)教师 焦金涛第 2 章 项目研究意义2.1 课程设计概述 随着现代信息技术的飞速发展和传统工业改造的逐步实现能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。选用STC89C52单片机作为主控制器件,实现温度显示。通过DSl8B2

6、0直接读取被测温度值,该器件的物理化学性能稳定,线性度较好,测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 + 125 ; 在 -10+ 85C 范围内,精度为 0.5C 。2.2 需求分析 目前温度计的发展很快,从原始的玻璃温度计管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等。随着各类电子产品的便携化,可用于片上测温的集成温度传感器的发展便越趋灼热化。传感器属于信息技术的前沿尖端产品,尤其是温度传感器被广泛用于工农 业生产、科学研究和生活等领域,数量高居各种传感器之首。我们所设计的数字温度计精度较高,能直观地显示温度,并且有警报系统,在蔬菜大棚

7、、工作车间、室温检测等,都有较高使用价值。2.3 研究(ynji)意义 目前的温度计中传感器是它的重要组成部分,它的精度、灵敏度基本决定了温度计的精度、测量范围、控制(kngzh)范围和用途等。传感器应用极其广泛,目前已经研制出多种新型传感器。但是,作为应用系统设计人员需要根据系统要求选用适宜的传感器,并与自己设计的系统连接起来,从而构成性能优良的监控系统。伴随着我们软件开发水平的提高,我们有必加深对温度传感器的认识,要进一步提高温度计设计上的智能化程度。第 3 章 采用(ciyng)的技术3.1 课程设计的方案设计论证我们所设计的数字温度计主要使用到了51单片机中的3个器件:蜂鸣器、发光二极

8、管LED显示器和DS18B20温度传感器。首先通过温度传感器获取周围的环境温度,在LED上直观地显示出来,倘若温度过高、过低,蜂鸣器就会报警。蜂鸣器:蜂鸣器的工作电路如图3-1.1所示,蜂鸣器电流一般比较大,单片机的I/O 口是无法直接驱动,所以要利用放大电路来驱动,一般使用三极管来放大电流;通过P2.3来控制蜂鸣器,当我们需要蜂鸣器工作的时候输入高电平,而蜂鸣器不需要鸣叫的时候,将I/O 口设置为低电平即可。在我们不用蜂鸣器的时候,注意将I/O设置为低电平,为了防止漏电。图3-1 蜂鸣器驱动(q dn)模块发光二极管LED显示器:在51单片机中,一共使用两个74HC573驱动段位、位选,使用

9、16个IO口。在代码中,段位和位选都通过(tnggu)P0端口写入数据,通过P2.6口控制段位,通过P2.7口控制位选。动态显示数据过程中,我们先通过P0口写入字形码、P2.6口锁存字形码数据,写入的数据同时传给每一个LED灯。之后通过P0口写入位选信号, P2.7写1,写0,锁存数据,写入的数据指定了字形码显示的位置。在这个实验设计过程中,我们仅使用到了3个LED数码管。图3-2数码管驱动电路(dinl)DS18B20:单线(dnxin)数字温度传感器,即“一线(yxin)器件”,其具有独特的优点:(1)采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的

10、双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。 ( 2 )测量温度范围宽,测量精度高 DS18B20的测量范围为-55+ 125 ; 在-10+ 85C范围内,精度为0.5C 。 单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。 单总线通常要求外接一个约为 4.7K10K 的上拉电阻,这样,当总线闲置时其状态为高电平。 图3-3温度(wnd)测量IC DS18B20经转换所得的温度值以二字节补码形式存放在高速(o s)暂存存储器的第0和第1个字节。所以当我们只想简单的读取温度

11、值的时候,只用读取暂存器中的第0和第1个字节就可以了。 简单(jindn)的读取温度值的步骤如下: 跳过ROM操作 发送温度转换命令 跳过ROM操作 发送读取温度命令 读取温度值单片机:本次设计使用单片机芯片STC89C52 STC89C52的工作特性: 主要特性: 与MCS-51 兼容 8K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24Hz 三级程序存储器锁定 512内部RAM 图3-4 STC89C52引脚图32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道(tngdo) 低功耗的闲置(xinzh)和掉电模式 片内振荡器

12、和时钟(shzhng)电路3.2 重要算法的设计、流程描述开始 S51寄存器初始化18b20存在 N Y 温度转换命令读取温度发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束 图3-2温度提示 温度数据处理理 图 3-5 DS18B20初始化流程图 图3-6 温度转换流程图 第4 章 课程设计项目进度表日期完成的工作2015.12.21方案确定,查找资料2015.12.22功能分析、代码编写2015.12.23调试程序、改进程序、撰写报告2015.12.24答辩考核2015.12.25交课程设计纸质和电子版材料第5 章 课程设计任务分配表成员座号项目内容序号陈圣盛26号代码编写

13、与修改2、可行性研究01周鹏飞15号报告撰写2、功能合理性分析02刘犇16号程序调试及异常处理方案拟定03第6 章 系统(xtng)设计61 程序(chngx)设计(shj)思想我们所设计的数字温度计使用到了51单片机中的3个器件:蜂鸣器、发光二极管LED显示器和DS18B20温度传感器。DS18B20温度传感器测量范围大,测量数值相对精确,通过对这些器件我们可以制作一个既能显示温度,又有报警系统的数字温度计。由于从器件DS18B20采用单总线的接口方式与主机相连,一次只能读取一位数据,对读取到的数据,我们要进行转换,顺序为:bitucharunitfloat,对于最终获取的float类型的数

14、据,我们就可以很方便对它进行操作,通过求余、求模运算,实现LED数码管逐个显示数据;通过数值大小判断,控制蜂鸣器的开关,最终实现数字温度计的全部功能。62 程序最终实现结果 图6-1实验结果显示 将数据烧录到单片机之后的结果如图所示,图中所示温度下,蜂鸣器发出警报。为了便于观察,当温度超过26摄氏度、低于24摄氏度,蜂鸣器都将发出警报,实际应用过程中,需要修改这一部分代码。第7 章 源程序/初始化ROM操作(cozu)指令(写)存储器操作(cozu)指令(写)数据传输(读)#include #define uchar unsigned char#define uint unsigned int

15、#define ON 0#define OFF 1sbit FM=P23;sbit DS=P22; /接口定义uint temp; / 温度(wnd)值uchar flag1; / 标志sbit dula=P26;sbit wela=P27;unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d, 0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;unsigned char code table1=0 xbf,0 x86,0 xdb,0 xcf,0 xe6,0

16、 xed,0 xfd, 0 x87,0 xff,0 xef;void delay(uint count) /delay uint i; while(count) i=200; while(i0) i-; count-; void dsreset(void) /初始化命令 uint i; DS=0;/DS表示P2.2口,这里通过单片机拉低电压 i=103; /将总线拉低480us960us while(i0)i-; DS=1; /然后拉高总线,若DS18B20做出反应会将在15us60us后将总线拉低 i=4; /15us60us等待 while(i0)i-;bit tmpreadbit(voi

17、d) /读取温度(wnd)(一位数据) uint i; bit dat; DS=0;i+; /i+ for delay DS=1;i+;i+;/拉低电平,之后(zhhu)提高,一段时间之后读取数据(1us15us) dat=DS; i=8;while(i0)i-;/等待时间(不进行(jnxng)操作) return (dat);uchar tmpread(void) /读取温度(8位-uchar) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(

18、dat);/* 向18B20写入一个字节* 输入dat*/void tmpwritebyte(uchar dat) uint i; uchar j; bit testb; /定义一个位变量,如果是1,就写1,如果不是就向D1820写0 for(j=1;j1; if(testb) /write 1 DS=0; i+;i+; /大于1us(进行两次i+,必定大于1us,小于15us) DS=1; i=8;while(i0)i-; /小于60us else DS=0; /write 0 i=8;while(i0)i-; /小于60us DS=1; i+;i+; /*让18B20开始(kish)转换温

19、度0 x44*输入(shr)com*/void tmpchange(void) /DS18B20 begin change dsreset(); delay(1); tmpwritebyte(0 xcc); /跳过ROM操作命令 tmpwritebyte(0 x44); /温度(wnd)转换命令 /delay(100);/根据实际程序决定是否等待/*读取温度必要的操作*跳过ROM操作*发送温度转换指令(采样)0 x44*跳过ROM操作0 xcc*发送读取温度命令0 x33*读取温度值*/uint tmp() / 通过tmpread 获取温度,然后计算出补码 float tt; uchar a,

20、b;/获取高低8位温度 dsreset();/初始化 delay(1);/不进行操作 tmpwritebyte(0 xcc); /跳过ROM操作命令 tmpwritebyte(0 xbe); /发送读取温度命令 a=tmpread();/低8位 b=tmpread();/高8位 temp=b;/将2个8位的温度(wnd)装到16位的temp里面 temp0;a-) for(b=60;b0;b-); /*P0口输入对应的字形码*输入字形码锁存位选输入锁存显示*P2.6、P2.7(74HC573锁存器)锁存器*P2.6段选、P2.7位选,当锁存使能为高,输出同步,使能变低,锁存数据*动态显示过程中

21、,每盏灯是依次点亮的*/void display(uint temp)/显示程序将获取的温度显示在LED上 uchar A1,A2,A2t,A3,ser; ser=temp/10; SBUF=ser; A1=temp/100; A2t=temp%100; A2=A2t/10; A3=A2t%10; dula=0; P0=tableA1;/显示(xinsh)百位 dula=1; dula=0; wela=0; P0=0 xfe; wela=1; wela=0; delay(1); dula=0; P0=table1A2;/显示(xinsh)十位 dula=1; dula=0; wela=0; P0=0 xfd; wela=1; wela=0; delay(1); P0=tableA3;/显示(xinsh)个位 dula=1; dula=0; P0=0 xfb; wela=1; wela=0; delay(1); if(temp240&temp0;a-)/延迟(保持(boch)数码管显示) display(tmp(); whil

温馨提示

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

评论

0/150

提交评论