(1)基本要求:能够实现用红外线或无线电控制家居电器的工作状态,家电可以用发光二极管仿真替代,具备家庭防盗报警功能。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
(2)发挥部分:人机界面友好,能够通过网络控制家电。
题目要求设计一个家居电器控制系统,能够实现用红外线或无线电控制家居电器的工作状态。设计中为了提高产品的稳定性,控制部分我们采用STC单片机完成,通过遥控器发射红外线控制继电器,从而间接去控制各个电器的状态。防盗报警部分,我们采用热释电传感器,预置报警电路工作时在检测到人体的红外信号后执行相应的报警动作。
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2.2.1 控制部分设计方案论证与选择
方案一、使用高端的ARM芯片和FPGA芯片作为主控芯片,可以轻松实现高速实时同步的功能,但是由于目前智能家居的实场竞争力相当大,若为了设计的简单而失掉了产品最重要的价格优势,那么我们的产品将永远对在实验室里。
方案二、采用性价比很高的STC单片机控制,既可实现稳定的系统设计,又可以使生产成本控制在很低的范围,所以,采用方案二。
方案一、采用两个四位七段数码管显示,控制简单易行,所占体积较小,但需要额外的驱动或扩展芯片,整体结构不够直观大方。
方案二、使用128X64LCD显示,感觉美观大方,显示清晰明了,所需的元件也较少。
综上所述,LCD电路简单,性价比高,又能很好完成驱动作用,选择方案二。
在方案二的基础上,我们还做了一个人机界面,能够更加直观方便的利用网络进行控制。
本系统由PC主机和单片机客户端两大部分组成,两部分通过RS232协议通讯,实现实时同步数据的功能。
单片机客户端有以下部分主成:串口通信、PS2键盘控制、红外遥控控制、光电传感、热释电、温度传感、12864液晶模块显示、蜂鸣器报警、8路开关控制;
PC主机端自身拥有人机交流模块,用户也可在PC端通过键盘和鼠标实现8路开关的控制;同时PC主机端负责接收并处理来自单片机客户端的控制数据和防区数据,通过一定的算法实现单片机客户端与PC主机端的数据同步;PC主机端还负责同步系统时钟和显示温度数据的功能;PC端在处理防区数据时有辨别防区和记录最新防区报警时间的功能;其中实现实时同步的关键是数据交流和中断处理,以下在我们的系统总方框图中将给出我们的处理算法。
单片机客户端系统总方框图如图2.2.3-1所示。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />
图2.2.3-1 单片机客户端系统总方框图
PC机主机端系统总方框图如图2.2.3-2所示。
如图3.1所示
图3.1 控制部分连接图
3.2 PS2部分电路
如图3.2所示:
图3.2 PS2接口硬件连接图 |
3.3 液晶显示部分电路图
图3.3 12864串行通信电路图 |
3.4 温度传感器部分
温度传感器我们使用的是DS1820 单线数字温度计,DS1820数字温度计以9位数字量的形式反映器件的温度值。
DS1820通过一个单线接口发送或接收信息,因此在中央微处理器和DS1820之间仅需一条连接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。
因为每个DS1820都有一个独特的片序列号,所以多只DS1820可以同时连在一根单线总线上,
这样就可以把温度传感器放在许多不同的地方。这一特性在HVAC环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。
DS1820依靠一个单线端口通讯。在单线端口条件下,必须先建立 ROM操作协议,才能进行存储器和控制操作。因此,控制器必须首先提供下面5个ROM操作命令之一:1)读ROM,2)匹配ROM,3)搜索ROM,4)跳过ROM,5)报警搜索。这些命令对每个器件的激光ROM部分进行操作,在单线总线上挂有多个器件时,可以区分出单个器件,同时可以向总线控制器指明有多少器件或是什么型号的器件。成功执行完一条ROM操作序列后,即可进行存储器和控制操作,控制器可以提供6条存储器和控制操作指令中的任一条。
一条控制操作命令指示DS1820完成一次温度测量。测量结果放在DS1820的暂存器里,用一条读暂存器内容的存储器操作命令可以把暂存器中数据读出。温度报警触发器TH和TL各由一个EEPROM字节构成。如果没有对DS1820使用报警搜索命令,这些寄存器可以做为一般用途的用户存储器使用。可以用一条存储器操作命令对TH和TL进行写入,对这些寄存器的读出需要通过暂存器。所有数据都是以最低有效位在前的方式进行读写。
图2.7温度传感器控制电路
本设计用到的电源主要为+5V
稳压电源由电源变压器、整流电路、滤波电路和稳压电路组成,如图2.8
图2.8 电源方框及波形图
a 整流和滤波电路:整流作用是将交流电压U2变换成脉动电压U3。滤波电路一般由电容组成,其作用是脉动电压U3中的大部分纹波加以滤除,以得到较平滑的直流电压U4。
b 稳压电路:由于得到的输出电压U4受负载、输入电 压 和 温度的影响不稳定,为了得到更为稳定电压添加了稳压电路,从而得到稳定的电压U0。
图2.9中电路提供+5V的电源;主要用于STC单片机、LCD显示、键盘;
图2.9电源部分
3.6 扬声器控制电路
在该智能打铃系统中,我们用的是交流蜂鸣器,由于一般I/O口的驱动能力有限,在此我们采用了三极管9013来驱动蜂鸣器,其硬件原理图如图3.0所示。Beep与P3.7口相连,当Beep输出高电平是蜂鸣器不响,而Beep输出低电平时蜂鸣器发出响声。我们只要控制Beep输出高低电平的时间和变化频率,就可以让蜂鸣器发出悦耳的音乐了。
图3.0扬声器原理图
3.7 红外遥控键盘控制部分
矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。
先从P1口的高四位输出低电平,低四位输出高电平,从P1口的低四位读取键盘状态。再从P1口的低四位输出低电平,高四位输出高电平,从P1口的高四位读取键盘状态。将两次读取结果组合起来就可以得到当前按键的特征编码。使用上述方法我们得到16个键的特征编码。
举例说明如何得到按键的特征编码:
假设“1”键被按下,找其按键的特征编码。
从P1口的高四位输出低电平,即P1.4-P1.7为输出口。低四位输出高电平,即P1.0-P1.3为输入口。读P1口的低四位状态为“ 1101”,其值为“0DH”。
再从P1口的高四位输出高电平,即P1.4-P1.7为输入口。低四位输出低电平,即P10-P13为输出口,读P1口的高四位状态为“1110”,其值为“E0H”。
将两次读出的P0口状态值进行逻辑或运算就得到其按键的特征编码为“EDH”。
用同样的方法可以得到其它15个按键的特征编码。
矩阵键盘电路如图3.1所示:
图3.1键盘控制原理图
红外遥控器整体电路图如图3.2所示
图3.2 红外遥控器整体电路图 |
3.8 串口部分电路
串口调试原理图如图3.3所示:
图3.3 串口调试原理图
3.9 家居控制电路
家居控制电路如图3.4所示:
图3.4 家居电器控制电路图 |
单片机主控部分:
单片机部分采用C语言编写,共有9个模块;
PC机部分:
PC机部分采用VB编写,共有4个窗体;
数据在单片机端经过系统分析,简图如图4.1所示,从中找出了不希望的中断处理:
图3.5 多中断稳定性分析图 |
外 |
串
|
外 |
串 |
主 |
主 |
串 |
外
|
主 |
串
|
外 |
主 |
:表示该处产生的外部中断数据不能译出。 主 :表示该处为主程序。 串 :表示串口中断接收到数据的处理程序。 外 :表示外部中断接收到数据的处理程序。 |
因此,最终采用了以下的算法实现了双机实时同步通信!
PS2模块:
第2套键扫码单键举例:
组合键举例:
通码和断码是以什么样的序列发送到计算机使得字符出现在你的字处理软件G里呢?
因为这是一个大写字母,需要发生这样的事件次序 :按下键 -- 按下G 键 -- 释放G键 -- 释放 Shift键,因此,发送到你的计算机的数据应该是12h 34h F0h 34h F0h 12h 。
因此,我们的PS2键盘数据读取的算法如下表3.6所示:
图3.6 PS2算法流程图
Tongersa 2010-2-6 14:44
用户1452009 2009-6-21 14:20
用户147436 2009-6-1 16:28
用户986291 2009-5-20 11:14