毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 计算机安全 >> 正文

基于EasyARM615的家居智能环境控制系统 第13页

更新时间:2014-6-28:  来源:毕业论文

基于EasyARM615的家居智能环境控制系统 第13页
三、检测UART端口是否繁忙
对于函数UARTCharPut( ),在发送数据时实际上都是把数据往发送FIFO一丢然后就退出,而并非在UnTx管脚意义上的真正发送完毕。函数UARTBusy( )是判断UART发送操作是否忙,可用来判定在发送FIFO里的数据是否真正发送完毕,这包括最后一个数据的最后停止位。在UART转半双工的RS-485通信里,需要在发送完一批数据后将传输方向切换为接收,如果此时发送FIFO里还有数据未被真正发送出去,则过早的方向切换会破坏发送过程。因此运用函数UARTBusy( )进行判定是必要的。参见表4-13的描述。
表4-12 函数UARTBusy( )
函数功能 从指定的UART端口接收1个字符(等待)
函数原型 long UARTCharGet(unsigned long ulBase)
参    数 ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
返 回 值 读取到的字符,并自动转换为long型(在未收到字符之前会一直等待)
4.6.2程序函数的设计
在Zigbee通讯模块的函数设计中,需要使用到UART接口,那么需要初始化UART:
void uartInit(void)
{
    SysCtlPeriEnable(SYSCTL_PERIPH_UART0);       //  使能UART模块
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOA);       //  使能RX/TX所在的端口

    GPIOPinTypeUART(GPIO_PORTA_BASE,             //  配置RX/TX所在管脚为
                    GPIO_PIN_0 | GPIO_PIN_1);    //  UART收发功能

    UARTConfigSet(UART0_BASE,                    //  配置UART端口
                  9600,                          //  波特率:9600
                  UART_CONFIG_WLEN_8 |           //  数据位:8
                  UART_CONFIG_STOP_ONE |         //  停止位:1
                  UART_CONFIG_PAR_NONE);         //  校验位:无

    UARTFIFOLevelSet(UART0_BASE,                 //  设置收发FIFO深度
                     UART_FIFO_TX4_8,            //  发送FIFO为2/8深度
                     UART_FIFO_RX6_8);           //  接收FIFO为6/8深度

    UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);  
//  使能收发超时中断
    IntEnable(INT_UART0);                        //  使能UART总中断
    IntMasterEnable();                           //  使能处理器中断
    UARTEnable(UART0_BASE);                      //  使能UART端口
}

在接收从PC机超级终端送来的信息时,使用的是FIFO中断方式。
int uartFIFOGets(char *s, int size)
{
    int n;
    while (!RxEndFlag);
    n = BufP;
    BufP = 0;
    RxEndFlag = false;
    strncpy(s, RxBuf, size);
    s[MAX_SIZE] = '\0';
    return(n);
}

因为是用过UART发送字符的,所以需要一个UART发送字符的函数:
void uartPuts(const char *s)
{
    while (*s != '\0')
    {
        UARTCharPut(UART0_BASE, *s++);
    }
}

对于接收到的数据,需要用缓冲区储存起来,在主函数之前定义缓冲区:
#define  MAX_SIZE   40            //  缓冲区最大限制长度
char RxBuf[1 + MAX_SIZE];         //  接收缓冲区
int BufP = 0;                     //  缓冲区位置变量
tBoolean RxEndFlag = false;       //  接收结束标志

4.7 光强检测模块的设计
4.7.1工作原理介绍
在光强检测模块的设计中,采用光敏电阻来检测环境中的亮度。光敏电阻是基于内光电效应。在半导体光敏材料两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻如图所示。为了增加灵敏度,两电极常做成梳状。构成光敏电阻的材料有金属的硫化物、硒化物、碲化物等半导体。当光敏电阻受到光照时,价带中的电子吸收光子能量后跃迁到导带,成为自由电子,同时产生空穴,电子—空穴对的出现使电阻率变小。光照愈强,光生电子—空穴对就越多,阻值就愈低。当光敏电阻两端加上电压后,流过光敏电阻的电流随光照增大而增大。入射光消失,电子-空穴对逐渐复合,电阻也逐渐恢复原值,电流也逐渐减小。

4.8 门磁控制模块的设计
4.8.1工作原理介绍
在门磁控制模块的设计中,由于门磁的输入电压是DC12V,所以需要用到AC220V转DC12V的电源。此门磁的常态下的工作电压为DC12V,瞬间电流为800mA,工作电流为200mA。该门磁适用于木门、玻璃门、金属门、防火门,锁体尺寸长205*宽35*高40(mm),装饰面板长215*宽40*高0.7(mm),开门方式为180度双向开门。门磁的锁芯是不锈钢的,尺寸为16mm(凸出长度 )x16mm(直径)。
门磁控制模块中由门锁和磁铁组成,通过磁铁对门锁的感应,系统可以通过EasyARM615无线遥控发信号控制门锁的开关。要实现远程操控门锁的功能,所以需要使用一个无线遥控信号发射器和一个无线遥控信号接收器。无线遥控信号发射器由于它外部有一个长长的天线,遥控指令都是通过机壳外部的控制开关和按钮,经过内部电路的调制、编码,再通过高频信号放大电路由天线将电磁波发射出去。而无线遥控信号接收器会处理来自遥控发射器的无线电信号,将所接收的信号进行放大、整形、解码,并把接收来的控制信号转换成执行电路可以识别的数字脉冲信号,传输给门磁控制模块。
图4-7 电源输出端子接线示意图
1-3:NO端与GND端,常态无输出,按键触发后输出DC12V(0~30秒),1为正,3为负。
2-3:NC端与GND端,常态输出DC12V,按键出发后断电(0~10秒),2为正,3为负。
4-5:DC12V输出,4为正,5为负。
6-5:开门按钮输入端或者连接门禁控制器的PUSH端。
7-8:输入12V电压开门,专用于直接输出电压控制电锁。
4.8.2电路的设计
图4-8 门磁控制模块的电路图

 << 上一页  [11] [12] [13] [14] [15] [16] 下一页

基于EasyARM615的家居智能环境控制系统 第13页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。