1、-_山东科技大学第三届学生电子设计大赛技术报告基于 Arduino 单片机的智能家居系统学院: 电子通信与物理学院班级: 硕研 2015 级 参赛者:张荣飞 曹其栋 侯焕存-_摘要本文中我们基于 Arduino 单片机设计了一个模拟智能家居系统。该系统以Arduino UNO R3 单片机为核心,外接光照检测、温湿度传感器、LED、风扇和无线通信等模块。整个系统分为检测端和控制端两大部分,检测端由光敏电阻、温湿度传感器、无线通信模块和单片机组成。控制端由无线接收、液晶显示、电灯控制和风扇控制四大模块组成,包含单片机、无线通信模块、LCD 显示屏、风扇和 LED 等。检测端和控制端之间借助无线通
2、信模块进行无线通信,控制端内部的无线接收和液晶显示两个模块之间则采用串口通信。该系统能够实现对室内温度、湿度和光照强度等参数的实时检测,并借助 LCD 显示温湿度值,还可以根据检测端探测到的光照强度和温度值以及预先设定的参数对室内的电灯和风扇进行智能控制。关键词:智能家居;Arduino 单片机;自动控制;无线通信;液晶显示-_目录1 绪论 .11.1 智能家居简介 .11.2 智能家居的研究意义 .22 系统总体设计方案 .32.1 系统框图 .32.2 系统工作原理简介 .33 系统硬件设计 43.1 单片机的选择 .43.1.1 Arduino UNO 简介 .43.1.2 Arduin
3、o 单片机特色 .53.1.3 Arduino 单片机引脚简介 .53.1.4 Arduino 单片机编程软件 .63.2 温湿度检测模块设计 .63.2.1 DHT11 概述 63.2.2 DHT11 引脚说明 73.2.3 电源引脚 83.2.4 串行接口(单线双向) 83.3 光照检测模块设计 .83.4 无线通信模块设计 .93.5 液晶显示模块设计 .93.5.1 液晶显示模块的选择 .93.5.2 液晶显示电路设计 103.6 其他模块设计 .113.6.1 电灯模块设计 .113.6.2 风扇模块设计 .123.7 系统硬件实物图 .124 软件系统设计 .134.1 检测端程序
4、设计 .134.2 控制端程序设计 135 总结 .15参考文献 15附录:源程序 16-_-_1 绪论1.1 智能家居简介智能家居很早就出现在人们的定义当中,但很长时间以来都没有真正意义上的智能家居成型,到了 1984 年美国联合科技公司(United Technologies Building System)将智能信息融入建筑设备中,在整合的基础上应用到了美国康乃迪克州哈特佛市的城市地标性建筑中时,出现了世界上的首栋智能化建筑,也正是从那时开始,智能化家居正式融入到现代生活中。智能家居控制的发展关键在于设计理念以及经营者的心态,市场目标客户真正需要什么东西,如果只注重签单,不设身处地的为客
5、户着想,不兼顾智能解决未来的发展,提供片面的智能家居解决方案,而不考虑客户的适用性,是不可取的,是急功近利的表现,这不仅降低了智能家居的应用效果,还不利于整个智能家居行业的发展。智能家居控制系统的市场不是一般普通的商品买卖,而是一项系统性工程,它涉及到很多技术,涉及到人们生活的方方面面,智能家居控制系统的终极目标是一种理想,更是一种理念,要想智能家居控制系统有很好的发展,研发机构必须本着长远发展的心态,本着简化、实用、性价比高、适合市场的理念,虔诚研究人们的生活、习惯、精神文化等需要,并把它看最高目标,运用各种技术手段实现它。在国内,智能家居不是单纯意义上的智能产品,也不能被狭义的理解为小区智
6、能化,而是基于小区的多层次家居智能化解决方案。它综合利用主控平台、无线连接及通信、设备管理、整体布局布线等手段,将住户智能化管理、交互共享及消费服务、小区安防监控等常见家居因素协调配合并最终整合为整体,在原有小区智能化的大面上延伸到小区内部室内家居的具体环节,构建出高效、舒适、安全、便捷的个性化住宅空间。近几年,很多研发机构和厂商已经意识到家庭安全的重要性,把智能家居作为一个重要的方向和项目来研究,并纷纷投入大量人力财力,使智能家居真正的走向市场和产业化生产。智能家居是一个具有交互能力的平台,并且通过平台能够把各种不同的系统、协议、信息和内容控制在相对独立的模块单元中进行传输、交换。-_1.2
7、 智能家居的研究意义随着人们生活水平的不断提高,生活节奏的加快,人们不断的对居住环境提出更高的要求,越来越注重家庭生活中每个成员的舒适、安全和便利,因此从市场需求的角度来说,智能家居必然是前景广阔。因此设计一个符合国家国情和规范的集远程控制和本地控制为一体的智能家居控制系统是非常具有现实意义的,且势在必行。作为智能家居的核心系统的智能家居的控制系统,它的设计功能的完善必将推动住宅智能化的发展。而系统功能的集成化、用户使用的傻瓜化以及市场的平民化将是智能家居控制器的发展趋势,系统也将逐步迈向绿色化。最终,我想全人类的梦想是智能家居控制系统将囊括所有的家事杂物,让我们真正的享受舒适温馨的家庭生活。
8、虽然智能家居经过十几年的蓬勃发展,很多功能已趋于完善和成熟,智能化家居系统的应用也越来越广泛,然而生活中的智能家居所展现出的智能化,与业主所理想的智能化还存在较大差距。而这也推动了智能化技术在家居领域的纵深发展,并为各类智能化家居新产品的设计和研发增加了动力,同时新产品的出现,也大大丰富了智能家居系统的厚度。因此,将智能家居作为这次研究的主要内容具有很大的现实指导意义。 本文的目的就是设计一个简捷有效智能家居控制系统,从温度、湿度、光照强度的采集,到 LCD 实时显示,并根据采集的信号不同采取相应的应对机制,智能控制家中的电灯、风扇等电器设备,从而实现基本的智能家居功能。-_2 系统总体设计方
9、案2.1 系统框图智能家居控制系统对整个家庭内部环境进行监测和及时应对的系统,核心部分是单片机,通过与其他各监测模块和执行模块的连接,实现对室内环境的整体改变和各元件的控制。首先,主控元件对接收到的数据(如光线强暗,温度高低)通过 LCD 显示模块进行实时显示,使室内情况一目了然。然后根据各信号采集模块传送给单片机的数据,做出应对执行,实现家居系统的智能控制。系统总体框图如下:图 2.1 系统总体框图2.2 系统工作原理简介本系统工作可以分为四个部分:第一部分是传感器数据采集,将温度传感器、湿度传感器以及光敏电阻分别连接到单片机上,单片机会将传感器采集到的实时数据进行处理;第二部分是数据传输,
10、有两个无线模块,一个连接到单片机上作为发射端,一个连接到单片机上作为接收端,单片机将处理过的数据通过发射端发送出去,单片机通过接收端将数据接收进来,再次进行处理;第三部分是控制功能,单片机将接收到的数据与设定的阈值进行比较,当达到阈值条件时,可以启动风扇或者电灯,另外,温度和光敏设定了几个不同的阈值,当达到某一阈值会有相应的风扇转速或者电灯亮度;第四部分,温湿度显示,单片机将通过无线方式接收到的数据采用串口通信的-_方式传给单片机,单片机是专门用来控制 LCD 1602 液晶显示屏的,得到数据后单片机将数据传到液晶屏进行显示。3 系统硬件设计3.1 单片机的选择首先将所需器件罗列,根据与单片机
11、相连的各器件,确定整个系统所需与单片机连接的管脚数,通过查资料,选定 Arduino 单片机作为该系统的微控制器,因为它带有模拟 I/O 口,在外接各类传感器方面比普通的 51 系列单片机更为方便。Arduino 单片机的模拟 I/O 口可以很方便地将光敏电阻和温湿度传感器等模块采集到的模拟量经A/D 转换后送给单片机进行处理,而对数字信号的识别和处理正是 Arduino 的优势所在。3.1.1 Arduino UNO 简介Arduino UNO 是 Arduino USB 接口系列的最新版本,作为 Arduino 平台的参考标准模板。UNO 的处理器核心是 ATmega328,同时具有 14
12、 路数字输入/ 输出口(其中 6路可作为 PWM 输出) ,6 路模拟输入,一个 16MHz 晶体振荡器,一个 USB 口,一个电源插座,一个 ICSP header 和一个复位按钮。 UNO 已经发布到第三版,与前两版相比有以下新的特点:在 AREF 处增加了两个管脚 SDA 和 SCL,支持 I2C 接口;增加 IOREF 和一个预留管脚,将来扩展板将能兼容 5V 和 3.3V 核心板。 这样改进了复位电路设计 ,USB接口芯片由 ATmega16U2 替代了 ATmega8U2 。图 2.2 为改进后的 Arduino UNO。-_图 2.2 Arduino UNO R33.1.2 Ar
13、duino 单片机特色1、开放源代码的电路图设计,程序开发接口免费下载,也可依需求自己修改。2、使用低价格的微处理控制器(ATMEGA8 或 ATmega128)。可以采用 USB 接口供电,不需外接电源,也可以使用外部 9VDC 输入。3、Arduino 支持 ISP 在线烧,可以将新的“bootloader”固件烧入 ATmega8 或ATmega128 芯片。有了 bootloader 之后,可以通过串口或者 USB to Rs232 线更新固件。4、可依据官方提供的 Eagle 格式 PCB 和 SCH 电路图,简化 Arduino 模组,完成独立运作的微处理控制。可简单地与传感器,各
14、式各样的电子元件连接(如:红外线、超声波、热敏电阻、光敏电阻、伺服马达等)。5、支持多种互动程序,如:Flash、Max/Msp、VVVV、PD、C、Processing 等。6、应用方面,利用 Arduino,突破以往只能使用鼠标、键盘、CCD 等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。3.1.3 Arduino 单片机引脚简介Arduino 单片机的数字 I/O 被分成两个部分,其中每个部分都包含有 6 个可用的I/O 管脚,即管脚 2 到管脚 7 和管脚 8 到管脚 13。在数字电路中开关(switch)是一种基本的输入形式,它的作用是保持电路的连接或者断开。Ardui
15、no 从数字 I/O 管脚上只能读出高电平(5V)或者低电平(0V) ,因此我们首先面临到的一个问题就是如何将开关的开/断状态转变成 Arduino 能够读取的高/低电平。解决的办法是通过上/ 下拉电阻,按照电路的不同通常又可以分为正逻辑(Positive Logic)和负逻辑(Inverted Logic)两种。Arduino 的优势在于对数字信号的识别和处理,但我们所生活的真实世界并不是数字(digital )化的,简单到只要用 0 和 1 就能够表示所有的现象。例如温度这一我们已经司空见惯的概念,它只能在一个范围之内连续变化,而不可能发生像从 0 到 1 这样的瞬时跳变,类似这样的物理量
16、被人们称为是模拟(analog)的。Arduino 是无法理解这些模拟量的,它们必须在经过模数转换后变成数字量后,才能被 Arduino 进一步处理。-_3.1.4 Arduino 单片机编程软件Arduino 语言是建立在 C/C+基础上的,其实也就是基础的 C 语言,Arduino 语言只不过把 AVR 单片机(微控制器)相关的一些寄存器参数设置等都函数化了,不用我们去了解他的底层,让不太了解 AVR 单片机(微控制器)的朋友也能轻松上手。图 2.3 Arduino 编程界面Arduino 语言是以 setup()开头,loop()作为主体的一个程序构架。官方网站是这样描述 setup()
17、的:用来初始化变量,管脚模式,调用库函数等等,此函数只运行一次。loop()函数是一个循环函数,函数内的语句周而复始的循环执行,功能类似 c 语言中的“main();” 。3.2 温湿度检测模块设计智能家居的一个主要控制对象就是住户室内温湿度,适宜的温湿度为主人提供良好的家居环境,这样一来,温湿度检测与控制模块就变得尤为重要。-_考虑到硬件电路的复杂性,本设计中选择 DHT11 数字温湿度传感器来检测室内的温度和湿度,这样可以用一个传感器检测两个指标,使硬件电路得以简化。3.2.1 DHT11 概述DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块
18、采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个 DHT11 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在 OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达 20 米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。
19、图 3.1 DHT11 实物图3.2.2 DHT11 引脚说明引脚号 引脚名称 类型 引脚说明1 VCC 电源 正电源输入,3V-5.5V DC2 Dout 输出 单总线,数据输入/输出引脚3 NC 空 空脚,扩展未用4 GND 地 电源地-_图 3.2 DHT11 典型应用电路3.2.3 电源引脚DHT11 的供电电压为 35.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个 100nF 的电容,用以去耦滤波。3.2.4 串行接口(单线双向)DATA 用于微处理器与 DHT11 之间的通讯和同步,采用单总线数据格式,一次通讯
20、时间 4ms 左右,用户 MCU 发送一次开始信号后,,DHT11 从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11 发送响应信号,送出 40bit 的数据,并触发一次信号采集,用户可选择读取部分数据。从模式下,DHT11 接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11 不会主动进行温湿度采集,采集数据后转换到低速模式。3.3 光照检测模块设计光敏电阻特性是在不同光照强度下,其阻值发生变化(只要是人眼可感受的光,都会引起它的阻值变化) 。利用这一特性,我们把光敏电阻接入电路实现光照强度检测。图 3.3 光照检测电路示意图亮度检测电路工作原理:我们把光
21、敏电阻接入电路后,光敏电阻置于窗口处,由于光线的变化,其阻值也在一定时间内不断变化,从而产生连续的电信号,通过模拟-_I/O 口进入单片机。由于单片机内部自带 A/D 转换电路,通过相应程序,能使模拟 I/O口传来的电信号转换成数字信号,单片机读取这些数字信号,就能得出相应的光照强度,并决定是否启动其他应对措施。3.4 无线通信模块设计考虑到系统的普遍适用性和硬件电路实现的难易程度,本次设计中选取NRF24L01 无线模块作为系统的无线通信模块,该模块既可以用于发送数据,也可以用于接收数据,且易于编程操作。NRF24L01 无线模块主要特点如下:(1) 2.4Ghz 全球开放 ISM 频段免许
22、可证使用;(2) 最高工作速率 2Mbps,高效 GFSK 调制,抗干扰能力强,特别适合工业控制场合;(3) 126 频道,满足多点通信和跳频通信需要;(4) 内置硬件 CRC 检错和点对多点通信地址控制;(5) 低功耗 1.9 - 3.6V 工作,待机模式下状态为 22uA;掉电模式下为 900nA;(6) 内置 2.4Ghz 天线,体积种类多样;(7) 模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便;(8) 内置专门稳压电路,使用各种电源包括 DC/DC 开关电源均有很好的通信效果;(9) 2.54MM 间距接口,DIP 封装;(
23、10)工作于 Enhanced ShockBurst 具有 Automatic packethandling, Auto packet transaction handling,具有可选的内置包应答机制,极大的降低丢包率。3.5 液晶显示模块设计3.5.1 液晶显示模块的选择LCD1602 屏幕为 2 行,每行显示 16 个字符,为字符型显示器,只能显示数字和字符,不可以显示汉字。 LCD12864 屏幕为 64 行,每行显示 128 个字符,为点阵型显示-_器,可根据需求任意显示字符,数字,汉字和图形。综合价格因素和实际应用的需要,选用 LCD1602 为改家居系统的显示器。下面详细介绍一下
24、 LCD1602 的功能实现和各项参数。 LCD1602 主要技术参数: 显示容量:162 个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm LCD1602 相比传统显示器的几个突出优点:(1)显示质量高 由于液晶显示器收到信号后的每一个点都会一直保持原有亮度和颜色,恒定发光。而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器既不会闪烁,又保证了画质高。(2)数字式接口 液晶显示器的输入输出采用数字量,和主控芯片(SCM)的接口连接更加简单可靠,操作也更为简便。(3)重量轻,体积小 液晶显示
25、器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。(4)功耗低 相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动 IC上,因而耗电量比其他显示器要少得多。LCD1602 分为带背光和不带背光两种,基控制器大部分为 HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别。-_3.5.2 液晶显示电路设计图 3.4 液晶显示电路示意图液晶显示电路工作原理:液晶显示器 LCD1602 通过 714 管脚的数据总线与单片机进行数据传送,单片机通过输出高地电平来控制液晶显示器 LCD1602 的 46 管脚配合传送的数据决定读/写数据,并
26、通过 LCD 显示屏显示出来。期间单片机是控制元件,而 LCD1602 为显示和执行元件。3.6 其他模块设计3.6.1 电灯模块设计本次系统设计中用发光二极管 LED 来替代实际场景中的电灯。 LED 发光原理发光二极管是由-族化合物,如 GaAs(砷化镓)、GaP(磷化镓)、GaAsP(磷砷化镓)等半导体制成的,其核心是 PN 结。因此它具有一般 P-N 结的 I-N 特性,即正向导通,反向截止、击穿特性。此外,在一定条件下,它还具有发光特性。在正向电压下,电子由 N 区注入 P 区,空穴由 P 区注入 N 区。进入对方区域的少数载流子(少子)一部分与多数载流子( 多子) 复合而发光。假设
27、发光是在 P 区中发生的 ,那么注入的电子与价带空穴直接复合而发光,或者先被发光中心捕获后,再与空穴复合发光。除了这种发光复合外,还有些电子被非发光中心(这个中心介于导带、介带中间附近)捕获,而后再与空穴复合,每次释放的能量不大,不能形成可见光。发光的复合量相对于非发光复合量的比例越大,光量子效率越高。由于复合是在少子扩散区内发光的,所以光仅在靠近 PN 结面数 m 以内产生。 理论和实践证明,光的峰值波长 与发光区域的半导体材料禁带宽度 Eg 有关,即-_1240/Eg(mm)式中 Eg 的单位为电子伏特(eV)。若能产生可见光(波长在 380nm 紫光780nm 红光 ),半导体材料的 E
28、g 应在 3.261.63eV 之间。比红光波长长的光为红外光。现在已有红外、红、黄、绿及蓝光发光二极管,但其中蓝光二极管成本、价格很高,使用不普遍。 LED 的应用由于发光二极管的颜色、尺寸、形状、发光强度及透明情况等不同,所以使用发光二极管时应根据实际需要进行恰当选择。由于发光二极管具有最大正向电流 IFm、最大反向电压 VRm 的限制,使用时,应保证不超过此值。为安全起见,实际电流 IF应在 0.6IFm 以下;应让可能出现的反向电压 VR0。6VRm。LED 被广泛用于种电子仪器和电子设备中,可作为电源指示灯、电平指示或微光源之用。红外发光管常被用于电视机、录像机等的遥控器中。在连接电
29、路时,首先应正确区分 LED 的正负极,避免正负极戒饭导致无法使用甚至烧坏元件。LED 的两只引脚中,长的一根为正极,短的一根为负极,连接电路时,正极接一个 220 的电阻,电阻另一端接单片机的数字 I/O 口,负极接地。3.6.2 风扇模块设计本设计中,采用普通的直流电机带动扇叶来模拟实际场景中的风扇。直流风扇的两个接线端不分正负,一端接地,另一端接单片机数字 I/O 口即可,根据系统设计的要求,通过程序控制输出到电机的电压不同来改变电机转速,从而实现根据温度变化和预设参数改变风扇转速的目的。3.7 系统硬件实物图根据上述各模块的硬件设计,最后做出的实物图如下:-_图 3.5 模拟智能家居硬
30、件实物图4 软件系统设计4.1 检测端程序设计检测端由单片机、光照检测模块、温湿度检测模块和无线通信模块组成,相应的程序包括光照检测程序、温湿度检测程序和无线通信程序,部分程序如下图所示,完整的程序在附录中。-_图 4.1 检测端部分程序4.2 控制端程序设计控制端由单片机、液晶显示模块、电灯模块、风扇模块和无线通信模块组成,相应的程序包括无线接收程序、串口通信程序、显示程序、风扇和电灯控制程序,部分程序如下图所示,完整的程序在附录中。-_图 4.2 无线接收部分程序图 4.3 液晶显示部分程序5 总结本次设计的模拟智能家居系统满足了所有的系统设计要求,完成了对温湿度的实时监测和现实,得到的最
31、终结果误差也在要求的范围之内,而且完成了根据光照强度变化、温度变化和预设参数对电灯和风扇进行智能控制的任务,取得了令人满意的成果。通过本次设计,使我对基于单片机的智能控制有了更多的了解和掌握,在科技飞速发展的今天,科技意味着第一生产力,机器智能正在越来越多的方面取代人工操作,作为智能控制在工业应用的代表性成果,它结合了程序调控,提供了定时控制、计数控制、步进控制以及数据处理等多种功能,具有人工作业无法比拟的优越性和精确性。随着科技的发展,基于单片机的智能控制功能也会不断扩大,各项性能也将不断提高。-_参考文献1张鑫.单片机原理及应用M.北京:电子工业出版社,20082童诗白,华成英 .模拟电子
32、技术基础M.北京:高等教育出版社,20013王港元.电工电子实践指导M.南昌:江西科学技术出版社,20064李朝青.PC 机及单片机数据通信技术,北京,北京航空航天大学出版社, 20005蓝宇电子研发团队.Arduino 设计M. 6汤凯,刘洋 ,续欣.Arduino 程序设计指南M. 北京:电子工业出版社,20157赵光宙.信号分析与处理M.北京:机械工业出版社,20108张国雄.测控电路(第四版)M.北京:机械工业出版社,2011附录:源程序检测端发送程序:#include #include #include #include #define DHT11_PIN 0 / ADC0 接到模拟
33、口 0byte read_dht11_dat()byte i = 0;byte result = 0;for (i = 0; i 8; /高八位给 data1。/设置向“serv1“发送数据Mirf.setTADDR(byte *)“Rec01“);Mirf.send(data);/while 死循环等待发送完毕,才能进行下一步操作。while (Mirf.isSending() -_控制端无线接收程序:#include #include #include #include int fengshan = 6;int led = 5;/定义一个变量 adata 存储最终结果,oldadata 存
34、储旧结果,防止相同结果刷屏。unsigned int WenDu = 0, ShiDu = 0, Guangmin = 0;void setup()pinMode(fengshan, OUTPUT);pinMode(led, OUTPUT);Serial.begin(9600);Mirf.cePin = 9; /设置 CE 引脚为 D9Mirf.csnPin = 10; /设置 CE 引脚为 D10/-初始化部分,不可随时修改-Mirf.spi = Mirf.init(); /初始化 nRF24L01/-配置部分,可以随时修改-/设置接收标识符“Rev01“Mirf.setRADDR(byte
35、 *)“Rec01“);/设置一次收发的字节数,这里发一个整数,/写 sizeof(unsigned int),实际等于 2 字节Mirf.payload = sizeof(unsigned int);/发送通道,可以填 0128,收发必须一致。Mirf.channel = 5;Mirf.config();void loop()/定义一个暂存数组,大小为 Mirf.payload。byte dataMirf.payload;if (Mirf.dataReady() /等待接收数据准备好Mirf.getData(data); /接收数据到 data 数组WenDu = (unsigned int
36、)(data1 = 33)analogWrite(fengshan, 255);elseanalogWrite(fengshan, 0);if (0 = 1;digitalWrite(Enable, LOW);delayMicroseconds(1);digitalWrite(Enable, HIGH);delayMicroseconds(1);digitalWrite(Enable, LOW);delayMicroseconds(1);void LcdDataWrite(int value) int i = 0;digitalWrite(DI, HIGH);-_digitalWrite(RW
37、, LOW);for (i = DB0; i = 1;digitalWrite(Enable, LOW);delayMicroseconds(1);digitalWrite(Enable, HIGH);delayMicroseconds(1);digitalWrite(Enable, LOW);delayMicroseconds(1);void setup() Serial.begin(9600);int i = 0;for (i = Enable; i = DI; i+) pinMode(i, OUTPUT);pinMode(13, INPUT);pinMode(Trig, OUTPUT);
38、delay(100);LcdCommandWrite(0x38);delay(64);LcdCommandWrite(0x38);delay(50);LcdCommandWrite(0x38);delay(20);LcdCommandWrite(0x06);delay(20);LcdCommandWrite(0x0c);delay(20);LcdCommandWrite(0x01);delay(100);LcdCommandWrite(0x80);delay(20);void loop() int i;char val4;while (Serial.available() val0 = Ser
39、ial.read();val1 = Serial.read();-_val2 = Serial.read();val3 = Serial.read();Serial.print(val0);Serial.println(val1);Serial.print(val2);Serial.println(val3);ShowWD();ShowSD();LcdCommandWrite(0x80 + 6);delay(20);for (i = 0; i = 1; i+) LcdDataWrite(vali);LcdCommandWrite(0xc0 + 6);delay(20);for (i = 2;
40、i = 3; i+) LcdDataWrite(vali);delay(1100);void ShowWD() LcdCommandWrite(0x80);delay(20);LcdDataWrite(W);LcdDataWrite(e);LcdDataWrite(n);LcdDataWrite(D);LcdDataWrite(u);LcdDataWrite(:);LcdDataWrite( );LcdDataWrite( );LcdDataWrite(C);void ShowSD() LcdCommandWrite(0xc0);delay(20);LcdDataWrite(S);LcdDataWrite(h);LcdDataWrite(i);LcdDataWrite(D);LcdDataWrite(u);LcdDataWrite(:);-_LcdDataWrite( );LcdDataWrite( );LcdDataWrite(%);