指令8:DDRAM 地址设置。
指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为 低电平表示不忙。 指令10:写数据。 指令11:读数据。
5.3.3 LCD1602 的RAM 地址映射及标准字库表
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,下图是1602的内部显示地址。
图6 为1602LCD 内部显示地址
例如第二行第一个字符的地址是40H,那么是否直接写入40H 就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H 中的点阵字符图形显示出来,我们就能看到字母“A”
16
5.4网络控制电路
这里使用的是已编码完成的红外遥控器如图7和对应的红外线接收管如图8所示
图7 红外遥控器 图3 1838T红外接收管
键盘 编码调制 LED 遥控发射器
光/电放大 解调 遥控接收器
解码
图9 红外遥控系统框图
如图9为红外遥控系统框图。遥控器的每个按键都已经经过编码,当发射器拨键开关拨到ON档时,即有遥控码发出(可以发送任意数字暂定为发送0AAH(二进制:10101010B),这种遥控码具有以下特征:采用脉宽调制的串行码,刚开始发送38K码5ms来判定发射码开始标志,以脉宽为1.5ms、间隔0.5ms、周期为2ms的组合表示二进制的“1”;以脉宽为0.5ms、间隔1.5ms、周期为2ms的组合表示二进制的“0”。
解码的关键是如何识别“0”和“1”,从位的定义我们可以发现接收判定“0”、“1”就是判定每个周期开始时低电平(注意发射与接收码正好反相)出现时间的长短,如果接收到为0的时间为1.5ms则为1,如果接收到0的时间为0.5ms则接收到的值为0。
图10为红外接收管电路,通过红外遥控即可通过单片机解码红外信号得出
17
对应的键码,执行相应的动作。
图10 红外接收电路
5.5继电器电路
本设计采用的是如图11所示的SONGLE SRD-05VDC-SL-C继电器,其参数如图所示。
图11 5V继电器
继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系
18
统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用,实现小电压控制大电压的目的【6】。在本系统中,主要是用于控制插座的开关状态,通过单片机I/O输出信号控制继电器的工作已否从而达到控制插座开关的目的。
6.软件设计
本设计中用到的单片机是MSP430,为了使编写的程序更加简单明了,采用C语言进行编程,用IAR软件进行编译,BSL430软件进行下载。
软件设计部分包括液晶显示程序、计时程序、独立式按键处理程序、红外遥控处理程序等。由于定时设置是通过独立式按键或者红外遥控器按键进行设置的,程序在按键扫描部分和红外信号的解码部分相对重要。在检测到被设置了定时任务时,系统要检测是否到达定时时间,执行相应的动作。
图12为主程序的流程图。
19
开始 系统初始化 N 是否设置定时 Y 按键 任意定时 遥控 Y 模式定时 执行定时程序 N 是否到达定时时间 Y 执行相应开关程序
图12 程序流程图
6.1计时程序的编写
MSP430的3种时钟信号:MCLK系统主时钟;SMCLK系统子时钟;ACLK辅助时钟。
(1)MCLK系统主时钟。除了CPU运算使用此时钟以外,外围模块也可以使用。MCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其
20