版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.基于 51 单片机的数字温度计设计一课题选择随着时代的发展,控制智能化,仪器小型化, 功耗微量化得到广泛关注。单片机控制系统无疑在这方面起到了举足轻重的作用。单片机的应用系统设计业已成为新的技术热点,其中数字温度计就是一个典型的例子, 它可广泛应用与生产生活的各个方面, 具有巨大的市场前景。二设计目的1. 理解掌握 51 单片机的功能和实际应用。2. 掌握仿真开发软件的使用。3. 掌握数字式温度计电路的设计、组装与调试方法。三实验要求1. 以 51 系列单片机为核心器件,组成一个数字式温度计。2. 采用数字式温度传感器为检测器件,进行单点温度检测。3. 温度显示采用 4 位 led数码管显示
2、,三位整数,一位小数。四设计思路1. 根据设计要求,选择 stc89c51rc单片机为核心器件。2.温度检测采用ds18b20 数字式温度传感器。与单片机的接口为p3.6 引脚。3. 采用 usb 数据线连接充电宝供电,接电后由按钮开关控制电路供电。硬件电路设计总体框图为图 1:五系统的硬件构成及功能1. 主控制器单片机 stc89c51rc具有低电压供电和体积小等特点, 有 40 个引脚 ,其仿真图像如下图所示:.2. 显示电路显示电路采用 4 位共阳 led数码管, 从 p3 口 rxd,txd串口输出段码。 led数码管在仿真软件中如下图所示:3. 温度传感器ds18b20 是美国 da
3、llas半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 912 位的数字值读数方式。 ds18b20的性能特点如下:1. 独特的单线接口仅需一个端口引脚进行通讯。2. 简单的多点分布应用。3. 无需外部器件。4. 可通过数据线供电。5. 零待机功耗。6. 测温范围 -55+125 摄氏度。其电路图如下图所示:.在仿真软件中如下图所示:ds18b20 的测温原理图如下图所示:在正常测温情况下,ds18b20的测温分辨力为0.5 摄氏度,可采用下述方法获得高分辨率的.温度测量结果。 :首先用 ds18b20
4、提供的读暂存器指令( beh)读出以 0.5 摄氏度为分辨率的温度测量结果, 然后切去测量结果中的最低有效位 ( lsb),得到所测实际温度的整数部分tz,然后再利用 beh 指令取计数器 1 的计数剩余值 cs 和每度计数值 cd。考虑到 ds18b20 测量温度的整数部分以 0.25、0.75 摄氏度为进位界限的关系, 实际温度 ts可以用下式计算:ts=(tz-0.25)+(cd-cs)/cd六系统整体硬件电路根据设计要求与设计思路,硬件电路设计框图如下图所示,在仿真软件proteus 上完成,其中 led 数码管以动态扫描法实现温度显示,由四个pnp 型晶体管q2,q3, q4, q5
5、 和 8个电阻组成。基极与单片机的 p1.0, p1.1, p1.2 连接, ds18b20的数据 i/o 端与单片机 p3.6 引脚连接。外部晶振为 12mhz。.七系统程序设计数字式温度计的应用程序主要包括主程序,温度检测程序,温度转换程序,led显示程序等。其思路如下图所示:八测量及其结果分析.1. proteus 仿真结果软件方面,在proteus 编译下进行,源程序编译及仿真调试。在软件中选定传感器后可对其进行环境温度设置,如下图,将环境温度设为34.9.2.硬件测试结果在硬件测试方面,检查电路板及焊接的质量情况,在焊接无误后通电检查led显示器。其中成品图如图所示:.通电后,室温下
6、led的示数如图所示九设计心得体会本次实验对我们组来说是一次难得的经历,首先是第一次接触了仿真软件proteus,在使用时经历了很多次失败,因为这款软件与以前使用过的软件有很大不同,使用时不停出错,接线时由于原件放置不合理而接的杂乱无章,输入源程序时还算顺利,显示结果比较满意。其次是程序设计, 我们在参考别人成功先例的基础上根据自己设计的需要进行编程,其中经历了不少曲折, 最后我的收获是编程一定要细心,针对每一个细节,稍有疏忽程序就不能正常运行。在这次的实践与学习中,尽管期间困难重重,但我们还是从中学习了不少新的知识和技能,也体会到了经历失败最终成功的喜悦。总之,通过这次电工电子综合设计,我收
7、获了很多,我希望自己在今后的各项研究工作中也坚持这种精神。十附录源程序#include#include #define uchar unsigned char#define uintunsigned intsbit data = p11; /ds18b20 接入口ucharcodetable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/.共阴极字型码int temp; / 温度值int ss;/ 中间的一个变量int dd;int j;uchar data b;/ 定时器中断次
8、数uchar data buf4;/字型显示中间变量int alarmh=320;/ 默认报警值int alarml=100;/ 定义开关的接入口sbit k1=p25;/+sbit k2=p26;/-sbit k3=p27;/ 确认sbit k4=p24; / 切换sbit bell=p10; / 蜂鸣器sbit hlight=p12; / 正温指示灯sbit llight=p13; / 负温度指示灯sbit warn=p14; / 报警指示灯sbit red=p16;/ 温度上限设置指示灯sbit green=p17; / 温度下限设置指示灯bit set=0;/ 初始化bit flag=
9、0;/ 设置标志int n;/ 函数的声明区void key_to1();void key_to2();void delay(uint);void key();void show();/ 函数的定义区/* 延时子函数 */void delay(uint num)while(num-) ;/ds18b20 温度传感器所需函数,分为初始化,读写字节,读取温度4 个函数init_ds18b20(void)/ 传感器初始化uchar x=0;data = 1;/dq 复位delay(10); / 稍做延时data = 0;/ 单片机将dq 拉低delay(80); / 精确延时大于 480us/450
10、.data = 1;/ 拉高总线delay(20);x=data; / 稍做延时后 如果 x=0 则初始化成功 delay(30);readonechar(void) / 读一个字节uchar i=0;uchar dat = 0;for (i=8;i0;i-)data = 0; / 给脉冲信号dat=1;data = 1; / 给脉冲信号if(data)dat|=0x80;delay(8);return(dat);writeonechar(unsigned char dat)/ 写一个字节uchar i=0;for (i=8; i0; i-)data = 0;data = dat&0x01;d
11、elay(10);data = 1;dat=1;delay(8);int readtemperature(void) / 读取温度uchar a=0;uchar b=0;int t=0;float tt=0;init_ds18b20();writeonechar(0xcc); / 跳过读序号列号的操作 writeonechar(0x44); / 启动温度转换 init_ds18b20();writeonechar(0xcc); / 跳过读序号列号的操作.x=1 则初始化失败.writeonechar(0xbe); / 读取温度寄存器等(共可读9 个寄存器)前两个就是温度a=readonecha
12、r();/ 低位b=readonechar();/ 高位t=b;t=8;t=t|a;tt=t*0.0625;t= tt*10+0.5;return(t);void display00()/*显示负值子函数dd=-(temp-1);buf1=dd/100;buf2=dd/100;buf3=dd%100/10;buf0=dd%10;/ 动态显示for(j=0;j5;j+)p2=0xff;/初始灯为灭的p0=0x00;p2=0xfd; / 显示小数点p0=0x80; / 显示小数点delay(100);p2=0xff; /初始灯为灭的p0=0x00;p2=0xf7; / 片选 lcd1p0=0x40
13、;delay(100);p2=0xff;p0=0x00;p2=0xfb; / 片选 lcd2p0=tablebuf2;delay(100);p2=0xff;p0=0x00;p2=0xfd;/ 片选 lcd3p0=tablebuf3;delay(100);p2=0xff;p0=0x00;p2=0xfe;p0=tablebuf0;/ 片选 lcd4.delay(100);p2=0xff;/ 显示正值子函数void display()buf1=temp/1000;/显示百位buf2=temp/100%10;/显示十位buf3=temp%100/10;/显示个位buf0=temp%10; / 小数位f
14、or(j=0;j3;j+)p2=0xff;/初始灯为灭的p0=0x00;p2=0xfd; / 显示小数点p0=0x80; / 显示小数点delay(300);p2=0xff;/初始灯为灭的p0=0x00;p2=0xf7;/ 片选 lcd1p0=tablebuf1;delay(300);p2=0xff;p0=0x00;p2=0xfb;/ 片选 lcd2p0=tablebuf2;delay(300);p2=0xff;p0=0x00;p2=0xfd;/ 片选 lcd3p0=tablebuf3;delay(300);p2=0xff;p0=0x00;p2=0xfe;p0=tablebuf0;/ 片选 l
15、cd4delay(300);p2=0xff;void key()/ 按键扫描子程序if(k1!=1).delay(20);if(k1!=1)while(k1!=1) key_to1(); for(n=0;n8;n+) show();if(k2!=1)delay(20);if(k2!=1)while(k2!=1) key_to2();for(n=0;n=1100)temp=-550;.if(set=0)alarmh=temp;else alarml=temp;void key_to2()tr0=0;/ 关定时器temp-=10;if(tempalarmh|temp=0)hlight=1;llight=0;display();if(temp0).hlight=0;llight=1;display00();void main()tcon=0x01; /定时器 t0 工作在 01 模式下tmod=0x01;th0=0xd8;/ 装入初值tl0=0xf0;ea=1; / 开总中断et0=1; / 开 t0 中断tr0=1; /t0 开始运行计数ex0=1; / 开外部中断0for(n=0;n500
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- RB/T 230-2024全装修服务认证要求
- RB/T 235-2024质量管理体系分级认证要求和评价准则钢铁行业
- 安徽铜陵、黄山、宣城(三市二模)2026届高三4月份质量检测(全)-生物试题
- 集美大学《旅游学概论》2025-2026学年期末试卷
- 泉州经贸职业技术学院《新闻采访与写作》2025-2026学年期末试卷
- 安徽冶金科技职业学院《思想政治教育课程与教学论》2025-2026学年期末试卷
- 南昌大学共青学院《民族学调查与研究方法》2025-2026学年期末试卷
- 长春工程学院《微观经济学》2025-2026学年期末试卷
- 福州墨尔本理工职业学院《广告文案写作》2025-2026学年期末试卷
- 厦门理工学院《金融学基础》2025-2026学年期末试卷
- 深圳地铁车站出入口施工组织设计
- 华龙压剪机基础施工方案
- 湖北省武汉市2025届中考历史试卷(含答案)
- 中国扶贫电站管理办法
- 智慧树知道网课《大学写作(山东联盟)》课后章节测试满分答案
- 2025年智能快递柜与快递行业智能化物流运营模式分析报告
- 儿童抽动症专家共识(2025)解读 4
- 四川省土地开发项目预算定额标准
- 文物建筑清洁方案设计
- 2025-2030中国高端装备制造业技能人才缺口与培养体系构建
- 2025年长沙市中考语文试卷真题(含答案及解析)
评论
0/150
提交评论