四位数数字温度计的设计_第1页
四位数数字温度计的设计_第2页
四位数数字温度计的设计_第3页
四位数数字温度计的设计_第4页
四位数数字温度计的设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、中北大学信息商务学院课 程 设 计 说 明 书学生姓名: 刘桃利 学 号: 10050644X13 学 院: 信息商务学院 专 业: 电子信息工程 题 目: 专业综合实践之单片机部分: 四位数数字温度计的设计 张权指导教师: 职称: 副教授 2014 年 1 月 10 日中北大学信息商务学院课程设计任务书 13/14 学年第 一 学期学 院: 信息商务学院 专 业: 电子信息工程 学 生 姓 名: 刘桃利 学 号: 10050644X13课程设计题目: 专业综合实践之单片机部分: 四位数数字温度计的设计 起 迄 日 期: 2013年12 月30 日2014年1月 10 日 课程设计地点: 20

2、1,503 指 导 教 师: 张权 系 主 任: 王浩全 下达任务书日期: 2013 年12 月 30 日课 程 设 计 任 务 书1设计目的:数字温度计的设计对于提高学生的单片机应用能力具有较强的意义。通过该设计,可以巩固所学的单片机理论知识,培养学生硬件和软件的设计能力,从而促进学生所掌握的理论知识向实践应用的转变。2设计内容和要求(包括原始数据、技术参数、条件、设计要求等):使用单片机设计一个四位数数字温度计,包括硬件设计和软件设计。同组成员可按硬件设计和软件设计来分工,协作完成。具体功能要求:(1)测温范围为080;(2)四位LED显示。3设计工作任务及工作量的要求包括课程设计计算说明

3、书(论文)、图纸、实物样品等:(1)查阅相关文献资料,了解数据采集与显示系统的相关知识;(2)确定设计方案。绘制电路原理图;(3)编写软件程序并上机调试;(4)撰写课程设计说明书。 课 程 设 计 任 务 书4主要参考文献:1.傅承义,陈运泰,祁贵中.地球物理学基础.北京:科学出版社,19852.求是科技编著8051系列单片机C程序设计完全手册北京M: 人民邮电出版社, 2006.3.余发山, 王福忠. 单片机原理及应用技术M. 中国矿业大学出版社, 2003.4.赵巧娥, 魏文. AT89C2051单片机的LED数显接口技术J. 电力学报, 2000.5.夏林甫. 小型非接触式数字温度计M.

4、 电子元件与材料, 1988.6.薛振东.  一种新型实用数字温度计的设计与制作J. 电子仪器仪表用户, 1997.7.陈思, 基于单片机的数字温度计的设计J. 信息与电脑(理论版), 2010.5设计成果形式及要求:提供课程设计说明书一份;设计原理图及软件源程序; 6工作计划及进度:2013年12月 30 日 2014年1 月 1 日:查阅资料;2014年:1 月 2 日 1 月 7 日:方案设计、实验验证;1 月 8 日 1 月 9 日:完成课程设计说明书; 1 月 10 日:答辩。系主任审查意见: 签字: 年 月 日     

5、目录绪论1一.方案及硬件设计21.1 设计思路21.2总体设计框图2 1.2.1AT89C52的特点2 1.2.2温度传感器DS18B2031.3温度显示电路41.4传感器数据采集电路41.5振荡电路51.6复位电路51.7报警电路5二.软件编程设计62.1初始化程序流程图62.2读出温度子程序流程图62.3写时序子程序流程图72.4读时序子程序流程图72.5温度处理子程序82.6显示程序82.7延时程序92.8源程序代码102.9整体仿真图15三.总结15参考文献16绪论在工业自动化高度发达的今天,对一些过程控制要求很高。传统的度监控一般都采用模拟电路设计。其缺点是:转换速率低,实时性差。抗

6、干扰能力弱,特别是在高频电路中,很容易产生自激。而采用单片机控制能很好弥补以上缺点。a)精度高,实时性强,能及时发现问题。b)采用数字电路,抗干扰能力强。单片微型计算机简称单片机,又称为微控制器(MCU),它的出现是计算机发展史上的一个重要里程碑,它以体积小、功能全、性价比高等诸多优点而独具特色。随着社会的发展、科技的进步,各种方便于生活的自动控制系统开始进入了人们的生活,以单片机为核心的控制系统就是其中之一。 早期的单片机都是8位或4位的。单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集

7、成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构

8、的最佳选择。 单片机内部也用和电脑功能类似的模块.用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!.它主要是作为控制部分的核心部件。 它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。 单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列

9、这些纯硬件来搞定的话,电路一定是一块大PCB板!一方案及硬件设计 1.1设计思路运用单片机AT89C52可编程数字对温度传感器DS18B20进行编程控制,采集实时温度。通过数码管显示该温度。并设置相应的默认工作温度,当实际温度小于默认工作温度,启动加热装置。另外,通过一些按键,可以调节工作温度,以便适合不同的场所需求。系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等。1.2总体设计框图温度计电路设计总体设计方框图如图1.1所示,控制器采用单片机AT89C52,温度传感器采用DS18B20,用4位共阴LED数码管以串口传送数据实现温度显示。 AT89C

10、52单片机主控电路按键复位电路上下限报警电路时钟振荡电路四位LED显示电路温度检测电路DS18B20图1.1 总体实际框图1.2.1 AT89C52的特点图1.2 AT89C52的引脚图 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央 处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。&#

11、160;    AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。1.2.2 温度传感器DS18B20DS18B20温度传感器是美国DALLAS半导体公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程

12、实现9-12位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信,无须经过其它变换电路;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;内含64位经过激光修正的只读存储器ROM;可通过数据线供电,内含寄生电源,电压范围为3.05.5V;零待机功耗;温度以9或12位数字;用户可定义报警设置; 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;测温范围为-55+125,测量分辨率为0.0625采用单总线专用技术。图1.3 DS18B20内部结构1.3温度显示电路显示电路

13、采用4位共阴LED数码管,从P0口输出段码,P2.0P2.3作片选端。但在焊电路板的时候发现数码管亮度不够,所以在P2.0P2.3端口接四个10K的电阻和四个NPN的三极管,以使数码管高亮显示。如图所示图1.3 温度显示电路1.4传感器数据采集电路图1.4传感器数据采集电路1.5振荡电路 对于每个工程的振荡电路,都是用于单片机工作所需要的时钟电路,单片机只有在时钟控制信号下才能协调一致的工作,时钟信号控制着计算机的工作节奏。图1.5震荡电路1.6复位电路复位电路有上电自动复位和按键手动复位。上电自动复位是通过外部复位电路的电容充电来实现的,只要电源VCC的上升时间不超过1ms,就可以实现自动上

14、电复位。按键手动复位分为电平方式和脉冲方式本系统采用上电复位方式。图1.6复位电路1.7 报警电路三级管8850驱动蜂鸣器图1.7报警电路二软件编程设计2.1初始化程序流程图 2.2读出温度子程序流程图2.3写时序子程序流程图 2.4读时序子程序流程图2.5温度处理子程序算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,取反flag=1开始flag=0ht>128?求百位、十位、个位和小数位bai=0?shi=0?显示个位和小数位显示十位显示百位结束2.6显示程序此函数实现的对数码管显示的处理,其亮点在于可以直接对数码管进行操作,其本身是个两变量函数,第一个变量

15、是要开通的位选,第二个变量是要显示的数据,这样我们可以直接方便而又简单直观的对数码管进行操作。送位选位选值左移n位送段码n=2?P0.7=0延时1ms关断位选结束2.7延时程序时程序主要分为短延时和长延时,短延时如果要求十分的精确可以采用定时器,如果要求不太高的话可以采用普通函数的叠加,可以近似时间的延时。长延时同样的道理,不过要求不是很精确的话,可以采取语言结构的循环来实现延时。void delay15(uint n) do _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_no

16、p_();_nop_();_nop_(); n-; while(n);/长延时,用于不太严格的延时void delay(uint z) uint x,y; for(x=z;x>0;x-) for(y=50;y>0;y-);2.8源程序代码#include <reg52.h>#include<intrins.h>#include<math.h>#define uchar unsigned char#define uint unsigned int#define duaP2#define max80/#define min 0sbit DQ=P17;

17、sbit din=P07;sbit beep=P30;/*uchar tab=0xc0,0xf9,0xa4,0xB0,0x99,/"0" "1" "2" "3""4" 0x92,0x82,0xF8,0x80,0x90,0xff,0xbf,0xc6; /共阳; / "5" "6""7""8""9" "灭""-" 'c' */uchar tab=

18、0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x00,0x40; uchar tab216=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;uchar d1,d2,ht,bai,b,shi,ge;uint tem;/近乎精确的短延时,采用标准库里的_nop_()函数,此函数一个延时为22微秒左右;void delay15(uint n) do _nop_();_nop_();_nop_();_nop_();_nop_();_n

19、op_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); n-; while(n);/长延时,用于不太严格的延时void delay(uint z) uint x,y; for(x=z;x>0;x-) for(y=50;y>0;y-);/初始化函数void init()uchar x=1;while(x)DQ=1;_nop_();DQ=0;delay15(23); /最小480us;DQ=1;delay15(2);/存在检测高电平最小15us; x=DQ;delay15(22);/ 存在检测低电平最小240us;

20、x=DQ;DQ=1; void write(uchar dat)uchar i;for(i=8;i>0;i-)DQ=1;_nop_();_nop_(); DQ=0;DQ=dat&0x01;_nop_();_nop_();_nop_();_nop_();_nop_();delay15(3);dat>>=1;DQ=1;_nop_();/读一个字节;read()uchar i;uchar dat=0;for(i=8;i>0;i-)DQ=1;dat>>=1;_nop_();DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_(

21、);_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/十五微秒不变;DQ=1;_nop_();_nop_();_nop_();_nop_();if(DQ) dat|=0x80;delay15(3);DQ=1;return(dat); /读温度函数 readT()init();delay15(20);write(0xcc);write(0x44);delay15(900);/yanshi20msinit();write(0xcc);write(0xbe);d1=read();d2=read();ht=

22、d2<<4; ht+=(d1&0xf0)>>4;/显示函数,n,m可以实现对任意的管子赋值;/n为第几位数码管,m为送的数值;void display(uchar n,uchar m)uchar temp=0x01;/根据板子 的硬件 连接图赋值;temp=_crol_(temp,n);dua=temp; /P0=tabm;delay(1);if(n=2)din=1;/根据数码管的阴阳显示选值; delay15(50);dua=0x00;/温度处理函数,此函数先判断正负,对于读取的两个字节,高字节的前五位是/符号位,高位的剩余三位和低字节的前四位为整数位,低字节

23、的最后四位是/小数位work_temp() uchar flag=0;if(ht>128) / 温度值正负判断 ;ht=255-ht;d1=16-(d1&0x0f);flag=1; / 负温度求补码,标志位置1else d1&=0x0f; /*if(ht>50) beep=1; */ bai=ht/100; /百位; b=ht%100; shi=b/10; /十位; ge=b%10; /个位;/*显示判断*/ if(!bai) if(!shi)display(0,10); display(1,10); /次高位为0时不显示 ;elsedisplay(1,shi);

24、else display(0,bai);display(1,shi); if(flag) display(0,11); /负温度时最高位显示"-" display(2,ge); display(3,tab2d1); void main() while(1)/beep=0;readT();work_temp(); if(ht>max)|(ht<min) beep=0; 2.9 整体仿真图三总结在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事。通过这次的设计我明白了时序才真正是数字芯片的灵魂,所有的程序我们都可以通过对其时序的理解来实现对其操作,同时体会到了单总线结构的魅力。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。而且在本次设计的过程中,自己去查询资料,以及对资料的整理,与老师的探讨都使我受益匪浅。在查找资料的过程中让我懂得了自己一个人时如何去学习,如何去筛选其中

温馨提示

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

评论

0/150

提交评论