教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

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

来源:网络收集 时间:2026-09-05
导读: 基于AT89S52单片机的数字温度计设计 一 引言 在生活和生产中,经常要用到一些测温设备,但是传统的测温设备具有制作成本高、硬件电、和软件设计复杂等缺点。基于AT89S52单片机的数字温度计具有制作简单、成本低、读数方便、测温范围广和测温准确等优点,应用

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

一 引言

在生活和生产中,经常要用到一些测温设备,但是传统的测温设备具有制作成本高、硬件电、和软件设计复杂等缺点。基于AT89S52单片机的数字温度计具有制作简单、成本低、读数方便、测温范围广和测温准确等优点,应用前景广阔。

二 项目要求

基于AT89S52单片机的数字温度计设计具体要求如下: (1)温度值用LED显示。

(2)围为-30℃~100℃,且测量误差不得大于±0.5℃。 (3)成本的体积、质量要尽可能小。

三 系统设计

1 框图设计

根据设计要求分析,基于AT89S52单片机的数字温度计设计由AT89S52单片机控制器、电源、显示电路、温度传感器、复位电路和时钟电路组成,系统框图如图1所示。电源给整个电路供电,显示电路显示温度值,时钟电路为AT89S52提供时钟频率。传感器采用美国DALLAS半导体公司生产的一种智能温度传感器DS18B20,其测温范围为-55~125℃,最高分辨率可达0.0625℃,完全符合设计要求。

电源 复位电路 AT89S52 控制器 显示电路 时钟电路 DS18B20

图一 基于AT89S52单片机的数字温度计系统框图

2 知识点

本项目需要通过学习和查阅资料,掌握和了解如下知识: ? +5V电源原理及设计。

? ? ? ? ? ? ? ?

单片机复位电路工作原理及设计。 单片机晶振电路工作原理及设计。 按键电路的设计。 数码管的特性及使用。 DS18B20的特性及使用。 74LS07的特性及使用。 AT89S52单片机引脚。 单片机C语言程序设计。

四 硬件设计

1 电路原理图

控制器使用单片机AT89S52,测温传感器使用DS18B20,用4位共阳极LED数码管以动态扫描法实现温度显示,电路图可见仿真图所示。

2 元件清单

基于AT89S52单片机的数字温度计元件清单如表1所示。

表1 基于AT89S52单片机的数字温度计元件清单 元件名称 单片机 晶振 电容 电解电容 电阻 集成块 集成块 集成块 电阻 按键 电源 七段4位 数码管 电阻

型号 AT89S52 12MHZ 30Pf 10μF∕10V 1KΩ 74LS07 DS18B20 DS18B20 4.7 KΩ +5V∕0.5A 4位 4.7 KΩ 1 1 1 1 1 1 1 1 数量∕个 1 1 2 1 5 用途 控制核心 晶振电路 晶振电路 复位电路 复位电路 上拉电阻 显示驱动 显示驱动 测温电路 复位电路 复位电路 提供+5V 显示电路 测温电路 五 软件设计

1 程序流程图

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20测量的当前温度值,温度测试每1S进行一次。这样可以在1S之内测量一次被测温度,其程序流程图如图3所示。

读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写,其程序流程图如图4所示。

初始化 发DS18B20复位命令 发跳过ROM命令 调用显示子程序 N 1S到? 发读取温度命令 读取操作,CRC校验 Y Y 初次上电 9字节完? N CRC校验正? 读出温度值温度计算处理显示数据刷新 移入温度暂存器 发温度转换开始命令 结束 图3 主程序流程图 图4 读温度流程图

温度转换命令子程序主要是发温度转换开始命令,采用12位分辨率转换时间约为750ms。程序设计中采用1s显示程序延时等待转换的完成。计算温度子程序将RAM中读取值进行BCD码地转换运算,并进行温度值正负的判定,显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。

2 程序清单

基于AT89S52单片机的数字温度计程序清单如下: #include \

#include \ //延时函数用 #define Disdata P1 //段码输出口 #define discan P3 //扫描口 #define uchar unsigned char #define uint unsigned int

sbit DQ=P3^7; //温度输入口

sbit DIN=P1^7; //LED小数点控制 uint h; uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//温度小数部分用查表法

uchar code dis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};

/* 共阳LED段码表 \ \ \ \ \ \ \ \ \ \不亮\ uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; // 列扫描控制字

uchar data temp_data[2]={0x00,0x00}; // 读出温度暂放

uchar data display[5]={0x00,0x00,0x00,0x00,0x00};//显示单元数据,共4个数据,一个运算暂存用

void delay(uint t)//11微秒延时函数 {

for(;t>0;t--); }

scan()//显示扫描函数 {

char k;

for(k=0;k<4;k++) //四位LED扫描控制 {

Disdata=dis_7[display[k]]; if(k==1){DIN=0;}

discan=~scan_con[k];delay(90);discan=0x00; } }

ow_reset(void)//18B20复位函数 {

char presence=1; while(presence) {

while(presence) { DQ=1;_nop_();_nop_(); DQ=0; delay(50); // 550us DQ=1; delay(6); // 66us presence=DQ; // presence=0继续下一步 }

delay(45); //延时500us presence = ~DQ;

}

DQ=1;

}

void write_byte(uchar val)//18B20写命令函数 {

uchar i;

for (i=8; i>0; i--) // {

DQ=1;_nop_();_nop_();

DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();//5us DQ = val&0x01; //最低位移出 delay(6); //66us

val=val/2; //右移一位 }

DQ = 1; delay(1); }

uchar read_byte(void)//从总线上读取一个字节 {

uchar i;

uchar value = 0; for (i=8;i>0;i--) {

DQ=1;_nop_();_nop_(); value>>=1;

DQ = 0; //

_nop_();_nop_();_nop_();_nop_(); //4us

DQ = 1;_nop_();_nop_();_nop_();_nop_(); //4us if(DQ)value|=0x80;

delay(6); //66us }

DQ=1;

return(value); }

read_temp()//读出温度函数 {

ow_reset(); //总线复位

write_byte(0xCC); // 发Skip ROM命令 write_byte(0xBE); // 发读命令

…… 此处隐藏:1495字,全部文档内容请下载后查看。喜欢就下载吧 ……
基于AT89S52单片机的数字温度计设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/605401.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)