文档库 最新最全的文档下载
当前位置:文档库 › 51单片机的液晶显示温度计程序

51单片机的液晶显示温度计程序

51单片机的液晶显示温度计程序
51单片机的液晶显示温度计程序

51单片机的液晶显示温度计程序

#include

#include

sbit RST = P2^0;

sbit CLK = P2^1;

sbit DQ = P2^2;

sbit TSOR = P2^3;

sbit ALERT =P2^4;

sbit RS = P2^7;

sbit RW = P2^6;

sbit EN = P2^5;

/*------------------------------------------全局变量-------------------------------------------------------*/ static unsigned char temp1,temp2; //温度值的整数部分、小数部分

static unsigned char pos,posset; //数字电位器电位值、设定值

static unsigned char min,sec; //分钟、秒

static unsigned char count; //Timer0中断计数

static unsigned char minset; //设定的分钟数

static unsigned char status1,status2; //状态标志

bit stop,timeover; //定时停止、结束

static char line0[] =" 00:00 ";

static char line1[] =" . C W";

/*-------------------------------------------------------------------------------------------------------------*/ void InitInterupt();

void KeyboardDelay();

/*-------------------------------------------LCD驱动函数------------------------------------------------*/ void DelayL();

void DelayS();

void WriteCommand(unsigned char c);

void WriteData(unsigned char c);

void ShowChar(unsigned char pos,unsigned char c);

void ShowString(unsigned char line,char *ptr);

void InitLcd();

/*----------------------------------------------键盘-程序--------------------------------------------------*/ unsigned char GetKey();

/*---------------------------------------------数字温度计驱动-------------------------------------------*/ void ChangePos(bit sel,unsigned char pos1,unsigned char pos2);

/*------------------------------------------温度传感器驱动----------------------------------------------*/ void Delay15();

void Delay60();

void Delay100ms();

void Write0TS();

void Write1TS();

bit ReadTS();

void ResetTS();

void WriteByteTS(unsigned char byte);

unsigned char ReadByteTS();

void InitTS();

void GetTempTS();

/*-------------------------------------------------主程序---------------------------------------------------*/ void main (void) {

char code str1[] =" Hello World! ";

char code str2[] =" 2002-10-20 ";

unsigned char i;

SP=0x50;

ALERT=0; //报警灯灭

TSOR=1; //1-wire总线释放

DelayL();

InitLcd(); //初始化LCD

DelayL();

ShowString(0,str1); //启动画面

ShowString(1,str2);

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

Delay100ms();

InitInterupt(); //初始化中断设置

minset=10; //缺省定时10分钟

posset=0; //缺省电位器值0

min=minset; //初始化数据

pos=posset;

sec=0;

count=0;

P1=0xF0;

status1=0;

status2=0;

stop=1;

timeover=0;

ChangePos(0,255-pos,255-pos); //设置电位器

InitTS(); //初始化温度计

while(1) //循环显示温度值

{

GetTempTS();

line1[0]=0x20;

i=temp1;

if(i>39) //超过40摄氏度,告警灯亮

ALERT=1;

if(i>99) //超过100摄氏度,显示温度的百位

{

line1[0]=0x31;

i-=100;

}

line1[1]=i/10+0x30; //显示温度的十位

line1[2]=i%10+0x30; //显示个位

line1[4]=temp2+0x30; //显示小数位

if(timeover) //若定时结束,则电位器缓慢复0 {

for(;pos>0;pos--)

{

ChangePos(0,255-pos,255-pos);

_nop_();

_nop_();

}

timeover=0;

posset=0;

}

if(pos>posset) //若按键修改电位器位置

{

for(;pos>posset;pos--) //则缓变到设定值

{

ChangePos(0,255-pos,255-pos);

_nop_();

_nop_();

}

ChangePos(0,255-pos,255-pos);

}

else if(pos

{

for(;pos

{

ChangePos(0,255-pos,255-pos);

_nop_();

_nop_();

}

ChangePos(0,255-pos,255-pos);

}

i=pos;

line1[9]=0x20; //显示电位器等级值

if(i>99)

{

line1[9]=i/100+0x30;

i=i%100;

}

line1[10]=i/10+0x30;

line1[11]=i%10+0x30;

ShowString(1,line1);

line0[5]=min/10+0x30; //显示时间

line0[6]=min%10+0x30;

line0[8]=sec/10+0x30;

line0[9]=sec%10+0x30;

ShowString(0,line0);

Delay100ms();

}

}

void InitInterupt()

{

TMOD=0x21; //初始化中断设置TL1=0xFD;

TH1=0xFD;

PX0=1;

EA=1;

ES=1;

PCON=0;

TR1=1;

SCON=0x50;

TL0=0x00; //定时0.05m

TH0=0x4C;

ET0=1;

EX0=1;

IT0=1;

}

void KeyboardDelay() //按键中断延时{

unsigned char i,j;

i=0x40;

while(i--)

while(j--);

}

/*--------------------------------------------中断处理-----------------------------------------------------*/ Int0_process() interrupt 0 using 0

{

unsigned char key;

unsigned char keycode[]= "TP";

unsigned char step[3]={1,2,5};

EA=0;

key=GetKey(); //获得按键值

switch(key)

{

case 0:

stop=!stop;

min=minset;

sec=0;

break;

case 1:

case 2:

case 3:

if(stop)

{

minset+=step[key-1];

if(minset>60)

minset=0;

min=minset;

}

break;

case 5:

case 6:

case 7:

if(stop)

{

minset-=step[key-5];

if(minset>60)

minset=0;

min=minset;

}

break;

case 9:

case 10:

posset+=step[key-9];

break;

case 13:

case 14:

case 15:

posset-=step[key-13];

break;

default:

break;

}

TR0=!stop;

KeyboardDelay();

P1=0xF0;

EA=1;

}

Timer0_process() interrupt 1 using 0

{

EA=0;

TR0=0;

TL0=0x00;

TH0=0x4C;

count++;

if(count==20) //如果到累计定时到达1s

{

if(sec==0) //定时处理

{

if(min==0) //总定时到,则置结束标志

timeover=1;

else

{

min--;

sec=59;

}

}

else

sec--;

count=0;

}

TR0=1;

EA=1;

}

/*--------------------------------------LCD驱动子程序--------------------------------------------------*/

void DelayL()

{unsigned char i,j;

i=0xF0;

j=0xFF;

while(i--)

while(j--);

}

void DelayS()

{

unsigned char i;

i=0x1F;

while(i--);

}

void WriteCommand(unsigned char c)

{

DelayS();

EN=0;

RS=0;

RW=0;

_nop_();

EN=1;

P0=c;

EN=0;

}

void WriteData(unsigned char c)

{

DelayS();

EN=0;

RS=1;

RW=0;

_nop_();

EN=1;

P0=c;

EN=0;

RS=0;

}

void ShowChar(unsigned char pos,unsigned char c) {

unsigned char p;

if(pos>=0x10)

p=pos+0xB0;

else

p=pos+0x80;

WriteCommand(p);

WriteData(c);

}

void ShowString(unsigned char line,char *ptr)

{

unsigned char l,i;

l=line<<4;

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

ShowChar(l++,*(ptr+i));

}

void InitLcd()

{

DelayL();

WriteCommand(0x38);

WriteCommand(0x38);

WriteCommand(0x06);

WriteCommand(0x0C);

WriteCommand(0x01);

WriteCommand(0x80);

}

/*---------------------------------------------键盘子程序-------------------------------------------------*/ unsigned char GetKey()

{

unsigned k,t,i,j;

k=P1;

k=k&0xF0;

i=0;

while((k&0x10)&&i<4)

{

i++;

k=k>>1;

}

k=0x01;

j=0;

while(j<4)

{

P1=0xFF^k;

_nop_();

t=P1;

t=t^0xFF;

t=t&0xF0;

if(t)

break;

j++;

k=k<<1;

}

k=j*4+i;

return k;

}

/*-----------------------------------------数字温度计驱动子程序--------------------------------------*/ void ChangePos(bit sel,unsigned char pos1,unsigned char pos2)

{ unsigned char i;

RST=0;

DQ=0;

CLK=0;

RST=1;

DQ=sel;

_nop_();

CLK=1;

_nop_();

CLK=0;

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

{

if(pos1&0x80)

DQ=1;

else

DQ=0;

_nop_();

CLK=1;

_nop_();

CLK=0;

pos1=pos1<<1;

}

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

{

if(pos2&0x80)

DQ=1;

else

DQ=0;

_nop_();

CLK=1;

_nop_();

CLK=0;

pos2=pos2<<1;

}

RST=0;

}

/*------------------------------------------温度传感器子程序-------------------------------------------*/ void Delay100ms() //延时100ms

{

unsigned char i,j,k;

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

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

for(k=0;k<250;k++);

}

void Delay15() //延时15us

{

unsigned char i;

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

}

void Delay60() //延时60us

{

unsigned char i;

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

}

void Write0TS() //写bit 0

{

TSOR=1;

TSOR=0;

Delay15();

Delay15();

Delay15();

Delay15();

TSOR=1;

_nop_();

_nop_();

}

void Write1TS() //写bit 1

{

TSOR=1;

TSOR=0;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

TSOR=1;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

Delay15();

Delay15();

Delay15();

}

bit ReadTS()

{

bit b;

TSOR=1;

TSOR=0;

_nop_();

_nop_();

_nop_();

_nop_();

TSOR=1;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

b=TSOR;

Delay15();

Delay15();

Delay15();

_nop_();

_nop_();

return b;

}

void ResetTS() //复位

{unsigned char i;

TSOR=1;

TSOR=0;

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

Delay60();

TSOR=1;

while(TSOR);

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

Delay60();

}

void WriteByteTS(unsigned char byte) //写一个字节(byte){unsigned char i;

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

{

if(byte&0x01)

Write1TS();

else

Write0TS();

byte=byte>>1;

}

}

unsigned char ReadByteTS() //读一个字节(byte){

unsigned char i,j;

bit b;

j=0;

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

{

b=ReadTS();

if(b)

j+=1;

j=_cror_(j,1);

}

return j;

}

void InitTS() //初始化温度转换

{

ResetTS();

WriteByteTS(0xCC);

WriteByteTS(0x4E);

WriteByteTS(0x64);

WriteByteTS(0x8A);

WriteByteTS(0x1F);

}

void GetTempTS() //获取温度{

ResetTS();

WriteByteTS(0xCC);

WriteByteTS(0x44);

Delay100ms();

ResetTS();

WriteByteTS(0xCC);

WriteByteTS(0xBE);

temp2=ReadByteTS();

temp1=ReadByteTS();

ReadByteTS();

ReadByteTS();

ReadByteTS();

ReadByteTS();

ReadByteTS();

ReadByteTS();

ReadByteTS();

temp1=temp1<<4;

temp1+=(temp2&0xF0)>>4;

temp2=(temp2&0x0F)?5:0;

}

液晶显示温度计程序

单片机中断程序大全

单片机中断程序大全公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

//实例42:用定时器T0查询方式P2口8位控制L E D闪烁#include // 包含51单片机寄存器定义的头文件void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff; while(1)//无限循环等待查询 { while(TF0==0) ; TF0=0; P2=~P2; TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 //实例43:用定时器T1查询方式控制单片机发出1KHz音频

#include // 包含51单片机寄存器定义的头文件sbit sound=P3^7; //将sound位定义为P3.7引脚 void main(void) {// EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值 TL1=(65536-921)%256; //定时器T1的高8位赋初值 TR1=1; //启动定时器T1 TF1=0; while(1)//无限循环等待查询 { while(TF1==0); TF1=0; sound=~sound; //将P3.7引脚输出电平取反 TH1=(65536-921)/256; //定时器T0的高8位赋初值 TL1=(65536-921)%256; //定时器T0的高8位赋初值 } } //实例44:将计数器T0计数的结果送P1口8位LED显示 #include // 包含51单片机寄存器定义的头文件sbit S=P3^4; //将S位定义为P3.4引脚

基于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单片机及DS18B20温度传感器的数字温度计程序(详细注释)

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

电路实物图如下图所示: C 语言程序如下所示: /******************************************************************** zicreate ----------------------------- Copyright (C) https://www.wendangku.net/doc/3310662463.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单片机的数字温度计的设计报告(王强)

西安文理学院物理与机械电子工程学院 课程设计报告 专业班级 2011级测控技术与仪器一班 课程单片机课程设计 题目基于51单片机的数字温度计的设计 学号 0703110135 学生姓名王强 指导教师陈琦 2014年 5月

西安文理学院物理与机械电子工程学院 课程设计任务书 学生姓名王强专业班级11级测控一班学号0703110135 指导教师陈琦职称讲师教研室 B0406 课程单片机课程设计 题目基于51单片机的数字温度计的设计 任务与要求 1、学会使用51单片机,并对其内部结构进行深入的了解。 2、了解DS18B20的原理以及使用方式。 3、对于共阳极、共阴极数码管有个清楚的认识和掌握。 4、测得的结果范围在-55~125度,精度为0.5。 开始日期 2014年5月12日完成日期 2014年5月25日 2014年5月28日

基于51单片机的数字温度计的设计 摘要 本设计主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:单片机;数字温度传感器;最简温度检测系统;

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

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

CHANGZHOU INSTITUTE OF TECHNOLOGY 科研实践 题目:基于单片机的数字温度计的设计

目录 目录 (2) 1.绪论 (3) 1.1课题研究背景及意义 (3) 1.2课题研究的内容 (3) 2.数字温度计的系统概论 (5) 2.1系统的功能 (5) 2.2温度计的分析 (5) 3.设计方案和要求 (6) 3.1设计任务和要求 (6) 3.2元器件的选取 (6) 3.3系统最终设计方案 (7) 4.硬件设计 (8) 4.1总体设计结构图 (8) 4.2硬件电路概述 (8) 4.2.1最小系统 (8) 4.2.2输入电路设计 (11) 4.2.3输出电路设计 (12) 5.硬件仿真 (15)

6.实物制作 (18) 6.1电路板焊接 (18) 6.2电路板调试 (19) 7.小结 (20) 附录 (21) 1.参考文献 (21) 2.原理图 (22) 3.元器件清单 (23) 4.软件程序 (24) 5.实物图 (30) 1.绪论 1.1课题研究背景及意义 单片机技术作为计算机技术的一个分支,广泛地应用于工业控制,智能仪器仪表,机电一体化产品,家用电器等各个领域。“单片机原理与应用”在工科院校各专业中已作为一门重要的技术基础课而普遍开设。学生在课程设计,毕业设计,科研项目中会广泛应用到单片机知识,而且,进入社会后也会广泛接触到单片机的工程项目。鉴于此,提高“单片机原理及应用”课的教学效果,让学生参与课程设计

实习甚为重要。单片机应用技术涉及的内容十分广泛,如何使学生在有限的时间内掌握单片机应用的基本原理及方法,是一个很有价值的教学项目。为此,我们进行了“单片机的学习与应用”方面的课程设计,锻炼学生的动脑动手以及协作能力。 单片机课程设计是针对模拟电子技术,数字逻辑电路,电路,单片机的原理及应用课程的要求,对我们进行综合性实践训练的实践学习环节,它包括选择课设任务、软件设计,硬件设计,调试和编写课设报告等实践内容。通过此次课程设计实现以下三个目标:第一,让学生初步掌握单片机课程的试验、设计方法,即学生根据设计要求和性能约束,查阅文献资料,收集、分析类似的相关题目,并通过元器件的组装调试等实践环节,使最终硬件电路达到题目要求的性能指标;第二,课程设计为后续的毕业设计打好基础,毕业设计是系统的工程设计实践,而课程设计的着眼点是让学生开始从理论学习的轨道上逐渐引向实际运用,从已学过的定性分析、定量计算的方法,逐步掌握工程设计的步骤和方法,了解科学实验的程序和实施方法。第三,培养学生勤于思考乐于动手的习惯,同时通过设计并制作单片机类产品,使学生能够自己不断地学习接受新知识(如在本课设题目中存在智能测温器件DS18B20,就是课堂环节中不曾提及的“新器件”),通过多人的合作解决现实中存在的问题,从而不断地增强学生在该方面的自信心及兴趣,也提高了学生的动手能力,对学生以后步入社会参加工作打下一定良好的实践基础。 1.2课题研究的内容 本文主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数 字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机喜爱的硬 件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也进 行一一介绍,该系统可以方便的是实现温度采集和显示,并可以根据需要任意 设定上下限报警温度,它使用起来方便,具有精度高、量程宽、灵敏度高、体 积小、功耗低等优点,适合我们日常生活和工农业生产中的温度测量,也可以 当做温度处理模块嵌入其他系统中,作为其他主系统的辅助扩展。DS18B20和AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合 与恶劣环境下进行现场温度测量,有广泛的应用前景。 本设计首先是确定目标,气候是各个功能模块的设计,再在Proteus软件上 进行仿真,修改,仿真。 本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范 围内时,可以报警。

基于51单片机及DS18B20温度传感器的数字温度计设计

基于51单片机及DS18B20温度传感器的数字温度计设计

摘要 本设计采用的主控芯片是ATMEL公司的AT89S52单片机,数字温度传感器是DALLAS 公司的DS18B20。本设计用数字传感器DS18B20测量温度,测量精度高,传感器体积小,使用方便。所以本次设计的数字温度计在工业、农业、日常生活中都有广泛的应用。 单片机技术已经广泛应用社会生活的各个领域,已经成为一种非常实用的技术。51单片机是最常用的一种单片机,而且在高校中都以51单片机教材为蓝本,这使得51单片机成为初学单片机技术人员的首选。本次设计采用的AT89S52是一种flash型单片机,可以直接在线编程,向单片机中写程序变得更加容易。本次设计的数字温度计采用的是DS18B20数字温度传感器,DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。 本设计根据设计要求,首先设计了硬件电路,然后绘制软件流程图及编写程序。本设计属于一种多功能温度计,温度测量范围是-55℃到125℃。温度值的分辨率可以被用户设定为9-12位,可以设置上下限报警温度,当温度不在设定的范围内时,就会启动报警程序报警。本设计的显示模块是用四位一体的数码管动态扫描显示实现的。在显示实时测量温度的模式下还可以通过查询按键查看设定的上下限报警温度。 关键词:单片机、数字温度计、DS18B20、AT89S52

目录 1 概述 ................................................................................................................................................................. - 1 - 1.1系统概述 ................................................................................................................................................. - 1 - 2 系统总体方案及硬件设计 ............................................................................................................................... - 2 - 2.1 系统总体方案 ........................................................................................................................................ - 2 - 2.1.1系统总体设计框图 ...................................................................................................................... - 2 - 2.1.2各模块简介 .................................................................................................................................. - 2 - 2.2 系统硬件设计 ........................................................................................................................................ - 5 - 2.2.1 单片机电路设计 ......................................................................................................................... - 5 - 2.2.2 DS18B20温度传感器电路设计.................................................................................................. - 6 - 2.2.3 显示电路设计 ............................................................................................................................. - 6 - 2.2.4 按键电路设计 ............................................................................................................................. - 7 - 2.2.5 报警电路设计 ............................................................................................................................. - 8 - 3 软件设计 ........................................................................................................................................................... - 9 - 3.1 DS18B20程序设计................................................................................................................................. - 9 - 3.1.1 DS18B20传感器操作流程.......................................................................................................... - 9 - 3.1.2 DS18B20传感器的指令表.......................................................................................................... - 9 - 3.1.3 DS18B20传感器的初始化时序................................................................................................ - 10 - 3.1.4 DS18B20传感器的读写时序.................................................................................................... - 10 - 3.1.5 DS18B20获取温度程序流程图................................................................................................ - 11 - 3.2 显示程序设计 ...................................................................................................................................... - 13 - 3.3 按键程序设计 ...................................................................................................................................... - 13 -4实物制作及调试 .............................................................................................................................................. - 14 -5电子综合设计体会 .......................................................................................................................................... - 15 -参考文献 ............................................................................................................................................................. - 16 -附1 源程序代码 .............................................................................................................................................. - 17 -附2 系统原理图 .............................................................................................................................................. - 32 -

基于单片机控制的数字温度计毕业设计

单片机课程设计报告 数字温度计

1 设计要求 ■基本范围-50℃-110℃ ■精度误差小于0.5℃ ■LED数码直读显示 2 扩展功能 ■实现语音报数 ■可以任意设定温度的上下限报警功能

数字温度计 摘要:随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。 关键词:单片机,数字控制,温度计,DS18B20,A T89S51 1 引言 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机A T89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。 2 总体设计方案 2.1数字温度计设计方案论证 2.1.1方案一 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。 2.1.2 方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。 2.2方案二的总体设计框图 温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。 图1总体设计方框图 2.2.1 主控制器

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

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

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

基于单片机温度计

单片机温度计 学院机械学院 班级 11机自创新1班 姓名安祥乐 学号 1110100221

摘要 (3) 1、引言 (3) 2 设计内容及性能指标 (4) 3 系统方案比较、设计与论证 (4) 3.1 主控制器模块 (4) 3.2 温度测量 (4) 3.3 设置温度 (5) 3.3 显示模块 (5) 3.4 电源选取 (6) 4 系统器件选择 (6) 5 硬件实现及单元电路设计 (7) 5.1 主控制模块 (7) 5.2 显示模块电路 (7) 5.3 数码管显示驱动电路 (8) 图6 驱动电路 (8) 5.4 温度传感器(DS18B20)电路 (8) 5.4.1 DS18B20基本介绍 (8) 5.4.2 DS18B20控制方法 (9) 5.4.3 DS18B20供电方式 (9) 6 系统软件设计 (10) 6.1 程序结构分析 (10) 6.2 系统程序流图 (10) 6.2.1 DS18B20初始化程序流程图 (11) 6.2.2 读温度子程序流程图 (12) 7 系统的安装与调试 (12) 7.1 安装步骤 (12) 7.2 电路的调试 (12) 结论 (13) 参考文献 (13) 附录1 整体电路原理图 (13) 附录2 部分源程序 (14)

单片机温度计 摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89C52单片机的温度检测系统,详细描述了利用温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度控制,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与STC89C52结合实现最简温度控制系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度的控制,有广泛的应用前景。 关键词:单片机;温度显示;STC89C52;DS18B20; 1、引言 随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法具有重要的意义。测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段: ①传统的分立式温度传感器 ②模拟集成温度传感器 ③智能集成温度传感器。 目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,STC89C52单片机为控制器构成的数字温度控制装置的工作原理及程序设计作了详细的介绍。其具有读数方便,方便控制,输

基于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摄氏度。 其电路图如下图所示:

单片机课程设计—数字温度计

第1章概述 1.1 数字温度计简介 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 此次课程设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。 1.2 设计内容及要求 本次单片机课程设计将以51系列单片机为核心,以开发板为平台;设计一个数字式温度计,要求使用温度传感器(可以采用DS18B20或采用AD590)测量温度,再经单片机处理后,由LED数码管显示测量的温度值。测温范围为0~100℃,精度误差在0.5℃以内。

第2章系统总体方案设计 2.1数字温度计设计的方案 在做数字温度计的单片机电路中,对信号的采集电路大多都是使用传感器,这是非常容易实现的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。采集之后,通过使用51系列的单片机,可以对数据进行相应的处理,再由LED显示电路对其数据进行显示。 2.2系统设计框图 温度计电路设计总体设计方框图如图 2.1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用6位LED数码管以串口传送数据实现温度显示。此外,还添加了报警系统,对温度实施监控。 图2.1 数字温度计框图

(完整版)基于51单片机的数字温度计

硬件课程设计实验报告课题:数字温度计 班级: 作者: 学号: 指导老师: 课设评价: 课设成绩:

目录 一.需求分析 (1) 二.概要设计 (1) 三.硬件电路设计 (3) 四.系统软件设计 (5) 五.软件仿真 (8) 六.实际连接与调试 (9) 七.本次课设的收获与感受 (11) 附录(程序源代码) (12)

一.需求分析 功能要求: 测量环境温度,采用接触式温度传感器测量,用数码管显示温度值。 设计要求: (一)功能要求 (1) 由4位数码管显示当前温度。 (2) 具备报警,报警门限通过键盘设置。 (3) 精度为0.5℃。 (二)画出参考的电路原理图 (三)画出主程序及子程序流程图、画出MCS51内部RAM分配图,并进行适当地解释。 (四)写出实现的程序及实现过程。并进行适当地解释说明。 二.概要设计 (一)方案选择 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 (二)系统框图 该系统可分为以下七个模块: (1)控制器:采用单片机STC89C52对采集的温度数据进行处理; (2)温度采集:采用DS18B20直接向控制器传输12位二进制数据; (3)温度显示:采用了4个LED共阴极七段数码管显示实际温度值; (4)门限设置:主要实现模式切换及上下门限温度的调节; (5)报警装置:采用发光二极管进行报警,低于低门限或高于高门限均使其发光; (6)复位电路:对整个系统进行复位; (7)时钟振荡模块:为整个系统提供统一的时钟周期。

51单片机常用数码管显示程序

51单片机常用数码管显示程序---之汇编篇 2010-07-21 03:35:46| 分类:单片机| 标签:51单片机数码管汇编程序|字号大中小订阅一)显示数据缓存寄存器70H,71H,72H,73H,74H,75H,76H,77H。 START: MOV 70H,#1 MOV 71H,#2 MOV 72H,#3 MOV 73H,#4 MOV 74H,#5 MOV 75H,#6 MOV 76H,#7 MOV 77H,#8 ACALL DISP AJMP START DISP: MOV R1,#70H MOV R5,#0FEH PLAY: MOV P0,#0FFH MOV A,R5 ANL P2,A

MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A LCALL DL1MS INC R1 MOV A,P2 JNB ACC.7,ENDOUT RL A MOV R5,A MOV P2,#0FFH AJMP PLAY ENDOUT: MOV P2,#0FFH MOV P0,#0FFH RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;共阳数码管 ; 1MS延时子程序,LED显示用 DL1MS: MOV R6,#14H ; DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET END 二)

START:;ORG 00H MOV 70H,#0C0H;0 MOV 71H,#0F9H;1 MOV 72H,#0A4H;2 MOV 73H,#0B0H;3 MOV 74H,#99H ;4 MOV 75H,#92H ;5 MOV 76H,#82H ;6 MOV 77H,#0F8H;7 ACALL DISP AJMP START DISP: MOV P0,70H CLR P2.7 ACALL DL1MS SETB P2.7 MOV P0,71H CLR P2.6 ACALL DL1MS SETB P2.6 MOV P0,72H CLR P2.5 ACALL DL1MS SETB P2.5 MOV P0,73H CLR P2.4 ACALL DL1MS SETB P2.4 MOV P0,74H CLR P2.3 ACALL DL1MS SETB P2.3 MOV P0,75H CLR P2.2 ACALL DL1MS SETB P2.2 MOV P0,76H CLR P2.1 ACALL DL1MS SETB P2.1 MOV P0,77H CLR P2.0 ACALL DL1MS SETB P2.0 RET

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

基于AT89S51的温度计 院系:电气与信息工程学院 专业:**** 班级:**** 学生姓名:**** 学号:**** 日期:2012年11月11号第一部分设计要求: 采用AT89C51单片机和LCD液晶显示器设计一个数字温度计,当外界温度变化时,显示屏上的温度值也随着变化。数字温度计的测温范围为-55°C到125°C之间。第二部分硬件原理框图: AT89C51单片机 LCD液晶显示电路 晶振振荡电路 复位电路 温度传感器采集电路 电源电路 硬件部分主要分为晶振振荡电路、复位电路、LCD液晶显示电路、DS18B20温度传感器采集电路、电源电路等部分组成。 第三部分硬件原理图:

硬件模块原理图: 1、晶振振荡电路 该电路是由两个电容和一个晶振组成,晶振产生基本的时钟信号它给单片机提供时钟信号。 2、复位电路 复位的主要作用是把特殊功能寄存器的数据刷新为默认数据,单片机在运算过程中由于干扰等外界原因造成寄存器中数据混乱不能使其正常继续执行程序或产生的结果不正确时均需要复位,以使程序重新开始运行。 3、LCD液晶显示电路 经过温度传感器,将采集到的温度信息传给单片机,单片机处理后又将信息发给P0口,P0口与LCD的数据口相连接,液晶屏上会显示采集到的温度值。 4、温度传感器采集电路

单线数字温度传感器DS18B20测量温度范围为 -55°C~+125°C,-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为± 2°C 。DS18B20的管脚排列如下: DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。5、电源电路 设计中利用桥式整流和电容滤波以及7805集成稳压来输出+5V电压,以满足AT89C51、LCD1602、DS18B20等器件的工作需求,原理如下: 第四部分程序流程图 发温度转换开始命令 结束 图2 温度转换命令子程序流程图 N 图1 主程序流程图 第五部分总结:

相关文档
相关文档 最新文档