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

下载本文档

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

文档简介

1、信息与电气工程学院课程设计说明书(2014 /2015学年第 二 学期)课程名称 :单片机原理及应用课程设计 题 目 : 简易温度计设计 专业班级 : 学生姓名 : 学 号: 指导教师 : 设计周数 : 2周 设计成绩 : 年月日1、 实验目的设计并制作出一个以单片机为核心的简易温度计系统2、 主要任务1、 确定整体设计方案;2、 设计键盘输入电路;3、 设计显示电路;4、 合理分配地址,编写系统程序;5、 采用proteus进行仿真,软硬件联机调试。3、 技术要求(1)以mcs-51单片机为核心,18b20为敏感元件,设计出一简易温度计;(2)使用三位数码管显示温度,并能进行温度设置;4、以

2、mcs-51单片机为核心设计简易温度计的简介 传统的温度检测以热敏电阻为温度敏感元件,需要后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定误差。以mcs-51为核心,18b20为测温传感器,通过3位共阳极led数码管传送数据,实现温度显示。具有读数方便,测温范围广,测温精确,数字显示,可靠性高等特点。5、程序流程图开始初始化获取当前温度否是显示当前温度获取设定温度比较当前温度与设定温度并处理设定当前温度是否设定当前温度6、 系统硬件电路原理图 6.1 时钟电路晶振电路由一个晶振与两个电容连接组成,与单片机的18、19管脚相连,另一端接地,电路图为: 电容大小没有固定值,一般

3、5到30pf,晶振是给单片机提供工作信号脉冲的。这个脉冲就是单片机的工作速度。一般用内部振荡方式,这种方式比较稳定。晶振频率为12mhz,单片机工作速度就是每秒 12m。单片机的工作频率是有范围的,不能太大,一般 24m就不上去了,不然不稳定。6.2 复位电路复位电路由一个有极性电容、一个电阻与一个按键连接而成,一端连单片机的rst端,另一端接电源,电源另一端接单片机的ea。其中电容是通过充放电来实现维持一段时间的高电平,电容充电时间与r c的值成正比,当按下按键时,由于电容充电,rst维持一段时间高电平以达到复位的目的。一般情况下,选择大小为10到30uf的电容,而电阻一般选用1到10k的。

4、电路图为: 6.3 ds18b20温度传感电路 此部分电路负责温度信号的采集、将温度信号转换成数字代码储存在温度控制寄存器中,向单片机发送温度数据等重要功能,主要由ds18b20芯片来完成,该电路的电路图为: 其中dq为ds18b20的数据输入/输出端引脚,与单片机的p3.5口相连,单片机通过p3.5口向ds18b20发出各种命令,并读取其转换后的温度数据。 由于ds18b20单线通信功能是分时完成的,所以有严格的时隙概念,读写时序很重要。系统对ds18b20的各种操作必须按协议进行。操作协议为:初始化ds18b20(发复位脉冲)发rom功能命令发存储器操作命令处理数据。6.4显示电路7、源程

5、序代码#include #define uchar unsigned char#define uint unsigned intuchar wei;/18b20接口sbit ds=p35; /define interface/sbit dula=p2;/定义数码管位选sbit wei1=p15;/定义数码管位选sbit wei2=p16;/定义数码管位选sbit wei3=p17;/定义按键sbit k1=p10;/定义按键sbit k2=p11;/定义按键sbit k3=p12;/定义led指示灯sbit led1=p13;/定义led指示灯sbit led2=p14;/共阳极数码管编码un

6、signed char code tb=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; 0x87,0xff,0xef;/延时函数void delay(uint count) /delayuint i;while(count) i=200; while(i0) i-; count-; /18b20复位初始化函数void dsreset(void) /send reset and initialization commanduint i;ds=0;i=103;while(i0)i-;ds=1;i=4;while(i0)i-;/18b20底层函数

7、,读一位bit tmpreadbit(void) /read a bituint i;bit dat;ds=0;i+; /i+ for delayds=1;i+;i+;dat=ds;i=8;while(i0)i-;return (dat);/18b20底层函数,读一个字节uchar tmpread(void) /read a byte dateuchar i,j,dat;dat=0;for(i=1;i=8;i+)j=tmpreadbit();dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在dat里return(dat);/18b20底层函数,写一个字节void tmpwrit

8、ebyte(uchar dat) /write a byte to ds18b20uint i;uchar j;bit testb;for(j=1;j1;if(testb) /write 1ds=0;i+;i+;ds=1; i=8;while(i0)i-;else ds=0; /write 0i=8;while(i0)i-;ds=1;i+;i+;/18b20底层函数,开始转换温度void tmpchange(void) /ds18b20 begin changedsreset();delay(1);tmpwritebyte(0xcc); / address all drivers on bus

9、tmpwritebyte(0x44); / initiates a single temperature conversion/18b20底层函数,获取当前温度uint tmp() /get the temperaturefloat tt;uchar a,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;temp2)mode=0;/如果当前温度大于设定温度提示报警if(tpset)led1=1;led2=0;else if(tpset)/如果当前温度小于设定温度提示

10、加热led1=0;led2=1;else /如果当前温度等于设定温度不执行动作led1=1;led2=1; while(1);8、心得体会 本次的简易温度计课程设计不仅使我们进一步巩固了书本上的知识,做到了学以致用,还学到了许多课本上学不到的知识。我还学到了做事必须严谨的的精神,尤其是我们学工科的同学,不严谨结果就要有很大的偏差,就得不到想要的结果。通过自己动手设计的电路和系统仿真软件protues和keil软件,使我们进一步了解了单片机的设计制作过程,其中软件部分,即编程部分,我们上网找了好多资料,虽然经过自己的修改,但还是有很多功能不能实现。由于protues并不是很熟练,在使用的过程中有很多原件的名称不知道,从而花费了大量的时间在网上查找,今后应该在这方面多多努力。总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。在课设中学会了又问题请教别人与一起讨论,因为以后很多东西的工程量都是很大的,单靠个人力量要实现是很困难的,而且时间有限,这就要求我们必须学会具有团队精神,相互学习,因为很多困扰你的问题在讨论中便会迎刃而解。在专业知识与研究方法方面为日后的毕业设计乃至毕业后的工作奠定良好的基础。9

温馨提示

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

评论

0/150

提交评论