基于ds18b20数字式温度计课程设计(编辑修改稿)内容摘要:

路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。 该系统的总体设计思路如下:温度传感器 DS18B20 把所测得的温度发送到 AT89C51单片机上,经过 51 单片机处理,将把温度在显示电路上显示,本系统显示器用 4 位共阳LED 数码管以动态扫描法实现。 检测范围 55 摄氏度到 128 摄氏度。 按照系统设计功能的要求,确定系统由 3 个模块组 成:主控制器、测温电路和显示电路。 数字温度计总体电路结构框图如图 1 所示。 图 1 数字温度计总体电路结构框图 第 8 页 第 3 章 硬件部分设计 硬件设计 温度计电路设计原理图如图 2 所示,控制器使用单片机 AT89C51,温度传感器使用DS18B20,用 4 位共阳 LED 数码管实现温度显示。 图 2 温度计电路设计原理图 主控制器 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器的低电压,高性能 CMOS8位微处理器。 该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS51 指令集和输出管脚相兼容。 由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片 第 9 页 中, ATMEL 的 AT89C51 是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 显示电路 显示电路采用 4 位共阳 LED 数码管。 温度传感器工作原理 DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能温 度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 9~ 12 位的数字值读数方式。 DS18B20 的性能特点如下: ●独特的单线接口方式仅需要一个端口引脚进行通信; ●多个 DS18B20 可以并联在唯一的三线上,实现多点组网功能; ●无需外部器件; ●可通过数据线供电,电压范围: ~ ; ●测温范围- 55℃ ~+ 125℃ ,在 10~ +85℃ 时精度为 177。 ℃ ●零待机功耗 ●温度以 9 或 12 位数字量读出; ●用户可定义的非易失性温度报警设置 ●报警搜索命令 识别并标志超过程序限定温度(温度报警条件)的器件 ●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作 第 10 页 第 4 章 软件电路设计 软件设计思路 单片机应用系统的程序设计,可以采用汇编语言完成,也可以采用 C 语言实现。 汇编语言对单片机内部资源的操作直接,简洁,代码紧凑。 但是当系统规模较大时,设计人员更趋于采用 C 语言进行程序设计。 这是由于 C 语言具有良好的可读性,可移植性和基本的硬件操作能力。 采用 C51 进行单片机应用程序设计,编译器能自动完成变量的存储单元的分配,编程者可以专 注于应用程序的逻辑思想;对常用功能模块和算法编制相应的函数,可以方便地进行算法和应用程序的移植。 因此,用 C51 进行程序设计可以大大提高实际工程的开发效率。 目前, C51 的代码长度已经做到了汇编水平的 ~ 倍。 当代码长度超过 4KB 以上时, C51 比汇编语言更具有明显优势。 我们还可以借助仿真器,对应用程序的关键代码进行优化,以减少代码长度,提高运行速度。 由于单片机生产工艺的改善,单片机的运行速度和内部存储器容量都有了较大的提高,这些都为 C51 语言的使用创造了有利的条件。 综上所述,故软件语言使用 C51 语 言。 流程图 主 要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等。 主程序 主程序的主要功能是负责温度的实时显示、读出并处理 DS18B20 的测量温度值。 温度测量每 1S 进行一次。 主流程图如下 第 11 页 读出温度值温度计算处理显示数据刷新 初次上电 1s 到。 调用显示程序 发温度转换开始命令 N Y Y 初始化 第 12 页 程序: //使用 AT89C2051 单片机, 12MHZ 晶振,用共阳 LED 数码管 //P1 口输出段码, P3 口扫描 //pragma src(d:\) include include //_nop_()。 延时函数用 define Disdata P1 //段码输出口 define discan P3 //扫描口 define uchar unsigned char define uint unsigned int sbit DQ=P3^7。 //温度输入口 sbit DIN=P1^7。 //LED 小数点控制 uint h。 //*******温度小数部分用查表 法 **********// uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}。 uchar code dis_7[12]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0x40}。 /* 共阳 LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 */ uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}。 // 列扫描控制字 uchar data temp_data[2]={0x00,0x00}。 // 读出温度暂放 uchar data display[5]={0x00,0x00,0x00,0x。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。