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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于51单片机数字温度报警器Word下载.docx

1、它将地址线、数据线和控制线合为一根双向串行传输数据的信号线,允许在这根信号线上挂接多个DS18B20。每个芯片内有一个64位的ROM,其中存有各个器件自身的序列号,作为器件独有的ID号码。其测温范围是-55128,测温分辨率在12位时精度为0.0625。DS18B20简化了温度器件与计算机的接口电路,使得电路简单,使用更加方便。2.2.3 显示模块的选择 采用数码管显示模块,采集温度超出或低于上下限时,相应的发光二极管点亮。3系统的硬件设计与实现3.1系统硬件概述本设计包括温度数据采集和显示两个部分,数据采集通过温度传感器实现,显示有发光二极管,LED数码管实现。报警功能由蜂鸣器实现,系统的复

2、位以及温度上下限的调整分别由三个按键实现。3.2电路模块3.2.1 单片机 AT89C51单片机内部主要由9个部件组成:1个8位中央处理器;4KBFlash存储器;128B的数据存储器;32条I/O口线;2个定时器/计数器;1个具有6个中断源、4个优先级的中断嵌套结构;用于多处理机通信、I/O扩展或全双工UART的串行口;特殊功能寄存器;1个片内振荡器和时钟电路。AT89S51系列单片机完全继承了MCS-51的指令系统,共有111条指令,按其功能可分为五大类:数据传送类指令、算术运算类指令、逻辑运算类指令、控制转移类指令、布尔操作。AT89C51单片机引脚如图3-1所示。 图3-1 AT89C

3、51单片机引脚图管脚说明:P0口:8位、漏极开路的双向I/O口。P0能够用于外部程序数据存储器。它可以被定义为数据/地址的第八位。P0口在应用时必须外接上拉电阻,作为输入时,首先应将引脚置1。P1口:8位双向I/O口,内部含上拉电阻。作为输入时,应先将引脚置高;若负载为低电平,则通过内部上拉电阻向外输出电流。P2口:P3口:P3口除了通用I/O口功能外,还有第二功能。P3口的第二功能定义如表3-1所示。表3.1 P3口第二功能定义引脚定义功能P3.0-RXD串行输入口P3.1-TXD串行输出口P3.2-外部中断0P3.3-外部中断1P3.4-T0计时器0外部输入P3.5-T1计时器1外部输入P

4、3.6-外部数据存储器写选通P3.7-外部数据存储器读选通RST:复位输入,低电平有效。ALE/PROG:地址锁存允许信号输出。在正常操作状态下,该引脚端口输出恒定频率的脉冲。其频率为晶振频率的1/6,可用作外部定时或其他触发信号。如果需要,可通过SFR的第0位置禁止ALE操作,但ALE的禁止位不影响对外部存储器的访问。:片外程序存储器选通信号,低电平有效。当AT89S51执行来自外部程序存储器的指令代码时,PSEN/每个机器周期两次有效。在访问外部数据存储器时,PSEN/无效。片外程序存储器访问允许信号,低电平有效。XTAL1:外接晶振。在单片机内部是反相放大器的输入及端。XTAL2:在单片

5、机内部是反相放大器的输出端,输入到内部时钟发生器。3.2.2复位电路模块复位是单片机的初始化操作,复位信号是高电平有效,复位操作有上电自动复位、按键电平复位、外部脉冲复位和自动复位四种方式。在本设计中复位采用上电自动复位,当接通电源的瞬间,RST端与Vcc同电位,随着电容的电压逐渐上升,RST端的电压也逐渐下降,于是在RST端便形成了一个正脉冲,只要该正脉冲的宽度持续两个周期的高电平,就可以实现系统的自动复位,复位电路原理图如图3-2所示。 3.2.3显示电路模块显示电路由单片机的P0、P2端口控制。显示模块如图3-3。图3-3 温度显示模块3.2.4传感器电路模块(1)DS18B20内部结构

6、DS18B20是Dallas公司继DS1820后推出的一种改进型智能数字温度传感器,与传统的热敏电阻相比,只需一根线就能直接读出被测温度值,并可根据实际需求来编程实现912位数字值的读数方式。DS18B20的外形如一只三极管,引脚名称及作用如下:GND:接地端,DQ:数据输入/输出脚,与TTL电平兼容,VDD:可接电源,也可接地。因为每只DS18B20都可以设置成两种供电方式,即数据总线供电方式和外部供电方式。采用数据总线供电方式时VDD接地,可以节省一根传输线,但完成数据测量的时间较长;采用外部供电方式则VDD接+5V,多用一根导线,但测量速度较快,内部结构如图3-4。(2)DS18B20供

7、电方式DS18B20可以采用外部电源供电和寄生电源供电两种模式。外部电源供电模式是将DS18B20的GND直接接地,DQ与但单总线相连作为信号线,VDD与外部电源正极相连。如图3-5所示。图中DS18B20的DQ端口通过接入一个4.7K的上拉电阻到VCC,从而实现外部电源供电方式。寄生电源供电模式如图3-6所示:从图中可知,DS18B20的GND和VDD均直接接地,DQ与单总线相连,单片机其中一个I/O口与DS18B20的DQ端相连。(3)DS18B20的测温原理 DS18B20的测温原理如图3-7所示, 其主要由斜率累加器、温度系数振荡器、减法计数器、温度存储器等功能部件组成。图3-7 DS

8、18B20的测温原理DS1820 是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55的一个值。如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55)的值增加,表明所测温度大于-55。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨率。DS18B20内部对此计算的结果可提供0.5的分辨率。温度

9、以16bit带符号位扩展的二进制补码形式读出,DS18B20遵循单总线协议,每次测温时都必须有4个过程: 初始化、传送ROM 操作命令、传送ROM操作命令、数据交换。4.系统的软件设计4.1软件设计应用环境与设计语言本设计软件的设计是在Keil C51的环境下编译的。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。Keil C51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效、快速的特点。4.2系统设计设计流程图系统的流程图如图4-1所示。图

10、4-1系统设计流程图5系统仿真设计5.1 Proteus 软件介绍Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。使用Proteus 软件进行单片机系统仿真设

11、计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力; 实践证明,在使用 Proteus 进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。因此,Proteus 有较高的推广利用价值。5.2 Proteus 仿真图图5-1 温度报警软件仿真图5.3 硬件调试所有器件按电路原理图焊接完成后,接上导线,放入三节电池,接通电源,按下开关。相应的从机对应的发光二极管点亮,按下键盘,相应数码管上显示键值。调试过程中先检查pcb版各个点是否焊接错,连线正确,确保线没有绕道一起,硬件原理图如图5-2。 图5-2 焊接实物硬件图5.4调试结

12、果刚开始调试并不是很顺利,虽然很小心但调试过程中仍出现了很多的问题,首先电路比较难焊接,必须再加小心以免出现问题难以排查。还有电路中需接电源正负极的线比较多也要很仔细的去焊接。刚开始调试按键控制出错,经过同学帮忙大家努力后终于正确的调试出了结果 。结论这次课程设计不光是要掌握模单片机书本上的理论基础,还需要我们锻炼自己的动手能力。用时2周,需要用到Proteus ISIS绘图,同时也用到keil编程,仿真验证程序正确。最后一步焊接硬件有点困难,因为平时没练过焊接,刚开始的矩阵键盘就焊错了,之后又重新用吸锡器吸掉,列线扫描用导线代替了。焊接过程遇到许多问题,终于焊接完成后,又发现按键不响应,又返

13、回去重新改程序,给单片机刷入程序第2次验证,还是没有调试正确。最后终于发现了问题,原来是硬件焊接时,把接口焊错了,修改之后果然调试正确。调试成功后真的很开心,因为自己焊接,硬件后面显得很粗糙,最后总结发现各个元器件的布局真的很重要,这次做单片机硬件,确实让我学到了很多东西,很感谢这次的实践机会。这次实验从开始准备到焊接硬件完成,充实了我们的生活,让我们增长了知识,提高了学习能力,一些软件的使用,芯片的管教,电解电容的正负极,等等一些细微的东西,都需要自己去图书馆或者网上找相应的资料。这次小课程设计对以后的课程设计都有帮助,提前锻炼了我们的能力,同时也感谢实验室的同学的指导以及高老师的指导,让我

14、顺利的完成了课程设计。参考文献【1】 高玉芹 单片机原理与应用及C51编程技术 【M】.北京:机械工业出版社。【2】刘泉溪 单片机原理与应用实验教程 【M】北京航空航天大学出版社。【3】 孙育才. MCS-51系列单片微型计算机及其应用【M】 东南大学出版社【4】叶景,基于单片机的温度控制系统的设计 经验与交流,2008【5】杨光友.单片机微型计算机原理及接口技术M.北京:中国水利水电出版社,2002附 录附录1 元件清单与仿真图1.元件清单1.万用板7*9 2.开关 3.2.2K电阻*6 4.stc89C51单片机 5.40脚IC座 6.DS18B20温度传感器 7.10K排阻 8.10K电

15、阻*2 9.10uF电容 10.按键*3 11.12M晶振 12.30P电容*2 13.9012三极管*5 14.led灯 15.蜂鸣器 16.四位一体共阳数码管 2.系统仿真图附录2 源程序#include #define uint unsigned int#define uchar unsigned char /宏定义#define SET P3_1 /定义调整键#define DEC P3_2 /定义减少键#define ADD P3_3 /定义增加键#define BEEP P3_6 /定义蜂鸣器#define ALAM P1_2 /定义灯光报警#define DQ P3_7 /定义D

16、S18B20总线I/O bit shanshuo_st; /闪烁间隔标志bit beep_st; /蜂鸣器间隔标志sbit DIAN = P05; /小数点uchar x=0; /计数器signed char m; /温度值全局变量uchar n; /温度值全局变量uchar set_st=0; /状态标志signed char shangxian=38; /上限报警温度,默认值为38signed char xiaxian=5; /下限报警温度,默认值为38/uchar code LEDData=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90

17、,0xff;uchar code LEDData=0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B;/*延时子程序*/void Delay_DS18B20(int num) while(num-) ;/*初始化DS18B20*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 Delay_DS18B20(8); /稍做延时 DQ = 0; /单片机将DQ拉低 Delay_DS18B20(80); /精确延时,大于480us

18、 /拉高总线 Delay_DS18B20(14); x = DQ; /稍做延时后,如果x=0则初始化成功,x=1则初始化失败 Delay_DS18B20(20);/*读一个字节*/unsigned char ReadOneChar(void) unsigned char i=0; unsigned char dat = 0; for (i=8;i0;i-) / 给脉冲信号 dat=1; if(DQ) dat|=0x80; Delay_DS18B20(4); return(dat);/*写一个字节*/void WriteOneChar(unsigned char dat) i i-) DQ =

19、dat&0x01; Delay_DS18B20(5);/*读取温度*/unsigned int ReadTemperature(void) unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0x44); /启动温度转换 WriteOneChar(0xBE); /读取温度寄存器 a=ReadOneChar(); /读低8位 b=ReadOneChar(); /读高8位 t=b; t=8; t

20、=t|a; tt=t*0.0625; t= tt*10+0.5; /放大10倍输出并四舍五入 return(t);void Delay(uint num) while( -num );/*初始化定时器0*/void InitTimer(void) TMOD=0x1; TH0=0x3c; TL0=0xb0; /50ms(晶振12M)void check_wendu(void) uint a,b,c; c=ReadTemperature()-5; /获取温度值并减去DS18B20的温漂误差 a=c/100; /计算得到十位数字 b=c/10-a*10; /计算得到个位数字 m=c/10; /计算得

21、到整数位 n=c-a*100-b*10; /计算得到小数位 if(m99)m=99;n=9; /设置温度显示上限 /*显示开机初始化等待画面*/void Disp_init(void) P0 = 0x80; /显示- P2 = 0x7F; Delay(200); P2 = 0xDF; P2 = 0xF7; P2 = 0xFD; P2 = 0xFF; /关闭显示/*显示温度子程序*/void Disp_Temperature(void) /显示温度 P0 = 0x98; /显示C Delay(400); P0=LEDDatan; /显示个位 P0 =LEDDatam%10; /显示十位 DIAN

22、 = 0; /显示小数点 P0 =LEDDatam/10; /显示百位 P2 = 0xff;/*显示报警温度子程序*/void Disp_alarm(uchar baojing) P0 =0x98; P0 =LEDDatabaojing%10; P0 =LEDDatabaojing/10; if(set_st=1)P0 =0xCE; else if(set_st=2)P0 =0x1A; /上限H、下限L标示/*报警子程序*/void Alarm() if(x=10)beep_st=beep_st;x=0; if(m=shangxian&beep_st=1)|(mxiaxian&beep_st=1) BEEP=0; ALAM=0; else BEEP=1; ALAM=1;/*主函数*/void main(void) uint z; InitTimer(); /初始化定时器 EA=1; /全局中断开关 TR0=1; ET0=1; /开启定时器0 IT0=1; IT1=1; check_wendu(); for(z=0;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2