




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
[1]黄兴琦.单片机与WINDOWS下PC机的串口通信研究[J].仪器仪表用户,2007,14(4):79280.[2]肖金球,单片机原理与接口技术[M].北京:清华大学出版社,2004:1202159.[3]胡汉才.单片机原理及系统设计[M].北京:清华大学出版社,2004.[4]李长林.VisualBasic串口通信技术与典型实例[M].北京:清华大学出版社,2006.[5]求是科学.8051单片机C程序设计完全手册[M].北京:人民邮电出版社,2006.[6]周兴华.单片机智能化产品C语言设计实例详解[M].北京:北京航空航天大学出版社,2006.注:选题的根据:1)说明本选题的理论、实际意义 2)综述国内外有关本选题的研究动态和自己的见解1)现代社会,使用大型空调的场合越来越多,比如公司,宾馆,学校食堂等等。但都没有一个统一的管理监控系统,因此大量的能源浪费了。本系统设计一个基于PC机与单片机的多台空调的监控控制系统,所有空调都在一个监控室管理,管理员只要坐在电脑旁就可以对所有空调进行控制,并具有自动监控功能,不需要人干涉,因此大大提高了能源的节约。2)如今有的空调控制系统仅仅采用的是以单片机为主,采用键盘或遥控器进行参数设置,外接报警等控制电路,不具备人性化,而且操作不方便,如果对多台空调进行控制更加显得麻烦,增大了工作量。相比于本系统具有很大的缺陷性。主要内容:主要参考资料:[1]黄兴琦.单片机与WINDOWS下PC机的串口通信研究[J].仪器仪表用户,2007,14(4):79280.[2]肖金球,单片机原理与接口技术[M].北京:清华大学出版社,2004:1202159.[3]胡汉才.单片机原理及系统设计[M].北京:清华大学出版社,2004.[4]李长林.VisualBasic串口通信技术与典型实例[M].北京:清华大学出版社,2006.[5]求是科学.8051单片机C程序设计完全手册[M].北京:人民邮电出版社,2006.[6]周兴华.单片机智能化产品C语言设计实例详解[M].北京:北京航空航天大学出版社,2006.指导教师意见:指导教师签名:教研室意见:签名:年月日开题报告会纪要时间2008年12月28日地点三教五楼会议室与会人员姓名职务(职称)姓名职务(职称)姓名职务(职称)会议记录摘要:我的课题规模比较大,涉及的知识点比较多,我想和同学分工做,行吗?答:可以,你做PC机与单片机通信的部分,另外一个同学做控制器部分。2.老师,这个学期系里会组织答辩吗?答:如果这个学期能够按实际要求顺利完成,通过导师的审批达到要求的话,系里会组织一次小规模的答辩,希望大家认真对待,通过自己努力好好做毕业设计。3.老师,在实际设计过程中遇到了困难,可以请教你吗?答:当然可以,如果大家在设计过程中遇到了困难,可以随时到办公室找我,我们可以一起讨论解决,我非常乐意和大家一起学习。但是大家千万不要随便抄袭网上的,可以参考别人相关的思路和思想,然后在用自己的思维方式写出自己论文。会议主持人:记录人: 年月日指导小组意见负责人签名:年月日系部意见负责人签名:年 月 日注:此表由学生本人填写,一式三份,一份留系里存档,指导老师和本人各保存一份毕业论文(设计)中期检查表毕业论文(设计)题目学生姓名学号系别专业指导教师检查日期指导教师检查情况记载及修改意见:1)
软件设计部分应该给出几个主要分模块的设计流程图和设计程序,介绍设计思路要尽量详细一些.2)
分模块的硬件设计,应该多介绍以下电路的工作情况和在整个设计中的作用.3)
应该介绍一下,现在空调机的控制工作过程,这样一来可以更好的说明你的设计的合理性和实用性.4)结论部分要尽量详细一些.5)参考文献要20篇左右,要引用书和期刊资料.
签名:注:此表用于指导教师绪论 22选题背景及目的 22国内外研究状况 22设计和研究方法 221方案比较与论证 232硬件设计 242.1系统框图 252.2PC机串口 252.3电平转换芯片MAX232 272.4单片机AT89S51概述及系统复位电路设计 282.5数字温度传感器DS18B20 283软件设计 293.1串口通信控件MSCOMM 293.2MSCOMM控件的常用属性 303.2.1.CommPort属性 303.2.2.Input属性 313.2.3.output属性 313.2.4.PortOpen属性 313.2.5.Settings属性 313.2.6.Rthreshold属性 313.3计时器Timer控件 323.4CommandButton控件 333.5TextBox控件 343.6单片机串口通信 363.6.151单片机串行口控制寄存器 363.6.2串口工作模式 363.6.3串口通信数据传输率 373.7通信协议 373.8DS18B20测温程序 383.9下位机通信程序流程 384.系统原理图 405.人机交互界面 41结论 41参考文献 43附录A(上位机VB程序) 44附录B(下位机C51程序) 47致谢 51
TOC\t"05_图题"\c图1系统框图 25TOC\t"05_图题"\c图2九针D型串口 26TOC\t"05_图题"\c图3MAX232芯片管脚及定义 28TOC\t"05_图题"\c图4AT89S51复位电路 28TOC\t"05_图题"\c图5DS18B20管脚图 29TOC\t"05_图题"\c图6下位机通信流程图 39TOC\t"05_图题"\c图7系统原理图 40TOC\t"05_图题"\c图8人机控制界面 41TOC\t"06_表题"\c表1九针串口管脚定义 27TOC\t"06_表题"\c表2SCON寄存器比特位定义 36
摘要介绍了一种基于PC机空调控制系统数据通信的设计,本系统采用的核心技术是PC机与单片机串口通信,PC机采用VB设计人机控制界面,管理员利用此界面实现对所有房间空调的控制与监控。采用VB中的MScomm控件,利用MAX232电平转换芯片实现PC机与单片机的数据交换。单片机负责采集房间内的温度并将其发送给PC机。当空调工作在制冷方式时,如果房间温度低于人体适宜温度,PC将向该房间发送待机命令,相反则发送正常工作命令。当空调工作在制热方式时,如果房间温度高于人体适宜温度,PC机将向该房间发送待机命令,相反则发送正常工作命令。每台空调的监控时间间隔为一秒,因此可以在很短的时间内对所有空调实现监控,整个监控过程不需要人为干涉,直到管理员选择“关闭监控”。该系统适合于大型企业,医院等需要数量较多空调的场所。管理员对所有空调实行统一管理,避免了大量能源的浪费。更具科学性和实用性。【关键字】PC机单片机MAX232温度传感器VisualBasicDesignofdatecommunicationonair-conditioncontrolsystembasedonPCAbstractAdesignofdatecommunicationonair-conditioncontrolsystembasedonPCisintroducedinthispaper.ThecoretechnologyadoptedinthissystemisserialcommunicationbetweenPCsandMCU.thePCcontrolinterfaceisdesignedbyVBcontrols.Administratorcontrolandsupervisealloftheair-conditionsineveryroomonthisman-machineinterface.ThesoftwareistheMscommcontrolsprovidedbyVBandthehardwareisMAX232tocompletethedateexchangebetweenPCsandMCU.ThetemperatureintheroomiscollectedbyMCU,atthesameTimewhichissendedtothePCs.Whentheair-conditonworksinthemodeofcold,ifthetemperatureundertheinordertemperatureofpeople.Theorderabout”holdmachine”willbesendedbyPCs,oppsitelytheair-conditonworksasbefore.Ontheotherhand,whentheair-conditonworksinthemodeofwarm.ifthetemperatureexceedtheinordertemperatureofpeople.Theorderof“holdmachine”wassendedbyPCs.Oppsitelytheair-conditonworksasbefore.Thetimeintervalofeveryair-conditon’ssupervisalisabout1s.soallofair-conditons’supervisalarecompletedinveryshorttime.Withouthuman’sinterferenceinthewholeprocess.tilltheadministratorchoosethe“offsupervisal”.Thissystemcanbeadoptedinlargecompany,hospitalandsoon,whichneedthelargeamountsair-condition.Alloftheair-conditonaremanagedunitively.Lotsofpowerwastecanbeavoided.Ithasmuchmorepracticabilityandscience..【KeyWords】PCsMCUMAX232temperaturesensorVisualBasic绪论选题背景及目的随着社会生活水平的提高和科学技术的发展,大型空调已经广泛应用在各种场合,比如公司,医院,车站等等。然而这些空调都没有一个统一的管理和控制系统,比如在一个公司,员工下班后大部分人都不会主动关闭空调就离开了工作房间,有些人特意将空调温度设置的很低,因此造成大量的电能浪费,本系统旨在使家电趋向高效,节能,智能化方向发展,大大减少个人人为的任意操作,使其具有统一规范的控制管理系统。节约能源是全人类永恒的话题与使命,任何项目的研究和开发都必须充分考虑高效与节能,杜绝浪费。自从八十年代后期,PC机市场开始快速发展,越来越多的PC机应用得到开发。PC机的广泛应用不仅改变了我们的计算方式,对自动测试系统领域也带来了革命性的变化。充分利用计算机丰富的软硬件资源,大大突破了传统测试系统在数据信号处理、显示、传送、存储、打印等方面的限制。目前,随着单片机及微机技术的不断发展,单片机组网技术越来越成熟,集散测控系统应用越来越广泛。它既利用了单片机性价比高和面向控制等优点,又结合PC机具有丰富的软硬件资源,特别是非常友好的人机界面等特点。在这种系统中,单片机主要进行实时数据采集及预处理,然后通过串行口将数据传送给PC机,PC机对这些数据进一步处理,基于PC机的测试系统与监控系统正向着高速、高效,智能化、多功能化、多样化发展。国内外研究状况如今有的空调控制系统仅仅采用的是以单片机为主,采用键盘或遥控器进行参数设置,外接报警等控制电路,不具备人性化,而且操作不方便,如果对多台空调进行控制更加显得麻烦,增大了工作量。相比于本系统具有很大的缺陷性。随着单片机技术的发展,在各种单片机应用系统的设计中,如智能仪器仪表、各类手持设备、GPS接收器等,常常需要PC机与外部设备进行信息交换,即通信。串行通信已经成为计算机与其他设备进行数据交换的最广泛的途径之一。这也是当今市场比较热门的技术,许多监控系统都是基于PC机与单片机的串行通信来实现上位机对下位机的控制与监控,管理员只需在监控室的电脑上操作一个Windows环境下的人机界面就可以对所有要控制的设备进行管理,这使得管理员的工作量大大减少,也提高了工作效率,更加具有现代化和人性化。设计和研究方法本系统设计方法采用的是PC机与多片单片机实现数据通信,利用PC机和单片机的串口实现数据通信,所谓串口通信是指按照逐位顺序传递数据的通信方式,由于仅需三根传输线传送信息且通信距离相对较远,所以在控制领域的现场监测、分布控制等场合有着重要的应用价值。鉴于PC机具有强大的监控和管理功能,单片机则具有快速以及容易控制的特点,在数据量不大、传输要求不高的情况下,传输距离要求不远的情况下一般都采用给PC机配置的RS2232标准串行接口(如COM1,COM2)来实现应用系统与PC机之间的数据交换,PC机可以与一片单片机实现点对点通信,也可与对片单片机实现多机通信。由于本系统是实行对多台空调的同时监控与控制,故采用PC机与单片机多机通信,每个房间的空调都安装一个单片机系统,实现对温度的采集和发送,接受PC机发来的控制命令字,驱动控制器工作。上位PC机采用的是VisualBasic语言和它的MSCOMM控件来实现与单片机的串口通信,能任意发送命令给下位机并且也可以接收下位机发来的数据,实现双工通信。上位机定时对下位机采集的温度数据进行读取,经过判断来决定要发送的控制命令。在PC机Windows环境下实现串行通信一般有4种方法:底层汇编操作;用某些高级语言(如C、PASCAL)提供的库函数;用Windows提供的API函数;用串行通信控件MSCOMM;这几种方法有各自的优缺点,使用局限性也各不相同。有些通信方法可直接对串行口地址位操作,在此方式中,可传送一帧11位的信息:1位起始位,8位数据位,1位可作“地址帧”和“数据帧”的标志位和1位停止位。这可很方便实现多机通信(单片机通信方式2、3),但其复杂化和专业化程度高。串行通信控件MSCOMM只发送一帧10位的信息,取8位数据位,1位起始位,1位停止位,这与单片机的串口工作方式1刚好相同。利用此特性,在通信协议中,每台下位单片机都规定一个明确的地址,PC机发送出一个数据(地址或命令)给下位机后等待下位机的反应。下位机接收到地址或命令后,比较确认,若为本机地址则继续接受PC机发来的命令。利用这种查询方法可方便实现PC机与多台单片机的多机通信。1方案比较与论证方案一:采用单片机与单片机多机通信,选定其中任意一片单片机作为主机,其余为从机,分别安装在每个房间控制每个房间的空调并采集每间房的温度。单片机本身带有串口,可与单片机实现多机通信,但由于作为主机那块单片机需要管理与监控多台空调,对参数的设置以及实时监控带来了不便,没有一个很好的人机交互界面,不利于管理员的操作,不具备人性化的特点。故本设计没有采纳。方案二:采用PC机与单片机多机通信,由于PC机本身自带有9针串口(如COM1,COM2),通过MAX232电平转换芯片实现RS232电平逻辑向TTL电平逻辑的双向转换就可以很方便的实现PC机与下位单片机的串口通信,通过该芯片可以实现长达十多米的通信距离的数据传输,若适当降低传输速率,可增加其通信距离,因此对于一个企业里,完全可以通过一台PC机,仅仅在一个人机交互界面上将所有房间的空调实行统一监控与管理,取代人为对空调的任意控制,大大节约了电能。故本系统采用此方案。2硬件设计本系统主要是针对数据采集与通信进行研究,故硬件电路比较少,上位机只需一台普通的PC机,下位机采用常用的AT89S51,中间仅仅只需一片MAX232电平转换芯片,与下位机相连的温度采集模块,采用的是单总线制的DS18B20,它与单片机之间连接只需一根I/O口线,因此大大节省了单片机的I/O口,方便单片机与控制空调的控制器连接。而且其价格比较便宜,性价比高。
2.1系统框图系统框图如图1所示图SEQ图表\*ARABIC1系统框图模块说明:PC机为普通的带有串口的台式机,作用为:在其Windows界面上创建一个人机界面,控制每台空调的工作并且实时监控。MAX232为电平转换芯片,由于PC机串口为RS232接口只能识别EIA电平,而单片机机只能识别普通的TTL电平,此芯片的作用就是将两种电平进行转换,达到数据通信的目的。以单片机为核心的下位机系统主要作用是采集房间内的温度,供单片机来读取并保存,当上位机通知该下位机发送温度时,单片机调用串口发送函数,将当前温度发送给上位机。DS18B20为单线数字温度传感器,负责测量室内温度。2.2PC机串口台式计算机一般至少带有两个串行口COM1和COM2,串行口不同于并行口之处在于它的数据和控制信息是一位接一位串行地传送下午,这样,虽然速度会慢一些,但传送距离较并行口更长,因此对于距离较长的数据通信应该使用串行接口。通常COM1使用的是9针D形连接器,而COM2有些使用的是老式的DB25针连接器,本系统采用的是常用的9针连接器。由于CPU与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串口接口中,要由接收移位寄存器把串口方式转换为并行方式,由发送移位寄存器把并行方式转换成串行方式。完成这样的转换功能的电路,叫做通用异步收发器UART,该接口芯片已经集成在串口接口中,典型的有Intel的8251A,NationalSemiconductor的8250,Motorola的6850等等。其中九针D形串口如图2所示。图SEQ图表\*ARABIC2九针D型串口目前RS232是PC机与通信工业中应用最广泛的一种串行接口。RS232采用不平衡传输方式,即所谓单端通信。收,发端的数据信号是相对于信号地。其中9针串口引脚定义如表3所示,其中引脚2和引脚3分别为数据接收和发送端,这与单片机的RXD和TXD相类似,数据都是一位接着一位的发送。唯一不同的是两者之间的电平不同。RS232是用正负电压来表示逻辑状态,发送数据时,发送器典型的工作电压是5V—15V和-5V15V,接收数据时,接受器典型工作电压是+3V+12V和-3V-12V。而TTL是用电平高低表示逻辑状态。RS-232C主要用来定义计算机系统的一些数据终端设备(DTE)和数据电路终接设备(DCE)之间的电气性能。例如CRT、打印机与CPU的通信大都采用RS-232C接口,MCS-51单片机与PC机的通信也是采用该种类型的接口。由于MCS-51系列单片机本身有一个全双工的串行接口,因此该系列单片机用RS-232C串行接口总线非常方便。RS-232C串行接口总线适用于:设备之间的通信距离不大于15米,传输速率最大为20kB/s。表1九针串口管脚定义2.3电平转换芯片MAX232MAX232是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。由于电脑串口RS232电平是-12v+12v,而一般的单片机应用系统的信号电压是TTL电平0+5v,MAX232就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-VTTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。主要特点1、单5V电源工作2、LinBiCMOSTM工艺技术3、两个驱动器及两个接收器4、±30V输入电平5、低电源电流:典型值是8mA6、符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.287、ESD保护大于MIL-STD-883(方法3015)标准的2000VMAX232芯片管脚及各管脚定义如图3所示。其中标号IN和OUT都是针对MAX232本身而言,即OUT脚接的是PC机或者单片机的RXD脚,同理IN脚接的是PC机或单片机的TXD脚利用此性质可以很容易实现PC机与单片机的连接。由于它有两组收发器,所以7,8脚和9,10脚配合为一组,11,12脚和13,14脚为一组。使用时人选一组即可。图3MAX232芯片管脚及定义2.4单片机AT89S51概述及系统复位电路设计AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kB的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。系统复位电路也就是单片机的复位电路,如图4所示:图4AT89S51复位电路当按下复位键时,ESET瞬间为高平,然后电源与电容、电阻构成回路,并对C1电容进行充电,R1上的电压逐渐下降,直至为低电平,系统处于正常工作状态。2.5数字温度传感器DS18B20DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型单总线智能温度传感器,信息经过单线接口送入DS18B20或从DS18B20送出,因此从处理器到DS18B20仅需一根线,读,写和完成温度转换所需电源可以由数据线本身提供,而不需要外部电源。DS18B20内部主要由4部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,配置寄存器。DS18B20管脚图如图5所示DS18B20的特点如下:独特的单线接口方式。DS18B20与处理器连接时仅需一根口线即可实现处理器与DS18B20的双向通信。在使用中不需要任何外围元件。可用数据线供电,电压范围为+3.0~+5.5V。测温范围为-55~+125摄氏度,固有测温分辨率为0.5度通过编程可实现9-12位的数字读数方式。最高测温精度可达0.0675度。最大转换时间为200MS用户可自设定非易失性的报警上下限值支持多点组网功能。多个DS18B20可用并联在唯一的3线上,实现多点测温。负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。图5DS18B20管脚图3软件设计本系统主要研究的是PC机与单片机的串口通信,所以大部分是通过软件来实现,上位机(PC)采用的是VB编程,利用MSCOMM控件实现PC机数据的接收与发送,下位机(单片机)采用的是C51编程,C51具有可读性强,移植性强的特点,因此被广泛采用。为了达到上位机与下位机的通信的协调与匹配,因此双方需要一套相同的通信协议,该协议是人为自己规定的。有了这套协议就可以顺利实现双工通信。3.1串口通信控件MSCOMMMSCOMM控件全称为MicrosoftCommunicationControl,是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法,MSCOMM控件提供两种处理通信的方式:事件驱动方式和查询方式。事件驱动通信是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接受缓冲区中有字符,,可以利用MSCOMM控件的OnComm事件捕捉并处理这些通信事件。OnComm事件还可以检查和处理通信错误。查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件。事件驱动方式类似于单片机的中断方式,当事件发生了即中断发生了,CPU进入中断处理程序,处理完就退出做其他工作并等待下一次中断来临,大大提高了CPU的工作效率。而查询方式也是类似与单片机的中断查询方式,此方式关闭了中断响应,CPU一直在查询事件发生标志,例如定时器溢出标志,外部中断标志等等,事件发生了就开始进入处理程序。此方法大大降低了CPU利用率。本系统设计采用的是事件驱动方式,当下位机发送数据给PC机时,MSCOMM控件的OnComm事件将被触发,通过比较OnComm事件的CommEvReceive属性将接收缓冲区里的数据读回来并存储,以供PC机判断分析。其中PC机数据接收的代码如下:DimtemperaturePrivateSubMSComm1_OnComm()SelectCaseMSComm1.CommEventCasecomEvReceivetemperature=MSComm1.InputCasecomEvSendCasecomEvCTSCasecomEvDSRCasecomEvCDCasecomEvEOFEndSelectEndSub3.2MSCOMM控件的常用属性3.2.1.CommPort属性设置并返回通信端口。CommPort属性语法:Object.Commport=valueValue为整数,说明端口。在设计时,value可以设置成从1到16的任何数(默认值为1)。具体值根据PC机的有效端口而定。如果用PortOpen属性打开一个并不存在的端口,MSCOMM控件会产生错误68(设备无效)。所以必须在打开端口之前设置CommPort属性。3.2.2.Input属性返回并删除接受缓冲区中的数据流。该属性在设计时无效,在运行时为只读。Input属性语法:Object.input3.2.3.output属性往发送缓冲区写数据流。该属性在设计时无效,在运行时为只读。Output属性语法:Object.output=valueOutput属性可以传输文本数据和二进制数据。用output属性传输文本数据,必须定义一个包含一个字符串的variant。发送二进制数据,必须传送一个包含字节数组的variant到output属性。本系统发送的的是命令字,所以采用的是文本数据发送。3.2.4.PortOpen属性设置并返回通信端口状态(开或关)。在设计时无效。PortOpen属性语法:Object.PortOpen=valueValue为布尔表达式TURE和FALSE,说明端口的状态,分别为打开和关闭。当应用程序终止时,MSCOMM控件自动关闭串行端口。3.2.5.Settings属性设置并返回波特率,奇偶较检,数据位,停止位参数。Settings属性语法:Object.Setting=valueValue为字符串表达式,说明通信端口的设置值。Value由四个设置值组成,格式如下:“BBBB,P,D,S”BBBB为波特率,P为奇偶校检,D为数据位数,S为停止位数。Value默认值为“9600,N,8,1”。通常与下位机通信采用默认值即可,因为单片机有效处理的数据位也是8位,波特率也可以设置为9600。3.2.6.Rthreshold属性在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm之前,RThreshold属性设置并返回的要接收的字符数,即只有当接收到了等于Rthreshold属性值个数的字符才能产生OnComm事件。Rthreshold属性值为0时,不产生OnComm事件。因此需将Rthreshold属性值设置为有效的整数值。本系统仅仅只接受单片机发送的两位数据温度值,所以Rthreshold属性值设置为2。3.3计时器Timer控件计时器控件可以每隔一个时间间隔自动触发一个计时器事件,计时器控件在设计时显示为一时钟图标,大小可变,运行时不可见。由于本系统实现对空调的控制需发送一连串控制命令,故通过Timer控件定时发送,可以有效的提高数据发送的正确性,有利于和下位机接收速度相匹配。Timer控件有两个重要属性,分别为Enable属性和interval属性前者决定计时器是否开始计时,后者设置两次计时器事件之间的时间间隔,以毫秒为单位,值的范围是0~65536,当internal属性值为0时,计时器无效,若把internal属性值设置为1000,则表示每秒钟触发一次计时器事件。由此可得,若想在一秒钟内执行n此计时器事件,则必须将internal属性值设置为1000/n才可实现。本系统用到了两个Timer控件,一个作为发送命令字符串所用,当命令发送完后由软件关闭计时器。另一个作为对所有空调定时监控,设置计时间隔为1S,每隔一秒换一台空调进行监控,如此循环下去,直到用户关闭监控,即关闭计时器。两个计时器运行代码如下:PrivateSubTimer2_Timer()/*****发送命令字符串*****/MSComm1.Output=Mid$(Text2.Text,i,1)i=i+1Ifi>=j+1ThenTimer2.Enabled=FalseEndIfEndSubPrivateSubTimer1_Timer()/*****对所有空调轮流监控*****/MSComm1.Output=CStr(addr)addr=addr+1Ifaddr>2Thenaddr=1MSComm1.Output="S"Ifwindtype2="C"ThenIfVal(temperature)<=Val(temper)ThenMSComm1.Output="K"ElseMSComm1.Output="R"EndIfElseIfwindtype="C"ThenIfVal(temperature)<=Val(Text1.Text)ThenMSComm1.Output="K"ElseMSComm1.Output="R"EndIfElseIfwindtype2="H"ThenIfVal(temperature)>=Val(temper)ThenMSComm1.Output="K"ElseMSComm1.Output="R"EndIfElseIfVal(temperature)>=(Text1.Text)ThenMSComm1.Output="K"ElseMSComm1.Output="R"EndIfEndIfEndSub3.4CommandButton控件CommandButton控件在VB设计的人机交互界面中经常用到,对于一些基本操作都必须通过CommandButton来完成。该控件最为重要的的一个事件就是Click事件,当用户按下Command就可以触发该事件,完成相应的操作。本设计用到了多个CommandButton控件,具体代码如下:PrivateSubCommand1_Click()/***开启计时器1开始对所有空调轮流监控***/addr=1Timer1.Enabled=TrueEndSubPrivateSubCommand2_Click()/****关闭计时器1停止对对空调的监控***/Timer1.Enabled=FalseEndSubPrivateSubCommand3_Click()/***开启计时器2将控制命令字符串发送**/Text2.Text=list1.Text&controlcode&windtype&Text1.Texti=1j=Len(Text2.Text)Timer2.Enabled=TrueEndSubPrivateSubCommand4_Click()/***开启所有空调使其正常工作***/Text2.Text="1"&"D"&windtype2&temperi=1j=Len(Text2.Text)Timer2.Enabled=TrueEndSubPrivateSubCommand5_Click()/***关闭所有空调停止工作***/Text2.Text="1"&"G"i=1j=Len(Text2.Text)Timer2.Enabled=TrueEndSubPrivateSubCommand6_Click()/***关闭通信串口退出控制界面***/MSComm1.PortOpen=FalseEndEndSub3.5TextBox控件TextBox控件用于显示或者输入文本信息,比如要输入一串字符串就必须在TextBox文本框中输入。VB串口通信的数据发送分为两种,分别为文本数据发送和二进制数据发送。若选择文本数据发送,一般就要用到TextBox控件,将所发文本信息统一写到文本框中,通过计时器定时依次发送出去。当打开一个文本文件并需要显示出来时就要用到TextBox控件。本系统用了两个TextBox控件,一个为输入温度值文本框,另一个为存放控制命令字符串。具体代码如下:Text2.Text=list1.Text&controlcode&windtype&Text1.TextMSComm1.Output=Mid$(Text2.Text,i,1)/**Text2.Text存放控制命令字符串**/
3.6单片机串口通信AT89S51芯片内部有一个全双工的串行口,与外部数据交换仅需两根口现,分别为RXD和TXD。RXD为读数据口,TXD为写数据口。串行通信一般分为同步和异步两种方式,51单片机通常采用的是异步通信,它通常以字符或者字节为单位,组成字符帧来传送,它不需要信号线来传送数据的时钟,通信双方均使用自己的时钟来控制数据的发送和接收,不是同步进行的。换句话说,甲方开始发送一位,乙方并不是开始接受这一位,而是等甲方发送万一帧数据后,乙方才开始接受。3.6.151单片机串行口控制寄存器51单片机的串行口由串行口控制寄存器SCON,PCON。发送接收缓冲器SBUF。其中SUBF的功能是:当发送数据时,先将数据移到累加器ACC,然后在从ACC移到SBUF中,然后通过TXD脚一位位发送出去。当接受数据时,则在接收中断程序中把SBUF的数据取出,若采用查询中断标志法时,则当串口中断标志RI置位时,把SBUF的数据取出。SBUF虽然只有一个入口地址(99H)但实际上对SBUF的读写并不是一个寄存器,这样才可以使单片机能够同时进行收发工作。PCON寄存器在串口通信中只用到了其最高位SMOD,它是数据传输率选择位。在模式1,2,3中,串行通信数据传输率在SMOD为1时提高一倍。SCON寄存器是串口通信中最为重要的寄存器,其各个比特位的的定义如表2所示表2SCON寄存器比特位定义3.6.2串口工作模式51单片机串口有四种工作模式:模式0(SM0=0,SM1=0),表示为同步移位寄存器的工作方式;模式1(SM0=0,SM1=1)表示10位异步收发模式;模式2(SM0=1,SM1=0)表示11位异步收发模式;模式3(SM0=1,SM1=1)为11位异步收发模式。其中模式1常用于单机通信,即点对点通信。模式3用于多机通信,单片机多机通信或者PC机与单片机多机通信。本系统采用模式3,通过控制SM2来区别PC机发送的是地址还是数据,以此来实现多机通信3.6.3串口通信数据传输率在模式0下,串口数据传输率是固定的,它的值为单片机晶振频率的1/12。在模式2下,当SMOD=0时,串口数据传输率为经晶振频率的1/64;SMOD=1时,数据传输率为晶振频率的1/32。在模式1和模式3下,通信数据传输率是由定时器T1的溢出频率来决定的,相应的公式为:数据传输率=其中定时器T1在模式2工作,X为定时器T1的初值。本系统为了和上位机波特率相匹配,选用波特率为9600bit/s。此时X=250fosc=11.0592MHZ3.7通信协议通信双方实现数据收发,必须有统一规定的通信协议。本系统根据对空调的实际控制,规定的协议如下:波特率上位机与下位机都设置为9600bit/s。一帧有效数据传输位数为8位。下位机地址编号为1,2(假设只对两台空调控制)。D开启电源命令字G关闭电源命令字H热风命令字C冷风命令字K待机命令字R解除待机恢复工作命令字addr当前下位机地址S提示下位机发送当前温度命令字以上控制命令字都是人为规定,只需通信双方识别即可。3.8DS18B20测温程序DS18B20采用单线制数据传输,其内部数据采用两字节存储,其中高字节的低三位和低字节为温度数值大小,高字节的高五位为符号位。其中从DS18B20读出来的温度值处理函数如下:a=ds1820rd();/**低字节**/b=ds1820rd();/**高字节**/tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0x0fff)tvalue=tvalue*(0.625);tempercode[0]=tvalue%1000/100+0x30;/***得到温度值的十位数字**/tempercode[1]=tvalue%100/10+0x30;/***得到温度值的个位数字**/3.9下位机通信程序流程下位机通信流程如图6所示图6下位机通信流程图
4.系统原理图本系统主要研究的是数据通信,没有对具体控制空调的控制器进行研究,所以原理图比较简单,系统原理图如下图7系统原理图附:二极管在电路中起隔离作用,考虑到单片机向PC机传送数据时不受其它的单片机的影响,就在每个单片机的TXD端串入一个二极管。5.人机交互界面图8人机控制界面6.结论本次论文都是经过自己亲身体会,每个部分都是自己花时间和心思完成的。首先是确定设计方案,刚开始这个环节遇到了一些麻烦,因为设计一个控制界面要考虑好多可能的情况,而且要符合人为操作习惯,但又不能太过复杂和繁琐。最大的问题就是:因为是上位机和下位机进行通信,两方的通信协议和规定也比较麻烦,考虑的因素也比较多,特别是在软件的编写上,要考虑统一性和规范性,换句话说就是写的代码必须能够与在人机界面的所有操作相匹配,通过多次尝试和调试。基本上解决了这些问题。界面上的所有操作基本上符合人为习惯。包括的控制命令主要有:任意房间空调的选择;空调基本的开启与关闭;风类的选择;温度的任意设定;对每台空调实行自动监控与控制从而达到节能的目的;对所有空调一次性开启与关闭。这些都是空调最基本最常用的控制,对比如公司这种公家场所的空调控制还是比较适用的。本设计的主要思想是对每台下位单片机都规定了明确的地址(编程时固定)。PC机发送出一个数据(地址或命令)给下位机后等待下位机确认为本机地址才作出反应并接收其他控制命令。该方法编程简单、通信可靠,是一种有效的多机通信方法,但MSCOMM控件本身不能专门针对多机通信,所以此方法应用还是有一定的范围。对上位机的程序编写采用的是VB。为此专门从图书馆借了两边相关类型的书。自己慢慢自学,所以刚开始看不出一点效果,信心大减,但是想到自己的论文必须要用到这个知识,最后还是下决心坚持下去了,通过单片机开发板和电脑来进行实验。一步一步总结和调试,最后还是成功完成了。这也让我看到了一点:只要有信念,只要遇到的问题在你的能力范围之内,你就一定可以解决。
7.参考文献[1].张毅坤,陈善久,裘雪红.单片机微型计算机原理及应用[M].西安:电子科技大学出版社,1997.[2].夏路易.单片机技术基础教程与实践[M].北京:电子工业出版社.[3].张迎新.单片机应用设计培训教程[M].北京:航空航天大学出版社,2007.[4].冯育长.单片机系统设计与实例分析[M].西安:电子科技大学出版社,2007.[5].李鸿.单片机原理及应用[M].长沙:湖南大学出版社,2004.[6].求是科技.8051系列单片机C程序设计完全手册[M].北京:人民邮电出版社,2006.[7].周学毛.新编C语言程序设计教程(第二版)[M].西安:电子科技大学出版社,2004.[8].王群.电气信息类专业英语[M].北京:北京航空航天大学出版社,1993.[9].胡学海.单片机原理及应用系统设计[M].长沙:湖南大学出版社,2004.[10].周兴华.单片机智能化产品C语言设计实例详解[M].北京:北京航空航天大学出版社,2006.[11].白康生.VisualBasic程序设计.北京:清华大学出版社,2006.[12].李长林.VisualBasic串口通信技术与典型实例.北京:清华大学出版社,2006.[13].王永军、从玉珍.数字逻辑与数字系统[M].北京:电子工业出版社,1999.[14].王松武,于鑫.电子创新设计与实践[M].国防工业出版社,2005年1月第1版.[15].王忠民.微型计算机原理[M].西安:电子科技大学出版社,2007年6月第二版.[16].周毛学.新编C语言程序设计教程[M].西安:电子科技大学出版社,2005年7月.[17].李朝青.PC机及单片机数据通信技术[M].北京:北京航空航天大学出版设,2000年9月.[18].楼然苗.51系列单片机设计实例[M].北京:北京航空航天大学出版设,2003年4月.[19].张毅刚.新编MCS-51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社,2003年2月.[20].求是科学.单片机通信技术与工程实践[M].北京:人民邮电出版社,2005年1月.[21].马壮,吴铮,王永强.基于VB的PC机与单片机串行通信系统研究与实现[J].唐山学院学报,2008,24(4):350-355.
附录A(上位机VB程序)OptionExplicit’遇到未经声明的变量名提出警告Dimcontrolcode,windtype,windtype2’定义变量DimaddrAsInteger’定义下位机地址DimtemperatureAsString‘定义字符串变量,存储下位机发来的温度值Dimi,jDimtemperAsString‘定义字符串变量,表示PC机发给下位机的温度值PrivateSubCommand1_Click()‘开启计时器1对所有空调实行轮流监控addr=1Timer1.Enabled=TrueEndSubPrivateSubCommand2_Click()‘关闭计时器停止监控Timer1.Enabled=FalseEndSubPrivateSubCommand3_Click()‘开启计时器2将控制选定空调的命令字符串发送Text2.Text=list1.Text&controlcode&windtype&Text1.Texti=1j=Len(Text2.Text)Timer2.Enabled=TrueEndSubPrivateSubCommand4_Click()‘设置好各参数通过计时器2将所有空调开启Text2.Text="1"&"D"&windtype2&temperi=1j=Len(Text2.Text)Timer2.Enabled=TrueEndSubPrivateSubCommand5_Click()‘通过计时器2将所有空调关闭Text2.Text="1"&"G"i=1j=Len(Text2.Text)Timer2.Enabled=TrueEndSubPrivateSubCommand6_Click()‘关闭串口退出人机界面MSComm1.PortOpen=FalseEndEndSubPrivateSubForm_Load()‘打开界面时是有些内容初始化MSComm1.CommPort=1‘选择串口1MSComm1.PortOpen=True‘打开串口1MSComm1.Settings="9600,n,8,1"‘设置波特率等参数EndSubPrivateSubMSComm1_OnComm()‘通过MSCOMM的OnComm事件的CommEvent属性来接收下位机发来的数据SelectCaseMSComm1.CommEventCasecomEvReceivetemperature=MSComm1.InputCasecomEvSendCasecomEvCTSCasecomEvDSRCasecomEvCDCasecomEvEOFEndSelectEndSubPrivateSubOption1_Click()‘点击ON表示开启空调controlcode="D"EndSubPrivateSubOption2_Click()‘点击OFF表示关闭空调controlcode="G"EndSubPrivateSubOption3_Click()‘点击”热风”表示选择风类为热风windtype="H"EndSubPrivateSubOption4_Click()‘点击”冷风”表示选择风类为冷风windtype="C"EndSubPrivateSubOption5_Click()‘点击”夏天”则风类为冷风并且室内温度规定为20度windtype2="C"temper="20"EndSub
PrivateSubOption6_Click()‘点击”冬天”则风类为热风并且室内温度规定为25度windtype2="H"temper="25"EndSubPrivateSubTimer1_Timer()‘使用timer1的timer事件轮流对每一台空调实行监控MSComm1.Output=CStr(addr)addr=addr+1Ifaddr>2Thenaddr=1MSComm1.Output="S"Ifwindtype2="C"ThenIfVal(temperature)<=Val(temper)ThenMSComm1.Output="K"‘当选择冷风时,室内温度低于设置值就待机ElseMSComm1.Output="R"‘否则就正常工作EndIfElseIfwindtype="C"ThenIfVal(temperature)<=Val(Text1.Text)ThenMSComm1.Output="K"ElseMSComm1.Output="R"EndIfElseIfwindtype2="H"ThenIfVal(temperature)>=Val(temper)ThenMSComm1.Output="K"‘当热风时,室内温度高于设置值就待机ElseMSComm1.Output="R"‘否则正常工作EndIfElseIfVal(temperature)>=Val(Text1.Text)ThenMSComm1.Output="K"ElseMSComm1.Output="R"EndIfEndIfEndSubPrivateSubTimer2_Timer()‘利用Timer2的Timer事件发送控制命令字符串MSComm1.Output=Mid$(Text2.Text,i,1)i=i+1Ifi>=j+1ThenTimer2.Enabled=FalseEndIfEndSub附录B(下位机C51程序)#include<reg51.h>#defineucharunsignedchar#defineD0x44/*开启电源命令字*/#defineG0x47/*关闭电源命令字*/#defineH0x48/*热风命令字*/#defineC0x43/*冷风命令字*/#defineK0x4b/*待机命令字*/#defineR0x52/*解除待机恢复工作命令字*/#defineaddr0x31/*当前下位机地址*/#defineS0x53/*提示下位机发送当前温度命令字*/#defineuintunsignedintsbitDQ=P1^4;sbitled1=P1^0;sbitled2=P1^1;sbitled3=P1^2;sbitled4=P1^3;uinttvalue;uchartempercode[]={0x00,0x00};/*存储环境温度缓冲区*/ucharreceivecode[]={0x00,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 线上线下彩票业务合作框架协议
- 草牧场承包权流转与农业可持续发展合作协议
- 食品流通市场承包权转让合同范本
- 外债融资担保机构合作协议范本
- 桩基露筋防腐处理技术专题
- 预应力孔道智能压浆监控
- 中职学校教师培训
- 滨水带施工合同定交底
- 智慧用电服务体系建设方案智慧电能服务体系建设方案
- 智慧医院节能监管平台建设方案节约型医院实施方案
- R1快开门式压力容器操作上岗证考试题及答案
- 贵州毕节中考试题及答案
- 道路人行天桥加装电梯导则(试行)
- 中国废旧轮胎橡胶粉项目投资计划书
- 2025年河北省专技人员公需课《人工智能时代的机遇与挑战-预训练大模型与生成式AI》答案
- 2025-2030母婴用品产业市场现状供需分析及重点企业投资评估规划分析研究报告
- pc构件吊装安全专项施工方案
- 2025万家寨水务控股集团所属企业校园招聘82人笔试参考题库附带答案详解
- 2024年贵州省纳雍县事业单位公开招聘中小学教师35名笔试题带答案
- 采购管理 关于印发《中国联通采购管理办法》的通知学习资料
- 正畸器械知识培训课件
评论
0/150
提交评论