主从式温度监测报警与控制系统电子课程设计(编辑修改稿)内容摘要:
传感器 DS18B20 复位和读写操作。 对温度进行采集,按时序直接从温度传感器读入温度值的数字信号(这就是所测的温度值,因为 DS18B20 是最新单线数字温度传感器),最后存入内存。 由于精度准确、分辨率高、抗干扰性好、无需校验。 由于所读出的数据 格式为二进制数的补码,所以求出温度值的原码(当然正数是不必转换)。 在显示温度值时,还需要进行十进制的转换,字符代码的转换。 其温度采集流程图如图 所示。 主从式温度监测报警与控制系统 图 S18B20 温度采集流程图 LCD1602 显示模块程序设计 1) D1602 初始化 LCD1602 初始化流程图如图 所示 图 位总线借口模式初始化流程图 2)温度显示 LCD1602 温度显示流程图如图 所示 主从式温度监测报警与控制系统 图 LCD1602 温度显示流程图 RS232 串口通信模块程序设计 1)机端通信程序设计 AT89C52 单片机串行口是全双工串行通信口,有 4种工作方式,即:方式 0作移位寄存器使用;方式 1 是波特率可变的 8 位 UART;方式 2 是波特率固定为两种的 9位 UART;方式 3 是波特率可变的 9 位 UART。 在与 PC机通信时我们选用方式 1来循环。 向 PC 机发送数据,在电平转换的过程中用到 MAX232 这一核心芯片。 MAX232 芯片通过 DS18B20 温度传感器进行采集温度放入单片机内存,采集到的温度将以二进制补码的形式出现,然后通过编写程序将二进制补码的形式转换为字符的形式,通过字符型液晶显示模块将温度显示出来,最后利用 MAX232内部电荷汞电压转换器,完成电压转换,使温度在 PC 机界面显示出来。 2) PC 端通信程序设计 为方便进行远程控制可将采集到的温度数据发送到电脑,以便实时监测。 通过 RS_232 将数据发送至终端设备,采用 VC++ 作为开发平台。 五、设计方案电路图 主从式温度监测报警与控制系统 将 T89C52 单片机最小系统 、温度采集电路、温度显示报警电路、 PC 机与单片机通信接口电路等各子模块电路组合起来,就得到了最终的设计方案电路图如下所示: 图 5 主从式温度监测报警与控制系 统电路图 六、程序主要内容与流程图 程序主要包括 主程序设计、 DS18B20 模块程序设计、 LCD1602 显示模块程序设计、 RS232 串口通信模块程序设计等主要内容,具体参见《 系统的软件设计》这部分内容,程序设计的总体流程图如下所示: 主从式温度监测报警与控制系统 图 6 MCU 设计流程图 七、课程设计开展情况及总结 本次课程设计从 4 月中旬一直进行到 6月 20 日。 期间,也遇到过不少困难:元器件选择错误,不得不多次跑到赛格去重新买元器件;焊接出现错误,对着电路图苦苦寻找焊接错误的地方,通过仔细研究才发现是单片机引脚焊错, 但再次测试时还是不行,最终运用万用表才发现:即使是接了电源,单片机除了直接接电源的管脚外其他都是低电平,百思不得其解;程序运行错误,最终不得不通过翻阅大量资料来参考以及增补知识,改写程序,烧写程序也是历尽苦心,由于是买了 AT 的芯片,而大部分同学只有烧写 SAT,最终在电信同学的帮忙下才烧写成功。 虽然历尽千辛万苦,但很遗憾最终电路还是不能运行,估计有以下原因:模拟仿真的时候很成功,但焊接出来就实现不了,应该是模拟跟实际的有差主从式温度监测报警与控制系统 别造成,也有可能是焊接时还是出现了问题; 焊接是没有考虑液晶显示器的对比问题,因此 造成液晶显示器只能点亮不能显示数字。 下面再总结下我们的软硬件设计。 在硬件方面,前面已经详细介绍,这里就不再赘述。 展示下焊接好的电路板,如下图所示。 图 7 主从式温度监测报警与控制系统实物电路图 在软件方面,除了在 系统的软件设计部分提到的利用 c 编写程序外,我们还使用了 PROTUES 软件对电路进行了模拟仿真,经过多次模拟调试以后,模拟仿真的结果正确,也大大增强了我们完成电子设计的信心。 八、课程设计总结 本课程设计设计了一单片机 /PC 控制的测温 /传输系统。 前台由 DS18B20传感器将温度直接转 变成数字信号送入单片机中进行实时采集,通过 LCD1602液晶显示模块将结果在前台显示出来;另外,采集结果又通过 RS232,接口送入 PC 机后台中以便进行显示、存储或后续处理。 该系统体现了 数字化控制,智能化控制的特点, 实现了对温度的监测、报警和控制功能。 九、单片机系统源程序 主从式温度监测报警与控制系统 include main() { setds18b20(TH,TL,RS)。 //设置上下限报警温度和分辨率 UART_init()。 delay(100)。 while(1) { pt=ReadTemperature()。 //测温函数返回这个数组的头地址 //读取温度 ,温度值存放在一个两个字节的数组中 , temper_LCD()。 //实测温度转化为 ACSII 码 ,并送液晶显示缓冲区 alarm_LCD(TH,TL)。 //上下限报警温度转化为 ASCII码 ,并送液晶显示缓冲区 LCD_Initial()。 //第一个 参数列号 ,第二个为行号 ,为 0 表示第一行 //为 1表示第二行 ,第三个参数为显示数据的首地址 LCD_Print(0,0,TempBuffer0)。 LCD_Print(0,1,TempBuffer1)。 warning()。 //温度检测和报警 key_mand()。 COM_send()。 //发送实时温度 } } include include //测温头文件 include //液晶显示头文件 主从式温度监测报警与控制系统 include //键盘扫描头文件 sbit alarm=P2^6。 //报警信号 bit flag。 //温度正负号标志位 unsigned char warning_key。 //PC 报警标志位 unsigned char key_value。 //存放键盘扫描值 unsigned char temper1,temper2。 unsigned char TH=100,TL=0,RS=0x3f。 //上限温度 100,下限 20,分辨率 10 位 ,也就是 unsigned char t[2],*pt。 //用来存放温度值 ,测温程序就是通过这个数组与主函数通信的 unsigned char point。 //定义发送数据个数指示变量 unsigned char TempBuffer1[17]={0x2b,0x20,0x60,0x30,0x2e,0x30,0x30,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,39。 \039。 }。 //显示实时温度 ,上电时显示 + unsigned char TempBuffer0[17]={0x54,0x48,0x3a,0x2b,0x20,0x30,0x30,0x20, 0x54,0x4c,0x3a,0x2b,0x20,0x30,0x30,0x43,39。 \039。 }。 //显示温度上下限 ,上电时显示 TH:+ 100 TL:+ 00C unsigned char code dotcode[4]={0,25,50,75}。 /***因显示分辨率为 ,但小数运算比较麻烦 ,故采用查表的方法 ******* 再将表值分离出十位和个位后送到十分位和百分位 ********************/ /***************温度上下限转换为 LCD 显示数据 ************ *功能 :将上下限报警温度 ,分离出符号位 ,百、十、个位 并将它们转化为 ACSII 码 ,送到液晶显示缓冲区 ******************************************************/ void alarm_LCD( unsigned char TH, unsigned char TL) { TempBuffer0[3]=0x2b。 //0x2B 为 +的 ASCII 码 TempBuffer0[11]=0x2b。 TempBuffer0[4]=TH/100+0x30。 //分离出 TH 的百十个位 if(TempBuffer0[4]==0x30) TempBuffer0[4]=0xfe。 //百位数消隐 TempBuffer0[5]=(TH%100)/10+0x30。 //分离出十位 TempBuffer0[6]=(TH%100)%10+0x30。 //分离出个位 TempBuffer0[12]=TL/100+0x30。 //分离出 TL 的百十个位 if(TempBuffer0[12]==0x30) TempBuffer0[12]=0xfe。 //百位数消隐 主从式温度监测报警与控制系统 TempBuffer0[13]=(TL%100)/10+0x30。 //分离出十位 TempBuffer0[14]=(TL%100)%10+0x30。 //分离出个位 } /**********温度转换为 LCD 显示数据 **************** *功能 :将两个字节的温度值 ,分离出符号位 ,整数及小数 并将它们转化为 ACSII 码 ,送到液晶显示缓冲区 ************************************************/ void temper_LCD(void) { unsigned char x=0x00,y=0x00。 t[0]=*pt。 pt++。 t[1]=*pt。 if(t[1]0x07) //判断正负温度 { flag=1。 TempBuffer1[0]=0x2d。 //0x2d 为 的 ASCII 码 t[1]=~t[1]。 /*下面几句把负数的补码 */ t[0]=~t[0]。 /* 换算成绝对值 *********/ x=t[0]+1。 /***********************/ t[0]=x。 /***********************/ if(x255) /**********************/ t[1]++。 /*********************/ } else { flag=0。 TempBuffer1[0]=0x2b。 //0xfe 为变 +的 ASCII 码 } t[1]=4。 //将高字节左移 4 位 t[1]=t[1]amp。 0x70。 //取出高字节的 3个有效数字位 x=t[0]。 //将 t[0]暂存到 X,因为取小数部分还要 用到它 x=4。 //右移 4位 x=xamp。 0x0f。 //和前面两句就是取出 t[0]的高四位 t[1]=t[1]|x。 //将高低字节的有效值的整数部分拼成一个字节 temper1=t[1]。 TempBuffer1[1]=t[1]/100+0x30。 //+0x30 为变 0~9 ASCII 码 if( TempBuffer1[1]==0x30) TempBuffer1[1]=0xfe。 //百位数消隐 TempBuffer1[2]=(t[1]%100)/10+0x30。 //分离出十位 TempBuffer1[3]=(t[1]%100)%10+0x30。 //分离出个位 t[0]=t[0]amp。 0x0c。 //取有效的两位小数 主从式温度监测报警与控制系统 t[0]=2。 //左移两位 ,以便查表 x=t[0]。 temper2=x。 y=dotcode[x]。 //查表换算成实际的小数 TempBuffer1[5]=y/10+0x30。 //分离出十分位 TempBuffer1[6]=y%10+0x30。 //分离出百分位 } //。主从式温度监测报警与控制系统电子课程设计(编辑修改稿)
相关推荐
LIBRARY ieee。 USE。 use。 ENTITY xuanze IS PORT ( a : IN STD_LOGIC。 q1: in std_logic。 q2: in std_logic。 q : out STD_LOGIC )。 END xuanze。 ARCHITECTURE xuanze_architecture OF xuanze IS BEGIN process(a)
惯来选择经营品种,以此吸引消费者,引发美食潮流。 所以,主题西餐厅正是依靠具有主题风格的装修、特色美食和文化吸引顾客的。 主题餐厅概念源自于国 外,兴起于 20 世纪五、六十年代,而主题餐厅在大陆兴起是在20 世纪 90 年代后期,它是指通过一个或多个主题为吸引标志的饮食场所,在消费者身临其境的时候,经过观察和联想,进入期望的主题情景,就像“亲临”世界另一端、重温某段历史、了解一种陌生文化。
检查,及时发现隐患,及时整改。 避免安全事故发生,影响进度。 钢结构制作 钢结构加工系统管理(见下图 ): 材料要求 本项工程所用钢材主构件为 Q235B 钢,其性能符 合《碳素结构钢》GB70088 中有关标准要求 主钢结构手工用焊条为 J422,应符合《碳钢焊条》 GB511785中有关标准规定要求,埋弧焊所用的焊丝为 H08A,应符合国家标准《焊接用钢丝》( GB130077)的规定。
强度选择 VV 铜芯橡套电力电缆 3 502 +2 252 , 埋地穿管敷设。 ⑺ .分配电箱至对应的开关箱支线及开关电器的选择,可参照(规范)附录c(电动机负荷线和电器选配) 设计配电装置、选择电器。 ⑴ 总配 电柜以下可设若干分配电箱;分配电箱以下可设若干开关箱。 总配电柜(箱)应设在靠近电源的地区。 分配电箱应装设在用电设备或负荷相对集中的地区。 分配电箱与开关箱的距离不得超过 30m
)基本喷油脉冲宽度( ms) : 由进气质量流量和发动机转速确定。 1)基本喷射持续时间随进气质量流量增大和发动机转速减小而增长; 2)叶片式空气流量传感器、卡门漩涡式空气流量传感器和进气压力传感器检测的进气流量是体积流量 ,需进行进气温度修正和大气压力修正,基本喷射持续时间随进气温度降低和大气压力增大而增长; 3)热线式和热膜式流量传感器检测的是质量流量,不需进气温度和大气压力修正。 (
照明开关箱必须装设漏电保护器。 施工组织设计 23 架空线应装设横担和绝缘纸 , 其规格、线间距离、档距等应符合架空线路要求 , 其电杆板线离地。 电箱内开关电器必须完整无损 , 接线正确。 各类接触装 置灵敏可靠 ,绝缘良好。 无积灰、杂物 , 箱体不得歪斜。 电箱内应设置漏电保护器 , 选用合理的额定漏电动作电流进行分级配合。 配电箱应设总熔丝、分熔丝、分开关。 零排地排齐全。