课程设计。
课程名称单片机基础课程设计
题目名称 18b20测温及按键控制
学生学院 **
专业班级 **
班号。学生组员。指导教师。
目录。 第一章系统的概述及设计任务书3
第二章单元模块的设计与分析4
1、温度传感器的选择及构造4
2、单片机的选择及原理6
3、 系统软件算法分析6
第三章实验程序6
1、实验程序7
2、接线要求8
3、程序调试8
附总电图8 总结与体会9
补充:ds18b20和数码管的使用………10
第一章系统的概述及设计任务书。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机stc89c52,测温传感器使用ds18b20,用4位共阳极led数码管以串口传送数据,实现温度显示,能准确达到以上要求。
关键词】:单片机,数字控制,温度计, ds18b20,stc89c52
设计任务与技术指标。
要求:1. 基本范围-50℃-125℃
2. 精度误差小于0.5℃
3. led数码直读显示。
总体设计方案。
数字温度计设计方案论证。
方案一。由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行a/d转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到a/d转换电路,感温电路比较麻烦。
方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器ds18b20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
方案二的总体设计框图。
温度计电路设计总体设计方框图如图1所示,控制器采用单片机at89s51,温度传感器采用ds18b20,用3位led数码管以串口传送数据实现温度显示。
第二章单元模块的设计与分析。
主控制器:单片机stc89c52,具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用。
显示电路:显示电路采用4位共阳led数码管,从p0口rxd,txd串口输出段码。
温度传感器:
ds18b20温度传感器是美国dallas半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。ds18b20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个ds18b20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5v;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
ds18b20内部结构框图如图2所示。64位rom的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的crc检验码,这也是多个ds18b20可以采用一线进行通信的原因。温度报警触发器th和tl,可通过软件写入户报警上下限。
ds18b20温度传感器的内部存储器还包括一个高速暂存ram和一个非易失性的可电擦除的eeram。高速暂存ram的结构为8字节的存储器,结构如图3所示。头2个字节包含测得的温度信息,第3和第4字节th和tl的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。ds18b20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。
低5位一直为1,tm是工作模式位,用于设置ds18b20在工作模式还是在测试模式,ds18b20出厂时该位被设置为0,用户要去改动,r1和r0决定温度转换的精度位数,来设置分辨率。
系统软件算法分析。
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
主程序。主程序的主要功能是负责温度的实时显示、读出并处理ds18b20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图7所示。
3.2读出温度子程序。
读出温度子程序的主要功能是读出ram中的9字节,在读出时需进行crc校验,校验有错时不进行温度数据的改写。其程序流程图如图8示。
3.3温度转换命令子程序。
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图9所示。
3.4 计算温度子程序。
计算温度子程序将ram中读取值进行bcd码的转换运算,并进行温度值正负的判定,其程序流程图如图10所示。
3.5 显示数据刷新子程序。
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图11。
第三章实验程序。
#include<>
#include""
unsigned char table=
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};不带小数点的编码。
extern unsigned int temp;
extern float f_temp;
unsigned int i;
void led_init(void)
p2=0x0f;
p0=0x00;
void led(signed int m,signed int n,signed int p,signed int q)
p2=0xef;
p0=table[q];
delay(5);
p2=0xdf;
p0=table[p];
delay(5);
p2=0xbf;
p0=table[n]+0x80;
delay(5);
p2=0x7f;
p0=table[m];
delay(5);
unsigned int xianshi(unsigned int y,signed int f,signed int g)
signed int a,b,c,d;
a=y/1000 ;
b=(y%1000)/100+f ;
c=(y%100)/10+g;
d=(y%10)/1;
if(b<=9&&b>=0)
for(i=16;i>0;i--)
led(a,b,c,d);
else if(b>9)
else return f;
void main(void
unsigned int sum,k;
signed int h,j;
led_init();
h=0;j=0;
while(1)
if(p2==0xfb)
if(p2==0xfd)
if(p2==0xfe)
display(sum1,h,j);
sbit ds=p3^5; /温度传感器信号线。
unsigned int temp;
float f_temp;
unsigned int warn_l1=260;
unsigned int warn_l2=250;
unsigned int warn_h1=300;
unsigned int warn_h2=320;
void delay(unsigned int z)//延时函数。
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--)
void dsreset(void) /18b20复位,初始化函数。
unsigned int i;
ds=0;i=103;
while(i>0)i--;
ds=1;i=4;
while(i>0)i--;
bit tempreadbit(void) /读1位函数。
unsigned int i;
bit dat;
ds=0;i++;i++ 起延时作用。
ds=1;i++;i++;
dat=ds;
i=8;while(i>0)i--;
return (dat);
unsigned char tempread(void) /读1个字节。
unsigned char i,j,dat;
dat=0;
for(i=1;i<=8;i++)
return(dat);
void tempwritebyte(unsigned char dat) /向18b20写一个字节数据。
单片机课程设计报告
单片机系统课程设计报告。专业 电气技术。学生姓名 朱海李威张杰。学号。指导教师 陈高燕。完成日期 2014 年 7 月 5 日。目录。1 设计任务和性能指标 1 1.1设计任务 1 2 设计方案 1 2.1方案论证 2 2.2总体设计框图 2 3 系统硬件设计 4 3.1红外线解码电路设计 4 3....
单片机课程设计报告
韶关学院。课程设计说明书 设计题目 基于单片机控制的智能交通灯设计。课程名称 微机原理与应用实训。学生姓名 学号。院系 物理与机电工程学院汽车系。专业班级 12机械制造及其自动化 5班。指导教师姓名及职称 谢杰讲师。陈锦儒助理实验师。起止时间 2015 年 3 月 2015 年 5 月。课程设计评分...
单片机课程设计报告
南京工程学院。课程设计说明书 题目实时钟芯片pcf8563的应用 课程名称单片机原理及应用a 院 系 部 中心 通信工程学院。专业电子信息工程 传感网 班级。学生姓名。学号。设计地点信息楼 c 210 指导教师。设计起止时间 2013年12月23日至 2013年12月27日。一 摘要1 二 课程设计...