基于单片机技术的太阳能热水器控制系统的设计与实现.doc_第1页
基于单片机技术的太阳能热水器控制系统的设计与实现.doc_第2页
基于单片机技术的太阳能热水器控制系统的设计与实现.doc_第3页
基于单片机技术的太阳能热水器控制系统的设计与实现.doc_第4页
基于单片机技术的太阳能热水器控制系统的设计与实现.doc_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计论文基于单片机技术的太阳能热水器控制系统的设计与实现系 部: 电子工程系 班 级: 电信09C2 姓 名: 王凯凯 学 号: 092221216 指导教师: 刘训菲 2012年 1 月 1 日摘 要能源是现代社会存在和发展的基石。随着全球工业革命的快速推进,能源危机在上世纪被正式提出和普遍认可。而太阳能作为一种新型的绿色能源逐渐走进人们的事业。太阳是人们取之不尽用之不竭的可再生能源,具有充分的纯洁性,绝对的安全性和相对的广泛性。鉴于此,太阳能热水器这一顺应时代发展需要的绿色产品被创造发明出来并且走进了千家万户。而本论文要论述的就是如何对太阳能热水器进行更人文化控制,使得人们使用起来更为方便。本设计采用MSC-51系列单片机AT89S52作为中央处理器,采用DS1302实时时钟,12864点阵式液晶显示屏等模块,完成时间温度水位的显示,以及时间和温度的设定等功能。关键词:太阳能热水器;单片机;实时时钟;液晶显示屏目录摘要21前言42 太阳能热水器控制系统整体架构 21 太阳能热水器控制系统结构示意图6 22 结构示意图科学分析7 221 单片机7 222信号处理8 223 传感器8 224 显示接口和显示器9 225 键盘输入1023 时钟电路模块 231实时时钟简介11 232实时时钟模块电路123 太阳能热水器控制系统Proteus仿真134 太阳能热水器控制系统软件设计 41太阳能热水器控制系统软件设计流程图15 42太阳能热水器控制系统软件功能的实施 421初始化程序17 422按键检测及处理程序18 423读取温度的程序195 结论20参 考 文 献21致 谢22附录1.前言资源是社会经济发展的物质基础,经济愈发展,对资源的依赖性愈强。许多资源(如煤、石油、天然气等)是不可再生的,而且在利用过程中给人类生存环境带来极大污染,人类繁衍生息的物质和环境基础受到严峻挑战。加强清洁、可再生资源的开发利用,已引起全世界的普遍重视。太阳能作为一种取之不尽、用之不竭的可再生资源,有节能、环保、安全和永续利用等优点,理应成为开发利用的首选。其中太阳能热水器作为家庭生活用品,其开发利用在我国已走过了二十多年的历程,生产技术成熟,具有明显优点:(一)从节能环保的角度讲,使用太阳能热水器不会对环境造成污染,同时为国家节约了大量能源,社会效益明显,是国家重点推广项目,使用前景广阔。(二)太阳能热水器的使用寿命较长,使用太阳能热水器经济实惠。若使用合理,其寿命可达15年甚至更长。据测算,使用平方米太阳能热水器,相当于每年节约310度电。太阳能热水器的费用只有燃气热水器的七分之一,电热水器的六分之一。购置太阳能热水器一次性投资3000元左右,使用5至6年就可实现与其热水器的支出对比平衡。按照装置寿命15年计算,其经济效益是十分明显的。(三)太阳能热水器集热效果好,集热时间更长。只要阳光能照射到的地方,就可以使用太阳能热水器,即使在高寒地区一年四季也可以正常使用。在我国浙江、江苏、山东等地,太阳能热水器的研发和生产已形成规模,应用太阳能热水器的场所也由家居使用扩展到医院、学校、宾馆、饭店、游泳池、洗浴场所等。2. 太阳能热水器控制系统整体架构21 结构示意图22 结构示意图分析(系统原理框图如图1所示)221 单片机系统介绍 本系统采用AT89S52为 ATMEL 所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。 (一)、AT89S52主要功能列举如下:1、拥有灵巧的8位CPU和在系统可编程Flash2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)3、内部程序存储器(ROM)为 8KB4、内部数据存储器(RAM)为 256字节5、32 个可编程I/O 口线6、8 个中断向量源7、三个 16 位定时器/计数器8、三级加密程序存储器9、全双工UART串行通道(二)、AT89S52各引脚功能介绍:VCC:AT89S52电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:AT89S52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文Address Latch Enable的缩写,表示地址锁存器启用信号。AT89S52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。222 信号处理电路 信号处理电路主要有模拟信号处理电路和数字电路处理组成。首先模拟信号处理电路接受传感器的信号经过处理变化成可取的数字信号,在经过数字电路的处理传送给单片机。223 传感器 该传感器采用的是热电偶温度传感器。其工作原理是:将两种不同材料的导体或半导体A和B焊接起来,构成一个闭合回路,当导体A和B的两个执着点之间存在温差时,两者之间便产生电动势,因而在回路中形成一个大小的电流,这种现象称为热电效应。温度传感器热电偶就是利用这一效应来工作的224显示接口电路与显示器 以上为显示电路。 显示器 本系统采用2864,2864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集。该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字。可完成图形显示。电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块9。图2.6 LCD结构尺寸基本特性:低电源电压(VDD:+3.0-+5.5V)显示分辨率:12864点内置汉字字库,提供8192个1616点阵汉字(简繁体可选)内置 128个168点阵字符2MHZ时钟频率显示方式:STN、半透、正显驱动方式:1/32DUTY,1/5BIAS视角方向:6点背光方式:侧部高亮白色LED,功耗仅为普通LED的1/51/10通讯方式:串行、并口可选内置DC-DC转换电路,无需外加负压无需片选信号,简化软件设计工作温度: 0 - +55 ,存储温度: -20 - +60 225 键盘输入 一般具有人机对话的单片机系统少不了会有键盘。本设计采用三个按键,最佳的接口方案是独立式接法,即每一个I/O口上只接一个按键,按键的另一端接地。独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。我们将按键的一端接地,另一端接一个I/O口,程序开始时将此I/O口置于高电平,平时无按键按下时I/O口保护高电平。当有键按下时,此I/O口与地短路迫使I/O口为低电平。按键释放后,与单片机连接的上拉电阻使I/O口仍然保持高电平。我们所要做的就是在程序中查询此I/O口的电平状态就可以了解我们是否有按键动作了。值得注意的是,我们在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。这种抖动一般在10200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒级的单片机而言则是漫长的。为了提高系统的稳定性,我们必须去除或避开它。此处我采用软件去抖动,实现方法是先查询按键当有低电平出现时立即延时10200毫秒以避开抖动,延时结束再读一次I/O口的值。按键分工,从左至右依次为1、2、3号按键,一号键模式键,二号三号键为加减键。图2.7 键盘接口电路2.3 实时时钟模块2.3.1 实时时钟模块电路从古代的滴漏更鼓到近代的机械钟,从电子表到目前的数字时钟,为了准确的测量和记录时间,人们一直在努力改进计时工具。钟表的数字化,大力推动了计时的精确性和可靠性。在单片机构成的装置中,实时时钟是必不可少的部件。目前常用的实时时钟,很多采用单片机的中断服务来实现,这种方式一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许;有的则使用并行接口的时钟芯片,如MC146818、DS12887等,它们虽然能满足单片机系统对实时时钟的要求,但是这些芯片与单片机接口复杂,占用地址、数据总线多,芯片体积大,占用空间多,给其它设计带来诸多不便。本设计选取串行接口时钟芯片DS1302与单片机同步通信构成数字时钟电路,如图2.3。其简单的三线接口能为单片机节省大量资源,DS1302的后背电源及对后背电源进行涓细电流充电的能力保证电路断电后仍能保存时间和数据信息等。这些优点解决了目前常用的实时时钟所无法解决的问题。该时钟电路强大的功能和优越的性能,在很多领域的应用中,尤其是某些自动化控制、长时间无人看守的测控系统等对时钟精确性和可靠性有较高要求的场合,具有很高的使用价值。图2.3 DS1302与单片机接口电路2.3.2 实时时钟简介DS13024是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.55.5V。时钟可工作在24小时格式或12小时(AM/PM)格式。DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源后背电源双电源引脚,同时提供了对后背电源进行细电流充电的能力。DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。DS1302的复位引脚:通过把RST输入驱动置高电平来启动所有的数据传送.RST输入有两种功能:首先,RST接通控制逻辑,允许地址命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置RST为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7。 DS1302共有12个寄存器5,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表2.3。表2.3 DS1302的日历、时钟寄存器及其控制字寄存器名命令字取值范围各位内容写操作读操作76543210秒寄存器 80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN时寄存器84H85H01-12或00-2312/24010HRHR日寄存器86H87H01-28,29,30,310010DATEDATE月寄存器88H89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年寄存器8CH8DH00-9910YEARYEAR此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器的内容。DS1302与RAM相关的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H-FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。3太阳能热水器控制系统Proteus仿真Proteus仿真图本系统的硬件设计首先是在Proteus软件环境中仿真实现的。Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,它的电路仿真是互动的。针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试。如果有显示及输出,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,还能看到运行后输入输出的效果。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。 Proteus13建立了完备的电子设计开发环境,尤其重要的是Proteus Lite可以完全免费,也可以花微不足道的费用注册达到更好的效果。Proteus7.1是目前最好的模拟单片机外围器件的工具。可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分IIC器件,.)。 其实Proteus 与 multisim比较类似,只不过它可以仿真MCU! 当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好选择,可是初学者拥有它们的可能性比较小。 使用51系列单片机,不管是用汇编语言还是用C语言编程都要用到keil软件。 使用keil c51 v7.50 + proteus 7.1 可以像使用仿真器一样调试程序,一般而言,微机实验中用万能仿真器+电工系自己做的实验板的实验都可以做得到。 当然,硬件实践还是必不可少的。在没有硬件的情况下,Proteus能像pspice 仿真模拟/数字电路那样仿真MCU及外围电路。另外,即使有硬件,在程序编写早期用软件仿真一下也是很有必要的14。Proteus软件主要具有以下几个方面的特点:(1)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(2)支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能15;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。(4)具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。(5)在设计综合性方案中,还可以利用ARES开发印制电路板。4 太阳能热水器控制系统软件设计41太阳能热水器控制系统软件设计流程图 本课题设计的太阳能热水器控制系统的软件程序设计主要由(1)初始化程序,(2)扫描按键程序,(3)按键处理子程序,(4)读取水位信息、水箱温度和时间程序,(6)调用显示子程序,六个部分组成。系统总体流程图如图3.1所示。开始初始化扫描键盘,是否有按键N调用键盘处理子程序Y读取水位信息和水箱温度调用显示子程序显示水温时间42太阳能热水器控制系统软件功能的实施 421 初始化程序 太阳能热水器控制系统在接通电源后,首先要对系统进行初始化。初始化的过程包括启动DS1302,启动12864,对12864进行清屏。初始化流程图如下:初始化开始启动DS1302启动12864清屏图3.2 初始化程序流程图初始化程序清单如下:void start(void) /初始化函数 unsigned char i;set_time(0x8e,0x00); /取消写保护set_time(0x80,0x00); /启动时钟set_time(0x84,0x00); /设置24小时模式set_time(0x90,0xa5); /时钟时钟充电模式set_time(0x8e,0x80); /启动写保护RES1=0; RES1=1; dis_write_cmd(0xaf); /启动12864 clean(); /清屏422按键检测及处理程序在太阳能热水器初始化完成之后,系统便会进入键盘扫描状态,此状态下,主控芯片AT89S52会不断扫描是否有键按下,即等待用户输入。在检测到有键按下后,根据按下的次数(按一下设置“分”,按两下设置“时”,三下设置“星期”,以此类推),在运用“加”“减”分别设置。按键检测及处理流程图如图所示:(以按下“一下”为例)开始扫描是否有键按下否是一下(设置分)是否为“+”键是“分”加1否“分”减1图3.3 按键检测及处理程序流程图按键检测及处理程序清单如下:while(1) /总循环 while(state_button=0) /状态0循环 /无键按下的处理程序while(state_button!=0) /状态非0循环 set_time(0x80,0x80); /启动时钟 set_time(0x8e,0x00); /启动保护位if(state_button=1) /状态1设置分 if(time_jia=1) /判断按钮加是否按下过 minute0+; /分操作 下面所有的加减同理 if(minute09) / minute0最大为9,minute1最大为5 minute1+; minute0=0; if(minute15) minute1=0; time_jia=0; /按键清零 表示已经执行完 if(time_jian=1) minute0-; if(minute00) minute1-; minute0=9; if(minute10;i-) DQ=0; /总线拉低DQ=date&0x01; /发送最低位字节到DS18B20delay(7); /延迟30微秒左右,等DS18B20采样DQ=1; /将总线拉高date=1; /写入数据右移一位 signed int wendu_read(void) /读温度字节程序 unsigned char i=0,t=0,pn=0; /t为暂存变量 for(i=8;i0;i-) DQ=0; /总线为低电平准备读操作,然后在1微秒内释放总线,以便让DS18B20将数据反馈 t=1; /将变量右移一位,刚好可以抵消读所需的延迟时间DQ=1; /总线拉为高电平后,执行下面代码if(DQ=1) /如果总线反馈为高电平t|=0x80; /则将变量最高位置1 /如果反馈为0,则变量最高位为0 delay(4); /延迟一顿时间,然后开始下次循环 return(t); /反馈读取的字节/*-DS1302-*/void time_write(unsigned char time_wd) /写温度函数unsigned char i,j; /设置循环变量for(i=0;i1; /待发送的数据右移1位SCLK=1; /拉高时钟信号SCLK=0; /写完一个字节,拉低时钟信号unsigned char time_read() /读时间函数unsigned char time_rd; /设置返回变量unsigned char i; /设置循环变量IO=1; /设置数据口方向为输入for(i=0;i1; /接收寄存器右移1位if(IO=1) /判断信号是1还是0 time_rd=time_rd|0x80; /把

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论