基于51单片机的实时时钟和温度测量系统

基于51单片机的实时时钟和温度测量系统
基于51单片机的实时时钟和温度测量系统

广东海洋大学

课程论文设计

基于STC89C52、DS12C887、DS18B20的实时时钟和温度测量系统

学生姓名山问

学号007

院系信息学院

专业电子信息工程

指导教师欧哥

基于STC89C52、DS12C887、DS18B20的

实时时钟和温度测量系统

1、设计目的

(1)巩固单片机课程学习知识,熟悉单片机的开发流程。 (2)掌握硬件电路的设计、焊接以及调试的基本能力。 (3)掌握单片机编程语言,学会运用模块化的设计思想。

(4)培养动手实践能力, 具备设计、开发、应用单片机系统的能力。

2、系统功能

(1)自动计时,显示年、月、日、时、分、秒、星期。 (2)测试环境温度并显示 (3)具备闰年闰月自动补偿功能 (4)可设定每日的某一时刻闹钟 (5)时间显示可调整

3、系统的结构和工作原理

3.1 系统结构

此次课程设计的万年历,以STC89S52单片机为主控核心,由1602LCD 显示屏、DS12C887时钟芯片、温度传感器DS18B20、蜂鸣器、键盘、复位电路、晶振、电源模块、发光二极管等组成,系统结构框图如图1所示。

AT89S52

单片机

温度传感器

DS18B20

DS12C887时钟芯片

LCD 显示屏(1602)

蜂鸣器

复位电路

功能键盘

电源模块

图1 系统结构框图

3.2 工作原理

主控制器每隔一段时间读一次时钟芯片的内部寄存器的值,将读出的时间、星期、温度等值实时显示在LCD液晶屏上。同时,主控制器不断的扫描按键电路和温度测量电路,当有按键按下时,识别出按键的值并调整相应的时间、星期值再写入时钟芯片内部。温度数据由测量电路获得的环境温度值送人显示电路。

4、硬件设计

4.1 主控核心—STC89S52单片机

4.2 DS12C887时钟电路

DS12C887是美国Dallas半导体公司推出的并行接口实时时钟\日历芯片,采用CMOS技术制成,具有内部晶振和时钟芯片备份锂电池,DS12C887芯片内有微功耗,外围接口简单,精度高,工作稳定可靠等优点,广泛用于各种需要较高精度的实时时钟系统中。

DS12C887主要功能如下:

(1)内含一个锂电池,断电后运行十年以上不丢失数据;

(2)计秒、分、时、天、星期、日、月、年、并有闰年补偿功能;;

(3)12小时或24小时制,12小时时钟模式;

(4)Motorola和Intel总线时序选择;

(5)有128个字节RAM单元与软件接口,其中14个字节作为时钟和控制寄存器,114 字节为通用RAM,所有RAM单元数据都具有掉电保护功能;

(6)可编程方波信号输出;

(7)中断信号输出(IRQ)和总线兼容、定闹中断、周期性中断、时钟更新周期、结束

4.3 DS18B20温度传感器

采用数字式温度传感器DS18B20,其仅需一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。

DS18B20特性如下:

(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

(2)在使用中不需要任何外围元件。

(3)可用数据线供电,电压范围:+3.0~+5.5 V。

(4)测温范围:-55 ~+125 ℃。固有测温分辨率为0.5 ℃。

(5)通过编程可实现9~12位的数字读数方式。(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。

(6)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。

4.4 LCD1602显示屏

本设计采用1602字符型LCD,可显示两行,每行16个字符,不能显示汉字,内置含128个字符的ASCII字符集字库,只有并行接口,无串行接口。

单片机的P0口与LCD的数据端口连接,用于数字信号的读取,控制端RS 、R/W、lcden 分别与单片机的P2.5、地和P2.4相连。

4.5 其它硬件电路

蜂鸣器电路:为了实现闹钟功能,选择蜂鸣器作为闹铃。采用PNP型s8550三极管

功能键盘:本设计采用了4个键盘,分别实现万年历时间日期的调整键、闹钟设置键、增加键(也为闹钟开启键)、减小键组成,分别连接P3.0,P3.1,P3.2,P3.6口。

复位电路:89C52的复位输入引脚RST为其提供了初始化的手段,可以使程序从指定处开始电源电路:电路采用5V电源进行供电,为了得到稳定的电源,采用单片机的程序下载线供电。

软件设计

本次系统设计软件部分采用模块化结构,由主程序﹑DS12C887子程序、DS18B20子程序、LCD1602子程序,键盘扫描子程序构成。

模块程序设计法的主要优点是:单个模块比起一个完整的程序易编写及调试;模块可以共存,一个模块可以被多个任务在不同条件下调用;模块程序允许设计者分割任务和利用

已有程序,为设计者提供方便。

5.1 主程序说明及流程图

主程序主要实现了从DS12C887各时间单元中读出数据和DS18B20传感器中读取数据,并送到LCD1602中显示的功能,同时检测有没有按键按下,如果有键被按下,则执行按键处理子程序。首先进行DS12C887时钟芯片、DS18B20芯片和LCD1602的初始化函数,然后进行按键扫描,不断地检测按键是否按下,读取DS12C887时钟芯片、DS18B20检测环境温度的数据,并且送到液晶显示器显示;当数据发生变化时候,重新进行扫描写入。

主程序流程图如图6。

开始

模块初始化

读/写日期、时间、温度信息

分离出日期、时间、温度值

LCD模块显示对应内容

定时闹钟设置子程序

日期、时间修改子程序

显示自动更新子程序

闹铃响程序

返回

图6 主程序流程图

5.2 DS12C887流程图及初始化程序

进入主程序后,DS12C887首先进行初始化设置,若串行口有数据,最后则调用函数从日历时钟芯片获取日历时钟信息,调用显示函数显示日历时钟信息显示出来,重复进行。这部分包括DS12C887某个单元写、读DS12C887某个单元的内容和DS12C887设定时间。

DS12C887的流程图如图7所示。

开始

DS12C887初始

调用函数获取时钟信息

送数据显示

进入主程序后,DS18B20首先进行初始化设置,然后通过对环境温度的检测,,调用显示函数显示温度信息,重复进行。

DS18B20的流程图如图8所示。

开始

DS18B20初始化

检测环境温度获取信息

送数据显示

图8 DS18B20的流程图

5.4 LCD1602流程图及初始化程序

进入主函数后,执行完1602LCD的初始化函数,然后用write_com(0x80)指令,命令先将数据指针定位在第一行第一个字处,然后写入第一行要显示的数据,在每个字之间简短的延时;在第二行重新定位数据指针write_com(0x80+0x40),将数据指针定位在第二行,然后再将第二行所要显示的数据写入,继而显示。

1602LCD的写命令操作和读数据操作分别用两个独立的函数来完成,函数内部唯一的区别就是液晶数据命令选择端的电平。

1602LCD的流程图如图9所示。

开始

1602初始化

读取数据第一行显示

读取数据第二行显示

结束

图9 1602LCD的流程图

5、电路调试

6.1焊接调试过程

焊接的时候根据自己画的电路图仔细焊就行了,注意虚焊,错焊,和短路,焊完检查一遍再测试,哪个模块出问题了,就检查那部分电路。

7总结部分

利用STC89C52单片机设计万年历和温度测量不是一件简单的事情。从构思设计内容,到流程图设计、程序设计,到自己去购买元器件、焊接、调试,再修改程序,这个过程确实也学到了很多东西。自己设计了整个系统,单片机中的基本概念也都理清了。在学单片机的过程中,在做设计之前也做了很多准备的工作,比如了解扫描按键、显示、延时这些常用的子程序,这对我后面编写程序有了很大的帮助。这次设计用到了单片机的输入/输出功能、定时/计数功能和中断功能,这次的课程设计使得我对前面讲的单片机零散的知识点串起来了,是对基本功能知识的一次复习、总结和提高。在这次实践的过程中,主要的总结与体会有一下几个方面:

①程序的模块化设计思想

在程序编写过程中,用模块化设计与分析,可以达到事半功倍的效果。在主流程确定的情况下将比较复杂的大程序分解若干个功能模块,然后再综合,就显得比较清晰。这就好比是有一个粗线条、总轮廓再到最小的子程序单元。另外,有很多程序模块非常典型,

所以保存好这些模块也有利于以后再次的使用。

②做成一个实际的系统需要有良好的步骤

先画原理图,再列清单,再焊最小单元,然后调试,焊接调试多次交替进行。在焊接的时候,也是有基本的步骤,先电源,然后是单片机底座、晶振、下载接口等等。

③设计制作一个单片机系统,最重要的还是软件程序。

写程序首先要确定一些常数、地址,其实当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。然后用文本编辑器编写软件,之后用编译器对源程序文件编译、查错,直到无语法错误,修改直到程序运行正确。在源程序被编译后,生成了扩展名为HEX的目标文件,用编程器将此文件调入即可写片。

每做一个东西都会有很多收获,比如做这个小东西,就必须学AltiumDesigner 画图软件,这个软件不同于其他软件,不那么容易上手,因为要学会自己画元件和封装,然后画原理图然后导入生成pcb,接着布局也是比较烦人的一件事,当然还要学习DS12C887,DS18B20,1602液晶等芯片和其它电子元器件的操作,这也是要慢慢积累的,还有接下来的编程,非常的重要,通过本次课程设计,学到了很多东西,也知道有很多东西还要加强认识和学习,但通过这门课的学习让设计和制作走上了新的里程碑,路漫漫…加油!

附录

程序清单:

#include

#include

#include

#include

#include

#include

#include

#include

void delay(uint z)//延时函数{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--); }

void di() //蜂鸣器报警声音{

beep=0;

delay(100);

beep=1;

beep=0;

delay(200);

beep=1;

}

void nzd() //流水灯程序{ nzd1=0;

delay(150);

nzd1=1;

nzd2=0;

delay(150);

nzd2=1;

nzd3=0;

delay(150);

nzd3=1;

nzd4=0;

delay(150);

nzd4=1;

}

void init()

{//初始化函数

uchar num;

EA=1;//打开总中断

EX1=1;//开外部中断1

IT1=1;//设置负跳变沿触发中断

TMOD=0X01;

TH0=0X3C;

TL0=0XB0;

ET0=1;

flag_s4=0;//变量初始化

t0_num=0;

s1num=0;

week=1;

flag_wd=1;

lcden=0;

write_ds(0x0A,0x20);//打开振荡器

write_ds(0x0B,0x26);//设置24小时模式,数据二进制格式

//开启闹铃中断

set_time();//设置上电默认时间

write_com(0x38);//1602液晶初始化

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

for(num=0;num<15;num++)//写入液晶固定部分显示

{

write_date(table[num]);

delay(1);

}

write_com(0x80+0x40);

for(num=0;num<8;num++)

{

write_date(table1[num]);

delay(1);

}

}

void main()//主函数

{

init();//调用初始化函数

sendChangeCmd();

while(1)

{

if(flag_wd==1)

{

delay(1000); //温度转换时间需要750ms以上 write_com(0xc0);

display(getTmpValue());

sendChangeCmd();

}

keyscan();//按键扫描

if(flag_ri==1)//当闹钟中断时进入这里

{

TR0=1;

nzd();

delay(100);

nzd();

delay(100);

nzd();

}

if(flag==0&&flag_s4==0)//正常工作时进入这里

{ zcxs=0;

tznz=1;

keyscan();//按键扫描

year=read_ds(9);//读取12C887数据

month=read_ds(8);

day=read_ds(7);

week=read_ds(6);

shi=read_ds(4);

fen=read_ds(2);

miao=read_ds(0);

write_sfm(8,miao);//送液晶显示

write_sfm(5,fen);

write_sfm(2,shi);

write_week(week);

write_nyr(3,year);

write_nyr(6,month);

write_nyr(9,day);

}

}

}

void exter() interrupt 2//外部中断1服务程序

{ uchar c; //进入中断表示闹钟时间到,

flag_ri=1; //设置标志位,用以大程序中报警提示

c=read_ds(0x0c);//读取12C887的C寄存器表示响应了中断

}

void timer() interrupt 1

{

TH0=0X3C;

TL0=0XB0;

t++;

if(t==10)

beep=0;

if(t==20)

{

t=0;

beep=1;

}

}

/************************ define.h ****************************/ #define uchar unsigned char

#define uint unsigned int

sbit rs=P2^5;

sbit lcden=P2^4;

sbit s1=P3^0;//功能键

sbit s2=P3^1;//增加键

sbit s3=P3^2;//减小键

sbit s4=P3^6;//闹钟查看键

sbit beep=P1^6;//蜂鸣器

sbit dscs=P2^3;

sbit dsas=P2^2;

sbit dsrw=P2^1;

sbit dsds=P2^0;

sbit dsirq=P3^3;

sbit ds = P1^7;

sbit tznz=P1^1;

sbit zcxs=P1^0;

sbit nzd1=P1^2;

sbit nzd2=P1^3;

sbit nzd3=P1^4;

sbit nzd4=P1^5;

bit flag,flag_s4,flag_ri,flag_wd;//定义两个位变量

uchar count,s1num,t0_num,t;//其它变量定义

char miao,shi,fen,year,month,day,week,amiao,afen,ashi,i;

uchar code table[]=" 2014-04-17 MOD";//液晶固定显示内容

uchar code table1[]=" : :";

void write_ds(uchar,uchar);//函数申明

void set_alarm(uchar,uchar,uchar);

void read_alarm();

uchar read_ds(uchar);

void set_time();

void delay(uint z);

void di();

/************************液晶操作函数****************************/

void write_com(uchar com)

{//写液晶命令函数

rs=0;

lcden=0;

P0=com;

delay(1);

lcden=1;

delay(1);

lcden=0;

}

void write_date(uchar date)

{//写液晶数据函数

rs=1;

lcden=0;

P0=date;

delay(1);

lcden=1;

delay(1);

lcden=0;

}

void write_sfm(uchar add,char date)

{//1602液晶刷新时分秒函数4为时,7为分,10为秒

char shi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+0x40+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

void write_nyr(uchar add,char date)

{//1602液晶刷新年月日函数3为年,6为分,9为秒

char shi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

void write_week(char week)

{//写液晶星期显示函数

write_com(0x80+12);

switch(week)

{

case 1: write_date('M');delay(5);

write_date('O');delay(5);

write_date('N');

break;

case 2: write_date('T');delay(5);

write_date('U');delay(5);

write_date('E');

break;

case 3: write_date('W');delay(5);

write_date('E');delay(5);

write_date('D');

break;

case 4: write_date('T');delay(5);

write_date('H');delay(5);

write_date('U');

break;

case 5: write_date('F');delay(5);

write_date('R');delay(5);

write_date('I');

break;

case 6: write_date('S');delay(5);

write_date('A');delay(5);

write_date('T');

break;

case 7: write_date('S');delay(5);

write_date('U');delay(5);

write_date('N');

break;

}

}

/*************************DS12C887时钟芯片操作函数********************************/

void write_ds(uchar add,uchar date) {//写12C887函数

dscs=0;

dsas=1;

dsds=1;

dsrw=1;

P0=add;//先写地址

dsas=0;

dsrw=0;

P0=date;//再写数据

dsrw=1;

dsas=1;

dscs=1;

}

uchar read_ds(uchar add)

{//读12C887函数

uchar ds_date;

dsas=1;

dsds=1;

dsrw=1;

dscs=0;

P0=add;//先写地址

dsas=0;

dsds=0;

P0=0xff;

ds_date=P0;//再读数据

dsds=1;

dsas=1;

dscs=1;

return ds_date;

}

void set_time()

{//首次上电初始化时间函数

write_ds(0,0);

write_ds(1,0);

write_ds(2,0);

write_ds(3,0);

write_ds(4,0);

write_ds(5,0);

write_ds(6,0);

write_ds(7,0);

write_ds(8,0);

write_ds(9,0);

}

void read_alarm()

{//读取12C887闹钟值

amiao=read_ds(1);

afen=read_ds(3);

ashi=read_ds(5);

}

/****************************DS18B20温度测量芯片操作函数*********************************/

void dsInit()

{

//对于11.0592MHz时钟, unsigned int型的i, 作一个i++操作的时间大于为8us

unsigned int i;

ds=0;

i=100; //拉低约800us, 符合协议要求的480us以上

while(i>0)i--;

ds=1; //产生一个上升沿, 进入等待应答状态

i=4;

while(i>0)i--;

}

void dsWait()

{

unsigned int i;

while(ds);

while(~ds); //检测到应答脉冲

i=4;

while(i>0)i--;

}

//向DS18B20读取一位数据

//读一位, 让DS18B20一小周期低电平, 然后两小周期高电平,

//之后DS18B20则会输出持续一段时间的一位数据

bit readBit()

{

unsigned int i;

bit b;

ds=0;

i++; //延时约8us, 符合协议要求至少保持1us

ds=1;

i++;i++; //延时约16us, 符合协议要求的至少延时15us以上

b=ds;

i=8;

while(i>0)i--; //延时约64us, 符合读时隙不低于60us要求

return b;

}

//读取一字节数据, 通过调用readBit()来实现

unsigned char readByte()

{

unsigned int i;

unsigned char j,dat;

dat=0;

for(i=0;i<8;i++)

{

j=readBit();

//最先读出的是最低位数据

dat=(j<<7)|(dat >> 1);

}

return dat;

}

//向DS18B20写入一字节数据

void writeByte(unsigned char dat)

{

unsigned int i;

unsigned char j;

bit b;

for(j=0;j<8;j++)

{

b=dat&0x01;

dat>>=1;

//写"1", 将DQ拉低15us后, 在15us~60us内将DQ拉高, 即完成写1 if(b)

{

ds=0;

i++;i++; //拉低约16us, 符号要求15~60us内

ds=1;

i=8;while(i>0)i--; //延时约64us, 符合写时隙不低于60us要求

}

else //写"0", 将DQ拉低60us~120us

{

ds=0;

i=8;while(i>0) i--; //拉低约64us, 符号要求

ds=1;

i++;i++; //整个写0时隙过程已经超过60us, 这里就不用像写1那样, 再延时64us了}

}

}

//向DS18B20发送温度转换命令

void sendChangeCmd()

{

dsInit(); //初始化DS18B20, 无论什么命令, 首先都要发起初始化

dsWait(); //等待DS18B20应答

delay(1); //延时1ms, 因为DS18B20会拉低DQ 60~240us作为应答信号

writeByte(0xcc); //写入跳过序列号命令字 Skip Rom

writeByte(0x44); //写入温度转换命令字 Convert T

}

//向DS18B20发送读取数据命令

void sendReadCmd()

{

dsInit();

dsWait();

delay(1);

writeByte(0xcc); //写入跳过序列号命令字 Skip Rom

writeByte(0xbe); //写入读取数据令字 Read Scratchpad

}

//获取当前温度值

int getTmpValue()

{

unsigned int tmpvalue;

int value; //存放温度数值

float t;

unsigned char low, high;

sendReadCmd();

//连续读取两个字节数据

low=readByte();

high=readByte();

//将高低两个字节合成一个整形变量

//计算机中对于负数是利用补码来表示的

//若是负值, 读取出来的数值是用补码表示的, 可直接赋值给int型的value

tmpvalue=high;

tmpvalue<<=8;

tmpvalue|=low;

value=tmpvalue;

//使用DS18B20的默认分辨率12位, 精确度为0.0625度, 即读回数据的最低位代表0.0625度t=value*0.0625;

//将它放大100倍, 使显示时可显示小数点后两位, 并对小数点后第三进行4舍5入

//如t=11.0625, 进行计数后, 得到value = 1106, 即11.06 度

//如t=-11.0625, 进行计数后, 得到value = -1106, 即-11.06 度

value=t*100+(value>0?0.5:-0.5); //大于0加0.5, 小于0减0.5

return value;

}

void display(int v)

{

unsigned char count;

unsigned char datas[]={0,0,0,0,0};

unsigned int tmp=abs(v);

datas[0]=tmp/10000;

datas[1]=tmp%10000/1000;

datas[2]=tmp%1000/100;

datas[3]=tmp%100/10;

datas[4]=tmp%10;

write_com(0xc0+11);

if(datas[0]!=0)

{

write_date('0'+datas[0]);

}

for(count=1;count!=5;count++)

{

write_date('0'+datas[count]);

if(count==2)

{

write_date('.');

}

}

}

/**********************************键盘扫描操作函数**************************************/

void keyscan()

{

if(flag_ri==1)

{//这里用来取消闹钟报警,任一键取消报警

if((s1==0)||(s2==0)||(s3==0)||(s4==0))

{

delay(5);

if((s1==0)||(s2==0)||(s3==0)||(s4==0))

{

while(!(s1&&s2&&s3&&s4));

di();

flag_ri=0;//清除报警标志

TR0=0;

}

}

}

if(s1==0)//检测S1

{

delay(1);

if(s1==0)

{

s1num++;//记录按下次数

if(flag_s4==1)

if(s1num==4)

s1num=1;

flag_wd=0;

flag=1; //

while(!s1);di();

switch(s1num)

{//光标闪烁点定位

case 1: write_com(0x80+0x40+8);

write_com(0x0f);

break;

case 2: write_com(0x80+0x40+5);

write_com(0x0f);

break;

case 3: write_com(0x80+0x40+2);

write_com(0x0f);

break;

case 4: write_com(0x80+12);

write_com(0x0f);

break;

case 5: write_com(0x80+9);

write_com(0x0f);

break;

case 6: write_com(0x80+6);

write_com(0x0f);

break;

case 7: write_com(0x80+3);

write_com(0x0f);

break;

接口实验报告-基于51单片机的脉搏温度测试系统-

摘要 接口实验报告 题目:脉搏波体温自动采集系统院(系):电子工程与自动化学院 专业:仪器仪表工程 学生姓名: 学号: 指导老师:李智 职称:教授 20 年8月28日 I

摘要 本文介绍了一种基于51单片机的心率体温采集系统。首先介绍了51系列单片机的内部相关配置、工作原理以及编程方法,其次介绍了温度传感器PT100的相关测温方法以及通过红外光电传感器TCRT5000对射的方法来抓取人体脉搏信号。此次设计的电路部分主要包括:传感测量电路、放大电路、滤波整形电路、AD转换电路、控制电路、电源供电电路等。上位机为通过VC编程界面。通过上位机按键控制,将PT100及TCRT5000输入的微弱信号进行放大整形,最后AD采集转换传送给单片机,在上位机界面上显示相关体温及心率信息。 本次硬件设计基于比较稳定可行、低成本的设计思想,软件设计采用模块化的设计方法,并且详细分析了红外传感器TCRT5000应用于心率测量上以及PT100应用于温度测量上的原理及优点,阐述了其他各配合电路的组成与工作特点,并且通过仿真进行电路的可行性验证,最后完成实物电路的设计,使得本次课题的预期结果得以实现。 关键词:51单片机;传感器;仿真;AD转换

Abstract Abstract This paper introduced a heart rate and body temperature acquisition system that based on 51 single chip microcomputer. First the internal configurations of 51 single chip microcomputer are introduced. And the paper also tell how 51 single chip microcomputer works and how can we program on it. Then the method of using temperature sensor PT100 to get body temperature is introduced, and we use infrared photoelectric sensor TCRT5000 to get the pulse signal of human body.The design of the circuit mainly comprises sensing circuit, amplifying circuit, filtering and shaping circuit, AD converting circuit, counting and displaying circuit, controlling circuit, power supplying circuit and so on. When the keyboard is pressed, the system starts to get signal. The small signal from PT100 and TCRT5000 will be amplified and shaped. Then ad converter will change the analog signal into digital signal and send to 51 single chip microcomputer. At last LCD1602 will display the information of body temperature and heart rate. Keywords: Piezoelectric sensors;control circuit;counters;Multisim2001 simulation software control circuit. III

基于AT89C51单片机的温度传感器

基于AT89C51单片机的温度传感器 目录 摘要.............................................................. I ABSTRACT........................................................... I I 第一章绪论 (1) 1.1 课题背景 (1) 1.2本课题研究意义 (2) 1.3本课题的任务 (2) 1.4系统整体目标 (2) 第二章方案论证比较与选择 (3) 2.1引言 (3) 2.2方案设计 (3) 2.2.1 设计方案一 (3) 2.2.2 设计方案二 (3) 2.2.3 设计方案三 (3) 2.3方案的比较与选择 (4) 2.4方案的阐述与论证 (4) 第三章硬件设计 (6) 3.1 温度传感器 (6) 3.1.1 温度传感器选用细则 (6) 3.1.2 温度传感器DS18B20 (7) 3.2.单片机系统设计 (13)

3.3显示电路设计.................................错误!未定义书签。 3.4键盘电路设计................................错误!未定义书签。 3.5报警电路设计.................................错误!未定义书签。 3.6通信模块设计.................................错误!未定义书签。 3.6.1 RS-232接口简介..............................错误!未定义书签。 3.6.2 MAX232芯片简介.............................错误!未定义书签。 3.6.3 PC机与单片机的串行通信接口电路.............错误!未定义书签。 第四章软件设计..................................错误!未定义书签。 4.1 软件开发工具的选择..........................错误!未定义书签。 4.2系统软件设计的一般原则.......................错误!未定义书签。 4..3系统软件设计的一般步骤......................错误!未定义书签。 4.4软件实现....................................错误!未定义书签。 4.4.1系统主程序流程图.........................错误!未定义书签。 4.4.2 传感器程序设计...........................错误!未定义书签。 4.4.3 显示程序设计.............................错误!未定义书签。 4.4.4 键盘程序设计.............................错误!未定义书签。 4.4.5 报警程序设计.............................错误!未定义书签。 4.4.6 通信模块程序设计.........................错误!未定义书签。 第五章调试与小结..................................错误!未定义书签。致谢...............................................错误!未定义书签。参考文献...........................................错误!未定义书签。附录...............................................错误!未定义书签。系统电路图.......................................错误!未定义书签。系统程序.........................................错误!未定义书签。

基于51单片机的DS18B20数字温度计的实训报告

电子信息职业技术学院 暨国家示性软件职业技术学院 单片机实训 题目:用MCS-51单片机和 18B20实现数字温度计 姓名: 系别:网络系 专业:计算机控制技术 班级:计控 指导教师: * 伟 时间安排:2013年1月7日至 2013年1月11日

摘要 随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。 在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制的基础,技术已经比较成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。我们用一种相对比较简单的方式来测量。 我们采用美国DALLAS半导体公司继DS18B20之后推出的一种改进型智能温度传感器DS18B20作为检测元件,温度围为-55~125 oC,最高分辨率可达0.0625 oC。DS18B20可以直接读出北侧温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 本文介绍一种基于AT89C51单片机的一种温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量围0℃-~+100℃,使用LED模块显示,能设置温度报警上下限。正文着重给出了软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,AT89C51单片机功能和应用。该电路设计新颖、功能强大、结构简单。 关键词:单片机,数字控制,温度计, DS18B20,AT89S51

51单片机测温程序

#include #include #define uint unsigned int #define uchar unsigned char uinti,numone,numtwo,temp; ucharqian,bai,shi,ge,xiaoshu; sbitdq=P2^2; sbitdula=P2^6; sbitwela=P2^7; uchar code list[]={ 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c , 0x39 , 0x5e , 0x79 , 0x71,0x80 }; unsigned char code listone[] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; void delay(uint z) { uintx,y; for(x=100;x>0;x--) for(y=z;y>0;y--); } voiddelayone(unsigned char i)

{ while(--i); } /****************************************** 此延时函数针对的是12Mhz的晶振 delay(0):延时518us 误差:518-2*256=6 delay(1):延时7us (原帖写"5us"是错的)delay(10):延时25us 误差:25-20=5 delay(20):延时45us 误差:45-40=5 delay(100):延时205us 误差:205-200=5 delay(200):延时405us 误差:405-400=5*/ voidshuma(uchar temp) { shi=temp/100; ge=temp%100/10; xiaoshu=temp%10; dula=1; P0=list[shi]; dula=0; P0=0xff; wela=1; P0=0xfe;

(完整word版)基于51单片机的温度控制系统设计

基于51单片机的水温自动控制系统 0 引言 在现代的各种工业生产中 ,很多地方都需要用到温度控制系统。而智能化的控制系统成为一种发展的趋势。本文所阐述的就是一种基于89C51单片机的温度控制系统。本温控系统可应用于温度范围30℃到96℃。 1 设计任务、要求和技术指标 1.1任务 设计并制作一水温自动控制系统,可以在一定范围(30℃到96℃)内自动调节温度,使水温保持在一定的范围(30℃到96℃)内。 1.2要求 (1)利用模拟温度传感器检测温度,要求检测电路尽可能简单。 (2)当液位低于某一值时,停止加热。 (3)用AD转换器把采集到的模拟温度值送入单片机。 (4)无竞争-冒险,无抖动。 1.3技术指标 (1)温度显示误差不超过1℃。 (2)温度显示范围为0℃—99℃。 (3)程序部分用PID算法实现温度自动控制。 (4)检测信号为电压信号。 2 方案分析与论证 2.1主控系统分析与论证 根据设计要求和所学的专业知识,采用AT89C51为本系统的核心控制器件。AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器。其引脚图如图1所示。 2.2显示系统分析与论证 显示模块主要用于显示时间,由于显示范围为0~99℃,因此可采用两个共阴的数码管作为显示元件。在显示驱动电路中拟订了两种设计方案: 方案一:采用静态显示的方案 采用三片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,编程简单且静态显示的内容无闪烁,但电路消耗的电流较大。 方案二:采用动态显示的方案 由单片机的I/O口直接带数码管实现动态显示,占用资源少,动态控制节省了驱动芯片的成本,节省了电 ,但编程比较复杂,亮度不如静态的好。 由于对电路的功耗要求不大,因此就在尽量节省I/O口线的前提下选用方案一的静态显示。

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

电路实物图如下图所示: C 语言程序如下所示: /******************************************************************** zicreate ----------------------------- Copyright (C) https://www.360docs.net/doc/cb14156942.html, -------------------------- * 程序名; 基于DS18B20的测温系统 * 功 能: 实时测量温度,超过上下限报警,报警温度可手动调整。K1是用来 * 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限 * 调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s 左右自动 * 退出;按一下K3进入查看下限温度模式,显示1s 左右自动退出;按一下K4消除 * 按键音,再按一下启动按键音。在调节上下限温度模式下,K2是实现加1功能, * K1是实现减1功能,K3是用来设定上下限温度正负的。 * 编程者:Jason * 编程时间:2009/10/2 *********************************************************************/ #include //将AT89X52.h 头文件包含到主程序 #include //将intrins.h 头文件包含到主程序(调用其中的_nop_()空操作函数延时) #define uint unsigned int //变量类型宏定义,用uint 表示无符号整形(16位) #define uchar unsigned char //变量类型宏定义,用uchar 表示无符号字符型(8位) uchar max=0x00,min=0x00; //max 是上限报警温度,min 是下限报警温度 bit s=0; //s 是调整上下限温度时温度闪烁的标志位,s=0不显示200ms ,s=1显示1s 左右 bit s1=0; //s1标志位用于上下限查看时的显示 void display1(uint z); //声明display1()函数 #include"ds18b20.h" //将ds18b20.h 头文件包含到主程序 #include"keyscan.h" //将keyscan.h 头文件包含到主程序 #include"display.h" //将display.h 头文件包含到主程序

基于51单片机SHT11温湿度传感器检测程序.doc

基于51单片机SHT11温湿度传感器检测程序(含电路图) ? 下面是原理图: 下面是SHT11与MCU连接的典型电路:

下面是源代码: #include #include /******************************************************** 宏定义 ********************************************************/ #define uint unsigned int #define uchar unsigned char #define noACK 0 #define ACK 1 #define STATUS_REG_W 0x06 #define STATUS_REG_R 0x07 #define MEASURE_TEMP 0x03 #define MEASURE_HUMI 0x05 #define RESET 0x1e enum {TEMP,HUMI}; typedef union //定义共用同类型 { unsigned int i; float f; } value; /******************************************************** 位定义 ********************************************************/ sbit lcdrs=P2^0; sbit lcdrw=P2^1; sbit lcden=P2^2; sbit SCK = P1^0; sbit DATA = P1^1; /******************************************************** 变量定义 ********************************************************/ uchar table2[]="SHT11 温湿度检测"; uchar table3[]="温度为:℃"; uchar table4[]="湿度为:"; uchar table5[]="."; uchar wendu[6]; uchar shidu[6]; /******************************************************** 1ms延时函数 ********************************************************/ void delay(int z) {

基于AT89C51单片机的测温系统

引言 本文主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程,并介绍了利用C语言编程对DS18B20的访问,该系统可以方便的实现实现温度采集和显示,使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量。数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温精确、功能多样话等优点。其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用STC89C52单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用LED数码管实现温度值显示。 .

一、设计要求 通过基于MCS-51系列单片机AT89C51和DS18B20温度传感器检测温度,熟悉芯片的使用,温度传感器的功能,数码显示管的使用,C语言的设计;并且把我们这一年所学的数字和模拟电子技术、检测技术、单片机应用等知识,通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的选定等这一完整的实验过程,培养了学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用,为毕业设计和以后工作打下一个良好的基础。 以MCS-51系列单片机为核心器件,组成一个数字温度计,采用数字温度传感器DS18B20为检测器件,进行单点温度检测,检测精度为0.5摄氏度。温度显示采用3位LED数码管显示,两位整数,一位小数。具有键盘输入上下限功能,超过上下限温度时,进行声音报警。 二、基本原理 原理简述:数字温度传感器DS1820把温度信息转换为数字格式;通过“1-线协议”,单片机获取指定传感器的数字温度信息,并显示到显示设备上。通过键盘,单片机可根据程序指令实现更灵活的功能,如单点检测、轮转检测、越数字温度传感器的温度检测及显示的系统原理图如图DS1820限检测等。基于 图 2.1 基于DS1820的温度检测系统框图 三:主要器件介绍(时序图及各命令序列,温度如何计算等) 系统总体设计框图 由于DS18B20数字温度传感器具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠,所以在该设计中采用DS18B20数字温度传感器测量温度。 测温电路设计总体设计框图如图所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,显示采用4位LED数码管,报警采用蜂鸣器、LED灯实现,键盘用来设定报警上下限温度。 .. . 测温电路设计总体设计框图图3.11.控制模块 AT89S52单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含有8kb的可系统编程的Flash只读程序存储器,器件采用ATMEL公

基于51单片机的温度控制系统的设计

基于单片机的温度控制系统设计 1.设计要求 要求设计一个温度测量系统,在超过限制值的时候能进行声光报警。具体设计要求如下: ①数码管或液晶显示屏显示室内当前的温度; ②在不超过最高温度的情况下,能够通过按键设置想要的温度并显示;设有四个按键,分别是设置键、加1键、减1键和启动/复位键; ③DS18B20温度采集; ④超过设置值的±5℃时发出超限报警,采用声光报警,上限报警用红灯指示,下限报警用黄灯指示,正常用绿灯指示。 2.方案论证 根据设计要求,本次设计是基于单片机的课程设计,由于实现功能比较简单,我们学习中接触到的51系列单片机完全可以实现上述功能,因此可以选用AT89C51单片机。温度采集直接可以用设计要求中所要求的DS18B20。报警和指示模块中,可以选用3种不同颜色的LED灯作为指示灯,报警鸣笛采用蜂鸣器。显示模块有两种方案可供选择。 方案一:使用LED数码管显示采集温度和设定温度; 方案二:使用LCD液晶显示屏来显示采集温度和设定温度。 LED数码管结构简单,使用方便,但在使用时,若用动态显示则需要不断更改位选和段选信号,且显示时数码管不断闪动,使人眼容易疲劳;若采用静态显示则又需要更多硬件支持。LCD显示屏可识别性较好,背光亮度可调,而且比LED 数码管显示更多字符,但是编程要求比LED数码管要高。综合考虑之后,我选用了LCD显示屏作为温度显示器件,由于显示字符多,在进行上下限警戒值设定时同样可以采集并显示当前温度,可以直观的看到实际温度与警戒温度的对比。LCD 显示模块可以选用RT1602C。

3.硬件设计 根据设计要求,硬件系统主要包含6个部分,即单片机时钟电路、复位电路、键盘接口模块、温度采集模块、LCD 显示模块、报警与指示模块。其相互联系如下图1所示: 图1 硬件电路设计框图 单片机时钟电路 形成单片机时钟信号的方式有内部时钟方式和外部时钟方式。本次设计采用内部时钟方式,如图2所示。 单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为此放大器的输入端和输出端,其频率范围为~12MHz ,经由片外晶体振荡器或陶瓷振荡器与两个匹配电容一 起形成了一个自激振荡电路,为单片机提供时钟源。 复位电路 复位是单片机的初始化操作,其作用是使CPU 和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作,以防止电源系统不稳定造成CPU 工作不正常。在系统中,有时会出现工作不正常的情况,为了从异常状态中恢复,同时也为了系统调试方便,需要设计一个复位电路。 单片机的复位电路有上电复位和按键复位两种形式,因为本次设计要求需要有启动/复位键,因此本次设计采用按键复位,如图3。复位电路主要完成系统 图2 单片机内部时钟方式电路 图3 单片机按键复位电路

51单片机热敏电阻测温程序

//本程序是通过热敏电阻测温度(30c-50c),采用六位串行数码管显示,前三位显示ds18b20测得数据,后三位是热敏电阻测得数据 #include #include #include #define uchar unsigned char #define uint unsigned int uchar smg[]={0x88,0xeb,0x4c,0x49,0x2b,0x19,0x18,0xcb,0x08,0x09}; uchar b,d; uint shuju; int a,temp; sbit start=P2^7; sbit ale=P2^7; sbit addc=P2^6; sbit addb=P2^5; sbit adda=P2^4; sbit eoc=P2^3; sbit oe=P2^2; sbit clk=P3^2;//0809时钟脚 sbit dat=P3^0; //串行数码管数据端 sbit clock=P3^1; //串行数码管时钟端 sbit DQ=P2^0; /******************delay**************************/ void delay(uint x) { while(x--); } void delay1(uint x) { uint i,j; for(i=0;i

基于51单片机的温度警报器的设计

西安文理学院物理与机械电子工程学院课程设计任务书

目录 摘要 (3) 1 引言 (3) 1.1课题背景 (3) 1.2研究内容和意义 (5) 2 芯片介绍 (5) 2.1 DS18B20概述 (5) 2.1.1 DS18B20封装形式及引脚功能 (6) 2.1.2 DS18B20内部结构 (6) 2.1.3 DS18B20供电方式 (9) 2.1.4 DS18B20的测温原理 (10) 2.1.5 DS18B20的ROM命令 (11) 2.2 AT89C52概述 (13) 2.2.1单片机AT89C52介绍 (13) 2.2.2功能特性概述 (13) 3 系统硬件设计 (13) 3.1 单片机最小系统的设计 (13) 3.2 温度采集电路的设计 (14) 3.3 LED显示报警电路的设计 (15) 4 系统软件设计...................................................15 4.1 流程图........................................................15 4.2 温度报警器程序.................................................16 4.3 总电路图..................................................... 19 5总结 (20)

摘要 随着时代的进步和发展,温度的测试已经影响到我们的生活、工作、科研、各个领域,已经成为了一种非常重要的事情,因此设计一个温度测试的系统势在必行。 本文主要介绍了一个基于AT89C52单片机的数字温度报警器系统。详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度的采集和报警,并可以根据需要任意上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当做温度处理模块潜入其他系统中,作为其他主系统的辅助扩展。DS18B20与AT89C52结合实现最简温度报警系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:单片机;温度检测;AT89C52;DS18B20; 1 引言 1.1课题背景 温度是工业对象中主要的被控参数之一,如冶金、机械、食品、化工各类工业生产中,广泛使用的各种加热炉、热处理炉、反应炉等,对工件的温度处理要求严格控制。随着科学技术的发展,要求温度测量的范围向深度和广度发展,以满足工业生产和科学技术的要求。 基于AT89C51单片机提高了系统的可移植性、扩展性,利于现代测控、自动化、电气技术等专业实训要求。以单片机为核心设计的温度报警器,具有安全可靠、操作简单方便、智能控制等优点。 温度对于工业生产如此重要,由此推进了温度传感器的发展。温度传感器主要经过了三个发展阶段[1]: (1)模拟集成温度传感器。该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。此种传感器具有功能单一(仅测量温度)、

基于51单片机的心率体温测试系统

摘要 本文介绍了一种基于51单片机的心率体温采集系统。首先介绍了51系列单片机的内部相关配置、工作原理以及编程方法,其次介绍了温度传感器PT100的相关测温方法以及通过红外光电传感器TCRT5000对射的方法来抓取人体脉搏信号。此次设计的电路部分主要包括:传感测量电路、放大电路、滤波整形电路、AD转换电路、计数显示电路、控制电路、电源供电电路等。通过按键开始测试,将PT100及TCRT5000输入的微弱信号进行放大整形,最后AD采集转换传送给单片机,在LCD1602上显示相关体温及心率信息。 本次硬件设计基于比较稳定可行、低成本的设计思想,软件设计采用模块化的设计方法,并且详细分析了红外传感器TCRT5000应用于心率测量上以及PT100应用于温度测量上的原理及优点,阐述了其他各配合电路的组成与工作特点,并且通过仿真进行电路的可行性验证,最后完成实物电路的设计,使得本次课题的预期结果得以实现。 关键词:51单片机;传感器;仿真;AD转换 -I

Abstract This paper introduced a heart rate and body temperature acquisition system that based on 51 single chip microcomputer. First the internal configurations of 51 single chip microcomputer are introduced. And the paper also tell how 51 single chip microcomputer works and how can we program on it. Then the method of using temperature sensor PT100 to get body temperature is introduced, and we use infrared photoelectric sensor TCRT5000 to get the pulse signal of human body.The design of the circuit mainly comprises sensing circuit , amplifying circuit, filtering and shaping circuit, AD converting circuit, counting and displaying circuit, controlling circuit, power supplying circuit and so on. When the keyboard is pressed, the system starts to get signal. The small signal from PT100 and TCRT5000 will be amplified and shaped. Then ad converter will change the analog signal into digital signal and send to 51 single chip microcomputer . At last LCD1602 will display the information of body temperature and heart rate. Keywords: Piezoelectric sensors;control circuit;counters;Multisim2001 simulation software control circuit. -II

基于单片机的数字温度计设计开题报告

****大学综合性设计实验 开题报告 ?实验题目:数字温度计的设计 ?学生专业10电气工程与自动化 ?同组人:———————— ?指导老师: 2013年4月

1.国内外现状及研究意义 随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。 测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段: ①传统的分立式温度传感器 ②模拟集成温度传感器 ③智能集成温度传感器。 目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,AT89S51单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。该设计控制器使用ATMEL公司的AT89S51单片机,测温传感器使用DALLAS公司DS18B20,用液晶来实现温度显示。 2.方案设计及内容 (一)、方案一 采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成,热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。数据采集部分则使用带有A/D 通道的单片机,在将随被测温度变化的电压或电流采集过来,进行A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。热电偶的优点是工作温度范围非常宽,且体积小,

基于51单片机温湿度检测+电子万年历的毕业设计论文

毕业设计论文 基于51单片机温湿度检测+电子万年历的设计

[摘要]:温湿度检测是生活生产中的重要的参数。本设计为基于51单片机的温湿度检测与控制系统,采用模块化、层次化设计。用新型的智能温湿度传感器SHT10主要实现对温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C52RC进行数据的分析和处理,为显示提供信号,显示部分采用LCD1602液晶显示所测温湿度值。系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。 [关键字]:STC89C52RC SHT10 LCD1602 按键指示灯蜂鸣器电子万年历Based on 51 single chip microcomputer temperature and humidity detection + electronic calendar design Abstract:Temperature and humidity detection is important parameters in the production of life. This design is based on 51 single chip microcomputer temperature and humidity detection and control system, adopting modular, hierarchical design. With new type of intelligent temperature and humidity sensor SHT10 main realization about the detection of temperature, humidity, temperature humidity signal acquisition is converted into digital signals through the sensor signal, using SCM STC89C52RC for data analysis and processing, provides the signal for display, display part adopts LCD1602 LCD display the measured temperature and humidity values. Simple circuit, high integration, work stability, convenient debugging, high detection precision, has certain practical value. Key words:STC89C52RC SHT10 LCD1602 key indicator light buzzer The electronic calendar

基于51单片机的数字温度计设计

基于51单片机的数字温度计设计 一.课题选择 随着时代的发展,控制智能化,仪器小型化,功耗微量化得到广泛关注。单片机控制系统无疑在这方面起到了举足轻重的作用。单片机的应用系统设计业已成为新的技术热点,其中数字温度计就是一个典型的例子,它可广泛应用与生产生活的各个方面,具有巨大的市场前景。 二.设计目的 1.理解掌握51单片机的功能和实际应用。 2.掌握仿真开发软件的使用。 3.掌握数字式温度计电路的设计、组装与调试方法。 三.实验要求 1.以51系列单片机为核心器件,组成一个数字式温度计。 2.采用数字式温度传感器为检测器件,进行单点温度检测。 3.温度显示采用4位LED数码管显示,三位整数,一位小数。 四.设计思路 1.根据设计要求,选择STC89C51RC单片机为核心器件。 2.温度检测采用DS18B20数字式温度传感器。与单片机的接口为P 3.6引脚。 3.采用usb数据线连接充电宝供电,接电后由按钮开关控制电路供电。 硬件电路设计总体框图为图1: 五.系统的硬件构成及功能 1.主控制器 单片机STC89C51RC具有低电压供电和体积小等特点,有40个引脚,其仿真图像如下图所示:

2.显示电路 显示电路采用4位共阳LED数码管,从P3口RXD,TXD串口输出段码。LED数码管在仿真软件中如下图所示: 3.温度传感器 DS18B20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下: 1.独特的单线接口仅需一个端口引脚进行通讯。 2.简单的多点分布应用。 3.无需外部器件。 4.可通过数据线供电。 5.零待机功耗。 6.测温范围-55~+125摄氏度。 其电路图如下图所示:

基于51单片机的温度测量系统

基于51单片机的温度测量系统 原作者:飓风添加时间:2008-04-03 原文发表:2008-04-03 人气:128 来源:赵 娜赵刚于珍珠郭守清 本文章共3366字,分3页,当前第1 摘要: 单片机在检测和控制系统中得到广泛应用, 温度则是系统常需要测量、控制和保持一个量。本文从硬件和软件两方面介绍了AT89C2051单片机 温度控制系统设计,对硬件原理图和程序框图作了简洁描述。 关键词: 单片机AT89C2051;温度传感器DS18B20;温度;测量 引言 单片机在电子产品中应用已经越来越广泛,并且在很多电子产品中也将其用 到温度检测和温度控制。为此在本文中作者设计了基于atmel公司AT89C2051 温度测量系统。这是一种低成本利用单片机多余I/O口实现温度检测电路, 该电路非常简单, 易于实现, 并且适用于几乎所有类型单片机。 一.系统硬件设计 系统硬件结构如图1所示。 https://www.360docs.net/doc/cb14156942.html,提示请看下图: 1.1 数据采集 数据采集电路如图2所示, 由温度传感器DS18B20采集被控对象实时温度, 提供给AT89C2051P3.2口作为数据输入。在本次设计中我们所控对象为所处 室温。当然作为改进我们可以把传感器与电路板分离,由数据线相连进行通讯,便于测量多种对象。 DS18B20是DALLAS公司生产一线式数字温度传感器,具有3引脚TO-92小 体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D 转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展16位数字量方 式串行输出,支持3V~5.5V电压范围,使系统设计更灵活、方便;其工作电

相关文档
最新文档