课程设计论文-基于51单片机与ds18b20的数字温度计设计内容摘要:

即驱动蜂鸣器鸣叫、 8 个发光二极管发光 主程序流程图: 开始 显示实时温度 温度设定、报警 查询记录温度值 定时器初始化、启动 图 12 主程序流程图 读温度值模块 读温度值模块需要调用 4 个子程序,分别为:  DS18B20 初始化子程序:让单片机知道 DS18B20 在总线上且已准备好操作  DS18B20 写字节子程序:对 DS18B20 发出命令  DS18B20 读字节子程序:读取 DS18B20 存储器的数据  延时子程序:对 DS18B20 操作时的时序控制 1. 读温度值模块流程图: 图 13 读温度值子程序流程图 DS18B20 初始化 跳过读序列号 启动温度转换 延时 DS18B20 初始化 跳过读序列号 读取温度值高低位 数据转换处理 返回 入口 2. DS18B20 初始化子程序流程图: N Y 图 14 DS18B20 初始化子程序流程图 3. DS18B20 写字节 和读字节 子程序 流程图 : DQ 置高电平 稍延时 DQ 复位 0 延时 480ms DQ 拉高电平 延时 15~60ms DQ 为低 电平。 返回 入口 图 15 DS18B20 写字节子程序流程图 图 16 DS18B20 读 字 节子程序流程图 中断模块 中断采用 T0 方式 1,初始值定时为 50ms。 中断模块需调用两个子程序:  读温度值子程序:定时读取温度值,实时更新温度值  记录温度值子程序:定时记录温度值,供查询使用 把这两个子程序放在中断的原因是,不会因为调整报警温度或查询历史温度值而停止更新温度值和记录温度值。 中断模块流程图: Y N 图 17 中断模块流程图 温度查询模块 温度查询模块需要接受按键输入,进入查询界面后,按加 减键分别查询上一个和下一个历史温度值,并驱动数码管显示需要查询的温度值。 温度查询模块流程图如下: N Y N Y 中断入口 定时器重置初值 计数值加 1 1 秒。 记录温度值 读温度值 中断返回 入口 功能键按下。 延时消抖 确认按下。 显示温度值与位次 N Y Y N N Y Y N N Y 图 18 温度查询模块 流程图 温度设定、报警模块 此模块跟温度查询模块类似,需要接受按键输入,进入模块界面后,按加减键分别上调 和下调设定报警温度值,当实时温度值超过设定值时驱动蜂鸣器发声,并点亮 8 位发光二极管,实现声光报警。 温度设定、报警模块流程图如下: 加键按下。 延时消抖 确认按下。 查询下一个值 减键按下。 延时消抖 确认按下。 查询上一个值 退出功能键按下。 返回 N Y N Y N Y Y N N Y Y N Y N N Y 入口 功能键按下。 延时消抖 确 认按下。 显示设定温度值 加键按下。 延时消抖 确认按下。 减键按下。 延时消抖 确认按下。 温度超出设定值。 取消报警 判断退出界面。 返回 上调设定值 下调设定值 声光报警 图 19 温度设定、报警模块流程图 数码管驱动模块 本设 计数码 管通过锁存器接单片机 P0 口,采用动态扫描驱动 7 段 LED 数码管进行显示,需调用延时子程序以稳定显示。 模块流程图如下: 图 20 数码管驱动模块流程图 入口 关段选 P0 置高 开位选 送位码 关位选 P0 清零 开段选 送段码 关段选 延时 返回 6 源程序 include define uchar unsigned char define uint unsigned int /*************************变量定义 ************************************/ sbit DQ=P2^2。 //ds18b20 端口 sbit beep=P2^3。 //蜂鸣器使能端 sbit dula=P2^6。 //数码管段选使能 sbit wela=P2^7。 //数码管位选使能 sbit add=P3^5。 //加键 sbit sub=P3^4。 //减键 sbit alarm=P3^6。 //设定报警 功能键 sbit record=P3^7。 //查询 温度 记录功能键 uchar code tabled[]={ 0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, //0~9 的七段数码管段码 0x40,0x63,0x39}。 // c 的段码 uchar code tablew[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f}。 //1~8 个数码管的位选码 uchar recordtable[10]。 //存储过去的十个温度值 uchar temperature。 //温度值 uchar countsec,recordnum,count。 //计数变量 uint countmin。 //计数变量 uchar alanum=30。 //报警温度值 ,初始值为 30 摄氏度 uchar z=65。 //消抖延时函数入口参数 /**********************函数声明 ***************************************/ void delay1(uchar MS)。 //动态扫描延时子程序 void delay(uchar i)。 //DS18B20 工作延时子程序 void Init_DS18B20()。 //DS18B20 初始化子程序 void WriteOneChar(unsigned char dat)。 //向 DS18B。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。