ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:526.18KB ,
资源ID:7154194      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7154194.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于某51单片机的数字温度计设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于某51单片机的数字温度计设计.docx

1、基于某51单片机的数字温度计设计基于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是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统

3、的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:1.独特的单线接口仅需一个端口引脚进行通讯。2.简单的多点分布应用。3.无需外部器件。4.可通过数据线供电。5.零待机功耗。6.测温范围-55+125摄氏度。其电路图如下图所示:在仿真软件中如下图所示:DS18B20的测温原理图如下图所示:在正常测温情况下,DS18B20的测温分辨力为0.5摄氏度,可采用下述方法获得高分辨率的温度测量结果。:首先用DS18B20提供的读暂存器指令(BEH)读出以0.5摄氏度为分辨率的温度测量结果,然后切去测量结果中的最低有

4、效位(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和8个电阻组成。基极与单片机的P1.0,P1.1,P1.2连接,DS18B20的数据I/O端与单片机P3.6引脚连接。外部晶振为12MHZ。七系统

5、程序设计数字式温度计的应用程序主要包括主程序,温度检测程序,温度转换程序,LED显示程序等。其思路如下图所示:八测量及其结果分析1.Proteus仿真结果软件方面,在Proteus编译下进行,源程序编译及仿真调试。在软件中选定传感器后可对其进行环境温度设置,如下图,将环境温度设为34.9.2.硬件测试结果在硬件测试方面,检查电路板及焊接的质量情况,在焊接无误后通电检查LED显示器。其中成品图如图所示:通电后,室温下LED的示数如图所示九设计心得体会本次实验对我们组来说是一次难得的经历,首先是第一次接触了仿真软件Proteus,在使用时经历了很多次失败,因为这款软件与以前使用过的软件有很大不同,

6、使用时不停出错,接线时由于原件放置不合理而接的杂乱无章,输入源程序时还算顺利,显示结果比较满意。其次是程序设计,我们在参考别人成功先例的基础上根据自己设计的需要进行编程,其中经历了不少曲折,最后我的收获是编程一定要细心,针对每一个细节,稍有疏忽程序就不能正常运行。在这次的实践与学习中,尽管期间困难重重,但我们还是从中学习了不少新的知识和技能,也体会到了经历失败最终成功的喜悦。总之,通过这次电工电子综合设计,我收获了很多,我希望自己在今后的各项研究工作中也坚持这种精神。十附录 源程序#include#include #defineucharunsignedchar #defineuint uns

7、ignedintsbitDATA = P11; /DS18B20接入口uchar code table=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;/定时器中断次数uchar data buf4;/字型显示中间变量int alarmH=320; /默认报警值int alarmL=100;/定义开关的接入口sbitk1=P25;/+sbitk2=P26;/-s

8、bitk3=P27;/确认sbitk4=P24; /切换sbitbell=P10; /蜂鸣器sbitHLight=P12; /正温指示灯sbitLLight=P13; /负温度指示灯sbitwarn=P14;/报警指示灯sbitRed=P16; /温度上限设置指示灯sbitGreen=P17; /温度下限设置指示灯bit set=0; /初始化bit Flag=0; /设置标志int n;/函数的声明区void key_to1();void key_to2();void delay(uint); void key();void Show();/函数的定义区/*延时子函数*/void delay

9、(uint num) while(num-) ;/DS18b20温度传感器所需函数,分为初始化,读写字节,读取温度4个函数Init_DS18B20(void) /传感器初始化 uchar x=0; DATA = 1; /DQ复位 delay(10);/稍做延时 DATA = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us /450 DATA = 1; /拉高总线 delay(20); x=DATA; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(30);ReadOneChar(void)/读一个字节 uchar i=0; uchar dat

10、 = 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; delay(10); DATA = 1; dat=1; delay(8);int ReadTemperature(void) /读取温度 uchar a=0; uchar b=0; int t=0

11、; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列号的操作 WriteOneChar(0x44); / 启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar();/低位 b=ReadOneChar();/高位 t=b; t=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; return(t);voiddisplay00() /*

12、显示负值子函数 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; /片选LCD1 P0=0x40; delay(100); P2=0xff; P0=0x00; P2=0xfb;/片选LCD2 P0=tablebuf2; delay(100); P2=0xff;

13、 P0=0x00; P2=0Xfd;/片选LCD3 P0=tablebuf3; delay(100); P2=0xff; P0=0x00; P2=0Xfe; P0=tablebuf0; /片选LCD4 delay(100); P2=0xff; /显示正值子函数voiddisplay() buf1=temp/1000;/显示百位 buf2=temp/100%10;/显示十位 buf3=temp%100/10;/显示个位 buf0=temp%10; /小数位 for(j=0;j3;j+) P2=0xff; / 初始灯为灭的 P0=0x00; P2=0xfd; /显示小数点 P0=0x80; /显示

14、小数点 delay(300); P2=0xff; / 初始灯为灭的 P0=0x00; P2=0xf7; /片选LCD1 P0=tablebuf1; delay(300); P2=0xff; P0=0x00; P2=0xfb; /片选LCD2 P0=tablebuf2; delay(300); P2=0xff; P0=0x00; P2=0Xfd; /片选LCD3 P0=tablebuf3; delay(300); P2=0xff; P0=0x00; P2=0Xfe; P0=tablebuf0; /片选LCD4 delay(300); P2=0xff; void key() /按键扫描子程序 if

15、(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) HL

16、ight=0;LLight=1;display00();voidmain() TCON=0x01; /定时器T0工作在01模式下 TMOD=0X01; TH0=0XD8;/装入初值 TL0=0XF0; EA=1;/开总中断 ET0=1; /开T0中断 TR0=1; /T0开始运行计数 EX0=1; /开外部中断0 for(n=0;n500;n+)/显示启动LOGo- - - - bell=1;warn=1;logo(); Red=0; while(1) key(); ss=ReadTemperature(); Show(); alarm(); /报警函数 if(Flag=1) bell=!bell; warn=!warn;/蜂鸣器滴滴响 else bell=1; warn=1; void time0(void) interrupt 1 using 1/每隔10ms执行一次此子程序 TH0=0X56; TL0=0XDC; temp=ss;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1