单片机课程设计论文-基于51的温度报警器内容摘要:
点,只要将电压家在阳极和阴极之间相应的笔画就会发光。 8 个发光二极管的阳极并联在一起, 8 个阴极分开,因此成为共阳八段数码管。 课程设计说明书 9 其如图 7: A B C D E F G DP1 2 3 4 5 6 7 8 图 7晶体管显示电路 报警电路 由两个发光二极管组成和一个喇叭组成,分别是高温报警和低温报警,当高温超过 110 或低温低于 50 时,对应的二极管闪烁,同时喇叭发出警报。 如图 8 和图 9: D1高温报警D2低温报警R32 2 0R42 2 0 图 8二极管报警电路 L S 1S O UN D E R 图 9喇叭报警电路 课程设计说明书 10 4 程序设计 程序流程图 程序流程图如图 10 所示: 图 10 程序流程图 N 跳过读序列号的操作 Y N Y 读温度命令 将温度高、低位读出 处理数据到百、十、个、小数位,并在数码管上显示 超出限制。 喇叭响和二级管闪烁 初始化 DS18B20 开始 初始化 DS18B20 应答脉冲。 跳过读序列号的操作 发出温度转换的命令 等待温度转换完成 课程设计说明书 11 初始化子程序 使用 DS18B20 时,单片机先向 DS18B20 送出复位信号,单片机将数据拉低并保持 480~960μs;再释放数据 线,由上拉电阻拉高 15~60μs;然后再由 DS18B20 发出低电平 60~240μs,就完成了复位操作。 通过 init_ds18b20()函数来实现 18B20 的初始化 char init_ds18b20() { uchar status。 dq = 1。 delay(8)。 //高电平 dq = 0。 delay(90)。 dq = 1。 delay(8)。 //高电平 status = dq。 delay(100)。 dq = 1。 高电平 return status。 } 读子程序 读数据之前,单片机先将数据 线拉低,再释放。 DS18B20 在数据线从高电平跳低后 15μ s 内将数据送到数据线上。 单片机在 15μ s 后读数据线。 通过 read_temperature()函数读取温度值到 DS18B20 void read_temperature() { if( init_ds18b20() ==1) ds18b20_is_ok = 0。 //DS18B20故障 else { writeonebyte(0xcc)。 //跳过序列号 writeonebyte(0x44)。 //启动温度转 换 init_ds18b20()。 //DS18B20初始化 writeonebyte(0xcc)。 //跳过序列号 writeonebyte(0xbe)。 //读取温度寄存器 temp_value[0] = readonebyte()。 //温度低 8位 temp_value[1] = readonebyte()。 //温度高 8位 课程设计说明书 12 alarm_temp_hl[0] = readonebyte()。 //报警温度 DH alarm_temp_hl[1] = readonebyte()。 //报警温度 DL ds18b20_is_ok = 1。 //DS18B20正常工作 } } 写子程序 在单片机对 DS18B20 写数据时,应先将数据线拉低 1μ s 以上,再写入数据 (写1 为高,写 0 为低 )。 待单片机写入的数据变化 15~60μ s 后, DS18B20 将对数据线采样。 单片机写入数据到 DS18B20 的保持时间为 60~120μ s。 通过 writeonebyte()函数写入 8 位字节。 void writeonebyte(uchar dat) { uchar i。 for(i = 0。 i 8。 i++) {dq = 0。 dq = dat amp。 0x01。 delay(5)。 dq = 1。 dat =1。 } } 通过 set_alarm_temp_value()函数中的实现数据的读入 void set_alarm_temp_value() { init_ds18b20()。 初始化 DS18B20 writeonebyte(0xcc)。 //跳过序列号 writeonebyte(0x4e)。 //将设定的温度报警值写入 DS18B20 writeonebyte(alarm_temp_hl[0])。 //写入 TH writeonebyte(alarm_temp_hl[1])。 //写入 TL writeonebyte(0x7f)。 //12位精度 init_ds18b20()。 //初始化 DS18B20 writeonebyte(0xcc)。 //跳过序列号 writeonebyte(0x48)。 //温度报警值存入 DS18B20 } 数据处理子程序 课程设计说明书 13 先判断温度高 8 位,如果 CY 为 1,则将高、低 8 八位求 补;对高、低 8 位的数据按权整合称一个整数,判断是否在 50~110℃之间,超出范围则置报警灯为亮;将该数按百、十、个位分别存入相应的存储单元。 流程图如图 11 所示: 图 11 数据处理流程图 通过子函数 display_temperature()中的 uchar ng = 0 , np = 0。 char signed_current_temp。 if ( ( temp_value[1] amp。 0xf8) == 0xf8 )//如果是负数则取反加 1 {temp_value[1] = ~temp_value[1]。 temp_value[0] =~temp_value[0] + 1。 if ( temp_value[0] == 0x00 ) temp_value[1]++。 正数显示温度值加 1 ng = 1。 np = 0xfd。 //默认负号显示在左边第 2排 } display_digit[0] = df_table[temp_value[0] amp。 0x0f ]。 //查表得到温度小数部分 currentt = ((temp_value[0] amp。 0xf0)4) | ((temp_value[1] amp。 0x07)4)。 //获取温度整数部分 signed_current_temp = ng? currentt :currentt。 //有符号数当前温度值 Y Y N 符号为正。 求补码 N 高、低 8 位整合成为一个整数存入 A中 50~110 之间。 报警 分别存入百、十、个、小数位 取温度值 课程设计说明书 14 hi_alarm = signed_current_temp = alarm_temp_hl[0] ? 1 : 0。 //高温报警设置 lo_alarm = signed_current_temp = alarm_temp_hl[1] ? 1: 0。 //低温报警设置 // 将整数部分 分解为三位待显示数字 display_digit[3] = currentt /100。 //百位 display_digit[2] = currentt % 100 /10。 //十位 display_digit[1] = currentt % 10。 //个位 if (display_digit[3] == 0 ) { display_digit[3] = 10。 //高位是零则不显示 np = 0xfb。 //调整负号位置 if( display_digit[2] == 0) { display_digit[2] =10。 //高位是零则不显示 np = 0xf7。 //调整负号位置 } 语句实现温度数据处理,如果 温度数据是正,则直接分别显示百、十、个位,如果最高位是零,则最高位不显示。 如果温度是负,则取反后再显示。 显示子程序 将百、十、个、小数位的数据查表,送到对应的数码管显示,程序流程图如 12所示: 课程设计说明书 15 图 12 显示程序流程图 通过子函书中 display_temperature()中的 for (i = 0。 i 30。 i ++) { P0 = 0x39。 P2 = 0x7f。 delay(t)。 P2 = 0xff。 //显示 C。单片机课程设计论文-基于51的温度报警器
相关推荐
公司 全国客服热线: 4006222325 企业 : 800056522 : 你可设置单张报价项目的后加工价格。 如下图: 其中啤异形是指模切,模切版费刀条周长是指每个成品的周长,分三个档次,当用户选简单形状时,周长按一倍计算,选盒子形状时,周长按二倍计算,选复杂形状时,周长按三倍计算。 : 你可设置单张报价项目单独的利润率 ,分项利润率纳入成本计算。 :画册报价项目有五项参数设置,如下图: :
平原 地形与河流小结 黑吉辽,好风光,大东北,好地方, 三江水把人滋养,兴安长白护身旁, 山环水绕平原广,白山黑水美名扬。 东北三省的气候 开阔视野 分布 : 全世界仅有三大块黑土区 肥力:性状好、肥力高 习性:年降水量多数为 500— 1000毫米之间,年平均温度一般为 — ℃ 气候的整体性 气候的差异性 A B C
接触。 两个电极板之间要保持干燥,避免因导电糊或盐水相连而造成短路。 也应保持电极板把手的干燥。 不能被导电糊或盐水污染,以免伤及操作者。 7. 选择合适除颤能量,除颤仪充电。 成人单相波选择 360J ,双相波选择 120 200J,小儿 2 4J/kg, 最高不超过 9J/kg. 10 鼻饲 胃 管留置 及保留 技术 (一)目的: 对不能由口进食或拒绝进食的病人补充营养、进行治疗。
SCILLOSCOPE添加仿真图表单击蓝色的那个按钮,在元件列表中会有ANALOGUE放置仿真图表的方法:选中ANALOGUE后,在原理图中单击左键,并按住左键拖动,这是你会看到一个虚线方框,释放左键后就可以看到ANALOGUE了。 2. - 按照上图连接好元件3. - 设置参数,这里主要介绍一下示波器和仿真表格的设置 a. 示波器设置,示波器需要运行仿真后才可以对其参数进行设计它有两个输入通道
上拉为高电平,并用作输入。 作为输入,由于外部下拉为低电平, P3 口将输出电流( ILL)这是由于上拉的缘故。 P3 口也可作为 AT89C51 的一 第 9 页 西华大学电气 信息学院智能化测控应用系统设计报告 些特殊功能口,如表 1 所示: 表 1 P3 各端口引脚与复用功能表 端口引脚 复用功能 RXD 串行输入口) TXD 串行输出口) INT0 外部中断 0) INT1外部中断 1)