基于51单片机的数字温度计毕业设计(编辑修改稿)内容摘要:
码。 64 位 ROM 和ROM操作控制部分允许 DS18B20作为一个单线器件工作并遵循 “单线总线系统 ”一节中所详述的单线协议。 直到 ROM 操作协议被满足, DS18B20 控制部分的功能是不可访问的。 MSB LSB MSB LSB MSB LSB 图 35 64 位 ROM 结构框图 ( 3)运用 —报警信号 TH 或 TL的最高比较位对应于 16 位温度寄存器符号位。 若 温度测量的结果低于TL 或者 高于 TH,器件内告警标志将置位。 每次温度测量更新此标志。 只要告警标志置位, DS18B20 将对告警搜索命令做出响应。 这允许并联接许多 DS18B20,同时进行温度测量。 ( 4) CRC 产生 DS18B20 有一存贮在 64 位 ROM 的最高有效字节内的 8 位 CRC。 总线上的主机可以根据 64 位 ROM 的前 56 位计算机 CRC 的值并把它与存贮在 DS18B20 内的值进行比较以决定 ROM 的数据是否已被主机正确地接收。 CRC 的等效多项式函数为: CRC=X8+X5+X4+1 (公式 ) DS18B20 也利用与上述相同的多项式函数产生一个 8 位 CRC 值并把此值提供给总线的主机以确认数据字节的传送。 当存贮在 DS18B20 内或由 DS18B20 计算得到的CRC 值与总线主机产生的值不相符合时,在 DS18B20 内没有电路来阻住命令序列的继续执行。 ( 5)存贮器 DS18B20 的存贮器由一个高速暂存(便笺式) RAM 和一个非易失性、电可擦除8 位检验 CRC 48 位序列号 8 位工厂代码( 10H) 西南科技大学本科毕业论文 11 EEPROM 组成,后者存贮高温度和低温度触发器 TH 和 TL。 暂存存贮器有助于在单线 通信时确保数据的完整性。 数据首先写入暂存存贮器,在那里它可以被读回。 当数据被校验之后,复制暂存存贮器的命令把数据传送到非易失性 EEPROM。 这一过程确保了更改存贮器时数据的完整性。 DS18B20 的测温原理 如图 311 所示,图中低温度系数振荡器的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给减法计数器 1;高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器 2 的脉冲输入。 图 311 DS18B20 测温原理图 图中还隐含着计数门,当计数门打开时, DS18B20 就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。 高温度系数振荡器决定计数门的开启时间,测量前,将 55℃ 所对应的基数分别置入减法计数器和温度寄存器中,减法计数器和温度寄存器被预置在 55℃ 所对应的基数值。 预置 斜率累加器 低温度系数振荡器 减法计数器 1 预置 减到 0 温度寄存器 计数比较器 高温度系数振荡器 减法计数器 2 减到 0 西南科技大学本科毕业论文 12 另外, DS18B20 单线通信功能是分时完成的, 所以 读 /写时序很重要。 系统对DS18B20 的各种操作必须按协议进行。 单片机最小系统设计 单片机最小系统就是指能使单片机工作的最少的 器件构成的系统。 因为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路和复位电路就可以构成单片机最小系统。 时钟电路 图 312 是时钟电路的 PROTEUS 仿真图。 图 312时钟电路 单片机允许的振荡晶体可在 ~ 24MHz 之间选择,一般为。 电容 C2, C3 的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定的影响,可在 20~ 100pF 之间选择,典型值位 30pF。 复位电路 计算机每次开始工作, CPU 和系统中的其他部件都必须要有一 个确定的初值,即复位状态。 图 313 是单片机复位电路仿真图。 西南科技大学本科毕业论文 13 图 313 复位电路 单片机 RST 引脚是高电平有效。 单片机在上电瞬间 C1 充电, RST 引脚端 引出 正脉冲,只要 RST 端 保持两个机械周期以上的高电平,单片机就能复位。 在单片机工作后,如果还想再次复位,只需按下开关,单片机就能重新变成复位状态。 当晶体振荡频率为 12MHz 时, RC 的典型值为 C=10μ F, R=。 最小系统 图 314 是单片机最小系统的完整仿真图。 西南科技大学本科毕业论文 14 图 314 单片机最小系统西南科技大学本科毕业论文 15 DS18B20 与单片机接口电路的设计 DS18B20 可以采用两种供电方式:一种是电源供电方式,另一种是寄生电源供电。 当 DS18B20 处于写存储器操作和温度 A/D 转换操作时,总线上必须有强的上拉,上拉开启时间最长为 500ms。 采用寄生电源供电方式时, VDD 和 GND 端接地。 因为单线制只有一根线, 所以 发送接口 必需 是三态的。 显示电路的设计 LED 数码管主要技术参数 数码管使用条件: a、段及小数点上加限流电阻 b、使用 电压:段:根据发光颜色决定; 小数点:根据发光颜色决定 c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 45mA 峰值电流 100mA 上图 是七段数码管引脚图,其中共阳极数码管 的 引脚图和共阴极的是 一模一样 的, 4位数码管 的 引脚图数码管 的 使用注意说明: (1)数码管表面不要用手触摸,不要用手去弄引角; (2)焊接温度:260度;焊接时间:5S (3)表面有保护膜的产品 ,可以在使用前撕下来。 LED数码管的引脚说明 分为共阳极与共阴极两种, 对于单个数码管,从正面 看进去, 以 左下角那个脚为 1 脚,逆时针方向为 110 脚,左上角那个脚便是 10 脚了,上两个图的数字分别与这 10 个管脚对应。 注意, 3 脚和8 脚是连通的,这两个都是公共脚。 另外 常用的是四位数码管,内部的数码管共用 a~dp 这 几 根数据线, 由于 里面有 4个数码管,加上 a~dp, 一 共有 12 个引脚,下 图 是一个共阴四位数码管内部结构图(。 引脚排列依然是从左下角的那个脚( 1 脚)开始,以逆时针方向依次为 1~12 脚,下图中的数字与之一一对应。 西南科技大学本科毕业论文 16 图 218 位共阳数码管内部结构 数码管编码说明 4位数码管编码说明 ,如 所示: 表 控制命令表 e d dp c g b f a 0 0 0 1 0 1 0 0 0 28H 1 1 1 1 0 1 0 1 1 EBH 2 0 0 1 1 0 0 1 0 32H 3 1 0 1 0 0 0 1 0 A2H 4 1 1 1 0 0 0 0 1 E1H 5 1 0 1 0 0 1 0 0 A4H 6 0 0 1 0 0 1 0 0 24H 7 1 1 1 0 1 0 1 0 EAH 8 0 0 1 0 0 0 0 0 20H 9 1 0 1 0 0 0 0 0 A0H H 0 1 1 0 0 0 0 1 61H L 0 0 1 1 0 0 0 1 3DH 1 1 1 1 0 1 1 1 F7H C 0 0 1 1 1 1 0 0 3CH 西南科技大学本科毕业论文 17 第 4 章 系统程序的设计 系统设计内容 系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、测量序列号子程序、显示数据刷新子程序等。 主程序 主程序主要功能是负责温度的实时显示、读 出处理 DS18B20 的测量温度值。 主程序流程图如图 41 所示: 图 41 主程序流程图 读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节。 在读出时须进行 CRC 校验,校验有错时不进行温度数据的改写。 读出温度子程序流程图如图 42 所示: 开始 调用显示子程序 显示当前四路温度 初始化 读取并显示序列号 西南科技大学本科毕业论文 18 图 42 读出温度子程序流程图 温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用 12 位分辨率时,转换时 间约为 750ms。 在本程序设计中,采用 1s 显示程序延时法等待转换的完成。 温度转换命令子程序流程图如图 43 所示: 图 43 温度转换命令子程序流程图 计算温度子程序 计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算,并进行温度值正负发 DS18B20 复位命令 发跳过 ROM 命令 发温度转换开始命令 结束 开始 复位 DS18B20 发跳过 ROM 命令 发出温度转换命令 转换完毕 复位 DS18B20 发匹配 ROM 命令 发 1 个 DS18B20 序列号 读温度值 存入储存器 指向下一个 延时 N Y 西南科技大学本科毕业论文 19 的判定。 计算温度子程序流程图如图 44 所示: 图 44 计算温度子程序流程图 温度数据的计算处理方法 从 DS18B20 读取出的二进制值必须转换成十进制值,才能用于字符的显示。 DS18B20 的转换精度为 9~ 12 位,为了提高精度采用 12 位。 在采用 12 位转换精度时,温度寄存器里的值是以 为步进的,即温度值为寄存器里的二进制值乘以,就是实际的十进制温度值。 通过观察表 41 可以发现,一个十进制与二进制间有很明显的关系,就是把二进制的高字节的低半字节和低字节的高半字节组成一字节,这个字节的二进制化为十进制后,就是温度值的百、十、个位字节,所以二进制值范围 是 0~ F,转换成十进制小数就是 的倍数( 0~ 15 倍)。 这样需要 4 位的数码管来表示小数部分。 实际开始 温度零下。 温度值取补码置“ ”标志位 计算小数位温度 BCD 值 计算小数位温计算小数位温度 BCD 值 度 BCD 值 结束 置“ +”标。基于51单片机的数字温度计毕业设计(编辑修改稿)
相关推荐
制。 对单片机的指令系统不要求了解,仅要求对 51 的存储器结构有 基本 了解;可由编译器管理寄存器 的 分配、不同存储器的寻址及数据类型等细节; 用 C 语言编写的 程序有规范的结构。 这种程序结构化方式 , 改善了程序的可读性; 程序 编 译和 调试时间短,效率从 而提高;提供的库包含许多标准子程序,具有较强的数据处理能力;可移植性好 ,因为它具有方便的模块化编程技术。 C
rol system controlled by 8051, traffic light display, LED countdown. Traffic detection and adjustment, such as wireless transmission module. In addition to the basic function of traffic light also
节。 程序校验时,需要外部上拉电阻。 4) P1 口: P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口, P1 输出缓冲器能驱动 4 个 TTL 逻辑电平。 对 P1 端口写“ 1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。 作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流( IIL)。 此外, 和 分别作定时器 /计数器 2 的外部计数输入( )和时器
3开门 打开继电器 显示倒计时 15s开门 蜂鸣器慢响 提示 15s内开门 否则 15后关门 关闭继电器 并自动返回时间页面 6 :选择 key10修改密码 共两次 两次密码一致时设置成功 否则会一直提示输入密码 7 :修改的密码存入 2402中 上电读出 8 :修改密码 无限循环 直到输入正确为止 可以使用 key11:返回键 返回 9 :在 10s内无任何按键按下时 自动返回时间页面
子程序、和键盘扫描 子程 序四个模块,下面对每一块进行介绍。 系统主程序 本设计中,软件设计采用模块化操作,利用各个模块之间的相互联系,在设计中采用主程序调用各个子程序的方法,使程序通俗易懂,我们设计了整体程序流程图。 在 main函数编写开始,要进行初始化,包括对系统初始化和对硬件设备进行初始化,并使硬件处于就绪状态。 在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化
其中 VCC1 为后备电源, VCC2 为主电源。 在主电源关闭的情况下,也能保持时 钟的连续运行。 DS1302 由 VCC1 或 VCC2 两者中的较大者供电。 当 Vcc2 大于 Vcc1+ 时, Vcc2 给 DS1302 供电。 当 Vcc2 小于VCC1 时, DS1302 由 VCC1 供电。 X1 和 X2 是振荡源,外接 晶振。 RST 是复位 /片选线,通过把 RST