版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于PLC控制的自动断电插排摘要家电长期的待机不仅引起巨大的能源浪费,而且使得排插的负荷越来越大,带来了非常严重的安全隐患。同时,电器的使用寿命大大缩短。本设计制作了具有定时及智能感应功能的插座。其不仅你不了现实生活中普通插座功能的不足,还为人们的生活带来了极大的便捷。本系统由单片机最小系统、QC12864B液晶屏、HC-SR501及继电器等几个模块组成。通过外设键盘对与继电器相连的排插进行定时、延时设置,使其可以按照我们的意愿在相应的时间通断。或由HC-SR501热释电红外传感器模块,当感应到生物发出的红外线而输出电信号进而触发SCT89C51单片机的外部中断引脚,自动控制排插的通断。由LED指示灯指示工作模式并将工作数据通过LCD液晶屏显示。软件设计使用keiluvision4,各个功能的选择菜单界面通过QC12864B液晶屏显示,配合按键实现多各个功能之间的选择与切换,使该系统能够有个友好的界面。根据需要实现的功能用C语言完成底层驱动和各子系统程序的编写和调试。使外接继电器可以按照一定的规律工作,即可以达到智能控制的目的,又在很大程度上起到节能的作用。关键词:STC89C52;排插;SH-RF501;DS1302ABSTRACTElectricalappliancesonstandbyforalongtimenotonlycausehugewasteofenergy,andmakethestriploadmoreandmorebig,hasbroughttheserioussecurityhiddendanger.Atthesametime,greatlyreducestheservicelifeoftheappliance.Thisdesignwhichhasthefunctionoftimingandintelligentinductionsocket.Itsnotonlyyouarenotthereallifeofordinarysocketfunctionisinsufficient,alsobroughtgreatconvenienceforpeople'slife.Thissystembysinglechipmicrocomputerminimumsystem,QC12864BLCDscreen,HC-SR501andrelayofseveralmodules.Byaperipheralkeyboardconnectedtotherelayplatooninserttiming,delayset,canmakeitaccordingtoourwishesinthecorrespondingtimeonandoff.OrbytheHC-SR501pyroelectricinfraredsensormodule,whensensinginfraredandoutputelectricsignalfromthebiologicaltriggerstheSCT89C51MCUexternalinterruptpin,automaticcontrolstriponandoff.WorkingmodeanddirectedbytheLEDindicatorlightwillworkdatathroughtheLCDscreendisplay.Softwaredesignusingkeiluvision4,eachfunctionselectionmenuinterfacebyQC12864BLCDscreendisplay,cooperatewiththekeystoachievemorechoiceandswitchbetweeneachfunction,makesthesystemhasafriendlyinterface.AccordingtothefunctionoftheneedtoimplementinClanguagetocompletetheunderlyingdriveandeachsubsystemwritinganddebuggingoftheprogram.Makeexternalrelayscanworkaccordingtocertainrules,whichcanachievethegoalofintelligentcontrol,andtoagreatextent,havetheeffectofenergysaving.Keywords:SCTC89C52;socket;SH-RF501;DS1302目录TOC\o"1-3"\h\u21580摘要 I29417ABSTRACT II31284目录 122491第1章绪论 3198381.1设计的目的和意义 3177311.2国内外研究现状 316921.3论文主要内容与思路 428804第2章总体方案 528960第3章可编程控制器PLC 771083.1PLC简介 782273.2PLC内部结构 8105143.2.1中央处理器CPU 890413.2.2存储器 8122553.2.3输入输出单元 9104973.2.4电源部分 10284573.3PLC的选型 107730第4章硬件电路设计 1225654.1智能插座的工作原理 1290754.2硬件简介 12106014.2.1STC89C52单片机 1297184.2.2QC12864B液晶显示屏 13136764.2.3DS1302时钟芯片 1498324.2.4BISS0001红外热释电处理芯片 16105744.3系统的硬件电路设计原理图 172685第5章系统的软件设计 21297815.1系统软件设计流程 2130611第6章系统的仿真和调试 2745986.1硬件仿真调试原理图 2725387第7章总结与展望 31103377.1总结 3183007.2展望 3119127参考文献 326207致谢 34第1章绪论1.1设计的目的和意义随着人口的增长、科技的迅猛发展,人们生活水平不断的提高,对于电子产品的需求和要求也不断增加,各式各样的电子产品应用于我们的生活中。在为人类带来便捷的同时,也意味着我们使用的产品消耗的能源同等的增加以维持我们生活的正常进行。可是,我们生活的星球能开发利用的能源是有限的并且正在不断的消耗殆尽,所以,节约能源又成为了我们必须要解决的问题,同时其也是这个社会的主题。所以,这样一对矛盾应尽快得到调解,在调查中我们发现,大部分市面上的电子产品都具有待机功能,比如电视机,电脑,冰箱,空调等家用电器。如此,就我国而言,无意识的家电或电子产品的能耗基于一个十几亿人口的大国,那是一个非常巨大的能源浪费。据测算,家电待机能耗占到中国家庭电力消耗的10%以上。而正是由于这种长期的待机状态,使得排插的负荷也越来越大,带来了非常严重的安全隐患。除此之外,也使得电器的寿命大大缩短[1]。所以,本系统对家庭中普通的排插进行了更加智能化的设计,我们利用单片机对继电器的控制来达到控制排插通断的目的,并可以通过外设键盘对排插进行定时设置,使其可以按照我们的意愿定时通断,在定时功能的基础上,增加了人体感应模块。基于此种思维设计,其不仅能节约能源消耗,减轻地球的负担;增加家电的使用寿命;还能让我们的生活变得更加的便捷、舒适。重要的是可以防止不必要的安全事故的发生。1.2国内外研究现状目前市场上使用的绝大多数移动电源排插只可以实现简单的电源机械式通断电,单一的功能并不能满足我们未来生活的需要,智能排插可编程开关排插可根据使用者的意愿,对其进行功能设置实现电源的自动通断电,是人们的生活带来极大的方便之余又能应和这个社会节能的主题。现阶段市场上出现的智能插座有小管家智能插座、科德牌智能插座、POLYHOME智能插座、博联智能插座等等。这几款插座中小管家插座使用智能芯片系统和相应程序软件对继电器进行编程控制,使得插座待机能耗降至零,达到节能安全的目的。利用遥控功能关机后自动切断电源,遥控开机时,能自动接通电源。并且具有消除待机能耗、智能化保护功能、避免电磁波辐射、有效防雷击冲击的特点。科德智能插座,可以进行定时设定,精确值时间为1分钟,每天最多可设置多组开与关。并且具有模式功能,随时可切换到长通或定时状态。目前智能排插的实现方法有机械式定时排插、基于单片机的定时器功能实现排插的智能定时、以及采用现成的智能芯片。机械式定时排插通过转动刻度盘,进行定时时间设置;而基于单片机的智能排插则是通过用单片机控制继电器的通断来控制排插的开关,即通过单片机编程实现智能定时;智能芯片排插则是通过芯片直接感应来实现智能通断电,从而达到消除待机功耗的目的;较为高级的当属无线控制智能排插,基于Wi-Fi通讯,只要家中有无线路由器,排插就会自动寻找网路,用户只需输入上网密码即完成配置,通过智能手机在全球任何地点都可以控制。智能排插有效地解决了待机能耗的问题,从而提高终端用电设备的使用寿命,促进我国节电降耗产品领域的发展。也消除了生活中的很多安全隐患。可达到适用于彩电、电脑、空调等用电领域的较高技术指标与节电能力。而随着技术的不断发展,对智能排插的承受功率不断地增高完善,智能排插除了广泛应用于家用电器外,还会更多的应用到工业领域。1.3论文主要内容与思路本系统设计了基于单片机对继电器的控制来达到智能控制排插通断的目的,并可以通过外设键盘和红外感应对排插进行定时设置和感应通断,使其可以按照我们的意愿自动通断。论文各章主要内容如下:第一章是绪论,介绍了本研究的目的和意义,国内外研究现状以及本论文的章节结构。第二章总体方案设计,在论述系统的设计结构的基础上,详细说明系统的主要设计功能。第三章是硬件系统构架,首先介绍系统的工作原理,然后介绍单片机的主要性能参数,接着是对每个电路模块进行分析,并给出原理图。第四章介绍系统的软件设计,并对每个模块进行说明。第五章介绍实物调试过程,并对相应结果进行了详细的说明。第六章是本文的总结与展望,并提出进一部完善的工作。第2章总体方案本系统的设计主要由感应控制系统和按键控制系统组成,硬件电路由STC89C52单片机为核心控制器,通过C语言编写文件系统实现各路控制功能。在感应控制系统中,单片机通过HC-SR501人体感应模块触发外部中断进而控制与排插插孔相连的继电器来控制插孔的关断。此外,插孔的关断还可以通过手动按键来操控,通过单片机配合时钟芯片DS1302对排插进行定时开关或延时开关等操作,由LED指示灯指示当前工作状态并由QC12864B液晶屏作为人机交互界面进行显示,使系统能够有一个良好的界面。STC89C52总体的系统框图如图2.1所示。STC89C52继电器模块7805稳压电源模块继电器模块7805稳压电源模块HC-SR501人体感应模块DS1302计时模HC-SR501人体感应模块DS1302计时模块LCD显示模块LCD显示模块按键模块图2.1系统框图(1)智能排插的核心控制电路STC89C52单片机是本设计的核心器件,配合各个模块实现排插的控制,STC89C52根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33M之间,。该最小系统主要由复位电路,晶振电路构成。(2)QC12864B液晶显示部分QC12864B是带中文字库的汉字图形点阵液晶显示模块,可显示4×8行16×16的点阵汉字及分辨率为128×64的图形。同时,光标显示、画面移动、自定义字符、睡眠模式等功能可实现最直接的人机交互。(3)DS1302模块本系统采用DS1302作为时钟计时器,从而实现排插在24小时内任意时间的可变定时和一小时内的固定模式定时。这样可以使得定时准确,方便,节约系统资源,同时程序编写上也能相对简单。HC-SR501模块HC-SR501是建立在BISS0001红外热释电处理芯片上的自动控制模块,其使用LHI778型探头进行设计,具有高灵敏度,功耗低,可靠性强等特点。广泛应用于各类自动感应电气设备,且其是干电池供电的自动控制产品。(5)继电器模块本设计采用的是型号为SONGLESRD-05VDC-SL-C的继电器,5V继电器是一种电子控制器件,具有控制系统(又称输入回路)和被控制系统(又称输出回路),可用较小的电流去控制较大电流的一种“自动开关”。(6)按键模块系统采用轻触按键设计4*4式矩阵按键,充分利用单片机I/O口控制实现按键功能。第3章可编程控制器PLC3.1PLC简介可编程逻辑控制器(ProgrammableLogicController,PLC)由上世纪60年代提出,首先是为了取代继电器控制装置。经过了半个世纪的发展,PLC的应用范围也变得更加的广泛。随着数字时代的到来,信息技术的飞速发展从而带动了各个行业的自动化进程。PLC其强大的开关量控制以及逻辑控制,使得自身在现代化行业中的作用变得尤为突出。PLC是汽车行业发展所催生出来的。早期的汽车行业自动化进程中,控制主要来自继电器控制。继电器控制一方面控制电路复杂,一旦产生故障,检修十分困难;另一方面继电器控制效率较为低下,汽车行业作为自动化应用最为突出的表行业,继电器控制系统逐渐满足不了更为复杂的逻辑控制要求。顺应了社会的发展,PLC的出现逐步迎来了一个蓬勃的发展时期。PLC拥有着强大的逻辑运算、定时、计数和计算等功能,其输入和输出都是采用数字量的方式,从而控制电气设备进行动作。人们首先将逻辑控制程序写入到PLC中,PLC以连续扫描的方式,给相应的输出端一定的电信号,电信号控制了外部电路的通断,从而逐步完成所预想的动作指令。PLC在逐步扫描的过程中,计数器会记录相应的步数,PLC完成一次扫描动作所需要的时间就是其扫描周期。世界首台PLC于1969年产生于美国,现在美国和欧盟以生产大型PLC为主,日本、德国等生产中小型PLC为主,我国在经历了漫长的摸索,也有一些自己的品牌出现,但是其核心技术仍以掌握在PLC生产大国手中,我国的PLC自主之路仍充满着挑战。随着工业自动化,PLC控制系统逐步应用于各行各业,其运算速度快、体积小等特点愈发起到了不可替代的作用。在早期PLC功能的基础上,一些新的功能如网络通讯功能得以添加,使PLC的功能更加完善。我国工业化相较于西方国家起步较晚,但是自改革开放以来,工业化进程步伐十分迅速,工业自动化发展在短短几十年走完其他国家百年走过的路程,基于PLC的控制系统成为了自动化领域的主流。PLC可靠性高,控制系统稳定,同时在半世纪的发展和总结中,已经形成了完善的功能,具有很强的适应性。PLC的编程语言相较于其他编程语言更加简单,从而使得系统设计周期较短,维护也更加方便。PLC众多的功能模块,极大的丰富了PLC的控制领域,能够满足在不同情况下的控制要求。3.2PLC内部结构PLC的的内部结构如图2-1所示,组要由CPU、存储器、输入输出接口、电源等组成。图1-1PLC内部结构3.2.1中央处理器CPU中央处理器是对数据进行处理的最重要部件,其作用就相当于人体的大脑,在PLC系统中处于中枢地位[1]。CPU能够接收输入单元的信号,并对信号进行识别和处理,同时通过给输出单元施加电信号,从而实现输入输出的协调配合。CPU能够对自身信息进行检测,识别错误信息并警告提醒,党PLC在运行的时候,能够控制系统进行扫描,完成相应的计算和逻辑运算,以循环扫描的方式控制输出。CPU是逐步读取编写的程序,每一步都进行扫描,当前一步执行完成,则通过存储区的相应信息,控制输出端信号的产生。在每一个固定的扫毛周期内,CPU都重复进行着相同的动作。3.2.2存储器PLC的存储器和电脑的存储器功能一样,都是用来存放相对应的数据。PLC存储器中存储程序、逻辑变量等。PLC存储器分为系统程序存储区、系统RAM存储区和用户程序存储区。系统程序和用户程序在在存储器中有独立的位置划分。3.2.3输入输出单元输入和输出单元是连接外部短路的直接位置,其通过接收信号和发出信号从而控制外部电路。与三极管的导通方式类似,PLC的输入输出有源形和漏形之分[2]。输入单元是PLC接收外部信号的通道,不同的PLC有不同的输入方式,源形和漏形输入如图2-2所示。图2-2PLC漏形输入和源形输入接线漏形输入时,PLC公共端接24V,电流由外部流入输入端子;源形输入时,PLC公共端接0V,电流由端子流出。输出单元是给外部电路信号的端口,通常有继电器输出和晶体管输出输出方式,晶闸管输出方式一般不是很常用。继电器输出相较于晶体管输出,其输出端的承受电流更大,但是其开关量的开关频率没有晶体管输出方式的高,因此在一些开关频率较高、控制流程较快的场合,晶体管输出方式更加实用。但一般的情况下,继电器输出由于负载能力更强,所以实用的范围更广。输出单元也有源形输出和漏形输出的区别,图2-3就是两种不同的输出方式。图2-3PLC漏形输出和源形输出接线漏形输出时候,电流由外部流入端子,公共端接24V;源形输出时候,电流流出端子,公共端接0V。但是当输出为晶闸管输出时候,交流电源的正负对于输出端没有什么影响,则可以自由选择。3.2.4电源部分PLC运行需要给其供电,其开关量的闭合、断开控制是由直流电源的高低电平来实现的,所以PLC运行时候需要给其供应直流稳压电源。PLC有直流供电和交流供电的,但是最终都是将其转化为直流的方式。PLC有自己的内部电源,其稳定性很好但是输出功率较小,直流电源一般采用直流24V电压,保证PLC的正常运行。3.3PLC的选型PLC型号众多,在进行相关设计和应用的时候,如何准确的选择尤为重要。在PLC的选型时候,可从以下几个方面进行。第一,确定输入输出点的个数。以三菱FX系列PLC为例,输入输出点有10点、14点、20点、30点、32点、64点等等,在进行PLC选型时候,首先就是要确定控制系统中输入点和输出点的个数,然后来以确定基本的选型方向。同时在选择的同时,应注意输入输出都要预留总数10%左右数量的触点作为预备点。第二,选取合适的电源类型。PLC有AC和DC两种型号。DC电源一般为24V,AC有100-230V。在进行PLC选型时候,应该根据系统的电源实际情况,选取合适的电源类型的PLC,使其适合设计的要求。第三,明白输出信号类型。PLC的输出有继电器输出、晶体管输出和晶闸管输出。继电器输出的方式其输出频率较大,在实际的应用中很常见,一般的常见系统中,这种说出方式能够适应输出信号的给定;晶闸管输出的方式相较与继电器输出,其使用于要求信号变化频率很快的信号输出,但是其输出功率较小,承载电流较小[3]。总之,PLC的选型应该根据实际的情况,综合分析比对,选择最合适的PLC型号,这样才能在控制系统的设计中少不必要的麻烦。第4章硬件电路设计4.1智能插座的工作原理本系统由单片机最小系统、QC12864B液晶屏、HC-SR501、继电器等几个模块组成。通过外设键盘对与继电器相连的排插进行定时、延时设置,使其可以按照我们的意愿在相应的时间通断。或由HC-SR501热释电红外传感器模块,当感应到生物发出的红外线而输出电信号进而触发SCT89C51单片机的外部中断引脚,自动控制排插的通断。由LED指示灯指示工作模式并将工作数据通过LCD液晶屏显示。4.2硬件简介4.2.1STC89C52单片机STC89C52单片机是一款低功耗、高性能的8位微控制器芯片,内部集成8K字节Flash,512字节RAM,4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,2个外部中断,一个通信一步通信口(UART),一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口,32位的I/O口线,看门狗定时器。另外STC89C52可降至0MHz静态逻辑操作,支持2种可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,、片内振荡器停止工作,从而单片机的一切工作全部停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。可以在4V到5.5V宽电压范围内正常工作。具有许多独特的优点,即体积小、重量轻、单一电源、低功耗、功能强、价格低廉、运算速度快、抗干扰能力强、可靠性高等[4-6]。其内部包含以下功能部件:a.8位CPU;
b.振荡器和时钟电路;
c.8k字节的程序存储器EPROM;
d.256字节的数据存储器RAM;
e.可寻址外部存储器和数据存储器各64字节;
f.20多个特殊功能寄存器;
g.32线并行I/O口;
h.一个全双工串行I/O口;
i.3个16位定时器/计时器;STC89C52引脚图如图4.1所示。图4.1DIP-40封装STC89C52引脚图P0口:P0口是一个8位漏极开路的准双向I/O口。当作为输出口时,输出级为漏极开路电路,应外接一个上拉电阻来提供输出高电平时的驱动电流。对P0端口写“1”时,引脚用作高阻抗输入。当CPU访问片外存储器时,由内部硬件自动使控制线为“1”。这时,P0口可作为低8位地址/数据总线分时使用。在这种模式下,P0不具有内部上拉电阻[4-6]。P1口:P1口是一个带有内部上拉电阻的8位准双向口,作为通用的I/O端口使用。P1输出缓冲器能驱动4个TTL逻辑电平。当P1口用做输出口输出“1”时,输出线由内部上拉电阻拉成高电平;作为输入使用时,CPU必须将“1”写入锁存器,使T1截止,把该端口线由内部上拉电阻拉成高电平[6]。P2口:P2口是一个带有内部上拉电阻的8位准双向I/O口。P2输出缓冲器能驱动4个TTL逻辑电平。当CPU对P2端口写入“1”时,其内部的上拉电阻把该端口拉为高电平,此时,P2口可作为输入端口来使用。作为输入口使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流[4-6]。P3口:P3口是带有内部上拉电阻的8位准双向I/O口,并且还是一个双功能端口。其作为通用的I/O口使用时,工作原理同P1、P2端口相似。对P3端口写“1”时,输出引脚由内部上拉电阻拉成高电平;作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流[4-6]。RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位[4-6]。4.2.2QC12864B液晶显示屏QC12864B是一款具有4位/8位并行、2线或3线串行多种接口方式的带中文字库以及内部含有国标体中文字库的点阵图形的液晶显示器;其具有128×64的分辨率,8192个16*16点汉字以及128个16*8点的ASCII字符集,且具有光标显示、画面移位、睡眠模式等多种功能。可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。其引脚图如图3.2所示。如表3.1为QC12864B引脚定义表[7]。表4.1QC12864B引脚定义管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7——DB0为显示数据RS=“L”,表示DB7——DB0为显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7——DB0R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H/L三态数据线13DB6H/L三态数据线14DB7H/L三态数据线15PSBH/LH:8位或4位并口方式,L:串口方式16NC-空脚17/RESETH/L复位端,低电平有效18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)20KVSS背光源负端4.2.3DS1302时钟芯片DS1302是高性能时钟芯片,具有以下特性:实时时钟,可对秒、分、时、日、周、月、以及带闰年补偿的年进行计数;用于高速数据暂存的31*8RAM;最少引脚的串行I/O;2.5-5.5V满肚工作范围;2.5V时耗电小于300nA;用于时钟或数据读/写的单字节或多字节数据传送;8引脚的双排直列封装(DIP)或用于表面的8引脚贴片封装(SOIC);简单的3线接口;TTL兼容(VCC=5V);可选的工业温度范围-40℃至+85℃;在DS1202基础上增加的特点:——可选的慢速充电的能力;——用于主电源和备份电源的双电源引脚;——备份电源引脚可用作电池或超容量电容器的输入端;——附加的告诉暂存存储器(7字节)。图4.3为DS1302的芯片引脚图所示。如表4.2所示为DS1302各引脚的功能表[8]。图4.3DS1302的芯片引脚图表4.2DS1302引脚功能引脚号引脚名称功能1VCC2主电源2、3X1、X2振荡器,外接32.768KHZ晶振4GND电源地5RST复位6I/O数据输入/输出(双向)7SCLK串行时钟8VCC1后备电源4.2.4BISS0001红外热释电处理芯片BISS0001是一款高性能的传感信号处理集成芯片,由热释电红外传感器以及外围连接元器件组成的被动式热释电红外开关模块。其可自动快速有效的控制各式照明灯、蜂鸣器、自动门、电风扇、烘干机和自动洗手池等等家用电器的关断,普遍应用在宾馆、酒店、公司、商场及家庭等过道或走廊等敏感区域,以及安全区域的灯光、照明和报警系统。引脚原理图如图4.4所示。其引脚功能如表3.3所示[9]。图4.4BISS0001引脚图表4.3BISS0001引脚功能引脚号名称I/O功能说明1AI可重复触发和不可重复触发选择端。当A为“1”时,允许重复触发;反之,不可重复触发2VOOVo上升沿时为有效触发。在输出时间Tx之外和无VS的上跳变时,Vo保持低电平。3RR1--输出延迟时间Tx的调节端4RC1--输出延迟时间Tx的调节端5RC2--触发封锁时间Ti的调节端6RR2--触发封锁时间Ti的调节端7VSS--工作电源负端8VRFI参考电压及复位输入端。9VCI触发禁止端。当Vc<VR时禁止触发;当Vc>VR时允许触发(VR≈0.2VDD)10IB--运算放大器偏置电流设置端11VDD--工作电源正端122OUTO第二级运算放大器的输出端132IN-I第二级运算放大器的反相输入端141IN+I第一级运算放大器的同相输入端151IN-I第一级运算放大器的反相输入端161OUTO第一级运算放大器的输出端4.2.5继电器模块本系统使用的继电器是型号为SONGLESRD-05VDC-SL-C的继电器,该继电器是一种电子控制器件,工作电压5伏,具有两个控制系统分别是输入回路和被控输出回路,利用较小的电流驱动去控制大电流的一种“自动开关”。因此在电路中起着安全保护、自动调节及电路转换等作用,可实现弱电控制强电的目的,常用在自动控制电路中。4.2.6按键模块采用普通轻触按键设计矩阵式按键控制,给单片机引脚输入电信号。由于与人体感应模块中用到的外部中断脚P3.2重合,故在设计按键的时候将此引脚除去。4.3系统的硬件电路设计原理图4.3.1STC89C52最小系统电路图STC89C52为核心的最小系统由复位电路和晶振电路组成,复位电路由按键一个1K电阻和一个10K电阻以及一个10uf的电解电容构成,晶振电路由12M晶振和两个30PF电容组成,单片机最小系统如图4.5所示。图4.5单片机最小系统仿真图4.3.2QC12864B液晶显示电路QC12864B带字库型液晶显示模块,内部存有16X16点阵的中文汉字8192个、8X16点阵的字符128个以及64X256点阵的图形显示RAM(GDRAM)。其电路连接图如图4.6所示。图4.6QC12864B电路连接图4.3.3DS1302时钟电路DS1302引脚电路中Vcc1为后备电源接一个干电源电池,Vcc2为主电源。DS1302由Vcc1或Vcc2两者中的较大者供电。X1和X2是振荡源,外接32.768kHZ晶振。电路连接图如图4.7所示[10]。图4.7DS1302电路原理图4.3.4HC-SR501模块电路BISS0001是一款高性能的传感信号处理集成电路,由运算放大器、状态控制器、电压比较器、封锁时间定时器以及延迟时间定时器等构成的数模混合集成电路。并配以热释电红外传感器和外围元器件构成被动式的热释电红外开关。该模块有两种模式:分别是可重复触发方式和不可重复触发方式。通过Q脚电信号的变化,触发单片机外部中断达到控制继电器工作效果。本系统采用不可重复触发方式,当感应到有人体在其范围内活动则Q脚输出高电平,否则输出低电平,而单片机外部中断为低电平触发,故在模块输出端加一反相器。其电路原理图如图3.8所示,其中PIR为HC-SR501模块[10]。图4.8HS-SR501模块电路原理图4.3.5继电器电路本系统使用的继电器是型号为SONGLESRD-05VDC-SL-C的继电器,该继电器是一种电子控制器件,工作电压5伏,具有两个控制系统分别是输入回路和被控输出回路,利用较小的电流驱动去控制大电流的一种“自动开关”。本系统中,主要是用于控制插座的开关状态,由按键设置及红外感应模块影响单片机I/O输出信号来控制继电器的工作,从而达到控制插座自动关断的目的。电路图如图4.7所示[10]。图4.7继电器控制电路4.3.6按键电路采用普通轻触按键设计矩阵式按键控制,给单片机引脚输入电信号。如图4.8所示。图4.8矩阵按键电路原理图4.3.7系统原理图系统原理图见附录I。第5章系统的软件设计5.1系统软件设计流程系统采用STC89C52单片机作为控制中心,使用C语言进行程序的编写,使用Keiluvision2软件进行编译。通过按键进行实时时间、定时时间及延迟时间的模式选择以及个模式下的数据修改,由LCD12864液晶屏显示。并通过感应器反馈的信息给单片机处理,如图4.1所示为主程序流程图。开始开始显示感应器置单片机显示感应器置单片机按键功能选择按键功能选择定时设置延迟设置时间设置定时设置延迟设置时间设置继电器置继电器置图5.1为主程序流程图5.2模块程序设计5.2.1LCD12864液晶驱动程序设计本系统使用QC12864B液晶模块作为显示器,建立人机界面。其可显示4行8字汉字及128X64图形,并且内置8192个汉字字库、128个字符以及64X256点阵图形显示RAM(GDRAM)。其显示功能需要完成两个操作:写操作(写指令与数据)和读操作(读指令与数据)。1.写操作从MPU写资料到液晶显示模块。模块采用8位并行连接方式进行数据传输,其时序图如图4.2所示。图5.2LCD12864写操作时序图2.读操作MPU从液晶模块中读出资料并进行处理。其时序图如图4.3LCD12864读操作时序图所示。图5.3LCD12864读操作时序图3.读写信号借口说明RS,R/W的配合选择决定控制界面的4种模式,如表4.1所示。EN使能控制信号功能。如表4.2所示。表4.1读、写操作控制功能RSR/W功能说明LLMPU写指令到指令暂存器(IR)LH读出忙标志(BF)及地址记数器(AC)的状态HLMPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(DR)中读出数据表4.2使能控制功能E状态执行动作结果高——>低I/O缓冲——>DR配合/W进行写数据或指令高——>低DR——>I/O缓冲配合R进行读数据或指令低——>高无动作
LCD12864显示流程图。如图4.4LCD12864显示流程图所示。开始开始写命令初始化写数据写命令初始化写数据读状态或数据读状态或数据数据显示数据显示图5.4LCD12864显示流程图5.2.2DS1302驱动程序设计DS1302时钟芯片主要由移位寄存器控制逻辑、振荡器、实时时钟以及RAM几部分组成。初始化任何的数据传送时,把RST置为高电平(必要条件SCLK为低电平时),允许对DS1302进行操作。时钟信号由SCLK提供,在SLCK上升沿串行输入。前8个时钟周期将命令字装入移位寄存器之后,在后面的时钟周期里在读操作时输出数据,在写操作时输入数据。1.SingleByte读操作时序如图4.5所示。写操作时序如图4.6所示。图5.5DS1302读时序图图5.6DS1302写时序图2.DS1302共具有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位均为BCD码形式。其内部日历、时间寄存器如表4.3读、写寄存器地址和内容所示,其中奇数为读操作,偶数为写操作。表5.3读、写寄存器地址及内容写读BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0秒80H81HCH10秒秒分82H83H10分分小时84H85H12/010时时AM/PM日86H87H0010日日月88H89H00010月月周8AH8BH00000周年8CH8DH10年年控制8EH8FHWP0000000秒寄存器的位7为时钟暂停标志位(CH),当置1时,时钟振荡器停止;置0时,时钟开始运行。控制寄存器的为7时写保护位(WP),该位在任何对时钟和ARM的写操作之前须置0;当置1时,防止对任何的寄存器进行写操作。3.DS1302控制字控制字中位7必须置1,为0则无法将数据写入到DS0302中;位6若为0,表示存取日历时钟数据,为1表示存取RAM数据;位0若为0表示进行写操作,为1表示进行读操作,控制字如表表4.4所示。如图4.7为DS1302的程序流程图。表5.4控制字765432101RAMA4A3A2A1A0RD开始写地址初始化RST高电平写数据开始写地址初始化RST高电平写数据数据写完?数据写完?N 数据写完?N数据写完?显示写地址读数据RST高电平Y显示写地址读数据RST高电平Y 图5.7DS1302程序流程图5.2.3按键程序设计系统设计采用矩阵式按键实现按键控制功能,充分利用单片机的整一个8位端口构成4*4=16个矩阵式按键,并根据系统整体设计选择个别或全部按键设置功能。矩阵式按键原理:不断循环地给低高位独立的低电平,然后判断键盘中有无键按下。将高位中其中一行线(P3.4~P3.7中其中一列)置低电平然后检测列线的状态(高低位,即P1.4~P1.7,由于线与关系,只要与低电平行线接通,即跳变成低电平),若检测到某列的电平变为低就延时消除抖动,再次判断,若仍为低电平,则表示有按键按下,若所有列线均为高电平则表示键盘中无键按下。在确认有键按下后,确定具体闭合按键,其过程:依次将行线置为低电平,其它行线为高电平。同时逐行检测各列线电平状态;若某列为低,则该列线与置为低电平的行线交叉处的按键即为闭合的按键,并返回键值。图4.8为矩阵按键程序流程图。开始开始将行线置0将行线置0读列线值读列线值按键按下?按键按下?返回无效码值N返回无效码值Y读行列线值读行列线值返回行列线码值返回行列线码值图5.8矩阵按键程序流程图第6章系统的仿真和调试6.1硬件仿真调试原理图本系统实物制作过程主要由一下几步:第一步使用Protel99SE软件绘制好原理图并生成PCB文件经自己布线后保存。根据整个系统所用到的材料从网上采购回来,然后由用到的元器件或芯片,使用Protel99绘制原理图,建立自己的元件库同时添加相应封装,原理图见附录一所示。原理图画完之后将其更新生成PCB,并根据设计进行布线,最后保存。第二步焊接硬件。根据有Protel99生成的PCB图进行电路焊接,焊接之前进行分区,即模块所占区域,然后分模块进行焊接,首先将模块元器件按确认好的位置插到万用板上,再进行焊接,同时要经常测试电路是否有短接的情况及模块是否能正常使用。硬件实物图如图5.1所示:第三步系统硬件程序调试。测试中由于12864出现问题因此显示并不理想。上电结果如图6.2所示。图6.1系统硬件实物图图6.2系统硬件调试图(上电)6.2加载源程序后的实物结果及分析系统上电后进入待机状态,等待设置参数。如图6.3所示。图6.3硬件待机状态图进入功能模式设置,可通过按键对参数进行设置。如图6.4所示。图6.4模式设置图参数完成设置后利用按键确定退出,界面如图5.5所示。红色LED指示灯亮表示延迟工作正在执行相应继电器导通,黄色LED表示定时时间内继电器导通指示灯,绿色LED表示人体感应器被触发继电器导通指示灯。图6.5硬件工作状态图第7章总结与展望7.1总结现实生活中,随着人们的生活水平不断的提高,家电等用电器具越来越多,本智能插座可以实现定时及感应控制插座的功能,即能满足生活所需,又节能环保,非常人性化,实用性高。本智能插座系统主要由STC89C52单片机最小系统、DS1302时钟模块(用于时钟计数)、基于BISS0001红外热释电处理芯片的HC-SR501人体感应模块(用于感应人体触发继电器工作)、QC12864B液晶屏显示模块(用于显示汉字、图片及时间)、按键模块(定时、延迟等选择操作)及继电器模块(控制插座通断电)等几部分组成。系统使用的液晶显示屏为育松电子QC12864B液晶屏,可现实汉字及图形。构成人机交互界面,使系统更加人性化、立体化。软件设计根据思路列出流程图进行讲解,系统使用keiluvision2编译软件设计编程,各个功能实现由按键及液晶显示屏构成操作界面,进行功能的选择与设置,是系统呈现一个良好的界面。并根据需要实现的功能使用C语言完成单片机控制驱动及各模块程序的编写与调试。将设计好的硬件电路制作成实物,并将调试完成的程序载入单片机控制整个系统,实现本智能插座拟定的控制功能。7.2展望本系统总体上来说还存在着不足,其不够小巧美观、控制路数少及控制方式少,在便捷功能方面还有所欠缺。还有值得改进之处,以增加系统功能、提高系统价值。增加无线红外遥控控制。增加同等功能多路互不干扰控制。增加无线蓝牙控制。改进显示方式,更具人性化。参考文献[1]徐伟.智能插座在智能家居系统中的设计和应用[J].中国仪器仪表,2010.[2]姚文轩.多功能智能插座设计[J].企业技术开发,2010.[3]杨妤.打破行业格局纽曼自创“节电插座”[J].中国品牌与防伪,2007,(10).[4]万文略.《单片机原理与应用》[M].重庆大学出版社,2004.[5]谭浩强.《MCS-51单片机应用教程》[M].主编.清华大学出版社,2000.[6]徐爱钧.《单片机原理实用教程》[M].电子工业工业出版社,2012.[7]百度文库LCD12864液晶屏数据手册[EB/OL].(/view/dc1d625cbe23482fb4da4cce.html?re=view)。[8]百度文库DS1302芯片数据手册[EB/OL].(/view/9eee892b4b73f242336c5f92.html?re=view)。[9]百度文库BISS000I芯片资料手册[EB/OL].(/link?url=y7ghhiX5AE7PhKCRZlfyUc2dUaOSvSvlbXlx-vKYu4TaYk9FNh40hrS96ebhxch96MOF_1z1AEy2gGsva6dNVnalZnan_Nfqauv5bDaHfEW)[10]刘志名.《电路分析》[M].西安电子科技大学出版社,2001.[11]谭浩强.C程序设计[M].北京:清华大学出版社,2005.附录附录1系统原理图系统原理图附录2源程序1.主程序(C程序)[11]://#include"STC12C5A60S2.H"#include"reg52.H"#include"delay.h"#include"LCD12864.h"#include"Display.h"#include"DS1302.h"#defineuintunsignedint#defineucharunsignedcharbitReadTimeFlag;//定义读时间标志sbitRelay=P1^3;//延迟动作的继电器sbitTiming=P1^4;//定时工作的继电器sbitPIR=P1^6;//人体感应的继电器bitmoshi;//模式选择标志位bitycbz; //延迟调时标志位bitdsbz; //定时调时标志位bitsjbz; //显示时间调时标志位bitds; //定时时间起止标志位bityc; //延迟时间结束标志位ucharh,m,s,num1,num2,num3,num4,num5,num6,num7;//定义时分秒#defineKeyPortP3//定义按键端口sbitKEY1=P3^0;//minute倒计时加一键sbitKEY2=P3^1;//minute倒计时减一键sbitKEY3=P3^2;//hour倒计时加一键sbitKEY4=P3^3;//hour倒计时减一键unsignedcharKeyScan(void);//键盘扫描unsignedcharKeyPro(void);//按键处理voidInit_Timer0(); //定时器0初始化voidInti_Int0();//外部中断0初始化voidyanshi(void);//延迟显示voidRelay_Set();voidTiming_Set();voidTime_Set();voidmain(){ uchari=0;// lcm_init();//液晶初始化 welcome();//调用欢迎信息 Ds1302_Init();//初始化DS1302 Init_Timer0(); //定时器0初始化 Inti_Int0(); //外部中断初始化 delay(1000); lcm_clr();//12864清屏// Ds1302_Write_Time(); while(1) { P1=0xff;num1=KeyPro(); if(num1==0) { moshi=1; lcm_clr(); while(moshi) { num5=KeyPro(); P1=0xff; switch(num5) { case4:Relay_Set();break; case8:Timing_Set();break; case12:Time_Set();break; default:break; } num4=KeyPro(); if(num4==3) { moshi=0; lcm_w_test(0,0x80); lcm_w_word("退出:"); }}} if(ReadTimeFlag)//更新时间 { ReadTimeFlag=0; Ds1302_Read_Time();//DS1302读取时间 displaydate(); //显示日期 displayxq();//显示星期 displaytime(); //显示时间 yanshi();//延迟时间 dingshi();//定时时间 //******延迟动作******************** while(yc) { Relay=1; if((h!=0)||m||s) { Ds1302_Read_Time();//DS1302读取时间 displaydate(); //显示日期 displayxq();//显示星期 displaytime(); //显示时间 yanshi();//延迟时间 dingshi();//定时时间 Relay=0; if((time_buf1[4]>=ts1)&&(time_buf1[5]>=tf1)) { Timing=0; } elseif((time_buf1[4]>=ts2)&&(time_buf1[5]>=tf2)) { Timing=1;} num7=KeyPro(); if(num7==0) { h=0;m=0;s=0; } } elseyc=0;Relay=1;ds=1; } //**********定时时间到动作************** while(ds) {if((time_buf1[4]>=ts1)&&(time_buf1[5]>=tf1)) { Timing=0; Ds1302_Read_Time();//DS1302读取时间 displaytime();if((h!=0)||m||s) { Relay=0; } else { Relay=1;} } elseif((time_buf1[4]>=ts2)&&(time_buf1[5]>=tf2)) { Timing=1; ds=0;yc=1; } num7=KeyPro(); if(num7==0) ds=0; } //********************************** } }}/* 外部中断初始化*/voidInti_Int0(){ EA=1; EX0=1; IT0=0;}/*外部中断程序*/voidISR_Key(void)interrupt0using1{PIR=0;//进入中断程序执行程序,//此时可以通过EA=0指令暂时关掉中断}//定时器0初始化voidInit_Timer0() { TMOD|=0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 EA=1;//总中断打开 ET0=1;//定时器中断打开 TR0=1;//定时器开关打开}//定时器0中断程序voidTimer0_isr()interrupt1{ staticunsignedintnum,i; TH0=(65536-2000)/256; //重新赋值2ms TL0=(65536-2000)%256; i++; if(i==25)//大致100ms { i=0; ReadTimeFlag=1;//读标志位置1 } num++;if(num==500)//大致1s{num=0; if((h!=0)||m||s)//如果分钟和秒都为0,不进行计时s--;//秒减1if(s==0xff)//如果=0后再减1则为255赋值59,即00过后显示59 { s=59; if(h>0||m>0)//倒计时条件 { m--; if(m==0xff) {m=59; if(h>0) h--; } } }}}/****************************** 延迟设置函数*******************************/voidRelay_Set(){ lcm_clr(); ycbz=1; while(ycbz) { num2=KeyPro(); switch(num2){ case0:if(h<23)h++;///jia1=0;delay(10);jia1=1;//yanshi();//Display_Data_Operation(); ;break;//倒计时时加1 case4:if(h>0)h--;//jian1=0;delay(10);jian1=1;//yanshi();//Display_Data_Operation(); ;break;//倒计时时减1 case8:if(m<59)m++;//jia1=0;delay(10);jia1=1;//yanshi();//Display_Data_Operation(); ;break;//倒计时分加1 case12:if(m>0)m--;//jian1=0;delay(10);jian1=1;//yanshi();//Display_Data_Operation(); ;break;//倒计时分减1 default:break; } num4=KeyPro(); if(num4==3) { lcm_w_test(0,0x80); lcm_w_word("切换:"); ycbz=0; yc=1; } yanshi(); }}/************************** 定时设置函数*************************/voidTiming_Set(){ lcm_clr(); dsbz=1; while(dsbz) { num3=KeyPro(); switch(num3){ case0:if(ts1==24)ts1=0;ts1++;//jia1=0;delay(10);jia1=1; ;break; case4:if(ts1==60)ts1=0;tf1++;//jian1=0;delay(10);jian1=1; ;break; case8:if(ts2==24)ts2=0;ts2++;//jia1=0;delay(10);jia1=1; ;break; case12:if(ts1==60)ts1=0;tf2++;//jian1=0;delay(10);jian1=1; ;break; default:break; } num4=KeyPro(); if(num4==3) { lcm_w_test(0,0x80); lcm_w_word("切换:"); dsbz=0; ds=1; } dingshi(); }}/********************* 时间设置函数**********************/voidTime_Set(){ lcm_clr(); sjbz=1; while(sjbz) { num7=KeyPro(); switch(num7) { case0:time_buf1[4]++;if(time_buf1[4]==24)time_buf1[4]=0;Ds1302_Write_Time();//jia1=0;delay(10);jia1=1; ;break;//倒计时时加1 case4:time_buf1[4]--;if(time_buf1[4]==255)time_buf1[4]=23;Ds1302_Write_Time();//jian1=0;delay(10);jian1=1; ;break;//倒计时时减1 case8:time_buf1[5]++;if(time_buf1[5]==60)time_buf1[5]=0;Ds1302_Write_Time();//jia1=0;delay(10);jia1=1; ;break;//倒计时分加1 case12:time_buf1[5]--;if(time_buf1[5]==255)time_buf1[5]=59;Ds1302_Write_Time();//jian1=0;delay(10);jian1=1; ;break;//倒计时分减1 default:break; } displaytime(); num4=KeyPro(); if(num4==3) { lcm_w_test(0,0x80); lcm_w_word("切换:"); sjbz=0; } }}/*按键扫描函数,返回扫描键值*/unsignedcharKeyScan(void)//键盘扫描函数,使用行列反转扫描法{unsignedcharcord_h,cord_l;//行列值中间变量KeyPort=0x0f;//行线输出全为0cord_h=KeyPort&0x0f;//读入列线值if(cord_h!=0x0f)//先检测有无按键按下{DelayMs(10);//去抖if((KeyPort&0x0f)!=0x0f){cord_h=KeyPort&0x0f;//读入列线值KeyPort=cord_h|0xf0;//输出当前列线值cord_l=KeyPort&0xf0;//读入行线值while((KeyPort&0xf0)!=0xf0);//等待松开并输出return(cord_h+cord_l);//键盘最后组合码值}}return(0xff);//返回该值}/*按键值处理函数,返回扫键值*/unsignedcharKeyPro(void){switch(KeyScan()){case0x7e:return0;break;//0按下相应的键显示相对应的码值case0x7d:return1;break;//1case0x7b:return2;break;//2case0x77:return3;break;//3case0xbe:return4;break;//4case0xbd:return5;break;//5case0xbb:return6;break;//6case0xb7:return7;break;//7case0xde:return8;break;//8case0xdd:return9;break;//9case0xdb:return10;break;//acase0xd7:return11;break;//bcase0xee:return12;break;//ccase0xed:return13;break;//dcase0xeb:return14;break;//ecase0xe7:return15;break;//fdefault:return0xff;break;}}/* 延迟显示函数*/voidyanshi(){ lcm_w_test(0,0x98); lcm_w_word("延迟:");//Display_Data_Operation();//LCD_PutString(7,4,"TempData1[1]");write_data(h/10+0x30);//0x30数字ASCLL码从0x30开始 write_data(h%10+0x30); lcm_w_word("-");// min=time_buf1[5]; write_data(m/10+0x30); write_data(m%10+0x30); lcm_w_word("-");// sec=time_buf1[6]; write_data(s/10+0x30); write_data(s%10+0x30);}2.LCD12864液晶程序:#include"STC12C5A60S2.H"#include"LCD12864.h"#include"delay.h"#defineuintunsignedint#defineucharunsignedchar//定义12864液晶屏数据线sbitRS=P2^2;//模式位,为0输入指令,为1输入数据sbitRW=P2^3;//读写位,为0读,为1写sbitEN=P2^4;//使能位,高脉冲sbitRES=P2^1;sbitPSB=P2^0;#defineLcd_BusP0//P0.0--P0.7对应连接DB0--DB7voidchk_busy() ////检查忙位{RS=0;RW=1;EN=1;Lcd_Bus=0xff;while((Lcd_Bus&0x80)==0x80);EN=0;}voidwrite_com(ucharcmdcode)//写指令到LCD{ chk_busy(); RS=0;RW=0;EN=1; Lcd_Bus=cmdcode; EN=0;}voidwrite_data(ucharDispdata) //写数据到LCD{ chk_busy(); RS=1;RW=0;EN=1; Lcd_Bus=Dispdata; EN=0;}voidlcm_w_word(uchar*s)//向LCM发送一个字符串,64字符之内{while(*s>0){write_data(*s);s++;}//应用lcm_w_word("您好!}voidlcm_w_test(biti,unsignedcharword)//写指令或数据(被调用层){ if(i==0)write_com(word);//写指令(0,指令) else write_data(word);//写数据(1,数据)}voidlcm_clr(void)//清屏函数{ lcm_w_test(0,0x01); }voidlcm_clr2(void) //清屏上面3行(用空格填满要清显示的地方,因为液晶屏是静态显示的,所以这办法常用){ lcm_w_test(0,0x80);//第一行 lcm_w_word(""); //标尺("1234567812345678"应该能够显示满一行)lcm_w_test(0,0x90);//第二行 lcm_w_word(""); //标尺("1234567812345678"应该能够显示满一行)lcm_w_test(0,0x88);//第一行 lcm_w_word(""); //标尺("1234567812345678"应该能够显示满一行)}voidlcm_init()//初始化LCD屏{ write_com(0x30);//选择8bit数据流 write_com(0x0c);//开显示(无游标、不反白) lcm_clr();//清除显示,并且设定地址指针为00H// write_com(0x06);//光标右移,DDRAM位址计数器(AC)加1,不整屏移动write_com(0x01);//清除显示,并且设定地址指针为00H lcm_clr2();}Display显示程序:#include"Display.h"#include"LCD12864.h"#include"DS1302.h"#defineuintunsignedint#defineucharunsignedcharucharsec,min,hour,day,date,month,year;ucharts1,ts2,tf1,tf2;ucharConver_week(uchary,ucharm,uchard)//根据年月日计算周历函数{ if(m==1||m==2) { m+=12; if(y>0) y--; else y=4; }//返回星期几(星期一用1表示,而星期天用7表示) return1+((d+2*m+3*(m+1)/5+y+y/4)%7);}voidwelcome()//显示欢迎信息{ write_com(0x80);lcm_w_word("系统初始化中"); write_com(0x90);lcm_w_word(""); write_com(0x88);lcm_w_word("请稍候"); write_com(0x98);lcm_w_word(""); }voiddisplaydate()//显示年、月、日{ write_com(0x30); write_com(0x06);//光标右移,DDRAM位址计数器(AC)加1,不整屏移动 //往液晶屏填写年数据 lcm_w_test(0,0x80); lcm_w_word("20");//20世纪 year=time_buf1[1]; write_data(year/10+0x30); write_data(year%10+0x30); //往液晶屏填写月数据 month=time_buf1[2]; lcm_w_word("-");
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省潍坊市滨海区重点达标名校2026年初三毕业班总复习概率与统计平行性测试数学试题含解析
- 老年患者压疮的护理案例分析
- 2026年及未来5年市场数据中国玻璃制品行业发展潜力预测及投资策略研究报告
- 学校绩效考核制度制度
- 审计干部年终述法制度
- 审计报告出具三审制度
- 健康驿站财务审计制度
- 审计农行轮岗制度
- 县级检察院内部审计制度
- 大学离任审计制度
- 农田土壤改良与施肥培训
- 机械原理习题答案
- EBSD入门简介姚宗勇课件
- 口内数字化印模
- 高考数学真题全刷-决胜800题
- GB/T 2007.7-1987散装矿产品取样、制样通则粒度测定方法手工筛分法
- 印刷及纸张基础知识培训课件
- 充分高效利用时间主题班会课件
- 皮带机安装检验批
- 教师礼仪规范全套课件完整版ppt教程最全
- 汽车可靠性教学课件汇总完整版电子教案全书整套课件幻灯片(最新)
评论
0/150
提交评论