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

下载本文档

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

文档简介

1、武 夷 学 院 课程设计报告课程名称:单片机及嵌入式技术设计题目:数字温度计学生班级:13计算机科学与技术(1)班学生姓名:陈圣盛、周鹏飞、刘犇指导教师:焦金涛完成日期:2015-12-25数学与计算机学院 课程设计项目研究报告目 录第 1 章 项目简介31.1 项目名称31.2 开发人员31.3 指导教师3第 2 章 项目研究意义32.1 课程设计概述32.2 需求分析32.3 研究意义4第 3 章 采用的技术43.1 课程设计的方案设计论证43.2 重要算法的设计、流程描述7第4 章 课程设计项目进度表8第5 章 课程设计任务分配表8第6 章 系统设计961 程序设计思想962 程序最终实

2、现结果9第7 章 源程序10第8 章 设计心得15第9 章 参考文献15 数学与计算机学院 第 1 章 项目简介1.1 项目名称 数字温度计1.2 开发人员 13计科1班 陈圣盛(组长)、周鹏飞、刘犇1.3 指导教师 焦金涛第 2 章 项目研究意义2.1 课程设计概述 随着现代信息技术的飞速发展和传统工业改造的逐步实现能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围

3、宽等特点。选用STC89C52单片机作为主控制器件,实现温度显示。通过DSl8B20直接读取被测温度值,该器件的物理化学性能稳定,线性度较好,测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 + 125 ; 在 -10+ 85°C 范围内,精度为 ± 0.5°C 。2.2 需求分析 目前温度计的发展很快,从原始的玻璃温度计管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等。随着各类电子产品的便携化,可用于片上测温的集成温度传感器的发展便越趋灼热化。传感器属于信息技术的前沿尖端产品,尤其是温度传感器被广泛用于工农 业生产、科

4、学研究和生活等领域,数量高居各种传感器之首。我们所设计的数字温度计精度较高,能直观地显示温度,并且有警报系统,在蔬菜大棚、工作车间、室温检测等,都有较高使用价值。2.3 研究意义 目前的温度计中传感器是它的重要组成部分,它的精度、灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。传感器应用极其广泛,目前已经研制出多种新型传感器。但是,作为应用系统设计人员需要根据系统要求选用适宜的传感器,并与自己设计的系统连接起来,从而构成性能优良的监控系统。伴随着我们软件开发水平的提高,我们有必加深对温度传感器的认识,要进一步提高温度计设计上的智能化程度。第 3 章 采用的技术3.1 课程设计的方案设

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

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

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

8、存存储器的第0和第1个字节。所以当我们只想简单的读取温度值的时候,只用读取暂存器中的第0和第1个字节就可以了。 简单的读取温度值的步骤如下: 跳过ROM操作 发送温度转换命令 跳过ROM操作 发送读取温度命令 读取温度值单片机:本次设计使用单片机芯片STC89C52 STC89C52的工作特性: 主要特性: ·与MCS-51 兼容 ·8K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24Hz ·三级程序存储器锁定 ·512内部RAM 图3-4 STC89C52引脚图·

9、;32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路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调试程序、改进程

10、序、撰写报告2015.12.24答辩考核2015.12.25交课程设计纸质和电子版材料第5 章 课程设计任务分配表成员座号项目内容序号陈圣盛26号1、 代码编写与修改2、可行性研究01周鹏飞15号1、 报告撰写2、功能合理性分析02刘犇16号1、 程序调试及异常处理2、 方案拟定03第6 章 系统设计61 程序设计思想我们所设计的数字温度计使用到了51单片机中的3个器件:蜂鸣器、发光二极管LED显示器和DS18B20温度传感器。DS18B20温度传感器测量范围大,测量数值相对精确,通过对这些器件我们可以制作一个既能显示温度,又有报警系统的数字温度计。由于从器件DS18B20采用单总线的接口方式

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

12、nclude <reg52.h>#define uchar unsigned char#define uint unsigned int#define ON 0#define OFF 1sbit FM=P23;sbit DS=P22; /接口定义uint temp; / 温度值uchar flag1; / 标志sbit dula=P26;sbit wela=P27;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsi

13、gned char code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef;void delay(uint count) /delay uint i; while(count) i=200; while(i>0) i-; count-; void dsreset(void) /初始化命令 uint i; DS=0;/DS表示P2.2口,这里通过单片机拉低电压 i=103; /将总线拉低480us960us while(i>0)i-; DS=1; /然后拉高总线,若DS18B20做出反应会将在15us60us后将总

14、线拉低 i=4; /15us60us等待 while(i>0)i-;bit tmpreadbit(void) /读取温度(一位数据) uint i; bit dat; DS=0;i+; /i+ for delay DS=1;i+;i+;/拉低电平,之后提高,一段时间之后读取数据(1us15us) dat=DS; i=8;while(i>0)i-;/等待时间(不进行操作) return (dat);uchar tmpread(void) /读取温度(8位-uchar) uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=tmpreadbit();

15、dat=(j<<7)|(dat>>1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);/* 向18B20写入一个字节* 输入dat*/void tmpwritebyte(uchar dat) uint i; uchar j; bit testb; /定义一个位变量,如果是1,就写1,如果不是就向D1820写0 for(j=1;j<=8;j+)/一个字节8位数据,每次只能写一个位 testb=dat&0x01;/依次将dat的每一位赋值给testb dat=dat>>1; if(testb) /write 1

16、DS=0; i+;i+; /大于1us(进行两次i+,必定大于1us,小于15us) DS=1; i=8;while(i>0)i-; /小于60us else DS=0; /write 0 i=8;while(i>0)i-; /小于60us DS=1; i+;i+; /*让18B20开始转换温度0x44*输入com*/void tmpchange(void) /DS18B20 begin change dsreset(); delay(1); tmpwritebyte(0xcc); /跳过ROM操作命令 tmpwritebyte(0x44); /温度转换命令 /delay(100)

17、;/根据实际程序决定是否等待/*读取温度必要的操作*跳过ROM操作*发送温度转换指令(采样)0x44*跳过ROM操作0xcc*发送读取温度命令0x33*读取温度值*/uint tmp() / 通过tmpread 获取温度,然后计算出补码 float tt; uchar a,b;/获取高低8位温度 dsreset();/初始化 delay(1);/不进行操作 tmpwritebyte(0xcc); /跳过ROM操作命令 tmpwritebyte(0xbe); /发送读取温度命令 a=tmpread();/低8位 b=tmpread();/高8位 temp=b;/将2个8位的温度装到16位的tem

18、p里面 temp<<=8; temp=temp|a;/D18B20经转换所得的温度以2进制补码形式存储 tt=temp*0.0625; /默认为12位分辨率下,1位表示0.0625,750ms转换一次 temp=tt*10+0.5; return temp;void readrom() /ROM操作read the serial uchar sn1,sn2; dsreset(); delay(1); tmpwritebyte(0x33); sn1=tmpread(); sn2=tmpread();void delay10ms() /delay uchar a,b; for(a=10

19、;a>0;a-) for(b=60;b>0;b-); /*P0口输入对应的字形码*输入字形码锁存位选输入锁存显示*P2.6、P2.7(74HC573锁存器)锁存器*P2.6段选、P2.7位选,当锁存使能为高,输出同步,使能变低,锁存数据*动态显示过程中,每盏灯是依次点亮的*/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

20、;/显示百位 dula=1; dula=0; wela=0; P0=0xfe; wela=1; wela=0; delay(1); dula=0; P0=table1A2;/显示十位 dula=1; dula=0; wela=0; P0=0xfd; wela=1; wela=0; delay(1); P0=tableA3;/显示个位 dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(1); if(temp>240&&temp<260) FM=OFF; else FM=ON; /蜂鸣器报警void main()uchar a;do tmpchange(); /delay(200);for(a=100;a>0;a-)/延迟(保持数码管显示) display(tmp(); whil

温馨提示

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

评论

0/150

提交评论