本帖最后由 uestc_zyd 于 2015-6-26 13:14 编辑
一、功能介绍
楼宇对讲系统应用于智能小区。整个系统由门口主机、楼层译码器和室内分机组成。门口主机接收用户输入数据、呼叫处理和控制电控锁。整个系统采用总线方式布线,门口主机到楼层译码器采用3总线方式,楼层译码器到室内分机采用无极性的2总线方式,保证即使用户线短路也不会影响整个系统。
主机发出编码信息(如房间号码),楼层译码器根据接收到的数据进行译码,若为本层的某个房间则将分机接通,主机检测到线路状态后就可以发送振铃信号,分机应答后可以进行通话,并给出开锁信号,即主机在收到分机的开锁信号后会打开电控锁。
二、方案描述
硬件系统包括3个部分:主机、楼层译码器、分机。软件系统主要包括显示模块、存储器操作模块、键盘输入模块、拨号处理模块、主处理模块。
系统构成如下图:
1、硬件主机设计
主机主要包括键盘输入电路、存储器电路、逻辑控制电路、比较器电路、驱动电路和音频处理电路。键盘输入电路主要用于接收用户输入的数据,如密码设置、振铃时间设置、房间号码设置等。存储器电路主要用于存储系统信息,如房间模式、密码。逻辑控制电路主要产生某些逻辑控制信号,如开锁信号、对话信号、振铃信号。比较器电路用于判断分机的状态,如摘机、挂机等。音频电路主要实现对讲功能。
2、楼层译码器设计
用来接收主机发出的编码数据,并对接收到的编码数据,并对接收到的编码数据进行处理,如果是本楼的分机则接通被呼叫的分机。楼层译码器选用HT12D芯片实现。主机发出的编码数据经过HT12D芯片译码,如果编码数据中的地址部分正好和该译码器的地址相同,那么HT12D芯片就在D8/D9/D10/D11中的某一个管脚输出高电平,通过这个高电平来接通分机。
3、软件部分在下节中介绍
三、软件部分
1、显示模块
显示程序是通过P1.2管脚模拟移位时钟信号,P1.0管脚在输出时钟的控制下一位一位地输出数据,P1.1管脚给出锁存信号将数据显示出来。整个显示程序主要由端口初始化、管脚高低电平产生、数据串行输出3个部分组成。
2、I2C模块(存储器操作模块)
采用串行存储器24LC02B通过I2C实现与MSP430的连接。I2C的时序包括起始条件、数据传输、确认、停止条件。
3、键盘输入模块
矩阵键盘电路利用MSP430的一般I/O口来进行扩展设计,矩阵键盘有行、列线组成,通过扫描来获取键盘的输入,读取线的状态就可以判断哪个键被按下。
一般IO口方式的程序设计:
中断功能方式的程序:
4、发送编码数据处理
发送的编码数据总共有12位,前8位为地址数据,后4位为数据信息,首先要发送起始信息,然后再将编码数据一位一位地发送。
- //发送编码数据
- void Send_data(unsigned int numCode) //要发送的数据是numCode
- {
- int CodeBit;
- int SendBit;
- int nHigh;
- int nLow;
- int n;
- int i;
- nLow = numCode & 0x0f;
- nHigh = numCode >> 4;
- Send_Pre();
- for(i = 0;i < 8;i++)
- {
- SendBit = nHigh & 0x01;
- if(SendBit == 1)
- Send_Bit1();
- else
- Send_Bit0();
- nHigh >>= 1;
- }
- for(i = 0;i < 4;i++)
- {
- SendBit = nLow & 0x01;
- if(SendBit == 1)
- Send_Bit1();
- else
- Send_Bit0();
- nLow >>= 1;
- }
- }
5、拨号处理
拨号处理主要根据线路状态来判断分机状态,并根据分机的不同状态进行相应处理。线路状态的检测是通过比较器输入模块进行处理的。拨号处理的具体程序如下:
|