无线表决器的设计实现 七人表决器的设计
该系统主要通过上位机将表决的人数和开始表决的状态传递给主控器,主控器与表决器之间通过无线模块传递表决信息,最后将处理的信息传输给PC机显示出来。
关键词:无线表决系统 表决器 主控器 射频收发模块
硬件要求:我们设计的投票、表决系统以 MCS-51 系列单片机中的具有ISP 功能的AT89C52 单片机为微控制器,采用挪威Nordic 公司的NRF905 芯片组成的无线收发模块,给出了一种简单便捷的无线通信设计系统。
采用常用的AT89C52单片机作为核心控制器,AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
2.2 无线射频收发器件的选择 在选择无线射频收发器件的时候,主要考虑:无线芯片的功耗,器件的收发距离,收发的灵敏度,信号的衰减和电磁干扰等。
采用NRF905无线收发器件,NRF905由频率合成器、 接收解调器、
功率放大器、 晶体振荡器和调制器组成,不需外加声表滤波器, 天线可采用 PBC环形天线或单端鞭状天线 ,发射功率最大为 10 dB,接收灵敏度为 460 dB,在开阔地带传输距离最远可达 600 m以上。nRF905采用 SP I (串行外设接口 )与微控制器连接 ,可自动处理字头和 CRC (循环冗余码校验 ) ,使用极为方便 ,只需将要发送的数据和接收机地址送给 NRF905, NRF905自动完成数据打包 (加字头和CRC校验码 )、 发送 ,在接收中有载波检测和地址应配引脚 ,接收到正确的数据包时 ,自动移去字头、 地址和 CRC校验码 ,然后通知微处理器取数据。
基于NRF905的传送距离、接受灵敏度、发射功率等因素的考虑,决定采用NRF905芯片来完成无线数据传输。
2.3 表决信息处理的方案选择 主控器接收到表决器的表决信息后,需要将表决信息处理后在PC机上显示出来,在信息处理过程的问题我们给出了两种方案。
方案一:采用主控芯片作为信息处理的核心。通过主控器的主控芯片来处理无线接受过来的表决信息,将每个选手的表决信息汇总处理,再通过串口通信RS-232来传送给PC机显示每个选手的表决信息。
方案二:采用PC机来作为信息处理的核心。这样就将主控器作为一个数据接受的过程,并将接受的表决信息直接传送给PC机,让PC机来直接处理表决的信息,并将处理后表决信息的汇总在PC机上显示出来。
基于对单片机的理解和认识,决定采用方案一的方法,通过主控芯片来处理表决信息。
3 系统总体框图
本系统是由多台便携式表决器、一台主控制器和一台PC机组成。系统组成框图由图1所示。
图1 系统方框图
PC机通过RS-232与主控制器相连,向主控制器发出各种指令,主控制器接收指令后,再根据各种指令通过无线数据传输电路向表决器发出相应命令,当表决器执行相应指令之后,通过无线数据传输电路向主控制器发送表决信息,然后再由主控制器将接收到的表决信息上传给PC机,由PC机显示表决结果,至此完成无线表决的结果。
该系统总体设计由两部分构成,一部分为无线发射系统(如图2所示)通过按键表决功能对0至200个选手进行“赞同”,“反对”,或“弃权”操作,确认表决的信息后将每个选手的信息存储在24C02当中,并在显示模块12864中显示表决信息,单片机AT89C52将信息通过NRF905发射出去;另一部分为无线接收系统(如图3所示),接收A机发送的数据,如果单片机B机在一定时间内收不到数据信息或收到的信息出错的话,那么单片机A机会重新发送数据,重新等待B机的接收,直到接收数据正确为止,然后将数据送至单片机B 机,通过12864显示模块将0至200个选手的投票信息显示出来,并通过串行通信RS-232将表决信息传送给电脑,有VB软件编程将表决信息以表格形式在电脑上显示出来。
图3 无线接收系统
4 硬件电路中各单元器件的选取及电路设计
4.1 电源电路
如图4所示,U2采用AMS1117芯片,将5伏左右的电压转换成3.3伏左右,来为NRF905芯片供电已满足无线收发芯片的正常工作。
图4 电源转换电路
4.2 掉电存储模块
24C02,串行E2PROM是基于I2C-BUS 的存储器件,遵循二线制协议,由于其具有接口方便,体积小,数据掉电不丢失等特点,在仪器仪表及工业自动化控制中得到大量的应用。它与单片机的接口非常简单,如下图5所示。 E0,E1,E2为器件地址线,WP为写保护引脚,SCL,SDA为二线串行接口,符合I2C总线协议。
在一般单片机系统中,24C02 数据受到干扰的情况是很少的,但是随着单片机抗干扰性能的变差,以及恶劣工业环境中单片机系统的应用,一些智能单片机控制系统相继出现24C02数据被冲掉的问题,而且随着单片机的牌号以及24C02的牌号不同而出现不同程度的干扰现象。以前通过简单的器件之间替换比较,发现不同牌号的24C02其抗干扰性能是不一样的,于是就认定24C02器件存在"质量"好坏的问题。后来在一次偶然的机会里,发现有些24C02的WP引脚并不起到保护作用,也就是说将 WP引脚与CPU输出引脚断开并保持高电平的情况下,CPU仍然能够对24C02中的数据进行修改写入!
图5 掉电存储电路
4.3 主控芯片89C52及其基本外围电路 4.3.1 AT89C52的主要性能 ??与MCS-51单片机产品兼容
??8K字节在系统可编程Flash存储器
??1000次擦写周期
? 4.0-5.5V的工作电压
??全静态操作:0Hz~33MHz
??三级加密程序存储器
??32个可编程I/O口线
??2个16位定时器/计数器
??6个中断源
??全双工UART串行通道
??低功耗空闲和掉电模式
??掉电后中断可唤醒
??看门狗定时器及双数据指针
??双数据指针
??掉电标识符和快速编程特性
4.3.2 AT89C52功能概述
AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89C52的管脚如图6所示;
图6 AT89C52的引脚图
AT89C52具有以下标准功能: 4k字节Flash,128字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,2个16 位定时器/计数器,一个5向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C52 可降至0Hz 静态逻辑操作,支持2种软件可选的节电工作模式。空闲模式下,CPU停止工作,但允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
4.3.2 AT89C52外围基本电路
图7 时钟电路
图8 复位电路
AT89S52外围基本电路由复位电路和晶振电路组成。如上图7、8所示,复位电路虽然简单,但其作用非常重要。一个单片机系统能否正常运行,首先要检查是否能复位成功。在此设计当中,复位电路采用上电自动复位和手动复位相结合,由电阻R14、R15、电容C3、按键S10组成。在通电瞬间,电容C3通过电阻R15充电,RST端出现正脉冲,用以复位。只要电源的上升时间按不超过1ms,就可以实现自动上电复位,即接通电源就完成了系统的复位的初始化。所谓的手动复位,是指通过接通按键开关S10,使单片机计入复位系统。若系统上电运行后出现程序运行混乱,一般是通过手动复位实现。
4.4 NRF905无线收发模块电路 4.4.1 NRF905 模块简介
NRF905 芯片是挪威Nordic 公司推出的单片射频收发器。芯片工作电压DC1.9~3.6V,nRF905可以自动完成处理字头和CRC(循环冗余码校验)的工作,可由片内硬件自动完成曼切斯特编码/解码,使用SPI接口与微控制器通信,配置非常方便,其功耗非常低,以-10dBm的输出功率发射时电流只有11mA,在接收模式时电流为12.5mA。 nRF905单片无线收发器工作由一个完全集成的频率调制器,一个带解调器的接收器,一个功率放大器,一个晶体震荡器和一个调节器组成。ShockBurst工作模式的特点是自动产生前导码和CRC,可以很容易通过SPI接口进行编程配置。NRF905 模块的高频头用户接口电路管脚图如图 9 所示,接口电路管脚功能说明如表 1 所示。
图9 NRF905接口电路管脚
表1 NRF905模块管脚功能说明
管脚
名称
管脚功能
说明
1
VCC
电源
电源+3.3~3.6V DC
2
TX-EN
数字输入
工作模式选择
3
TRX-CE
数字输入
使能芯片发射或接收
4
PWR-UP
数字输入
芯片上电
5
uCLK
时钟输出
(未使用)
6
CD
数字输出
载波检测
7
AM
数字输出
地址匹配
8
DR
数字输出
接收或发射数据完成
9
MISO
SPI接口
SPI输出
10
MOSI
SPI接口
SPI输入
11
SCK
SPI时钟
SPI时钟
12
CSN
SPI使能
SPI使能
13、14
GND
地
接地
4.4.2 NRF905模块的工作方式
NRF905一共有四种工作模式如下表2所示, 其中有两种活动RX/TX 模式和两种节电模式。工作模式由TRX_CE、TX_EN、PWR_UP 的设置来设定。
表2 NRF905的工作模式
PWR-UP
TRX-CE
TX-EN
选择模式
0
X
X
掉电与SPI编程模式
1
0
X
待机与SPI编程模式
1
1
0
ShockBurst接收模式
1
1
1
ShockBurst发射模式
(1)ShockBurst TX 发射模式
如图10所示,典型的NRF905发送流程分以下几步。
图10 NRF905模块数据发送流程
① 当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据送传给NRF905,SPI接口的速率在通信协议和器件配置时确定;
② 微控制器置高TRX_CE和TX_EN,激发NRF905的ShockBurstTM发送模式;
③ NRF905的ShockBurstTM发送:? 射频寄存器自动开启;? 数据打包(加字头和CRC校验码);? 发送数据包;④当数据发送完成,数据准备好引脚被置高;
④ AUTO_RETRAN被置高,NRF905不断重发,直到TRX_CE被置低;
⑤ 当TRX_CE被置低,NRF905发送过程完成,自动进入空闲模式。注意:ShockBurstTM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。只有在前一个数据包被发送完毕,NRF905才能接受下一个发送数据包。
(2)ShockBurst RX 接收模式
如图11所示,NRF905接收流程分以下几步。
图11 NRF905模块数据接收流程
① 当TRX_CE为高、TX_EN为低时,NRF905进入ShockBurstTM接收模式;
② 650us后,NRF905不断监测,等待接收数据;
③ 当NRF905检测到同一频段的载波时,载波检测引脚被置高;
④ 当接收到一个相匹配的地址,AM引脚被置高;
⑤ 当一个正确的数据包接收完毕, NRF905自动移去字头、地址和CRC校验位,然后把DR引脚置高;
⑥ 微控制器把TRX_CE置低,NRF905进入空闲模式;
⑦ 微控制器通过SPI口,以一定的速率把数据移到微控制器内;
⑧ 当所有的数据接收完毕,NRF905把DR引脚和AM引脚置低;
⑨ NRF905此时可以进入ShockBurstTM接收模式、ShockBurstTM发送模式或关机模式。
当正在接收一个数据包时,TRX_CE或TX_EN引脚的状态发生改变,NRF905立即把其工作模式改变,数据包则丢失。当微处理器接到AM引脚的信号之后,其就知道NRF905正在接收数据包,其可以决定是让NRF905继续接收该数据包还是进入另一个工作模式。
(3) 节电模式
NRF905的节能模式包括关机模式和节能模式。在关机模式,NRF905的工作电流最小,一般为2.5uA。进入关机模式后,NRF905保持配置字中的内容,但不会接收或发送任何数据。空闲模式有利于减小工作电流,其从空闲模式到发送模式或接收模式的启动时间也比较短。在空闲模式下,NRF905内部的部分晶体振荡器处于工作状态。
4.4.3 配置NRF905模块
所有配置字都是通过SPI接口送给NRF905。SIP接口的工作方式可通过SPI指令进行设置。SPI接口由状态寄存器、射频配置寄存器、发送地址寄存器、发送数据寄存器和接收数据寄存器5个寄存器组成。状态寄存器包含数据准备好引脚状态信息和地址匹配引脚状态信息;射频配置寄存器包含收发器配置信息,如频率和输出功能等;发送地址寄存器包含接收机的地址和数据的字节数;发送数据寄存器包含待发送的数据包的信息,如字节数等;接收数据寄存器包含要接收的数据的字节数等信息。
4.4.4 SPI指令设置
当CSN 为低时, SPI接口开始等待一条指令。任何一条新指令均由CSN 的由高到低的转换开始。用于SPI 接口的有用命令见下表3所示:
表3 SPI指令设置
指令名称
指令格式
SPI串行接口指令操作
WC
0000XXXX
写配置寄存器XXXX指出写操作的开始字节地址
RC
0001XXXX
读配置寄存器XXXX指出读操作的开始字节地址
WTP
00100000
写TX有效数据1-32字节写操作全部从字节0开始
RTP
00100001
读TX有效数据1-32字节读操作全部从字节0开始
WTA
00100010
写TX地址1-4字节写操作全部从字节0开始
RTA
00100011
读TX地址1-4字节读操作全部从字节0开始
RRP
00100100
读RX有效数据1-32字节读操作全部从字节0开始
4.4.5 SPI时序
下面SPI读时序如图12所示,SPI写时序如图13所示。
图12 SPI读时序
图13 SPI写时序
4.5 显示模块12864电路
4.5.1 显示模块12864的概述
显示模块12864C-1是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128 ×64,内置8192个16*16点汉字,和128个16*8点ASCII 字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16 点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略于低相同点阵的图形液晶模块。
表4 12864功能管脚分部
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
11
DB4
Data I/0
2
VDD
电源正极(+5V)
12
DB5
Data I/0
3
NC
(悬空)
13
DB6
Data I/0
4
RS(CS)
数据/命令选择端
14
DB7
Data I/0
5
RW
读写控制信号
15
PSB
H:并行数据模式L:串行数据模式
6
E
使能信号
16
NC
空脚
7
DB0
Data I/0
17
/RST
复位端
8
DB1
Data I/0
18
NC
空脚
9
DB2
Data I/0
19
BLA
背光源正极
10
DB3
Data I/0
20
BLK
背光源负极
4.5.2 显示模块12864的指令描述
(1)显示开/关设置
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L
L
L
L
H
H
H
H
H
H/L
功能:设置屏幕显示开/关。
DB0=H,开显示;DB0=L,关显示。不影响显示RAM(DD RAM)中的内容。
(2)设置显示起始行
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L
L
H
H
行地址(0~63)
功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。
(3)设置页地址
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L
L
H
L
H
H
H
页地址(0~7)
功能:执行本指令后,下面的读写操作将在指定页内,直到重新设置。页地址就是DD RAM 的行地址,页地址存储在X地址计数器中,A2-A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。
DD RAM地址映像表
Y 地址
0
1
2
………………………
61
62
63
DB0
∫ PAGE0
DB7
X=0
DB0
∫ PAGE1
DB7
X=1
∷
∷
∷
∷
DB0
∫ PAGE6
DB7
X=7
DB0
∫ PAGE7
DB7
X=8
(4)设置列地址
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L
L
L
H
列地址(0~63)
功能: DD RAM 的列地址存储在Y地址计数器中,读写数据对列地址有影响,在对DD RAM进行读写操作后,Y地址自动加一。
(5)状态检测
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
H
L
BF
L
ON/OFF
RST
L
L
L
L
功能:读忙信号标志位(BF)、复位标志位(RST)以及显示状态位(ON/OFF)。
BF=H:内部正在执行操作; BF=L:空闲状态。
RST=H:正处于复位初始化状态; RST=L:正常状态。
ON/OFF=H:表示显示关闭; ON/OFF=L:表示显示开。
(6)写显示数据
CODE: R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
L
H
D7
D6
D5
D4
D3
D2
D1
D0
功能:写数据到DD RAM,DD RAM是存储图形显示数据的,写指令执行后Y地址计数器自动加1。D7-D0位数据为1表示显示,数据为0表示不显示。写数据到DD RAM前,要先执行“设置页地址”及“设置列地址”命令。
(7)读显示数据
CODE: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
H
H
D7
D6
D5
D4
D3
D2
D1
D0
功能:从DD RAM读数据,读指令执行后Y地址计数器自动加1。从DD RAM读数据前要先执行“设置页地址” 及“设置列地址”命令。
4.5.3 显示模块12864的读写时序
(1)12864的读时序如下图14所示。
图14 12864的读时序
(2)12864的写时序如下图15所示。
图15 12864的写时序
4.6 MAX232电平转换电路
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。该器件包含2个驱动器、2个接收器和一个电压发生器电路提供TIA/EIA-232-F电平。
MAX232芯片内部有一个电源电压变换器,可以把输入的+5V电源电压变换成RS-232C输出电平所需的+10V电压。所以,采用此芯片接口的串行通信系统只需要单一的+5V电源就可以了。
主要特点:
1 符合所有的RS-232技术标准
2 只需要单一 +5V电源供电
3 片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V-
4 功耗低,典型供电电流5mA
5 内部集成2个RS-232C驱动器
6 内部集成两个RS-232C接收器
7 高集成度,片外最低只需4个电容即可工作。
MAX232芯片的引脚结构如图16所示,其典型工作电路如图17所示。在实际的应用当中,器件对电源噪声很敏感。因此,Vcc必须要对地加去耦电容来提高抗干扰能力,在连接时必须尽量靠近器件。在串行通信的接口电路中,应注意其发送、接收的引脚要对应。T2in接单片机的发送端TXD,那么pc机的RS-232的接口端RXD一定要接T2out。同时,R2out接单片机的接收端RXD引脚,pc机的RS-232的发送端TXD一定要接R2in引脚。
图16 MAX232管脚图
图17 MAX232电平转换电路
4.7 蜂鸣器提示电路
该电路是有电阻、三极管、蜂鸣器和电源组成的电路,如图18所示,该电路用于无线表决过程中信息传输的提示。
图18 蜂鸣器提示电路
5 软件设计
一个完整系统的实现,除了硬件电路之外,软件系统设计是十分重要的。通过软件编程使微处理器控制硬件模块的各部分功能,如NRF905、24C02、12864等芯片,从而达到我们设计的要求。
5.1 表决系统总流程图
该系统的总体流程图如图19所示。
图19 系统总体程图
5.2 PC机串口通信
串口通讯作为一种灵活的通讯方式,被广泛地应用于PC间的通讯以及PC和单片机之间的通讯之中。提到串口通讯的编程,人们往往立刻想到C、汇编等对系统底层操作支持较好的编程语言以及大串繁琐的代码。实际上,只要我们借助相关ActiveX控件的帮助,即使是在底层操作一向不被人看好的VB中,一样能够实现串口通讯,甚至其实现方法和C、汇编相比,要更加快捷方便。在Visual Basic中有一个名为Microsoft Communication Control(简称MSComm)的通讯控件。我们只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。如图20所示的VB设计的PC机界面。
图20 PC机程序主界面
6 总结
本设计以单片机AT89C52为控制核心的无线表决系统,达到了预期的设计要求,并很好的实现了各项功能。鉴于一般的无线射频模块在发射接收的灵敏度、抗干扰性、收发的准确性的差异,我们在设计上采用了NRF905作为无线收发模块,很好的实现了我们的设计要求。在主控制器对各个表决器的接收问题上,我们为避免所有表决器同时给主控制器发送表决信息,我们决定采用主控制器对各个表决器分时接收来避免信息出错或接收不到信息,这样顺序接收每个表决器发送给主控制器的信息,在通过串口通信RS-232将信息传送给电脑,通过VB软件将表决的信息通过电脑显示出来。
附录1 : 表决器电路
附录2: 主控器电路
附录3: 表决器PCB
附录4: 主控器PCB
更多阅读
无线路由器的正确使用方法 眼霜的正确使用方法
无线路由器的正确使用方法——简介现代是互联网高速发展的时代,随着互联网的普及,很多人的家里都装上了台式电脑,然而,电脑需要联网才能正常使用,这其中就提到了电脑要用路由器来共享上网,这对新手来说,是一个难题,但这对小编来说,是非常简单
excel怎么实现多人共同编辑一个文档 在线共同编辑文档
excel怎么实现多人共同编辑一个文档——简介在工作中我们时常遇到需要多人同时编辑同一个excel文档,同时对一个excel表格进行,通过简单的excel共享工作薄即可实现,下面介绍具体实现步骤。excel怎么实现多人共同编辑一个文档——工具/
怎么安装设置无线路由器 安装无线路由器的步骤
怎么安装设置无线路由器——简介当今是一个离不开网络的时代,电脑、手机、IAPD都要上网。无论家里还是单位装一条宽带都要多人使用,所以就要用到无线路由器了。下面就和大家分享一下无线路由器的安装和使用方法,方便大家自己操作。。
详谈无线网络的SSID和MAC地址安全设定 无线ssid广播
作者:it168http://www.ccw.com.cn 2005-09-06 15:02:23 我要评论(0)在很多人眼里,安全问题是无线网络的重中之中。的确,如果无线AP不做任何安全设定,则任何一个符合Wi-Fi的网卡都可以登陆到网络上,对无线网络构成威胁。本文主要基于无线
FPGA加法器设计总结 半加法器的设计
FPGA加法器设计杨剑 2011.11.29加法作为一种基本运算,大量运用在数字信号处理和数字通信的各种算法中。由于加法器使用频繁,因此其速度往往影响着整个系统的运行速度。如果可以实现快速加法器的设计,则可以提高整个系统的处理速度。