assingle 发表于 2011-5-20 09:36:19

51单片机来控制ppt的操作,如使它全屏,退出等

51单片机连接pl2303通过USB线发送编码数据给电脑,通过单片机的按键来控制电脑中ppt的操作,
    如要使ppt全屏,按电脑键盘的F5就可以全屏,在网上查到电脑F5按键的编码是0x74。
       程序如下,但是编译后发觉按键对ppt没反应。这是错在哪里了呢。那要怎么改才行呢。我是单片机新手,请高手们多多指教。谢谢
#include <reg51.h>
#include <string.h>   
unsigned char ch;   
bit read_flag= 0 ;   
void init_serialcom( void )
   { SCON = 0x50 ;//SCON: serail mode 1, 8-bit UART, enable ucvr   
                         //UART为模式1,8位数据,允许接收
          TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload            
                         //定时器1为模式2,8位自动重装
          PCON |= 0x80 ; //SMOD=1;
          TH1 = 0xFD ;   //Baud:19200 fosc="11".0592MHz
          IE |= 0x90 ;   //Enable Serial Interrupt
          TR1 = 1 ;       // timer 1 run
          TI=1;
         }         
//向串口发送一个字符
void send_char_com( unsigned char ch)
         {
            SBUF=ch;
            while (TI== 0);
               TI= 0 ;
          }
main()
    {
         init_serialcom(); //初始化串口
                  while ( 1 )
                        {
                            if (P0==0xfe) //如果按下单片机的按键,则P0=0xfe?
                                    {
                                             send_char_com(0x74); //按下单片机按键后,则向txd发送编码数据0x74,相当于电脑键盘的F5按键按下,ppt全屏。
                                          }
                            }
       }

xiaomage_2000 发表于 2011-5-20 09:47:10

因为你的电脑只认键盘传过来的0X74是F5,而认为你向他通信发送了一个数据,但是不认为你的单片机是键盘,所以不会执行键盘的功能~
否则的话我们要打开个TXT文件,你一直用串口发数据,还不打出文章来呵呵~~

lcofjp 发表于 2011-5-20 09:48:35

你得模拟一个usb键盘,单单串口是不行的

vipcff 发表于 2011-5-20 09:50:21

电脑F5按键的编码是0x74
-----------------------这个不是说串口,说的是PS/2口吧

assingle 发表于 2011-5-20 09:52:12

谢谢楼上两位 。
我再试试。

turf456 发表于 2011-5-20 10:08:02

总得先让电脑认出是键盘吧

Hamyou 发表于 2011-5-20 10:55:31

这个好办,你得用一个控件,具体什么不记得了,以前做了一个通过串口的红外遥控键盘,可以当做一个键盘来使

lcofjp 发表于 2011-5-20 11:00:21

回复【6楼】Hamyou
-----------------------------------------------------------------------

再搞搞上位机,难度也不小哦。

Hamyou 发表于 2011-5-20 11:27:46

找到了,用驱动级模拟,使用一个组件WINIO来完成读写端口操作,工作于驱动层具有全局按键功能。能在VB下用,还可以在DELPHI、VC等其它环境下使用。

mook_dj 发表于 2011-5-20 11:50:14

除了用单片机模拟PS/2接口,还有一个方法是用上位机,即在电脑里按装Grider3.2软件,把电脑串口接收的代码转换成电脑里的键盘及鼠标动作。
可以去磁动力看看,不过别人是用红外线传送的,你想51单片机连接pl2303通过USB线发送编码数据给电脑,把程序中的红外那部分省掉,修改修改就可以,比用红外还简单。

有关文章:打造超级PC遥控器(上篇)http://www.cdle.net/web/alldata/CDLE/cdle050007.htm
打造超级PC遥控器(下篇) http://www.cdle.net/web/alldata/CDLE/cdle050008.htm
Grider3.2简单使用教程 http://www.cdle.net/web/alldata/CDLE/cdle050009.htm

dong889 发表于 2011-5-20 12:12:46

用串口通讯,搞个上位机程序吧~

yibunihao 发表于 2011-5-20 21:39:28

呵呵,有两个办法:
1,用单片机模拟出来一个HID设备来作为USB键盘,然后去查USB键盘的协议,一般来讲USB键盘的数据格式长度是5,看F5对应的什么码,通过USB接口直接发送给电脑,肯定可以用。(跟这个差不多的可以去模拟一个PS2的设备,原理一样)
2,单片机依然保留用串口的方法发送0x74(其实随便发什么都可以啦,配合好就行),然后做一个上位机程序去接收串口数据,当发现收到正确的数据之后再发送“F5”的命令给上层领导就可以了。

owenhunter 发表于 2012-5-11 09:33:39

assingle 发表于 2011-5-20 09:52 static/image/common/back.gif
谢谢楼上两位 。
我再试试。

请问你用单片控制PPT有没有成功?
页: [1]
查看完整版本: 51单片机来控制ppt的操作,如使它全屏,退出等