项目13 数字温度计的设计讲解

上传人:我** 文档编号:116719327 上传时间:2019-11-17 格式:PPT 页数:74 大小:678.50KB
返回 下载 相关 举报
项目13 数字温度计的设计讲解_第1页
第1页 / 共74页
项目13 数字温度计的设计讲解_第2页
第2页 / 共74页
项目13 数字温度计的设计讲解_第3页
第3页 / 共74页
项目13 数字温度计的设计讲解_第4页
第4页 / 共74页
项目13 数字温度计的设计讲解_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《项目13 数字温度计的设计讲解》由会员分享,可在线阅读,更多相关《项目13 数字温度计的设计讲解(74页珍藏版)》请在金锄头文库上搜索。

1、 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 知识目标: 1. 掌握独立式键盘的编程方法。 2. 掌握单片机定时器的编程方法。 3. 熟练运用C语言程序中的数组、指针、字符串等知识。 能力目标: 1. 培养学生系统的熟悉单片机C语言体系内容,熟悉程序设计方法 和开发流程。 2. 培养学生具有综合运用所学的理论知识去解决实际问题的能 力。 3. 培养学生调查研究、查阅技术文献、资料、手册的能力。 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年

2、年6 6月月 项目13 数字温度计的设计 随着现代信息技术的飞速发展和传统工业 改造的逐步实现,能够独立工作的温度检 测和显示系统应用于诸多领域。传统的温 度检测以热敏电阻为温度敏感元件。热敏 电阻的成本低,但需后续信号处理电路, 而且可靠性相对较差,测温准确度低,检 测系统也有一定的误差。为此,我们设计 一个具有读数方便,测温范围广,测温精 确,数字显示,适用范围宽等的数字温度 计。 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 要求: (1)测量并显示温度值, 温 度测量误差1。 (2)测量范

3、围:0100 。 (3)交替显示当前测量时间 、温度。 (4)可调整显示时间。 (5)测量温度超过设定的温 度上、下限,启动蜂鸣器和 指示灯报警。 (6)连接多个温度传感器, 微控制器能够识别不同的传 感器,显示相应的温度值, 用于监测多个区域的环境温 度 一、提出任务 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 1系统硬件电路设计 根据设计任务的方框图,设计出如图13.1所 示的电路原理图,根据电路原理图制作出如图 13.2所示的电路板图。在电路原理图中微控制器 采用AT89S52单片机,温度

4、传感器采用DS18B20 ,用LCM1602液晶显示器显示当前时间和温度 ,用独立式按键来调整时间、设置最高报警温 度和最低报警温度,当前温度超出预设的温度 范围时用蜂鸣器和发光二极管来作为声光报警 提示。单片机的I/O端口分配如表13.1所示。 二、分析任务 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 表13.1 单片机I/O端口分配表 单片机I/O口外围硬件电路单片机I/O口外围硬件电路 P0口液晶显示器数据口P1.3声光报警电路 P1.0液晶显示器RS端P3.0P3.5按键电 路 P1.1

5、液晶显示器RW端P3.7温度传感器 DS18B20 P1.2液晶显示器E端 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 图13.1 系统硬件电路原理图 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 图13.1 系统硬件电路板图 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 (1)主程序 图13.2 主程

6、序流程图 主程序主要是对系统进 行初始化,包括设置定 时器、液晶显示初始化 、调用时间显示子程序 ,根据按键K1还是K2按 下来选择是显示1号温度 传感器的温度还是2号温 度传感器的温度。图 13.2是主程序的流程图 。 2.系统软件的设计 图13.2 主程序流程图 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 (2)读取温度子程序 读出温度子程序的主要功能是读出RAM中的9个字节, 在读出时需进行CRC校验,校验有错时不进行温度数据 的改写。其程序流程图如图13.3所示。 (3)时间调整子函数

7、调整时间时,先按下K3进入时间调整状态,此时按下 K1则时间的分加一,K2按下则分减一,K4按下则时加 一,K5按下则时减一,K6按下则确认退出。时间调整 程序流程图如图13.4所示。 (4)设置报警温度子程序 由于有2个温度传感器DS18B20,每一路都要设置最高 和最低报警温度。使得设置报警温度子程序比较复杂, 其程序流程如图13.5所示。 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 图13.3 读出温度流程图图13.4 时间调整程序流程图 单片机C语言应用技术与实践张永格 何乃味主编 北京

8、交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 图13.5 设置报警温度子程序流程图 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 #include typedef bit bool; unsigned char bol; typedef unsigned char bl; unsigned char t_1,t_2,t_3,t_4,t_5,t_6; unsigned char th1=20; / 预置1 号DS18B20最高报警温度 20 unsig

9、ned char tl1=10; / 预置1 号DS18B20最低报警温度 10 unsigned char th2=21; / 预置2 号DS18B20最高报警温度 21 unsigned char tl2=11; / 预置2 号DS18B20最低报警温度 11 unsigned char tab_1,tab_2,tab_3,tab_4,n=0; unsigned int t,h,m,s; sbit DQ=P37; / 接DS18B20 sbit fm=P13; /接蜂鸣器 sbit RS=P10; /接液晶 1602RS端 sbit RW=P11; / 接液晶 1602RWW端 sbit

10、E=P12; / 接液晶1602E 端 3.参考源程序 单片机C语言应用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 sbit k1=P30;/接按键 K1 sbit k2=P31;/接按键 K2 sbit k3=P32;/接按键 K3 sbit k4=P33;/接按键 K4 sbit k5=P34;/接按键 K2 sbit k6=P35; / 接按键K6 bl code tab_lcd10=0,1,2,3,4,5, 6,7,8,9;/显示字符 bl code from1=.; bl code from11=“

11、“; unsigned char data temp_alarm2=0x00,0x00;/ 温度报警值存放处 unsigned char data tab_18b202=0x00,0x00;/ 高低8位温度存放 unsigned char data dip3=0x00,0x00,0x00;/显 示位存放 unsigned char code db16=0x00,0x01,0x01,0x02, 0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x0 8,0x09,0x09;/小数转表格 3.参考源程序 单片机C语言应用技术与实践张永格 何乃味主编 北京

12、交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 unsigned char code Romcode28 = 0x28,0x66,0x92,0x8c,0x01,0x00,0x0 0,0x3b, /18B20的64 位ROM(1号传感器ROM) 0x28,0x5c,0xd2,0xb7,0x01,0x00,0x 00,0x2c; /2号传感器 ROM /*延时程序 */ void delay_us(unsigned int num) while( -num ); /*MS级延时子 程序*/ void delay_ms(int ms) int i; wh

13、ile(ms-) for(i=0;i0;i-) DQ=0; adat=1;/将数据从18B20移出 DQ=1; if(DQ=1) adat|=0x80;/提取移出的数 据 delay_us(4); return adat;/将提取数值返回给adat变量吸 收 /*向DS18B20写字节函 数*/ winchar(unsigned char bdat)/定义写入变量 为bdat unsigned char x=0; for(x=8;x0;x-) DQ=0; DQ=bdat/取出数据低位 delay_us(5); DQ=1; bdat=1;/将数据按位移入18B20 3.参考源程序 单片机C语言应

14、用技术与实践张永格 何乃味主编 北京交通大学出版社北京交通大学出版社 20092009年年6 6月月 项目13 数字温度计的设计 /*从 DS18B20读取温度函数 * */ read_18b20 (unsigned char x) unsigned char i; init_18B20();/初始化18B20 winchar(0xcc); winchar(0x44);/启动温度转 换 init_18B20(); /初始化 18B20 winchar(0x55); for(i=0;i4)|(ta b_18b201/提取整数部 分 tab_1=dip0;/小数位 tab_2=dip1%10;/个位

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号