基于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)。 //。基于51单片机与ds18b20的数字温度计的设计
相关推荐
的反转且该端与 相连。 电控水龙 头共两个,一个为进水水龙头且受 的控制,另一个为排水水龙头而受 的控制,当电控水龙头的控制端为“ 0”时水龙头打开,当电控水龙头的控制端为“ 1” 时水龙头关闭。 显示器共有两只 P0 控制高位显示器 , P2 控制低位显示器。 蜂鸣器有由 控制,当 输出为“ 1”时蜂鸣器发声。 本系统采用 12M 的晶体振荡器定时器 0 和定时器 1 的 设置为每隔
a16 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。 方案二:选用其他单片机。 无论从单片机的资源,还是执行速度进行比较, 51 单片机都要比其他单片机性价比高。 而且 51 单片机的价格比其他单片机便宜。 根据以上的两种方案的比较,所以在本电路设计时采用的是 AT89S52 芯片。 天津工程师范学院 2020 届本科生毕业设计 4 选用电机驱动模块 L298N
电压的大小,预先在仪器面板上标定出高斯刻度,则使用时 0 em FF 0 jbVeje V B H bVeeVB HVBbVHnebdIVIBKdIBRIBne dV HHH 1neRH 1 nedKH 1HHIKVB第 3 章 系统硬件设计 13 由指针示值就可直接读出磁感应强度 B 值。 由( 313)式知 因此将待测的厚度为 d 的半导体样品
于 Linux Kernel )。 Froyo 之后的版本的 Android 将会命名为 Gingerbread(姜饼 ,基于 Linux Kernel )。 版本 /发布时间 m5rc14/2020 年 2 月 13 日 m5rc15/2020 年 3 月 3 日 , Release 1/2020 年 8 月 18 日 , Release 1/2020 年 9 月 23 日 , Release
3 分 记录内容不规范,扣 1~ 2 分 3 15 室内试验 试验方法不符合规范要求,扣 4 分 试验成果不满足规范要求,扣 4 分 试验过程质量控制有瑕疵,扣 2~ 3 分 4 16 外业安全 勘探过程中发生伤及作业人员或地下管线、周边建筑物等事故,扣 4 分 勘探孔未进行回填封孔,扣 4 分 封孔质量不符合要求,扣 2~ 3 分 4 17 勘查成果 岩土层划分 岩土层划分依据不合理,扣 3
网站地图 在线支付 礼券支付 货到付款方式 商城首 页 企业会员入口 商品增加 订单管理 销售报表 企业注册。 6 (网站栏目说明: XXXX 网站栏目结构如上图所示。 栏目规 划充分考虑到 XXXX 展示企业形象、扩大知名度、在线营销的需要。 网站采用了多个动态模块,企业能够自主、独立的完成 网站中大多数内容的更新,同时,网站整合的“客户服务”,“商品分类 ”模块,增加了网站同客户之间的交互性