具有滚轮翻页功能的PPT无线翻页器设计

2016-04-26 12:25李子祥
科技视界 2016年9期
关键词:编码器

李子祥

【摘 要】为了方便使用,设计了一种PPT翻页器,系统分为发射电路和接收电路两个模块,每个模块都包含一个STC8952单片机和蓝牙模块,发射电路还包括一个鼠标滚轮编码器和D触发器构成鉴相电路,当发射电路的按键按下或滚轮滚动时,经过蓝牙主机发送,接收电路接收到指令后,经USB通信模块送入PC机,PC机接收命令后模拟键盘按键事件和鼠标滚轮滚动事件,来控制PPT的翻页。

【关键词】PPT无线翻页器;STC8952;PDIUSB12;编码器

The Designs of PPT Wireless Pager with Wheel Flip Function

LI Zi-xiang

(Department of resources and civil engineering, Shandong University of Science and Technology, Taian Shandong 271019, China)

【Abstract】In order to facilitate the use of a PPT, a PPT wireless pager was designed. The system was divided into two modules, The system is divided into two modules: transmitting circuit and receiving circuit, Each module contains a STC8952 MCU and Bluetooth module, The transmitting circuit also comprises a mouse encoder and a D trigger to form the phase detector circuit, When the button of the transmitting circuit is pressed or the rolling wheel is rolled, the data will be sent by the Bluetooth host, after receiving the instruction, the receiving circuit send it to the PC through the USB communication module, finally the pc simulate the keyboard and the roll event, to achieve the controlling of the PPT.

【Key words】PPT wireless pager; STC8952; PDIUSB12; Encoder

随着计算机辅助教学的发展,PPT无线翻页器应运而生。有时在PPT演讲过程中,为了临时跳到某一页讲解或回顾其他内容,需要一下翻很多页,但现有的无线翻页器只能按一下翻一页,造成了很多不便。针对这种情况,开发了一种带滚轮翻页功能的PPT无线翻页器,通过滚轮来实现翻页功能,可以大大增加PPT翻页的速度,解决上述问题。

1 系统方案设计

整个硬件电路分为发射电路和接收电路两个模块,当按下发射电路的按键或滚动滚轮时,由单片机控制无线模块的信号收发。接收电路的无线模块接收命令后,通过USB通信模块把数据传给PC机,PC机根据不同的键值分别作出相应,通过模拟键盘的按键事件、鼠标的滚轮滚动事件等来实现对PPT的控制。系统总体框图如图1所示。

图1 系统总体功能框图

2 硬件电路设计

2.1 发射电路

发射电路共设置上翻、下翻、激光灯、全屏、退出播放5个按键外加一个滚轮翻页模块。单片机采用STC89C52。STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器,共具有P0,P1,P2,P3四个I/O口,这里通过I/O口来控制各部分电路及无线模块的通信[1]。

在设计滚轮翻页模块时,将滚轮的编码器的A相输出端接入STC89C52的计数器0来采集计数脉冲,并将编码器接入一个八D触发器74LS379来构成鉴相电路,判断滚轮的滚动方向,当编码器顺时针方向旋转时,A相信号在相位上超前B相信号1 /4周期(图2)。经过D触发器后,Q1为高电平,Q1反为低电平,反之当编码器逆时针旋转时,Q1为低电平,Q1反为高电平[2],将Q1和Q1反接入单片机的I/O口,便可以据此判断是上翻页还是下翻页。

在设计无线通信模块时,采用了HC-05蓝牙模块。HC-05模块是一款高性能的蓝牙串口模块,具有宽波特率范围4800~1382400,模块兼容单片机系统。波特率、蓝牙名称、配对密码等可通过AT命令修改。HC-05在购买时默认为从机,在设计发射电路时,通过AT命令将蓝牙模块设置为主机。蓝牙主机模块与单片机的连接如图3所示。

图3 发射电路原理图

2.2 接收电路

接收端采用STC89C52和HC-05蓝牙从机模块来接收数据。主从模块配对后相当于一根串口线使用,这时不分主从,进入透传模式,实现单片机双机通信。

单片机接收到数据后,通过USB通信模块传送给上位机,完成翻页操作。USB通信模块采用飞利浦公司生产的PDIUSBD12接口芯片,芯片遵循USB1.1协议。PDIUSBD12使用八位并行数据口DATA[7:0]与STC8952的P[0.7:0.0]连接,STC8952既要对PDIUSBD12发送命令又要发送数据,通过PDIUSBD12的地址选择命令还是数据。STC8952和PDIUSBD12的连接有复用的数据地址总线和独立的数据地址总线两种方式,在这里使用的独立地址线,A0表示地址位,A0为1表示命令,A0为0表示写数据,可以使用I/O口模拟,将A0接到单片机的T1脚上(T1是复用引脚,这里使用的普通I/O口),发送命令前对A0置1,发送数据时置0,把命令或数据发送到USB总线上[3]。

图4 接收电路原理图

3 软件设计

3.1 上位机程序

对于普通按键,要加入一个按键去抖程序,以上翻页按键KEY1为例,代码如下:

void delay(uint8 xms )

{

uint8 i,j;

for(i=xms;i>0;i++)

for(j=110;j>0;j--);

}

while(1) //死循环

{

if(KEY1= =0) //KEY1按下,发送上翻页命令

{

delay(10);

if(KEY1= =0)

{

UartPutChar(0x01);

}

while(!KEY1);

对于滚轮模块,将单片机的计数器模式打开以采集来自编码器的计数脉冲。有时只根据相位来判断翻页的方向可能会出现错误,所以在这里,通过比较上翻页和下翻页的次数,来决定真正的翻页方向,代码如下:

void main(void) //主函数

{

uint8 tl,th1,th2;

uint16 val;

uint8 Count=0,Up_count=0,Down_count=0; //滚轮采集数据标志

InitTIMER(); //初始化定时器

InitUART(); //初始化串口

LIGHT=1; //关闭激光灯

while(1) //读计数器值

{

th1=TH0;

tl=TL0;

th2=TH0;

if(th1==th2)break; //若没有进位打断while(1)循环

}

if((tl!=0)||(th1!=0))

{

delay(50); //延时待滚轮稳定

Count++; //计数滚轮采集值

if(WHEEL_A==1) //向下滚动滚轮

{

Down_count++;

}

else if(WHEEL_A==0) //向上滚动滚轮

{

Up_count++;

}

if(Count>5)

{

if(Up_count>Down_count)UartPutChar(0x01); //发送上翻页命令

if(Up_count

Count=0;

Up_count=0;

Down_count=0;

}

TH0=0;

TL0=0;

}

}

}

3.2 下位机程序

USB HID设备是通过报告来返回数据的,输入报告通过中断输入端点返回,在这里通过端点1来返回报告,判断是否需要发送报告的代码如下[4]:

if(ConfigValue!=0) //如果已经设置为非0的配置,则可以返回报告数据

{

if(!Ep1InIsBusy) //如果端点1输入没有处于忙状态,则可以发送数据

{

if(Command!=0) //如果有按键事件发生

{

SendReport(); //则返回报告,发送结束会清零数据

SendReport(); //则返回报告,发送一则空数据,证明键盘动作清零

}

}

}

SendReport()负责发送具体的报告。在输入报告中定义一个数组,可以同时返回多个按键值。输入报告共8字节,第一字节的8位表示是否有数据按下,第二字节为保留值,第3到8字节是一个普通键键值的数组,在PPT中,上翻页键对应键盘上的PageUp,下翻页为PageDown,全屏放映为F5,退出全屏为Esc,具体的键值可以查HID用途文档表获得[4]。这里只给出上翻页的情况,其余按键依次类推。

extern uint8 Command;

void SendReport(void)

{

/***************************************************

根据HID用途表文档 F5--3E ESC--29 PageUp--4B PageDown --4E

***************************************************/

uint8 Buf[8]={0,0,0,0,0,0,0,0};

uint8 i=2;

if(Command==0x01) //接收到0x01

{

Buf[i]=0x4B; //播放命令。

i++; //切换到下个位置。

Prints("发送4B\r\n");

}

//报告准备好了,通过端点1返回,长度为8字节。

D12WriteEndpointBuffer(3,8,Buf);

Ep1InIsBusy=1; //设置端点忙标志。

Command=0;

}

4 结束语

按照设计原理完成制作后,经测试可以实现设计的功能要求,可以正常完成按键翻页及滚轮翻页的功能,当使用滚轮翻页可以大大加快翻页速度,满足某些场合下需要快速多次翻页的需要,具有很好的应用前景。

【参考文献】

[1]胡聪,何劲,郭金龙.基于nFR24L01的无线电子教鞭[J].科技信息,2012(9):97.

[2]高伟,李玄曾.光电编码器的信号处理电路研究[J].陕西师范大学继续教育学院学报(西安),2007,24(2):117.

[3]万利峰,徐晓洁,胡慧铺,张哗晖.基于PDIUSB12的USB数据采集系统的设计 [J].微计算机信息,2006,22(5-1):110-111.

[4]刘荣.圈圈教你玩USB[J].北京航空航天大学出版社,2009(1).

[责任编辑:杨玉洁]

猜你喜欢
编码器
融合CNN和Transformer编码器的变声语音鉴别与还原
基于FPGA的同步机轴角编码器
基于双增量码道的绝对式编码器设计
基于磁编码器的永磁同步电机驱动控制系统
基于PRBS检测的8B/IOB编码器设计
应用旋转磁场编码器实现角度测量
旋转编码器与可编程控制器实现脉冲计数功能
JESD204B接口协议中的8B10B编码器设计
基于数字信号处理的脉冲编码器
光电编码器故障诊断技术研究现状与展望