精品】毕业论文设计_基于单片机的数字温度计设计_第1页
精品】毕业论文设计_基于单片机的数字温度计设计_第2页
精品】毕业论文设计_基于单片机的数字温度计设计_第3页
精品】毕业论文设计_基于单片机的数字温度计设计_第4页
精品】毕业论文设计_基于单片机的数字温度计设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、(此文档为word格式,下载后您可任意编辑修改!)1 .设计任务与要求本课题的研究方法是利用单片机和数字温度传感器DS18B2C设计一台数字温度计。单片机作为主控制器,数字温度传感器 DS18B20乍为测温元件,传感器 DS18B2C可以读取被测量 温度值,进行转换,从而用 4位共阳极LED数码管来显示转换后的温度值,可以设定温度的 上下限报警功能, 实现报警提示。2. 系统的总体设计方案本设计将利用DS18B20智能温度传感器和单片机小系统,设计一个数字温度采集系统。 并设计一个人机接口电路:键盘采用独立按键(功能自定义),显示器采用共阴极4位LED显 示。系统的总体设计方案框图如图 2.1

2、所示图2.1系统的总体设计方案框图3. 硬件设计本设计采用的是 AT89C52单片机为核心的数字温度计,包含了利用温度传感器DS18B20的测温电路、外接键盘、显示电路、报警电路、复位电路和晶振电路。以DS18B2C为主要测温元件进行实时监控温度值。以4位数码管为显示器件,利用单片机的P0 口和电阻排来驱动 4位数码管的显示;利用单片机的 P1.7来驱动温度传感器DS18B2C测温;报警电路利用三极 管放大作用驱动报警器报警;按键是利用单片机的P1 口和上拉电阻来驱动工作3.1复位电路设计复位电路有上电自动复位和按键手动复位两种方式。上电自动复位是通过外部复位电路 的电容充电来实现的,只要电源

3、 VCC的上升时间不超过1ms就可以实现自动上电复位,即 接通电源就成了系统的复位初始化。按键手动复位有电平方式和脉冲方式两种。其中,按键 电平复位是通过使复位端经电阻与 VCC电源接通而实现的,而按键脉冲复位则是利用RC微分 电路产生的正脉冲来实现的。本系统的复位电路采用上电复位方式。复位电路图如图3.1所示:3.2 晶振电路设计对于每个系统工程的晶振电路,都是用于单片机工作所需要的时钟信号,单片机只有在 时钟信号的控制下,其各部件之间才能协调一致工作,时钟信号控制着计算机的工作节奏。在单片机的TXAL1 TXAL12之间跨接晶体振荡器和微调电容,可以和单片机内部的振 荡器构成一个稳定的自激

4、振荡器,这就是单片机的晶振电路。这种方式称之为内部的时钟源 方式。电容C1和C2的主要作用是帮助振荡器起振,且振荡器大小对振荡频率有微调作用, 在80C51系列中电容的大小30皮法。另外,振荡器的频率只要由石英晶振的频率来决定本次 设计选用12MHz本系统的晶振电路如图3.2所示:图3.2 晶振电路图3.3 DS18B20芯片简介DS18B2吐要由4部分组成:64位ROM温度传感器、非挥发的温度报警触发器TH和TL、 配置寄存器。DS18B2Q外形及管脚排列如图3.8和表3-3所示。DS18B20I脚排列如表3-1所示。表3-1 DS18B20引脚定义:序号名称引脚功能描述1GND地信号2DQ

5、数据输入输出引脚。开漏单总线接口引脚。当被用着 在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必 须接地。3.4 测温电路设计数字温度传感器DS18B20的测温电路如图所示3.3所示:图3.3 DS18B20的测温电路3.5按键模块设计利用单片机的IO 口实现按键的中断输入。另外需要一个与门实现与中断端口的连接。按键电路如图3.4所示,期中按键K1为进入退出设置键;K2为增加键;K3为减少键。当按下 K1键一次时,进入温度报警上线调节,此时显示软件设置的温度报警上线,按K2或K3分别对报警温度进行加一或减一。当再次按下K1键时,进入温度报警下线调节,

6、此时显示软件设置的温度报警下线,按K2或K3分别对报警温度进行加一或减一。当第三次按下 K1键时,6退出温度报警线设置。显示当前温度。按键模块电路如图3.4所示图3.4按键模块电路图3.6 报警电路设计三极管8550驱动蜂鸣器:报警电路如图3.5所示三极管来驱动蜂鸣器 BUZ1图3.5报警电路图3.7 显示电路设计采用四位共阴极LED数码管来显示温度的大小,可以直接读取。四位数码管的显示电路 如图3.6所示,从左到右依次是百位,十位,个位,十分位。图3.6 显示电路图4. 系统软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序, 显示数据刷新子程序和按键扫描处理

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

8、如图4.3所示:图4.3温度转换命令子程序流程图4.4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其 程序流程图如图4.4所示。图4.4计算温度子程序流程图4.5 显示数据刷新子程序显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位位为1时将符号显示位移入第一位。程序流程图如图4.5所示。7图4.5显示数据刷新子程序流程图4.6 报警子程序设置报警标志位位 beep,当温度大于设置的高限报警值或低于设置的低限报警值是, beep=1报警;当温度值在正常范围内时,beep=O.报警流程图如图4.6所示:图4.6 报警子程序流程图

9、4.7 按键扫描处理子程序按键采用扫描查询方式,设置标志位,当标志位为1时,显示设置温度,否则显示当前温度。当按下K1键一次时,进入温度报警上线调节,此时显示软件设置的温度报警上线, 按K2或K3分别对报警温度进行加一或减一。当再次按下 K1键时,进入温度报警下线调节, 此时显示软件设置的温度报警下线,按 K2或K3分别对报警温度进行加一或减一。当第三次 按下K1键时,退出温度报警线设置。显示当前温度。如下图 4.7所示。8图4.7按键扫描处理子程序流程图5. Protues 仿真5.1 Protues测温仿真通过仿真软件验证该原理图的可行性。采用 protues软件对电路仿真,可以得到预期效

10、 果。数码管仿真图如图5.1所示。温度传感器的仿真效果图如图 5.2所示,此图验证了传感 器的温度与数码管显示的数字一致。图5.1 数码管仿真图图5.2 温度传感器的仿真效果图5.2温度报警线设置仿真如图5.3是第一次按下K1键显示的上限温度报警值,此时按K2或K3键分别对上限温度 报警值进行加一或减一;图5.4是第二次按下K1键显示的下限温度报警值,此时按 K2或K3 键分别对下限温度报警值进行加一或减一。图5.3上限温度报警值设置仿真图5.4下限温度报警值设置仿真5.3 初始置零仿真当开始仿真时先使数码管显示为“0”仿真图如图5.5所示10图5.5 初始置零仿真6. 结果分析与心得体会经过

11、系统的整体调试,本设计达到了规定的设计要求:能用数码管直接显示、能自由设 定温度上下限报警值和实现报警。本课题所设计的数字温度计包括硬件组成和软件的设计。 该系统在硬件设计上主要是通过其核心控制器件AT89C5将采集到的数字温度值经单片机处理得到相应的温度值,送到4位数码管进行显示,以数字形式显示测量的温度。整个系统的软 件编程就是通过C语言对AT89C5实现其控制功能。通过为期一周单片机的课程设计使我对单片机的编程及其仿真又加深了印象。不局限于 课本的死知识,增强了动手能力和综合分析能力,更深入了解并掌握了传感器的基本理论知 识。本次设计还存在许多不完善的方面。在整个设计过程中,由于难度的原

12、因,系统实现的 功能有限,与市场上同类产品存在相当的差距;在编程方面,虽然采用C语言编程,但是对其的理解不够透彻,还存在很大的提升空间。尽管本次设计还不是很完善,但这为我以后的设 计之路积累了宝贵的经验。7. 参考文献1 余发山,王福忠编著.单片机原理及应用技术.徐州:中国矿业大学出版社,2008.2 胡汉才 编著,单片机原理及其接口技术,北京:清华大学出版社,1996.73 金发庆.传感器技术与应用.北京:机械工业出版社,2002.34-36附录全部程序清单#in elude 0;t-);void sca n()int j;for(j=0;j0;i-)DQ=1;_nop_();_nop_()

13、;从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_(); 5 usDQ=val&OxO1;最低位移出delay(6); 66 usval=val2;右移 1 位DQ=1;delay(1);uchar read_byte(void) DS18B20读1字节函数从总线上取1个字节uchar i;uchar value=0;for(i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ=0;_nop_();_nop_();_nop_();_nop_(); 4 usDQ=1;_nop_();_nop_();_nop_();_nop_(); 4

14、usif(DQ)value|=0x80;delay(6);延时 66 usDQ=1;return(value);read_temp()读出温度函数ow_reset();总线复位delay(200);write_byte(0xcc);发命令write_byte(0x44);发转换命令ow_reset();delay(1);write_byte(0xcc);发命令write_byte(0xbe);temp_data0=read_byte();读温度值的第字节temp_data1=read_byte();读温度值的高字节 temp=temp_data1;temp6348) 温度值正负判断tem=65

15、536-tem;n=1;负温度求补码,标志位置1display4=te m&OxOf;取小数部分的值display0=ditabdisplay4;存入小数部分显示值 display4=tem4;取中间八位,即整数部分的值 display3=display4100;取百位数据暂存 display1=display4%100;取后两位数据暂存display2=display110; 取十位数据暂存 display1=display1%10;个位数据 r=display1+display2*10+display3*100; if(!display3)符号位显示判断display3=0x0a;最高位为

16、0时不显示 if(!display2)display2=0x0a;次高位为0时不显示if(n)display3=0x0b;负温度时最高位显示- void xia nshi (int =0;if(=1;display3=)display3=0x0b;负温度时最高位显示-void keysca n()按键查询程序int temp1;最高温度和最低温度标志位if(set=O)while(1)delay(500);消抖 if(set=O)temp1+; while(!set) sca n();if(temp1=1)xia nshi();if(add=O)while(!add) sca n();();();low+=1;if(dec=O) while(!dec) sca n();low-=1;sca n();if(temp1=3)temp1=0;break;void BEEP()if

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论