单片机应用毕业论文
上海交通大学自学考试毕业论文
基于单片机的照明控制系统
摘要
随着电子技术的飞速发展,基于单片机的控制系统已广泛应用于工业、农业、电力、电子、智能楼宇等行业,统的常规电子线路。与应用奠定了坚实的基础。
本文阐述了照明的有线、无线控制方式设计原理与实现方法。以设计过程为主线,分别从硬件和软件两个方面描述设计过程,即从硬件电路的设计方法到实现所要求功能的软件技术。该照明控制系统的主控制器、分控制器分别是以AT89C51与AT89C2051单片机为基础,实现了有线通信、无线数传、控制与显示等功能。文中详细地描述了控制电路的设计过程,包括:键盘与LED显示电路、RS485通信电路、无线数传电路、照明灯控制电路以及看门狗电路等。对于软件设计主要有主控制器、分控制器的有线通信程序设计与无线数字传输程序设计以及灯光控制、定时控制、键盘扫描与LED显示等程序设计。有线通信程序的功能是:通过RS485主从通信方式,由主控制器发出命令对全部或单个分控制器所控制的照明灯实现开启、关闭、灯光亮度调节、定时控制等功能。无线数传程序设计的功能是:通过无线数传模块实现照明灯的无线遥控,同样实现有线方式控制的功能。
关键词:主控制器,分控制器,单片机,有线通信,无线数传,灯光
亮度控制,定时控制
上海交通大学自学考试毕业论文
TheControlSystemforLightingBasedon
–chipMicrocomputerSingleSingle–
Abstract
WiththerapidbasedonSingle-chippower,electron,intelligentbuildingandsoon.Microcomputer,asthesubjectandcoreoftheembeddedsystemofcontrol,replacesthetraditionalsystem—electroniccircuit.Atthesametime,thedevelopmentandmaturationoftheintelligentbuildinghaveestablishedthesubstantialfoundationforthepopularizationandapplicationofthecontrolsystemforlightingbasedonsingle-chipmicrocomputer.
Thepaperexpatiatesonthedesigningtheoriesandimplementationmethodofthecontrolsystemforlightingbywiredorwirelesscommunications.Takingthedesigningprocessasmainline,itdescribestheprocessofdesigningfromtworespects—hardwareandsoftware.Inanotherword,thepaperdescribestheprocessfromthemethodofcircuitdesigningtothesoftwaretechnologyofrealizingthedemandedfunctions.ThehostcontrollerofthecontrolsystemforlightingisbasedonAT89C51single-chipmicrocomputer,andtheauxiliaryonesarebasedonAT89C2051.Thesystemcandomanyjobs,suchaswiredcommunication,wirelessdatatransmitting,controllinganddisplay.Thepaperdescribesthedesigningprocessofthecircuitatlength,including:keyboardandLEDdisplaycircuit,RS485communicationcircuit,wirelesstransmittingcircuit,controlcircuitoflighting,watchdogcircuit,etc.Thedesigningofsoftwaremainlyincludestheseveralprogramming,suchaswiredcommunication,wirelessdatatransmitting,lamplightcontrolling,timedcontrolling,keyboardscanningandLEDdisplaying.ThewiredcommunicationprogrammingfunctionisthatthroughMaster-slavecommunicationmethodbasedonRS485thehostcontrollersendsorderstotheallauxiliarycontrollersoreachone,including:turning
上海交通大学自学考试毕业论文
onlighting,turningofflighting,regulatingbrightnessoflighting,controllingtimedlighting,etc.Thewirelessdatatransmittingprogrammingfunctionisthatbywirelesstransmitteritrealizeswirelesscontrollingofthelighting,andachievesthefunctionsidenticaltowiredcommunication.
KeyWords:Hostcontroller,Auxiliarycontroller,Single-chipmicrocomputer,Wiredcommunication,Wirelessdatatransmitting,controllingbrightnessoflighting,Timedcontrolling
上海交通大学自学考试毕业论文
目录
摘要·····················································
1
Abstract··················································
2
第一章序言6
1.1
6
1.2
7
1.3
7
1.4
8
第二章基于单片机的照明控制系统的设计框架和性能························
9
2.1
9
2.2
9
2.3
11
2.4
12
第三章基于单片机的照明控制系统的硬件电路设计·······················
13
3.1主控制器的电路设计············································
单片机应用技术···················································有线通信技术···················································无线数传技术···················································本章小结···················································系统设计要点···················································系统的结构···················································系统性能指标与技术要求···········································本章小结···················································
13
3.1.1
14
3.1.2
14
3.1.3
14
3.2
15
3.2.1
16
3.2.2
16
3.3
17
3.4
20
3.4.1
20
3.4.2
20
3.5
21
第四章
22
4.1人机交互程序设计··········································
22
4.1.1
23
4.1.2LED数码显示程序设计·············································
键盘的接口设计···················································LED数码显示的接口设计···········································看门狗监控电路的设计··················································分控制器的电路设计·················································时钟芯片的接口设计··············································零点检测与可控硅控制电路的设计·····························RS485通信电路的设计···········································无线数传电路的设计···············································无线数传电路的连接···········································SRWF-1模块的特性·······································本章小结···················································基于单片机的照明控制系统的软件设计······························键盘扫描程序设计········································
25
4.2
26
4.2.1
26
4.2.2
28
4.3
30
4.3.1
30
4.3.2
32
4.4
33
4.4.1
33
4.4.2
34
4.5
35
4.5.1
37
4.5.2
37
4.6
39
4.7
39
第五章实验及总结···················································
照明启停控制程序设计·············································全部启停控制程序设计············································单独启停控制程序设计···············································照明亮度控制程序设计···············································全部亮度控制程序设计···············································单独亮度控制程序设计···············································照明定时控制程序设计···················································全部定时控制程序设计···················································单独定时控制程序设计···················································RS485通信程序设计···················································主机部分通信程序设计···················································从机部分通信程序设计···················································无线数传通信程序设计···················································本章小结···················································
40
致谢···························································
41
参考文献···························································
42
附录···························································43
第一章序言
近十几年来,随着我国城市建设的快速发展,楼宇照明也相应飞速发展。在楼宇的照明数量与质量两个方面均有显著的变化与提高,特别是随着人民生活水平进入小康水平,楼宇照明水平提高很快,追求人工照明光环境的舒适性、个性化、安全、节能等方面日见突出。楼宇中人工光环境对于满足人们的生活、学习、娱乐以及工作方面有着重要的意义。
照明控制系统传统是以照明配电箱通过手动开关来控制照明灯具的通断,或通过回路中
定时通断、中央监控等功能。
随着微电子技术与数字化技术的发展,开发出了智能化水平更高的专业照明控制的独立系统,从而能节约能源、延长灯具寿命、提高照明质量。根据使用客户的经验,不仅使照明管
理与设备维修简单及降低费用外,还对环境改善、提高工作效率都有着显著的效果。
本系统是以单片机为控制器的核心,其中上位机是以AT89C51为基础,下位机是以AT89C2051为基础,再连接外围电路,通过现场总线RS485通信方式实现照明灯具的智能控制,也可以通过无线数传模块实现无线通信,从而达到照明灯具的智能控制。
1.1单片机的应用技术
电子技术和微型计算机的迅速发展,促进微型计算机测量和控制技术的迅速发展和广泛应用,单片机(单片微型计算机)的应用已经渗透到国民经济的各个部门和领域,它起到了越来越重要的作用。
单片微型计算机就是将中央处理单元、存储器、定时/
计数器和多种接口都集成到一块集成电路芯片上的微型计算机。因此一块芯片就构成了一台计算机。它已成为工业控制领域、智能仪器仪表、尖端武器、日常生活中最广泛使用的计算机。
单片机由硬件系统与软件系统组成。硬件系统是指构成微机系统的实体与装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。其中运算器和控制器一般做在一个集成芯片上,统称中央处理单元(CentralProcessingUnit),简称CPU,是微机的核心部件。CPU配上存放程序和数据的存储器、输入/输出(Input/Output,简称I/O)接口电路以及外部设备即构成单片机的硬件系统。软件系统是微机系统所使用的各种程序的总称,人们通过它对微机进行控制并与微机系统进行信息交换,使微机按照人的意图完成预定的任务。软件系统与硬件系统共同构成完整的单片微型计算机系统,两者相辅相成,缺一不可。
1.2有线通信技术
在数据通信、计算机网络以及工业上的分布式控制系统中,经常需要采用串行通信来达、RS-422、RS-485。RS232了广泛应用。其后发展起来的RS-422、RS-485是平衡传送的电气标准,比起RS-232非平衡的传送方式在电气指标上有了大幅度的提高。但总的来说,RS-232、RS-422与RS-485最初都是由电子工业协会(EIA)制订并发布的,EIA于1983年在RS-422基础上制定了RS-485
标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。正因为RS-485的远距离、多节点(32个)、可以自行定义协议以及传输线成本低的特性,使得EIARS-485成为工业应用中数据传输的首选标准。
1.3无线数传技术
有线传输的方式虽然使用非常广泛且可靠性较高,但由于各方面的局限性,已经在众多方面被无线传输方式所取代。无线数字传输技术日益完善,其重要性也被人们所认识,相应的基于无线数字传输的产品也随处可见。无线数字传输系统安装简便、使用效率高,可应用于各个领域,例如,无线数据传输、无线数据采集、无线抄表、工业遥控、楼宇自动化、高档玩具等等。
无线数传技术是通过单片机的串口与无线数传模块连接,
将要发送的数据由无线数传模块向空中发出,然后由另一个终端设备的无线数传模块从空中接收数据,这样就实现了预期的任务。
1.4本章小结
本章介绍了照明控制系统在智能楼宇中的应用、发展以及所使用的主要专业技术。它从传统的方式逐步发展到能够实现智能化控制,使用户使用起来更加方便、舒适。本文所研究的照明控制系统主要使用了单片机应用技术、有线通信技术和无线数传技术。在这里主要对这三种技术的组成、功能、发展以及使用领域等方面进行了简要的阐述。
第二章基于单片机的照明控制系统的设计框架与性能
2.1系统设计要点
和软件分开设计。
件进行调试、
测试,以达到设计要求。软件设计部分,首先在总体设计中完成系统总框图和各模块的功能设计,拟定详细的工作计划;然后进行具体设计,包括各模块的流程图,选择合适的编程语言和工具,进行代码设计等;最后是对软件进行调试、测试,达到所需功能要求。
在系统设计中设计方法的选用是系统设计能否成功的关键。硬件电路是采用结构化系统设计方法,该方法保证设计电路的标准化、模块化。硬件电路的设计最重要的选择用于控制
上海交通大学自学考试毕业论文
的单片机,并确定与之配套的外围芯片,使所设计的系统既经济又高性能。硬件电路设计还包括输入输出接口设计,画出详细电路图,标出芯片的型号、器件参数值,根据电路图在仿真机上进行调试,发现设计不当及时修改,最终达到设计目的。软件设计的方法与开发环境的选取有着直接的关系,本系统由于是采用51系列单片机,因此使用KeilC语言进行开发。此编程工具相比汇编语言具有结构化、适用范围大、可移植性好等特点。本系统软件设计采用模块化系统设计方法,先编写各个功能模块子程序,然后进行组合与调整,经过调试后,达到设计功能要求。
2.2系统的结构
系统的结构主要由三部分组成:(1)上位机系统;(2)下位机系统;(3)通信系统。这三部分共同完成了主控制器通过有线、无线通信方式与分控制器进行信息交换,达到控制照明灯具的目的。有线通信系统的结构框图如图2.1所示。
图2.1有线通信系统结构框图
无线数据传输系统也是由主控制器和分控制器两部分组成,系统结构框图如图2.2所示。主控制器是发送遥控指令、发送数据信息、接收应答信息等,分控制器接收数据与遥控指令,完成对照明灯具的控制。
上海交通大学自学考试毕业论文
图2.2无线数传系统结构框图
系统的主控制器通过RS-485总线或无线数传模块将数据或命令发送给分控制器,同时将信息送给数码显示单元进行显示,并有看门狗电路对运行程序进行有效监视。主控制器硬件电路结构如图2.3所示。分控制器接收主控制器的发来的数据和命令,通过可控硅电路对照明灯具进行开关、亮度控制,并且利用实时时钟芯片对照明灯具进行定时开关控制。
分控制器硬件电路结构如图2.4所示。
图2.3主控制器硬件电路结构框图
图2
.4分控制器硬件电路结构框图
系统在单片机的控制之下完成数据的通信、显示,
同时能够控制照明灯具,其硬件电路只是系统的实施工具,大量的工作是由软件来完成的。
这些程序是系统的灵魂,是负责完成
硬件电路实现功能和与用户交互的桥梁,是维护系统正常工作的工具。
2.3系统性能指标及技术要求
(1)
照明启停控制系统
①
②③④
全开全关
单独开单独关
(2)照明亮度控制系统
①②
全部亮度调节单独亮度调节
(3)①②
对每个照明灯进行定时控制
2.4本章小结
本章主要从系统设计要点、系统的结构、系统性能指标及技术要求三方面对所研究的照明控制系统的设计框架和性能进行了阐述,该系统由一个主控制器与若干个分控制器组成,系统的设计首先要从硬件方面着手,在绘制出正确的电路图后,再按功能要求编制出相应的软件程序,最终要达到所要求的性能指标。
第三章基于单片机的照明控制系统的硬件电路设计
3.1主控制器的电路设计
主控制器采用AT89C51单片机作为微处理器,AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4Kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准
图3.1主控制器系统的硬件电路原理图
3.1.1键盘的接口设计
键盘的结构形式有两种,即独立式按键和矩阵式键盘。本系统使用的是4×4矩阵式键盘,第一行从左到右为1、2、3、4,第二行为5、6、7、8,第三行为9、0、开、关,第四相连,矩阵键盘的行线从上到下分别与P1.4、P1.5、P1.6、P1.7相连。每当按下一个键时,对应的行线与列线就会连通,这样单片机就能检测出信号,并通过键盘扫描程序对键盘进行扫描,以识别被按键的行、列位置。
3.1.2LED数码显示的接口设计
数码显示与驱动电路由74LS138译码器、7447TTLBCD-7段高有效译码器/驱动器、4个数码管以及5个A1015三极管组成。由单片机的P0.0~P0.3口输出的四位BCD码,经7447芯片后,翻译成7段数码管a、b、c、d、e、f、g相应的段,并输出点亮数码管相应的段。单片机的P0.4、P0.5口输出的信号经74LS138译码器后产生的高电平信号加在A1015三极管的基极,控制三极管的导通,从而起到对相应数码管的选通作用。4个7段数码管都被接成共阳极方式。
3.1.3看门狗监控电路的设计
本系统采用MAXIM公司的低成本微处理器监控芯片MAX813L构成硬件狗,与AT89C51的接口电路如图3.1所示。MR与WDO经过一个二极管连接起来,WDI接单片机的P2.7口,RESET接单片机的复位输入脚RESET,MR经过一个复位按钮接地。该监控电路的主要功能如下:
(1)系统正常上电复位:电源上电时,当电源电压超过复位门限电压4.65V,RESET端输出200ms的复位信号,使系统复位。
(2)对+5V电源进行监视:当+5V电源正常时,RESET为低电平,
单片机正常工作;当+5V电源电压降至+4.65V以下时,RESET输出高电平,对单片机进行复位。
(3)看门狗定时器被清零,WDO维持高电平;当程序跑飞或死机时,CPU不能在1.6s内给出“喂狗”信号,WDO跳变为低电平,由于MR端有一个内部250mA的上拉电流,D导通MR获得有效低电平,RESET端输出复位脉冲,单片机复位,看门狗定时器清零,WDO又恢复成高电平。(4)手动复位:如果需要对系统进行手动复位,只要按下手动复位按钮,就能对系统进行有效的复位。
3.2分控制器的电路设计
生产的低电压、高性能CMOS8位单片机,片内含2Kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),兼容标准MCS-51指令系统,具有15线可编程I/O口,该单片机具有体积小、成本低、结构简单、性价比较高等特点。
分控制器系统的外围接口电路由晶振、实时时钟芯片、可控硅控制电路、零点检测电路、看门狗电路、通信接口电路等组成。分控制器系统的硬件电路原理图如图3.2所示。
图3.2分控制器系统的硬件电路原理图
3.2.1时钟芯片的接口设计
本系统利用单片机89C2051和时钟芯片DS1302进行串行数据通信,读取和写入实时数据,用于定时控制照明灯具的启停。DS1302是美国Dallas公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式DS1302与单片机的连接仅需要3根线,即SCLK、I/O、RST。RST接在P1.7上,此引脚为高电平时,选中该芯片,可对其进行操作。串行数据线I/O与串行时钟线SCLK分别接在P1.5和P1.6上,所有的单片机地址、命令及数据均通过这两条线传输。在本系统中,89C2051为主器件,DS1302为从器件,主器件在总线上产生时钟脉冲、寻址信号、数据信号等,而从器件
则相应接收数据、送出数据。对DS1302的每一次读写需16个时钟脉冲,前8个脉冲输入操作地址和读写命令。其中位7必须为1;位0为0时向芯片写入数据,为1时从芯片读出数据;位6~位1选定芯片中的地址。后8个脉冲写入或读出数据。
DS1302采用双电源系统供电,VCC1在双电源系统中提供主电源,在这种运用方式下VCC2连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由两者中的较大者供电。当VCC1大于VCC2+0.2V时,VCC1给DS1302供电。当VCC1小于VCC2时,DS1302由VCC2供电。
3.2.2零点检测与可控硅控制电路的设计
这部分电路的设计采用单片机的I/O口灌电流的方法控制可控硅实现开关与调光控制,用光电耦合器M0C3021作为可控硅的驱动器,同时实现强、弱电的隔离。光电耦合器M0C3021通过一个非门与89C2051的P3.7口连接,当此脚输出高电平时,将会封锁住MOC3021,使双向可控硅BT131不导通,这样就会使照明灯关闭;当P3.7脚输出低电平时,使光电耦合器MOC3021打开驱动双向可控硅,从而将双向可控硅触发导通,这样就开启了所要控制的照明灯。对于照明灯的亮度调节,这里采用PWM(PulseWidthModulation)方式,即脉冲宽度调制的简称,
PWM是一种周期一定而高低电平的占空比可以调制的方波信号,当输出脉冲周期一定时,输出脉冲的占空比越大相对应的输出有效电压越大。在一个周期内的脉冲宽度(导通时间)为T1,周期为T,波形如图3.3所示。
则输出电压的平均值为:
U=VCC×T1/T=αVCC
其中α=T1/T(正脉冲的持续时间与脉冲周期的比值)称为占空比,α的变化范围为
0≤α≤1,VCC为电源电压。
当电源电压VCC不变的情况下,输出电压的平均值U取决与占空比α的大小,改变α的大小就可以改变输出电压的平均值,这就是PWM的工作原理。灯泡的亮度与加在灯泡两端的电压成比例,而灯泡两端的电压与可控硅的导通角成比例,这样通过调节PWM信号的占空比来控制可控硅的导通角。因此占空比越大,灯泡就越亮,当占空比α=1时,灯泡的亮度最高。由于89C2051单片机没有PWM信号输出功能,所以在这里采用单片机定时器配合软件的方法来实现PWM信号的输出。
使用PWM方法进行可控硅控制时,调制频率不能低于市电频率,因为当频率低于50Hz时,超过了人眼视觉暂留效应,用于调光将产生闪烁的现象。当调制频率大于市电频率,可控硅将处于连续导通状态而不能达到调压的目的,因此必须使用过零检测作为触发可控硅的基点。在本系统中所使用的过零检测电路如图3.2所示,先由一个变压器将市电电压转换成10V左右的电压,经过整流、稳压后可作为系统工作电源,同时将变压器次级的同名端引出一根线连接到比较器LM311的正输入端,用以检测交流电的过零点,然后将过零信号送给单片机的P1.3口上。当检测到交流电的过零点时,就去触发双向可控硅,同时通过PWM信号的输出控制双向可控硅的导通时间,最终达到控制灯泡亮度的目的。
3.3RS485通信电路的设计
本系统的有线通信方式采用RS485总线进行通信,RS485标准支持半双工通信,只需三根线就可以进行数据的发送和接收,同时具有抑制共模干扰的能力,接收灵敏度可达±200mV,大大提高了通信距离,在100Kbps速率下通信距离可达1200m,如果通信距离缩短,最大速率可达10Mbps。在这里使用的是主从式通信方式,主机由主控制器充当,从机为分控制器。主机处于主导和支配地位,从机以中断方式接收和发送数据,主机发送的信息可以传送到所有的从机或指定的从机,从机发送的信息只能为主机接收,从机之间不能直接通信。
主机与从机的通信电路图分别如图3.4与图3.5所示。
图3.4主机通信电路图
图3.5从机通信电路图
主机与从机选用的RS485通信收发器芯片为MAX485,它是MAXIM公司生产的用于RS485通信的低功率收发器件,采用单一电源+5V工作,额定电流为300μA,采用半双工通信方式。它完成将TTL电平转换为RS485电平的功能。MAX485芯片内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;RE和DE端分别为接收和发送的使能端,当RE端为逻辑0时,器件处于接收状态;当DE端为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可,主机与从机分别使用P2.6与P1.0脚进行控制;A端和B
端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。在进行通信时只需要一个信号控制MAX485的接收和发送即可。同时将A和B端之间加匹配电阻,这里选用120Ω的电阻。
为了提高系统的抗干扰能力,采用光电耦合器TLP521对通信系统进行光电隔离。从机使用单片机的P1.0控制通信收发器MAX485的工作状态,平时置P1.0为低电平,使从机串行口处于侦听状态。当有串行中断产生时判别是否是本机号,若为本机地址则置P1.0为高电平,发送应答信息,然后再置P1.0为低电平接收控制指令,继续保持P1.0为低电平,使串行收发器处于接收状态;若不是本机地址,使P1.0为低电平,使串行收发器处于接收侦听状态。
3.4无线数传电路的设计
的通信方式。单片机与无线数传模块之间可以进行信息的传送与回馈,即所谓的双向通信。
3.4.1无线数传电路的连接
主控制器与分控制器各使用一个无线数传模块,形成发送与接收的无线通信通道。模块的数据输入和输出端与单片机的串行口连接,即模块的串行数据发射端TXD与单片机的串行数据输入端RXD连接;模块的串行数据接收端RXD与单片机的串行数据输出端TXD连接。单片机与无线数传模块SRWF-1的电路连接如图3.6所示。
图3.6单片机与无线数传模块的连接
3.4.2SRWF-1模块的特性
(1)微发射功率:最大10dbm(10mW)的发射功率。
(2)ISM频段工作频率,无需申请频点。
。载频频率429-438MHz,也可提供315/868/915MHz等载频
(3)高抗干扰能力和低误码率。基于FSK的调制方式,采用高效无线通信协议,在信道误码率为10-2时,可得到实际误码率10-5~10-6。
(4)完善的通讯协议。
(5)传输距离远。在视距情况下,天线高度>3米,可靠传输距离>300m。
(6)透明的数据传输。提供透明的数据接口,能适应任何标准或非标准的用户协议。自动过滤掉空中产生的噪音信号及假数据(所发即所收)。
(7)多信道,多速率。SRWF-1型模块标准配置提供8个信道,根据用户需要,可扩展到16/32信道,满足用户多种通信组合方式的需求。SRWF-1型模块可提供1200bps、2400bps、4800bps、9600bps、19200bps等多种通信波特率,并且无线传输速率与接口波特率成正比,以满足客户设备对多种波特率的需要。
(8)双串口,3种接口方式。SRWF-1型模块提供2个串口3种接口方式,COM1为TTL电平UART接口。电即可改变接口类型)。
(9)高速无线通讯和大的数据缓冲区。可1次传输无限长度的数据,用户编程更加灵活。
(10)智能数据控制,用户无需编制多余的程序。即使是半双工通信,用户也无需编制多余的程序,只要从接口收/发数据即可,其它如空中收/发转换,网络连接,控制等操作,SRWF-1型模块能够自动完成。
(11)低功耗及休眠功能。接收电流
采用高性能单片处理器ATMega8L,外围电路少,(12)高可靠性,体积小、重量轻。
可靠性高,故障率低。
(13)两种接口收发等待时间。可设置的接口等待时间使模块既能用于高速用户设备(如DSP系统)也可适用低速系统(如51系统)。
(14)看门狗实时监控。ATMega8L的看门狗监控内部功能,改变了传统产品的组织结构,提高了产品的可靠性。
3.5本章小结
本章详细地阐述了系统硬件部分的设计过程,
从系统主控制器的硬件电路设计到分控制器的硬件电路设计,然后是RS485通信电路设计与无线数传模块的电路连接。系统的主控制
器和分控制器分别是以AT89C51与AT89C2051单片机为基础,按照所要求的功能配上相应的外围电路。主控制器的外围电路主要有键盘接口、LED数码显示接口、看门狗接口、RS485通信接口、无线数传接口以及晶振等。分控制器的外围电路主要有时钟芯片接口、零点检测电路、可控硅控制电路、RS485通信电路、无线数传电路以及看门狗与晶振等。主控制器通过串口使用RS485通信方式或者无线数传方式向分控制器发出信号实现对照明灯的启停、亮度调节、定时控制等功能。
第四章基于单片机的照明控制系统的软件设计
软件是计算机系统的灵魂,没有软件计算机不能充分发挥其功能,这是软件在计算机中的地位,而在计算机控制系统中,软件也是非常重要的。在照明控制系统中,硬件设备的功能是由软件来定义的,如系统要控制分布的照明灯具,通过有线与无线串行通信程序来完成控制功能,通过软件定义键盘功能,通过编程完成LED数码显示等等,由此可见,软件是
制程序、人机交互程序以及RS485串行通信与无线数传通信程序等。本着软件设计的基本方法,照明控制程序的软件设计方法是利用传统的结构化分析与设计方法来完成的。结构化程序设计方法虽然是早期的程序设计方法,但该方法还一直被广泛地使用。结构化系统分析与设计贯穿整个软件设计过程,遵循“自顶向下,逐步求精”的基本原则。本照明控制系统软件程序总体结构如图4.1所示。
图4.1照明控制系统软件程序总体结构图
4.1人机交互程序设计
系统的人机交互程序设计,主要是解决按键的扫描与信息的显示,让操作者能够灵活地控制系统工作。键盘用来输入指令,发光数码管用来显示单片机的状态,这是一个比较简单的人机交互形式。
4.1.1键盘扫描程序设计
本系统的键盘采用的是4×4矩阵式键盘,矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上。一个4×4的行、列结构可以构成一个含有16个按键的键盘,显然,在按矩阵式键盘中,键盘列线的第一根线置高,那么就证明这根行线与第一根列线相交处的按键被按下了,单片机就读入这个键值。如果所有的四根行线都没有信号,那么就把第一根列线置低,把第二根列线置高,再一次检测行线有没有信号,然后依次类推。
由于键盘扫描的速度很快,而人按键总会持续一定的时间,因此只要单片机处在等待输入的状态,这个键盘扫描程序基本上不会错过任何一个按键信号。由于一般人按键会有抖动,抖动信号造成键盘扫描时会出现一些错误的信号,要不就是扫描不进数据,要不就是重复输
入很多次数据,因此需要有一个消除抖动的程序。让单片机不响应一些相关的抖动信号,而只响应一次确实存在的按键信号。消抖动程序是这样实现的,当检测到一个脉冲信号时,并不立即认为是一次按键,而是延时一段时间以后再进行检测,如果三次检测都有信号,那么就认为有一次按键动作发生了。延时的选择非常重要,太快了,起不到消除抖动的效果,太慢了又让键盘太不灵活,错过较多的按键信号。键盘扫描程序的流程图如图4.2所示。
系统的按键定义除了基本的数字键(0~9)外,将其它的键依次定义为开、关、增值、减值、定时、确认六个命令键,其控制的基本功能是:
(1)通过数字键、确认键输入分控制器的地址以及定时功能的时间设置。
(2)利用开、关键控制照明灯具的启停。
(3)利用增值、减值键控制照明灯具的亮度。
(4)通过定时键来对照明灯具进行定时控制的设置。
系统通过软件方法实现该功能,即定义开、关、增值、减值、定时、确认等命令键,利用键盘扫描程序获取对应命令键的键值,然后执行相应的子程序,实现所要求的控制功能。
图4.2键盘扫描程序流程图
4.1.2LED数码显示程序设计
本系统采用了四位共阳极七段数码管,共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻,这里的限流电阻选为100Ω。
这里选用的7447芯片是从BCD码到SEG7段码的转换器,而74LS138是一个地址译码器,通过74LS138选通某个数码管,然后根据7447传送过来的SEG7段码的数据进行显示,而在非选通的时候,数码管能够保持原有的显示数据。LED数码显示程序的流程图如图4.3所示。
图4.3LED数码显示程序流程图
4.2照明启停控制程序设计
照明的启停控制主要是由主控制器发出指令,通过RS485通信方式或无线数传方式控制全部或部分分控制器所控制照明灯具的启停,因此照明启停控制程序由两部分组成,即全部启停控制与单独启停控制两部分。
4.2.1全部启停控制程序设计
全部照明启停控制系统是利用主控制器上的开、关按键来控制全部照明灯的启停,控制命令是通过串口通信方式传达到分控制器,分控制器再依据命令向P3.7口输出高低电平,来达到控制灯泡亮和灭的目的。
在这个多机系统中采用的是主从式通信方式,主机即主控制器处于主导和支配地位,从机即分控制器一般以中断方式来接收和发送数据。在主从式多机系统中主机发送的信息可以传送到所有的从机或指定的从机,在这里是要发送给所有的从机,来控制照明灯的启停。在
上海交通大学自学考试毕业论文
本系统中采用广播式命令,不需要从机返回信息,从机之间也不能直接通信。主机由AT89C51单片机充当,从机为AT89C2051单片机。主机与从机的数据通信波特率定为9600波特,每个从机都有唯一的地址号,用来区分各从机。单片机的数据通信由串口完成,定时器T1为波特发生器,数据传送格式为1位起始位,8位数据位,1位停止位,1位可编程位(TB8)。工作方本系统的通信原理为:广播地址为00H,所有分机都接收到广播地址信息,然后进入正常通信状态,清除SM2位,开始接收主机发送来的命令。从机收到的命令是开灯时,向P3.7口输出高电平,打开MOC3021驱动双向可控硅,从而就点亮了灯泡;同理,如果收到的命令是关灯时,向P3.7口输出低电平,封闭MOC3021使双向可控硅截止,也就达到了关闭灯泡的目的。该系统的主机和从机的控制程序流程图如图4.4和图4.5所示。
图4.4全部启停控制主机程序流程图
图4.5全部启停控制从机程序流程图
4.2.2单独启停控制程序设计
单独照明启停控制系统是通过主机发送给指定的从机命令信息,来实现照明灯的启停控制。主机首先发送从机地址,被叫到的从机向主机发送本机地址,然后主机向从机传送数据,从机根据接收的数据信息执行相应的命令。单片机的工作方式同全部照明启停控制系统。其具体的工作过程是:所有的从机在通信之前都把SM2位置1,随时处于侦听状态。当主机发送从机的地址信息时,每帧数据的第9位都为1,所有从机都接收到地址信息,然后判断主机是否呼叫本机。如果呼叫本机则进入正式通信状态,清除SM2,并把本机地址号发送给主机作为应答,然后才开始接收主机发送来的信息。而其它从机由于地址号不符,他们的SM2位仍然为1,仍处于侦听状态,无法接收主机发送来的数据信息。主机收到从机发送来的回应信息后,比较主机已发送的地址号与刚接收的地址号是否相符,如果不符,则发出错误信息;
上海交通大学自学考试毕业论文
如果相符,则正式发送数据信息,这时发送的每帧的第9位都为0。只有SM2=0的从机才能接收到主机发送的信息。从机根据命令执行相应的动作,如果为打开命令,则输出高电平驱动可控硅动作,开启照明灯;如果为关闭命令,则输出低电平使可控硅截止,停掉照明灯。该系统的主机和从机控制程序流程图分别如图4.6与4.7所示。
图4.6单独启停控制主机程序流程图
图4.7单独启停控制从机程序流程图
4.3照明亮度控制程序设计
照明亮度控制系统是利用主控制器键盘上的增值与减值键,通过串口通信方式来控制分控制器所控制的照明灯的亮度。在这里对于灯泡亮度的调节是通过PWM方式来进行的,分控制器选用的是AT89C2051单片机,这种单片机本身没有PWM输出,只能通过软件方法实现。在一定频率的方波中,调整高电平和低电平的占空比,即可实现。假设把一个周期分为10个时间等份,如果方波中的高低电平占空比是1:9,这时就是一个比较暗的亮度,如果占空比是5:5,就是一个中间亮度,如果高低电平占空比是9:1,这时就是一个比较亮的亮度,高低电平占空比为0:10时,灯泡是灭的,高低电平占空比为10:0时,灯泡最亮。在进行实验中,将定时器1的溢出定为1/20000秒,每10次脉冲输出一个2KHz频率。这每10次脉冲再用来控制
上海交通大学自学考试毕业论文
高低电平的10个比值。这样,在每个1/2000秒的方波周期中,都可以改变方波的输出占空比,从而控制灯泡的10个亮度级别。在主控制器键盘上每次按增值与减值键改变占空比的值就可以控制灯泡的亮度。
4.3.1全部亮度控制程序设计
据信息,流程图同图4.4所示,从机控制程序流程图如图4.8所示。
图4.8全部亮度控制从机程序流程图
上海交通大学自学考试毕业论文
4.3.2单独亮度控制程序设计
单独照明亮度控制系统通信原理基本上与单独照明启停控制系统相同,也是开始时所有从机处于监听状态,等待主机的呼叫,当主机发出某一从机的地址时,所有从机将接收到的地址与本机地址相比较,如果相符,说明主机在呼叫自己,然后发回应答信号,表示准备好开始接收后面的命令,否则不予理睬,继续监听呼叫地址。主机收到从机的应答后,则开始一次通信,通信完毕,从机继续处于监听状态,等待呼叫。从机在收到调亮或调暗的命令后,利用零点检测电路检测电源过零点,一旦单片机的P1.3口检测到过零点脉冲,就会向P1.3口输出PWM信号以调高或调低灯泡的亮度。该系统的主机控制程序流程图同图4.6所示,从机图4.9单独亮度控制从机程序流程图
上海交通大学自学考试毕业论文
4.4照明定时控制程序设计
照明定时控制系统是利用从机即单片机AT89C2051和时钟芯片DS1302进行数据通信,读取和写入实时数据,主机采用串口通信方式对从机进行定时时间的设置,从机然后根据设定它为0,为1表示进行读操作,控制字节总是从最低位开始输出。DA1302的控制字如表4-1所示。
表 4-1
DS1302的控制字
在DS1302芯片中,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置RST为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7。
4.4.1全部定时控制程序设计
在全部定时控制系统中是通过主控制器向所有的分控制器发送广播地址,分控制器在收到广播地址后,使自己处于接收数据状态,然后主控制器向网络中发送时间数据信息,分控制器在收到时间数据后写入DS1302芯片,等到设定时间到达后,单片机发出命令关闭照明灯。该系统的主机控制流程图同图4.4所示,从机的控制流程图如图4.10所示。
图4.10全部定时控制从机程序流程图
4.4.2单独定时控制程序设计
主控制器使用键盘输入被呼叫分控制器的地址,并通过网络向所有分控制器传送,在分控制器将该地址与本机地址进行比较后,判断是否是呼叫自己,如果是呼叫本机,就将本机地址传送给主控制器,进一步接收传送的数据,然后分控制器就将数据写入DS1302芯片,等到设定的时间到达时就执行关闭照明灯的命令。单独定时控制的主机程序流程图同图4.6所示,从机程序流程图如图4.11所示。
图4.11单独定时控制从机控制程序流程图
4.5RS485通信程序设计
由于RS485总线是异步半双工的通信总线,在某一个时刻总线只可能呈现一种状态,所以这种方式一般适用于主机对从机的查询方式通信。在通信中,主机与各个从机进行通信,必须能对各个从机进行识别,这一识别功能是利用串口控制寄存器SCON的SM2位实现的。当串口以方式3工作时,发送和接收的每一帧信息都是11位,其中第9位数据位是可编程的,通过对SCON寄存器的TB8位置1或置0,以区别发送的是地址帧还是数据帧(规定地址帧的第9位为1,数据帧的第9位为0)。若从机的控制位SM2被设为1,则当接收的是地址帧时,数据装入SBUF,并置RI=1,向CPU发出中断申请,若接收的是数据帧,则不产生中断,信息被抛弃。
上海交通大学自学考试毕业论文
若SM2被设为0,则无论是地址帧还是数据帧都将产生RI=1中断标志,数据装入SBUF。利用这一功能,可以按照如下步骤进行数据通信:
(1)将所有SM2位置1,使其处于只接收地址帧的状态。
(2)主机发送一帧地址信息,其中前8位数据位表示通信的从机地址,第9位为1,表示当前帧为地址帧。
(3)从机接收到地址帧后,如果是广播地址帧,则所有从机都将其SM2位置0,准备接收主机发送的数据或命令;如果不是广播地址帧,则将本机地址与帧中地址进行比较。如果地址相同,则将其SM2位置0,并发送本机地址帧,然后准备接收数据。如果地址不同,则丢弃当前数据,SM2位不变。
(4)(5)表4-2在程序中,第9位发送数据位SCON中的TB8位,第9位接收数据位为SCON的RB8位,因此,发送数据前,可以通过对TB8位置1或0来确定要发送的是地址帧还是数据帧。而接收数据时,对地址帧的判断则是通过读取RB8位来获得的,RB8=1,当前帧为地址帧,RB8=0,当前帧为数据帧。
单片机的串口工作在方式3下,其波特率由定时器1(T1)的溢出率决定,计算公式为:
波特率
=
SMOD
232
T1的溢出率
定时器T1的溢出率的计算公式为:
溢出率
则波特率的公式变为:
=
=
fosc
32
÷(2k -T1的初值 )
波特率
SMOD
232
×
fosc
32
÷(2k -T1的初值 )
系统所采用的晶振频率为11.0592MHz,T1工作在模式3下,波特率=9600b/s。
上海交通大学自学考试毕业论文
4.5.1主机部分通信程序设计
系统中的主机通信程序分为4个部分,分别为预定义及全局变量部分、程序初始化部分、数据通信流程和发送数据部分。主机的数据通信的基本流程如下:
(1)主机首先向所有从机发送地址帧对要通信的从机进行呼叫,发送地址帧时需将TB8位置1。
(2)发送地址帧后,如果发送的是广播地址帧,则不需要从机应答,待延迟一段时间后,数据。
(3)发送完数据后,主机等待从机的校验信号,如果接收到0X0F数据,表示发送成功,通信结束,否则主机将重新发送数据,直至发送成功。该部分程序对应的流程图如图4.12所示。
图4.12主机数据通信流程图
4.5.2从机部分通信程序设计
从机通信程序也被分为预定义及全局变量部分、程序初始化部分、数据通信流程和接收数据部分4个部分。从机部分的数据通信过程受主机控制,其基本的流程如下:
上海交通大学自学考试毕业论文
(1)初始化完成后,从机设置SM2位为1,串口只接收第9位数据位为1的地址帧,数据帧将被直接抛弃。
(2)如果串口有数据接收(收到地址帧),则从机会将该帧中的地址信息先与广播地址进行比较,如果是广播地址,则做好接收数据的准备,如果是其它地址,则与本机地址比较,如果相同,则发送应答信息,应答信息内容应为本机地址,否则丢弃当前数据,从机继续处于等待呼叫状态。
(3)指向的缓冲区中。如果接收函数返回0xff,表示数据校验失败,如果函数返回值为0xfe,表示从机在数据接收过程中发现主机发送地址帧,程序将放弃当前接收过程,将SM2位重新置1,开始下一通信过程。如果函数返回0,表示数据被成功接收,向主机发送成功信号,随后,程序将SM2位置1,重新开始下一个数据通信流程。
该部分程序对应的流程图如图4.13所示。
图4.13从机数据通信流程图
上海交通大学自学考试毕业论文
4.6无线数传通信程序设计
这里所设计的无线数据传输系统是采用主从式通信方式,主控制器设为主站,所有分控制器设为从站,所有从站都编一个唯一的地址。通信的协调完全由主站控制,主站先发送地址帧,所有从站都接收,如果是接收的是广播地址码,则所有从站都做好接收主机发送数据或命令的准备,然后主机发送数据或命令;如果接收的是其它地址码,则从站将接收到的地址帧与本地地址码相比较,若不同则将数据全部丢掉,不做任何响应;若地址码相同,则证明是呼叫本站,从站将自己的地址码发送回去,主站收到自己刚发出去的地址码后,接着发送数据或命令。这些工作都需要通信协议来完成,可保证在任何一个瞬间,通信网中只有一个模块处于发送状态,避免相互干扰。
SRWF-1模块在使用之前要进行无线信道、接口类型、接口速率、接口参数等的设定,在设置完成后便可以进行数据传输,当模块收到单片机发来的第一个数据后自动进行无线网态直到模块所设置的接收等待时间延迟之后,模块将自动通知所有接收设备断开无线网络连接、转入空闲状态。
当发送方最后一个数据被发送后需延迟6-8个字节才能接收空中其他模块的数据。其他模块在此时间内也不能向空中发射数据,即使有用户数据输入也是被缓冲在模块中,而没有发送到无线链路中,以避免引起数据通讯混乱。
无线数传的通信协议与流程基本上与RS485通信程序相同,因此主机和从机的数据通信程序流程图分别如图4.12与4.13所示。
4.7本章小结
本章主要阐述了照明控制系统的软件设计,该系统的软件程序主要由照明启停控制程序、照明亮度控制程序、照明定时控制程序、人机交互程序、串行通信程序等组成。而照明启停控制、亮度控制以及定时控制程序又分为全部控制和单独控制两部分,人机交互程序由键盘扫描程序与LED显示程序组成,而串行通信程序由RS485通信程序和无线数传程序组成。在这里分别对每个子程序的工作流程、工作原理以及过程都做了详细的论述。
上海交通大学自学考试毕业论文
第五章实验及总结
本文研究了基于AT89C51与AT89C2051单片机的智能照明控制系统的设计原理与实现方法,包括硬件设计与软件设计。首先根据设计要求用ProtelDXP软件绘制出原理图,然后依据原理图选择元器件,在实验板上布置元器件并连接线路,对硬件电路进行测试,检查串行口是否选错,测量电源是否正常,复位电平是否正确,单片机是否起振等等。接着就要按照功能要求编制程序,这里采用KeilC编程工具,需先根据要求划分模块,优化结构;再根据各模块特点确定何为主程序,何为子程序,何为中断服务程序,相互间如何调用;再根据各模块性质和功能将各模块细化,设计出程序流程图;最后才根据各模块流程图编制具体程序。调试时应先调主程序,实现最基本最主要的功能,在此基础上再将各模块功能往主程序上堆在输然后执行下一步的程序。经过实验的验证,在输入广播地址后,所有的分控制器都正确地执行了后续的命令,实现了灯泡的启停、亮度调节、定时关闭功能;在输入某个分机地址后,该分机也正常地执行了相应的命令,同样达到了所要求的功能。
由于系统采用的是RS485通信与无线数传通信方式,如果使用在现场环境中必然存在干扰的问题,所以抗干扰与可靠性设计就显得尤为重要。虽然系统已经考虑了可靠性设计问题,如看门狗技术、复位电路、光电耦合等在电路设计中的应用,但这也只是针对部分问题做了解决,一些详细的设计还有待于解决。该系统还只是试验室的调试系统,离真正的现场应用还有一定的距离。软件部分的编制也是力求简单实用,即本着实用、有效、方便的原则进行编制。但一个较好的和较完善的应用软件不是在短时间内就可以完成的,它需要不断的完善和发展,需要我们做大量的工作和时间的检验。现在的系统还没有达到真正的智能化,还需要增加很多新的功能和先进的科学技术,才能达到真正意义上的智能化控制。
上海交通大学自学考试毕业论文
致谢
本文是在到从老师那里学到的不仅仅是知识和技术,更重要的是他严谨的治学态度,实事求是的工作
上海交通大学自学考试毕业论文
参考文献
[1]王幸之、钟爱琴等.AT89系列单片机原理与接口技术.北京:北京航空航天大学出版社.2005
[2]孙涵芳、徐爱卿.单片机原理及应用.北京:北京航空航天大学出版社.1996
[3]阳宪惠.现场总线技术及其应用.北京:清华大学出版社.1999
[4]2006
[5][6]李华.MCS-51系列单片机实用接口技术.北京:北京航空航天大学出版社.2003
[7]吴金戎、沈庆阳等.8051单片机实践与应用.北京:清华大学出版社.2002
[8]陈新忠.基于RS485总线的单片机多机通信软件设计.现代电子技术.2002.(3)P8~10
[9]樊宇、程全.基于RS485总线实现的远距离多机主从式通信技术.工业控制计算机.2006.19(7)P71~73
[10]SRWF-1型微功率无线数传模块使用说明书.上海桑锐电子科技有限公司.2004
[11]孙雪梅、范久臣.实时时钟芯片在单片机系统中的应用.沈阳教育学院学报.2005.7(2)P132~134
上海交通大学自学考试毕业论文
附录
Ⅰ.串行通信程序
(1)主机部分
#include
#include
#define__MAX_LEN_64
#define_MHZ_11//数据最大长度//设置单片机使用的晶振频率(11.0592MHz)
/*以下为程序协议中使用的握手信号*/
#define__SUCC_0x0f//#define__ERR_0xf0//voidinit_serial();//串口初始化
voidsend_data(unsignedchar*buf);
voiddelay10ms(unsignedintcount);//发送数据//延时子程序(10ms)
voidmain()
{
charbuf[__MAX_LEN_];
unsignedchari=0;
unsignedchartmp;
unsignedcharaddr;//该字节用于保存要通信的从机地址
/*为缓冲区赋初值*/
P0=0xff;
while(P1!=0)//每隔100ms从P0口读取,若读取到0则表明数据采集结束{
*(buf+i)=P0;
delay10ms(10);//延时100ms
P0=0xff;
i++;
}
*(buf+i)=0;//缓冲区最后一个字节为0表示数据结束
/*读要访问的分机地址*/
P0=0xff;
addr=P0;
上海交通大学自学考试毕业论文
/*串口初始化*/
init_serial();//初始化串口
EA=0;//关闭所有中断
/*发送地址帧并接收应答信息,如果接收的信号与发送的地址信息不同,则重新发送地址帧*/
tmp=addr-1;
/*发送数据并接收校验信息,如果接收的信号为0FH,表示从机接收成功,否则将重新发送该组数据*/
tmp=__ERR_;
while(tmp!=__SUCC_)
{
RI=0;
while(!RI);
tmp=RI=0;
}
while(1);
}
/*初始化串口*/
voidinit_serial()
{
TMOD=0x20;//定时器T1使用工作方式2
TH1=250;//设置初值
TL1=250;
TR1=1;//开始计时
PCON=0x80;//SMOD=1
SCON=0xd0;//工作方式3,9位数据位,波特率9600bps,允许接收
}
/*发送数据*/
voidsend_data(unsignedchar*buf)
{
unsignedcharlen;//保存数据长度
unsignedcharecc;//保存校验字节
len=strlen(buf);//计算要发送数据的长度
ecc=len;//开始进行校验字节计算
/*发送数据长度*/
TI=0;
//程序结束,进入死循环
上海交通大学自学考试毕业论文
TB8=0;//发送数据帧
SBUF=len;//发送长度
while(!TI);
TI=0;
/*发送数据*/
for(i=0;i
{
ecc=ecc^(*buf);//计算校验字节
TB8=0;//发送数据帧
SBUF=*buf;//发送数据
buf++;
while(!TI);
TI=0;
}
TB8=0;//发送数据帧
SBUF=ecc;//while(!TI);
TI=0;
}
voiddelay10ms(unsignedintcount)
{
unsignedinti,k;
unsignedcharj;
unsignedinttmp;
tmp=(int)((100*_MHZ_)/12);
for(i=0;i
for(j=0;j
for(k=0;k
}
#endif
(2)从机部分
#include
#include
#define__MAX_LEN_64//数据最大长度
#define_MHZ_11//设置单片机使用的晶振频率(11.0592MHz)
上海交通大学自学考试毕业论文
/*以下为程序协议中使用的握手信号*/
#define__SUCC_0x0f//数据传送成功
#define__ERR_0xf0//数据传送错误
voidinit_serial();//串口初始化
unsignedcharrecv_data(unsignedchar*buf);
voidmain()
{
charbuf[__MAX_LEN_];
unsignedchari=0;
unsignedchartmp=0xff;
unsignedcharaddr;//保存本机地址
/*从P1口读取本机地址*/
P1=0xff;
addr=P1;
/*串口初始化*/
init_serial();//初始化串口
EA=0;//关闭所有中断
/*进入设备应答阶段*/
while(1)
{
SM2=1;//只接收地址帧
/*如果接收到的地址帧不是本机地址,则继续等待*/
tmp=addr-1;
while(tmp!=addr)
{
RI=0;
while(!RI);
tmp=SBUF;
if(tmp=0x00)
{
recvdata(*buf);
}
RI=0;//接收数据//如果是广播地址,则直接接收数据
}
/*发送应答信号,并做好接收数据的准备*/
TI=0;
TB8=0;
SBUF=addr;
while(!TI);
TI=0;
上海交通大学自学考试毕业论文
SM2=0;//允许接收数据信息
/*数据接收*/
tmp=0xff;
while(tmp==0xff)//如果数据校验失败则重新接收数据
{
tmp=recv_data(buf);//校验失败返回0xff,检测到地址帧则返回0xfe,接
收成功则返回0
}
if(tmp==0xfe)//在数据接收过程中,如果发现地址帧,则重新开始整个接收过程
continue;
}
}
/*初始化串口*/
voidinit_serial()
{
TMOD=0x20;TH1=250;//TL1=250;
TR1=1;//开始计时
PCON=0x80;//SMOD=1
SCON=0xd0;//工作方式3,9位数据位,波特率9600bps,允许接收}
unsignedcharrecv_data(unsignedchar*buf)
{
unsignedcharlen;//该字节用于保存数据长度
unsignedcharecc;//该字节用于保存校验字节
unsignedchari,tmp;
/*接收数据长度*/
RI=0;
while(!RI);
if(RB8==1)//若当前接收为地址帧则返回0xfe
return0xfe;
len=SBUF;
RI=0;
/*使用len的值为校验字节ecc赋初值*/
ecc=len;
/*接收数据*/
for(i=0;i
{
while(!RI);
if(RB8==1)//若当前接收为地址帧则返回0xfe
上海交通大学自学考试毕业论文
return0xfe;
*buf=SBUF;//接收数据
ecc=ecc^(*buf);//进行字节校验
RI=0;
buf++;
}
*buf=0;//表示数据结束
/*接收校验字节*/
while(!RI);
if(RB8==1)//若当前接收为地址帧则返回0xfe
return0xfe;
tmp=SBUF;
RI=0;
/*进行数据校验*/
ecc=tmp^ecc;
if(ecc!=0)//校验失败
{
*(buf-len)=0;//TI=0;//发送校验失败信号
TB8=0;
SBUF=__ERR_;
while(!TI);
TI=0;
return0xff;//返回0xff表示校验错误}
TI=0;//校验成功
TB8=0;
SBUF=__SUCC_;
while(!TI);
TI=0;
return0;//校验成功,返回0
}
#endif
Ⅱ.照明亮度控制程序
(1)主机部分
#include
#include
#include“reg51.h”
#defineucharunsignedchar