基于PIC单片机的点型光电感烟探测器设计
离长线传输后,部分信号会发生畸变。故应用编码输入电路对总线编码信号进行滤波,以消除总线干扰,同时可利用比较器电路对输入编码信号做整形。一般情况下,为了降低成本,该比较器可用分离元件搭建,而单片机PIC16F676内部恰好集成了一个功能强大的比较器,该比较器的正向输入是单片机的管脚13(RA0/AN0/CIN+), 反向输入为单片机的管脚12(RA1/AN1/CIN-),输出是管脚11(RA2/AN2/COUT)。与此比较器相关的寄存器有CMCON和VRCON,具体功能参见表2。
表2 与比较器模拟相关的关键性寄存器
寄存器名称 | 寄存器位定义 | 寄存器位功能简介 |
比较器控制寄存器CMCON | BIT7(未用 | |
BIT6(COUT) | 比较器的输出位,该位数值就是比较器的输出结果 | |
BIT5(未用) | ||
BIT4(CINV) | 控制比较器的输出结果是否反向 | |
BIT3(CIS) | 控制输入信号是从RA1(CIN1)还是RA0(CIN+)输入 | |
BIT2(CM2) | ||
BIT1(CM1) | BIT2~BIT0联合控制八种比较器I/O口工作模式的选择 | |
BIT0(CM0) | ||
比较器参考电压控制器VRCON | BIT7(VREN) | 参考电压启动控制位 |
BIT6(未用) | ||
BIT5(VREN) | 参考电压范围选择控制位 | |
BIT4(未用) | ||
BIT3(VR3) | BIT3~BIT0联合控制参考电压的具体设置 | |
BIT2(VR2) | ||
BIT1(VR1) | ||
BIT0(VR0) |
如果对比较器的使用要求是:模拟信号由单片机管脚12(连接比较器的负向)输入;参考电压选自片内参考电压(参考电压设定为3V)(连接比较器的正向);比较器的输出结果不反向(即比较器正向输入大于负向输入则比较器输出高电平,反之输出低电平),则此与比较器相关的寄存器CMCON、VRCON设置程序如下:
MOVLW B'00010011' ;选择比较器模式011
MOVWF CMCON
MOVLW B'10101110' ;选择参考电压1110(其十进制是14)14/24×5=3V
MOVWF VRCON
3.2 回执输出电路
回执输出电路用于把探测到的代表烟雾浓度的数字信号通过总线回送到控制器。单片机信号一般为5V,总线上的信号大于20V。回执输出电路必须进行电平转换,并使信号有足够的总线驱动能力。
4 探测器的地址读写
火灾报警控制器通过总线上的地址编码来识别各个探测器。以往探测器的编码是依靠机械式拨码开关实现的。由于拨码开关寿命短、易损坏而且成本较高,因此现在多采用串行EEPROM来存储探测器地址。同时,探测器工作过程中的其它重要数据也需要存储保留,所以更有必要使用串行EEP-ROM。而单片机PIC16F676本身恰好内置有128字节的串行EEPROM,因此使用PIC16F676有助于简化电路设计、降低成本。与PIC16F676片内串行EEPROM有关的寄存器主要有EEDAT、EEADR、EECON1、EECON2(EECON2不是一个物理可用的寄存器)。其具体功能见表3所列。
表3 与PIC16F676内置EEPROM相关的寄存器
寄存器名称 | 寄存器位定义 | 寄存器位功能简介 |
EEPROM数据寄存器EEDAT | 所有数据位 | 用于暂时存储操作的目标数据 |
EEPROM地址寄存器EEADR | 所有数据位(7位) | 用于暂时存储目标数据的地址 |
EEPROM控制寄存器EECON1 | BIT7~BIT4(未用) | |
BIT3(WRERR) | 写操作完毕还是被复位行为中断 | |
BIT2(WREN) | 允许还是禁止写周期 | |
BIT1(WR) | 启动还是禁止写过程 | |
BIT0(RD) | 启动还是禁止读过程 |
因为片内EEPROM的最大空间是128字节,所以EEADR寄存器仅使用到前7位,最高位不用。其中EECON1用于实现对串行EEPROM的具体操作命令。下面是部分读取地址的操作程序:
?与串行EEPROM有关的寄存器全部在数据存储器的第一分区中
BSF STATUS?RP0
MOVLW .0 ;假如内置EEPROM的.0地址用于存储探头地址
MOVWF EEADR
BSF EECON1?RD ;启动“读”命令
MOVF EEDATA,W
MOVWF NODE ;假如数据寄存器NODE用于暂时存储读出的地址数据
存储地址的操作程序片断举例:
BSF STATUS,RP0 ;Bank 1
MOVLW .0 ;假如内置EEPROM的.0地址用于存储探头地址
MOVWF EEADR ;Address to read
MOVLW .1 ;假如探头地址为“1”
MOVWF EEDATA ;Move data to w
BSF STATUS,RP0 ;//DATA EEPROM WRITE//
BSF EECON1,WREN ?;启动“写”的使能命令
BCF INTCON,G
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)