《串口通信论文报告.docx》由会员分享,可在线阅读,更多相关《串口通信论文报告.docx(21页珍藏版)》请在三一办公上搜索。
1、串口通信课程总结题目:温度实时监控系统目录绪论21.1研究课题的目的及意义21.2国内外现状21.3本设计的目标32开发工具介绍42.1 keil 简介42.2 C+ Build简介43下位机设计53.1下位机的系统设计53.2下位机的程序设计53.3 DS18B20模块设计63.5串口模块设计94上位机设计124.1上位机系统简介124.2温度显示部分124.3 数据库存储部分134.4温度曲线部分145调试过程155.1下位机调试155.2上位机调试156系统总结17【参考文献】18绪论1.1研究课题的目的及意义实时测量温度是在当今的自动化控制领域尤为重要,比如电机运行时温度的 升高会直接
2、影响其寿命和可靠性;液体混合加热时,温度过低过高都有可能液体 混合的效果。所以,实时温度监控就像人的一双眼睛,把无形的温度,转换成我 们可见的信号。通过这个系统,我们就能轻松地管理好温度并对其做出相应的判 断。最传统的实时监控温度系统是由温度计直接完成。随着科技的发展,电子温 度计取代了传统的温度计,由MCU控制温度芯片,加上显示部件,就构成了第二 代温度监控系统。随着PC的普及,以及远程监控的优越性,第三代温度监控系 统应运而生。第三代温度监控系统是由MCU控制温度传感器,将采集到的温度数 据实时传送到上位机,并在上位机上将接收到的数据进行分析处理,最终讲结果 返还,同时还可以通过上位机直接
3、去操作实物,从而达到了非接触式的效果,这 大大地提高了效率,同时稳定性和可靠性也相应有个提高。那么,对于我们来说,实时温度监控系统的设计是让我们掌握并巩固所学的 知识,提高自己动手能力的一个重要的途径。通过对它的设计,我们可以掌握实 时温度监控系统的精髓从而使能力得到很大的提高,这样就有利于我们今后自身 的发展。1.2国内外现状目前计算机硬件技术朝着巨型化、微型化和单片化三个方向发展,单片机代 表着计算机技术的一个发展方向,先后经历了 4位机、8位机、16位机、32位 机和64位机等几个发展阶段。虽然单片机经过几个阶段的发展,但从实际情况来看,并没有出现像微机处 理那样推陈出新、更新换代的局面
4、,这也是单片机发展的一大特点。4位、8位、 16位、32位都存在于市场中,各有应用领域。不过,各类单片机为适应市场需求,都要求在原来的基础上采用新技术、提高性能,推出新产品。下图是电子工 程师对单片机选型的市场调查,从中可以看到,8位单片机仍然是市场的主流产 品,但32位单片机发展很迅速。市场占有率0. 00%20. 00%10.00%5D. 00%40. 00%桥霍版坦仞 宗五3 | 叫 Q5 D6 | D7PCF8563写一个字节程序读写一个I C程序,要注意的是时序的延时时间要精确,不能超过范围, 以及SCL和SDA的先后顺序要清楚。写它的程序时,先根据时序图写出读写一个 字节以及初始化
5、等最小模块,然后通过这些最小模块,编写读写日期等操作,最 后将它们封装成一个PCF8563.C文件,这样不仅方便别人看我们的程序,也非常 方便去调试程序。一下是PCF8563程序的模块框图:3.5串口模块设计串口通信主要分成串行通信和并行通信,该系统用到的是串行通信。串行通 信传输的速率虽然小于并行通信,但是可以节省很多io 口,这对于单片机等IO 资源较少的MCU来说,是非常重要的。串行口的控制可由其内部的控制寄存器SCON来设定,它可以设定工作方式、接收发送控制以及设置状态标志,下图是 控制寄存器:如上图,SM0、SM1是串口工作方式选择位,通过它们的不同组合,可形成4中不同的工作方式,如
6、下图:广帛行口的工作方式SM0SML方式.说 麻波特辱0*a移位寄存森b10位异步收发器(8位数据,可妻211位异步收发器(9位数据).&航4成再11位异步收发器(9位数据).可变LSM2:多机通信控制位,只在工作方式2和工作方式3使用。REN:允许串行接收控制位,当REN=1时允许接收。TB8:发送数据D8位,在方式2和方式3时,TB8为所要发送的第9位数据。在 多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0为数据, TB8=1为地址。RB8:接收数据D8位,在方式2和方式3时,接收到的第9位数据可作为奇偶校 验位或地址帧或数据帧的标志。在方式1时,若SM2=0,则RB
7、8是接收到的停止 位。在方式0时,不使用RB8位。TI:发送中断标志位,在方式0时,当发送数据第8位结束后,或在其它方式发 送停止位后,由内部硬件使TI置位,向CPU请求中断。CPU在响应中断后,必 须用软件清0。RI:接收中断标志位,在方式0时,当接收数据的第8位结束后,或在其它方式 接收到停止位的的中间由内部硬件使RI置位,向CPU请求中断。同样,也必须 在CPU响应中断后,必须用软件清0。串口通信,就是根据上面几个参数,控制串口的工作状态。先让串口初始化, 关闭串口,接着把所要写的数据放入SBUF当中,然后开启中断,这样就可以向上位机发送数据。同样道理,定义一个数组变量,把SBUF的内容
8、写到变量当中, 也可以接收到上位机发来的数据。一个完整的串口封装,它的程序框图应该包括下面几项:使用51单片机,通常我们用的串口是RS232,它是由MAX232芯片和9针的 串口加上合适的电容电阻组成,它的硬件原理图如下图:VEEGNDR2INR20UTRUNR10UTT20UTT2INT10UTT1INC2+C2-VCCC-VDDC1+4上位机设计4.1上位机系统简介本次上位机是实现温度的实时显示,以及查询历史温度,并且用曲线去显示 温度的变化趋势。所以,该系统主要分为三大部分:温度显示部分、数据库存储部分、温度曲线部分。下图是完成后的整个上位机截图:该系统由于下位机没有时间的校正,与北京时
9、间存在一定的差别,所以时间 的显示时,直接获取电脑的时间。当然,在数据库进行数据存储时,还是用下位 机传送的时间数据。由于查询数据库时,不能同时又进行数据库的存储,所以在 上位机上添加了 “返回实时接收”的功能。该系统上下位机的串口通信协议为: FF FA TempH TempL yea mon day hou min sec 。4.2温度显示部分温度显示是该系统最为直观也是首要完成的任务,因为它能直观地实时显示出温度。由4. 1节最后的上下位机通信协议我们可以很清楚的知道:要能显示数 据,首先是能接收到下位机传送上来的数据。所以在接收温度和时间等数据时, 首先要根据通信协议,判断接收到的字符
10、串的前两个数是不是FF、FA,如果是, 则开始接收数据,接收到的数据将在接收数据的Mem。里显示,如右下图:FFFA 1 C 06 DC Q4 1S 0B 31 3SFF FA 1C 06 OC 04 IS OE: 31 3FF FA 1C 06 OC 04 IS OE: 31 3FFFA1C OS OC 04 18 0E: 31 3FF FA 1C 06 0C04 18 OE: 32 00FF FA 1 COS OC 04 18 0E: 32 0下位机传送上来的是十六进制数,我们要 拐阳 先把接收到的数据进行十进制转换,然后再转 换成字符串,之后截取数组的长度,把温度的 数据加上温度符号发送
11、到相应的位置进行显 示。到此位置,温度显示部分就完成了。4.3数据库存储部分数据库存储是该系统比较重要的一部分,也是上位机的难点之一。由于时间 仓促,这次数据库只是拿老师课件里的数据库改了一下,功能还没有很完善,查 询数据库的范围很小。数据库部分需要掌握的知识,主要有利用Access创建数 据库,添加系统所需要的ID,然后在上位机C+Build的窗体中添加 ADOConnection、ADOQuery 和 DataSource 三个控件,并新建 DBGrid 用来显 示数据库的内容。下图是用Access建好的数据库:一L_om i emp :吏IDHexDs.t aTempAddT i m e
12、FFFA3SZ6OC0519156.3SB CZ5O IS3FFFAasseLicosigi56.38 C20125月空曰1.日4FFFAasseocosidi56. 3811 C20125月葵曰IBI5r FFA3 EiSe.OC OS 19156. 3Q11 C加1E午=月口 1C36FFFA1ALITLIC0418026.7 C加佬年斗月24曰11I7FFFA1AJ070C0418026.7 C加业年4月24曰11eF FFA1 AOTLiC 0416026.7 C12年W月次曰9FFFA1AJ070C0418026.7 CECll N年4月溟曰11I10FFFA1ALITLIC0418
13、026.7 C20124 月 Z4 曰 1111FFFA1 AOTOC0418026.7 C2O12=F-1 2-lH L112FFFA1A0TLIC0418026.7 C20124月艺4曰1113FFFA1ALITLIC0418026.7 C20124241=111I14F FFA1 jMZiTOC 0418026.7 C2012-4 24 0 1115FFFA1ALITLIC0418026.7 C加佬年斗月24曰11由于数据库不能同时进行查询和添加数据两个操作,所以在查询的时候要暂 停对数据库的写操作,当查询完推出数据库以后,如果要继续记录数据,要点击 DBGrid旁边的“返回实时接收按钮
14、”。如果要查询某一时间段温度的数据,在右 边的提示框里面写入相应的正确格式的时间。如:要查询“2012年4月”的数 据,只需在提示框里面输入“2012年4月”等字样。如果要查询更小范围的数 据,比如查询2012年4月24号11点17分,在提示框里面输入“2012年4月 24日11: 17”即可。4.4温度曲线部分该系统描绘温度曲线有实时温度曲线和历史温度曲线两部分。实时温度曲线 实时描绘当前的温度变化,而历史温度曲线更直观地分析以往温度数据。温度曲 线是每变化0.1c时变化一个最小坐标,所以在平常温度变化范围较小的时候我 们看到的是一条近似的直线。温度曲线用到的控件是Win32里面的Image
15、控件。使用该控件时,可用C+ 语言对其进行颜色、坐标等设置。在该控件上面,添加了 ScrollBar1和 ScrollBar2,分别用来改变位置和调整图像大小。我们根据接收到的数据,将画 图坐标进行设置:X坐标对应的是时间的刻度,Y坐标对应的是温度,这样就可 以描出点来,Image可以将这些点进行整合成曲线并显示出来,从而达到描绘温 度曲线的功能。5调试过程5.1下位机调试本次下位机不算复杂,PCF8563和DS18B20以前都用过,本来打算用液晶LCD1602作为显示输出装置,但是由于开发板上没有给液晶预留接口,使用起来 不方便,加上上位机输出比较直观,所以下位机只用开发板上的4个一位数码管
16、 显示温度。这次下位机程序,主要的故障是串口部分,以往都是简单的串口发送接收, 对这一块没有深入了解。由于是先做下位机,所以只是拿单片机串口调试小助手 来调试下位机。在输出时间温度都已经正常的基础上,怎么协调地把时间和温度 发送到上位机,思路不是很明白。我原来只是想到要建一个数组,然后把温度和 时间依次写到数组里面,然后把数组依次写到SBUF里面,加上相应的定时器定 时读取时间和温度,通过中断把它们发送到上位机。可是在调试过程中,我并没 有发现自己想要的效果,串口调试小助手接收到的是一串乱码。为了缩减检查范 围,把原来的时间写到数组的数据全部注解掉了,只留下温度,用同样的方法去 调试,结果很明
17、显:还是一串乱码。怀疑是进制转换出了差错,于是我连温度都 不要了,直接把一个已知的数据(0XFF)装到SBUF里面,验证十六进制输出是 否正常,得到的结果不正常。于是又把0XFF改成1,验证十进制是否正常,结 果还是不正常。我就怪了,这样的话,就不是进制转换的问题了。感觉没有什么 思路了,随便在1后面加上0X30,奇怪,这次发送到上位机的正确了。我突然 醒悟,不是进制问题,是没有把字符转换成ASCI I码!后来,我发现,其实装入 SBUF的默认是16进制,即使不加0X30,在串口调试小助手里面选择以HEX形式 接收,依然可以接收到正常的16进制数。有了这个基础上,再加上一定的协议, 下位机算是
18、完成了。5.2上位机调试本次上位机调试花了很长一段时间,其实纠结的问题最大的还不是程序。而 是软件的安装和串口控件的安装。很早就写好了下位机并在串口调试助手调试成 功,等待在做好上位机的时候再次进行调试。后来在同学的帮助下才成功解决这 两个问题。该系统上位机的左上角发送和接受部分,就是为了方便上位机。下位 机发送的数据将在“接收”的Memo以16进制的方式显示出来。刚开始,我的上 位机并没有想到用这个模块,在调试温度显示时要时常打开串口调试小助手,非 常麻烦,于是添加了这个部分,这样就可以避免了调试时要时常切换窗口而导致 不必要的麻烦。到此,我们就可以进行温度显示以及数据库显示等部分的代码的
19、编写了。如果代码编写完后温度显示部分出问题,而“接收”的Mem。显示出来 的16进制正常,则说明是温度显示的代码编写出问题而不是串口接收出问题, 同样道理,数据库也可以用此方法进行调试。数据库的调试花费的时间最多,参照老师的课件,做一个数据库,然后连接 到上位机,可是就是写不进数据,仔细检查每一步后,最后发现字符长度除了问 题。该系统的数据库查询可以精确到秒,查询起来比较方便。温度曲线画图部分,刚做好的时候感觉变化范围比较小,就是一条近似的直 线一样,本来想改大一点刻度,但是后来想想,如果改大刻度,虽然是可以比较 直观地看到温度的变化,但是在温度变化范围比较大的时候就不能显示一个完整 的曲线了
20、。所以,权衡利弊,还是取消了改大刻度的决定。温度曲线显示的形式, 我采用了从右边开始显示,然后左移的方式,这样可以实时的显示温度的变化趋 势,不用刷新曲线。6系统总结通过本次温度实时监控设计的学习与实践,使自己的专业知识得到了强化, 最重要的加强了自己的学习能力。以往学习了单片机,都是那么零零碎碎,也没 什么时间总结,到了大三,一心迷于FPGA,单片机又落下了不少。这次设计, 让我重拾单片机,在以前不懂的方面,比如串口,有了比较深的了解,同时对于 芯片的使用,对时序图的工作步骤,又了进一步的了解。在上位机方面,从零基 础,到自己做出一个简陋的上位机,已经算是一个比较艰辛的过程了。但是也深 深的
21、体会了一个道理:只要不放弃,终究就会成功。这次设计分为上下位机两个 部分,当然也要分头工作。(1)下位机其实就是单片机程序设计,在以前做的实验的基础上,加上了串口 程序。这次下位机编程,主要是查阅了西安电子科技大学出版社出版的李建忠主 编的单片机原理与应用,把之前的知识也顺便复习了一遍。(2)上位机采用的是C+Build开发工具,以前没学过上位机制作,这次是零基 础学习上位机,对我来说意义也很重大。因为我知道,在如今的电子世界,已经 很少单纯的硬件了,一个好的系统,一般都是软件和硬件共同搭建出来的。这次 的上位机制作,当然很大一部分是通过老师上课的案例,加上相应的显示,同时 经过简单的上位机美化,就成了上位机了。【参考文献】1 李建忠.单片机原理及应用(第二版)陕西:西安电子科技大学出版社,2008.22 同志工作室.C+Build数据库开发实例 北京:人民邮电出版社,2001.13 杨素行.模拟电子技术基础简明教程(第三版)北京:高等教育出版社2006.54 李伟明等.C+从入门到精通 北京:清华大学出版社,20105 冯万利.数据库原理及应用实验与课程设计指导北京:清华大学出版社,20106 陈涛.单片机应用及C51程序设计(第2版)北京:机械工业出版社,2011