资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单片机应用系统设计单片机应用系统设计课课 题:题:AT89C51 单片机的多点温度测量单片机的多点温度测量 姓姓 名:名: 班班 级:级: 学学 号:号: 指导老师:指导老师: 日日 期:期: 一、绪论一、绪论 在现代工业控制中和智能化仪表中,对于温度的控制,恒温等有较高的要求,如对食品 的管理,冰箱的恒温控制,而且现在越来越多的地方用到多点温度测量,比如冰箱的保鲜 层和冷冻层是不同的温度这就需要多点的测量和显示可以让用户直观的看到温度值,并根 据需要调节冰箱的温。它还在其他领域有着广泛的应用,如:消防电气的非破坏性温度检 测,电力、电讯设备之过热故障预知检测,空调系统的温度检测。 。 。 。 。 。温度检测系统应用 十分广阔。 本设计采用 DALLAS 最新单线数字温度传感器 DS18B20 简介新的“一线器件“体积更小、 适用电压更宽、更经济 DALLAS 半导体公司的数字化温度传感器 DS18B20 是世界上第一片 支持“一线总线“,测量温度范围为-55C+125C,在-10+85C 范围内,精度为0.5C 二、设计过程及工艺要求二、设计过程及工艺要求 1、基本功能 (1)检测两点温度 (2)两秒间隔循环显示温度 2、主要技术参数 测温范围:-30到+99测量精度:0.0625显示精度:0.1显示方法:LCD 循环显示 3、系统设计 系统使用 AT89C51 单片机对两个 DS18B20 进行数据采集,并通过 1602LCD 液晶显示 器显示所采集的温度。DS18B20 以单总线协议工作,51 单片机首先分别发送复位脉冲,使信号上所有的 DS18B20 芯片都被复位,程序先跳过 ROM,启动 DS18B20 进行温度变换,再读取存储器 的第一位和第二位读取温度,通过 I/O 口传到 1602LCD 显示。DS18B201 2 3图(1)DS18B20 引脚图 引脚定义如图(1): (1) GND 为电源地; (2) DQ 为数字信号输入/输出端; (3) Vcc 为外接供电电源输入端(在寄生电源接线方式时接地) 。 4、设计原理框图DS18B20(1 )DS18B20(2 )1620LCD图(2)原理框图 三、硬件设计 本系统硬件部分由三个模块组成: 1、 单片机最小系统:12M 晶振、复位电路、AT89C51 单片机 2、 2 个 DS18B20 温度传感器 3、 一个 LCD 显示屏(配合排阻)DS18B20DS18B20 内部结构内部结构(1) DS18B20 的内部结构如下图所示。图(3) DS18B20 内部结构图DS18B20 有 4 个主要的数据部件: 64 位激光 ROM。64 位激光 ROM 从高位到低位依次为 8 位 CRC、48 位序列号和 8 位家族代码(28H)组成。 温度灵敏元件。 非易失性温度报警触发器 TH 和 TL。可通过软件写入用户报警上下限值。 配置寄存器。配置寄存器为高速暂存存储器中的第五个字节。DS18B20 在 0 工作时按此寄存器中的分辨率将温度转换成相应精度的数值,其各位定义如图(4)所示。最小 AT89 C51 系统TMR1R011111MSBDS18B20 配置寄存器结构图LSB图(4)其中,TM:测试模式标志位,出厂时被写入 0,不能改变;R0、R1:温度计分辨率设置位,其对应四种分辨率如下表所列,出厂时 R0、R1 置为缺省值:R0=1,R1=1(即 12 位分辨率),用户可根据需要改写配置寄存器以获得合适的分辨率。配置寄存器与分辨率关系表 :R0R1温度计分辨率/bit最大转换时间/us00993.750110187.510113751112750图(5)(2) 高速暂存存储器高速暂存存储器由 9 个字节组成,其分配如下图所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第 0 和第 1 个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如图所示。对应的温度计算:当符号位 S=0 时,直接将二进制位转换为十进制;当 S=1 时,先将补码变为原码,再计算十进制值。温度低位温度高位THTL配置保留保留保留8 位 CRCLSBDS18B20 存储器映像图MSB图(6)温度值格式图 DS18B20 温度数据表:23232222212120202-12-12-22-22-32-32-42-4MSBMSBLSBLSBS SS SS SS SS S262625252424图(7)典型对应的温度值表:温度/二进制表示十六进制表示+125 +25.0625+10.125+0.50-0.5-10.125-25.0625-5500000111 1101000000000001 1001000100000000 1010001000000000 0000100000000000 0000000011111111 1111100011111111 0101111011111110 0110111111111100 1001000007D0H0191H00A2H0008H0000HFFF8HFF5EHFE6FHFC90H图(8)典型对应的温度值表 单片机最小系统:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X112MHzC1 22pFC2 22pFGNDC320uFR11k+5VGND图(9)单片机最小系统LCD 显示屏电路:+5VD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1 LM016L2 3 4 5 6 7 8 91RP110K+5V图(10)LCD 显示屏电路 具体总体电路图如下:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C5130.8DQ2VCC3GND1FIRSTDS18B20+5VD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1 LM016LX112MHzC1 22pFC2 22pFGNDC320uFR11k+5VGND2 3 4 5 6 7 8 91RP110K+5V17.2DQ2VCC3GND1SECONDDS18B20图(11)总体硬件图四、软件设计四、软件设计 1、主程序方案 主程序调用了 4 个子程序和一个欢迎开机画面的程序,4 个子程序分别是液晶初始化、 DS18B201 的初始化、DS18B202 的初始化、和液晶显示数据的程序。 (1)液晶初始化程序:8 位数据端口,2 行显示,5*7 点阵、开启显示, 无光标、清屏、AC 递增, 画面不动。 (2)分别对两个 DS18B20 温度传感器初始化程序:初始化,读写一个字节, (3)液晶显示的子程序:确定液晶字符的输入位置,将字符输出到液晶显示 (4)液晶显示温度程序:先读 DS18B20 当前温度,将温度转化成液晶字符显示。 将各个功能程序以子程序的形式写好,当写主程序的时候,只需要调用子程序调用指令 使得程序结构清晰,无论是修改还是维护都比较方便。将功能程序段写成子程序的形式, 除了方便调用之外,还有一个好处那就是以后写程序的时候如果要用到,就可以直接调用 这个单元功能模块。 2、流程图 主程序流程图:液晶初始化两个 DS18B20 初始化显示开机画面延时 2 秒显示第一个温度延时 2 秒显示第二个温度延时 2 秒图(11)主程序流程图开始开始功能设置(0x38) 16*2 显示 8 位数据、5*7 点阵 不忙检测,执行三次延时 5ms开显示,无光标 (0xc0)延时 5ms设置输入模式 (0x06)延时 5ms清除显示器 (0x01)延时 5ms退出返回图(12)液晶初始化流程图DS18B20 初始化发跳过 ROM 命令发温度读取命令清 DQ 准备发送延时 1us 以上读一位数据延时 #include #include #define uint unsigned int #define uchar unsigned char uchar temp_value; /温度值 uchar TempBuffer7; void show_time(); /液晶显示程序 uchar temp_value1; /温度值 uchar TempBuffer17; char xiaoshu=0; char xiaoshu1=0; void show_time1(); /*1602 液晶显示部分子程序*/char done,count,temp,flag,up_flag,down_flag; /Port Definitions* sbit LcdRs= P20; sbit LcdRw= P21; sbit LcdEn = P22; sfr DBPort = 0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 sbit DQ = P17; /温度传送数据 IO 口 sbit DQ1=P16; /内部等待函数 * unsigned char LCD_Wait(void) LcdRs=0; LcdRw=1;_nop_(); LcdEn=1;_nop_();LcdEn=0; return DBPort; /向 LCD 写入命令或数据 * #define LCD_COMMAND0 / Command #define LCD_DATA1 / Data #define LCD_CLEAR_SCREEN 0x01 / 清屏 #define LCD_HOMING 0x
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号