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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于单片机温度计课程设计.docx

1、基于单片机温度计课程设计摘要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于89S51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程。对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可

2、以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。在学习了单片机的的基本原理的基础上进行设计的,综合利用所学单片机知识完成一个单片机应用系统设计并仿真实现,从而加深对单片机软硬件知识的理解,获得初步的应用经验;进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统的基本方法和步骤。本设计的目标是单片机和温度传感器及其相关实现温度的测量和数字显示,测量精度小于0.5C,可以设置温度的上下限,超出测温范围可以有蜂鸣器报警。本设计是一款简单实用的

3、小型数字温度计,本次数字温度计的设计共分为六部分,主控制器,LED显示部分,传感器部分,复位部分,时钟电路,报警电路。主控制器即单片机部分,用于存储程序和控制电路;LED显示部分是指四位共阴极数码管,用来显示温度;传感器部分,即温度传感器,用来采集温度,进行温度转换;复位部分,即复位电路。测量的总过程是,传感器采集到外部环境的温度,并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。本设计能完成的温度测量范围是+35C+40.5C。超出此范围报警部分就会发出警告。本设计设计理念是应用于小鸡的孵化,在小鸡孵化室内,最适孵化温度为+35C+40C,在超出此范围时,就会发出报警,并及

4、时提醒工作人员将室温调整致适合温度。关键词: 单片机 DS18B20 温度传感器 数字温度计 AT89S52目录1 概述 31.1 课程设计的目的和意义 31.2 设计的任务和要求 32 系统总体方案及硬件设置 42.1数字温度计设计方案论证 42.1.1方案一 42.1.2 方案二 42.2系统总体设计 42.3系统模块 52.3.1 主控制器 52.3.2 显示电路 62.3.3温度传感器 72.3.4报警温度调整按键 83软件设计 103.1系统总体方案设计 103.2程序设计 103.2.1 主程序 103.2.3二进制转换BCD码命令子程序 113.2.4 计算温度子程序 123.2

5、.5温度数据显示子程序 124 实验仿真 135 课程设计体会 17参考文献 17附1 源程序代码 18附2 系统原理图 301 概述1.1 课程设计的目的和意义本次课程设计是在我们学过单片机后的一次实习,可增加我们的动手能力。特别是对单片机的系统设计有很大帮助。本课程设计由两个人共同完成,在锻炼了自己的同时也增强了自己的团队意识和团队合作精神。通过课程设计使我进一步熟悉了单片机的内部结构和工作原理,掌握了单片机应用系统设计的基本方法和步骤;通过利用MCS-51单片机,理解单片机在自动化装置中的作用以及掌握单片机的编程调试方法;通过设计一个简单的实际应用输入控制及显示系统,掌握protues和

6、keil以及各种仿真软件的使用1.2 设计的任务和要求 1、基本范围-50-110 2、精度误差小于0.5 3、LED数码直读显示 4、可以任意设定温度的上下限报警功能 5、默认报警范围35-40.52 系统总体方案及硬件设置2.1数字温度计设计方案论证 2.1.1方案一 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦。而且在对采集的信号进行放大时容易受温度的影响出

7、现较大的偏差。 2.1.2 方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。 从以上两种方案,很容易看出,采用方案二,电路比较简单,费用较低,可靠性高,软件设计也比较简单,故采用了方案二。2.2系统总体设计 温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。图2.21总体设计

8、方框图图2.22系统仿真图2.3系统模块 系统由单片机最小系统、显示电路、按键、温度传感器等组成。 2.3.1 主控制器 单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。晶振采用12MHZ。复位电路采用上电加按钮复位。图2.3.11晶振电路图2.3.12复位电路 2.3.2 显示电路 显示电路采用4位共阴极LED数码管,P0口由上拉电阻提高驱动能力,作为段码输出并作为数码管的驱动。P2口的低四位作为数码管的位选端。采用动态扫描的方式显示。图2.3.2 数码管显示电路 2.3.3温度传感器 DS

9、18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下: 1、独特的单线接口仅需要一个端口引脚进行通信; 2、多个DS18B20可以并联在惟一的三线上,实现多点组网功能 3、无须外部器件; 4、可通过数据线供电,电压范围为3.05.5; 5、零待机功耗; 6、温度以或位数字; 7、用户可定义报警设置; 8、报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 9、负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不

10、能正常工作; DS18B02可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。 当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。 图2.3.3 温度传感器与单片机的连接 2.3.4报警温度调整按键 本系统设计三个按键,采用查询方式,一个用于选择切换

11、设置报警温度和当前温度,另外两个分别用于设置报警温度的加和减。均采用软件消抖。图2.3.4 按键电路 3软件设计3.1系统总体方案设计 本次课程设计采用的是protues软件仿真,用Keil软件进行编译。Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。 软件部分由主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。 开始 初始化 调显示子程序 得出温度总子程序 返回 图3-1 主程序流程3.2程序设计 3.2.1

12、主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图3-1所示。 3.2.2 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图3-2所示 图3-2 读出温度子程序流程 3.2.3二进制转换BCD码命令子程序 二进制转换BCD码命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。二进制转换BCD码命令子程序流程图,如图3-

13、3 图3-3二进制转换BCD码流程图 3.2.4 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图3-4所示。 图3-4 测量温度流程图 3.2.5温度数据显示子程序 显示数据子程序主要是对显示缓冲器中的显示数据进行刷新操作,查表送段码至LED,开位码显示,采用动态扫描方式。4 实验仿真 进入protuse后,连接好电路,并将程序下载进去。将DS18B20的改为0.1,数码管显示温度与传感器的温度相同。 图41 温度显示仿真 当按下SET键一次时,进入温度报警上线调节,此时显示软件设置的温度报警上线,按ADD或DEC分别对报警温度进行加一或减一。

14、当再次按下SET键时,进入温度报警下线调节,此时显示软件设置的温度报警下线,按ADD或DEC分别对报警温度进行加一或减一。图42 温度调试仿真当第三次按下SET键时,退出温度报警线设置。显示当前温度。实验结果实物图:电路板背面飞线图:室温测试结果:5 课程设计体会 通过这次对数字温度计的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两

15、者的差异,从中找出最适合的设计方法。 通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。 在焊接过程中我曾将温度传感器的电源、地焊反啦,导致温度传感器急剧发热,后经观察和查询资料才得以改正。 从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。参考文献1 康华光,陈大钦,张林.电子技术基础 模拟部分(第五版).高等教育出版社.2006.103-1082余发山.单片机原理及

16、应用技术.中国矿业大学出版社,2003.31-323 51单片机学习网 4 康华光,陈大钦,张林.电子技术基础 数字部分(第五版).高等教育出版社.2006.103-108附1 源程序代码/*程序名称:DS18B20温度测量、报警系统简要说明:DS18B20温度计,温度测量范围099.9摄氏度 可设置上限报警温度、下限报警温度 即高于上限值或者低于下限值时蜂鸣器报警 默认上限报警温度为40.5、默认下限报警温度为35 报警值可设置范围:最低上限报警值等于当前下限报警值 最高下限报警值等于当前上限报警值将下限报警值调为0时为关闭下限报警功能特别加入防抖动的中断延时程序 编 写:JiangX.ne

17、t最后更新:09/04/16晚于寝室*/#include #include DS18B20.h #define uint unsigned int#define uchar unsigned char /宏定义#define SET P3_1 /定义调整键#define DEC P3_2 /定义减少键#define ADD P3_3 /定义增加键#define BEEP P3_7 /定义蜂鸣器bit shanshuo_st; /闪烁间隔标志bit beep_st; /蜂鸣器间隔标志sbit DIAN = P07; /小数点uchar x=0; /计数器signed char m; /温度值全局

18、变量uchar n; /温度值全局变量uchar set_st=0; /状态标志signed char shangxian=40.5; /上限报警温度,默认值为40.5signed char xiaxian=35; /下限报警温度,默认值为35uchar code LEDData=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00;unsigned int ReadTemperature(void);void delay1(uchar z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);/*延时子程

19、序*/void Delay(uint num) while( -num );/*初始化定时器0*/void InitTimer(void) TMOD=0x1; TH0=0x3c; TL0=0xb0; /50ms(晶振12M)/*定时器0中断服务程序*/void timer0(void) interrupt 1 using 0 TH0=0x3c; TL0=0xb0; x+;/*外部中断0服务程序*/void int0(void) interrupt 0 using 1 EX0=0; /关外部中断0 if(DEC=0&set_st=1) delay1(10); if(DEC=0&set_st=1)

20、 shangxian-; if(shangxianxiaxian)shangxian=xiaxian; else if(DEC=0&set_st=2) delay1(10); if(DEC=0&set_st=2) xiaxian-; if(xiaxian99)shangxian=99; else if(ADD=0&set_st=2) delay1(10); if(ADD=0&set_st=2) xiaxian+; if(xiaxianshangxian)xiaxian=shangxian; /*读取温度*/void check_wendu(void) uint a,b,c; c=ReadTem

21、perature()-5; /获取温度值并减去DS18B20的温漂误差 a=c/100; /计算得到十位数字 b=c/10-a*10; /计算得到个位数字 m=c/10; /计算得到整数位 n=c-a*100-b*10; /计算得到小数位 if(m99)m=99;n=9; /设置温度显示上限 /*显示开机初始化等待画面*/Disp_init() P0 = 0x40; /显示- P1= 0xf7; Delay(200); P1 = 0xfb; Delay(200); P1 = 0xfd; Delay(200); P1 = 0xfe; Delay(200); P1 = 0xff; /关闭显示/*显

22、示温度子程序*/Disp_Temperature() /显示温度 P1 = 0xf7; P0 =0x39; /显示C Delay(300); P1 = 0xfb; P0 =LEDDatan; /显示个位 Delay(300); P1 = 0xfd; P0 =LEDDatam%10; /显示十位 DIAN = 1; /显示小数点 Delay(300); P1 = 0xfe; P0 =LEDDatam/10; /显示百位 Delay(300); P1 = 0xff; /关闭显示/*显示报警温度子程序*/Disp_alarm(uchar baojing)P1 = 0xf7; P0 =0x39; /显

23、示C Delay(200); P1 = 0xfb; P0 =LEDDatabaojing%10; /显示十位 Delay(200); P1 = 0xfd; P0 =LEDDatabaojing/10; /显示百位 Delay(200); P1 = 0xfe; if(set_st=1)P0 =0x76; else if(set_st=2)P0 =0x38; /上限H、下限L标示 Delay(202); P1 = 0xff; /关闭显示/*报警子程序*/void Alarm() unsigned int i; for(i=0;i200;i+)/喇叭发声的时间循环,改变大小可以改变发声时间长短 De

24、lay(30);/参数决定发声的频率,估算值 BEEP=!BEEP; BEEP=0.5; /喇叭停止工作,间歇的时间,可更改 Delay(20000); /*主函数*/void main(void) uint z; InitTimer(); /初始化定时器 EA=1; /全局中断开关 TR0=1; ET0=1; /开启定时器0 IT0=1; IT1=1; check_wendu(); check_wendu(); for(z=0;z2)set_st=0; if(set_st=0) EX0=0; /关闭外部中断0 EX1=0; /关闭外部中断1 check_wendu(); Disp_Tempe

25、rature(); if(m=shangxian) P1_4=1; else P1_4=0; if(m=shangxian)|(m=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) Disp_alarm(shangxian); else if(set_st=2) BEEP=1; /关闭蜂鸣器 EX0=1; /开启外部中断0 EX1=1; /开启外部中断1 if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) Disp_alarm(xiaxian); /*END*/附2 系统原理图 复位电路 时钟电路 显示电路单片机设计 P0口上拉电阻 温度传感器

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

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