EDN首页   博客首页 用户登陆  |  注册

日志档案

发表于 2007/3/31 1:21:21

23

标签: 自制USB鼠标  源代码  原理图  

自制USB鼠标来玩玩~~~~(源代码+原理图)

花了一个晚上,把USB键盘的程序改了改,就成了USB鼠标了~~~~~~
只是修改了一下报告描述符,以及返回数据等,修改很少。
 
点击此处下载 USB鼠标源代码包.rar rar
 
 
以下是通过串口返回的调试信息:
系统启动................................
断开USB连接........................
USBD12芯片初始化
   设置地址.....................
       地址为:  0
连接USB...............
USB总线复位................................
USB总线挂起................................
USB总线复位................................
USB总线挂起................................
USB总线复位................................
USB标准请求................................
    获取描述符................................
        获取设备描述符................................
USB总线复位................................
USB标准请求................................
   设置地址.....................
       地址为:  2
USB标准请求................................
    获取描述符................................
        获取设备描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
        获取配置描述符................................
USB标准请求................................
    获取描述符................................
        获取字符串描述符................................
            获取语言ID................................
USB标准请求................................
    获取描述符................................
        获取字符串描述符................................
            获取设备序列号................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
        获取配置描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
        获取字符串描述符................................
            获取语言ID................................
USB标准请求................................
    获取描述符................................
        获取字符串描述符................................
            获取产品字符串................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
        获取字符串描述符................................
            获取语言ID................................
USB标准请求................................
    获取描述符................................
        获取字符串描述符................................
            获取产品字符串................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
        获取设备描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
        获取配置描述符................................
USB标准请求................................
    获取描述符................................
        获取配置描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    获取描述符................................
USB标准请求................................
    设置配置................................
USB类请求................................
    设置空闲................................
USB标准请求................................
    获取描述符(从接口)..............................
        获取报告描述符................................
USB标准请求................................
    获取描述符(从接口)..............................
USB标准请求................................
    获取描述符(从接口)..............................
USB标准请求................................
    获取描述符(从接口)..............................
USB标准请求................................
    获取描述符(从接口)..............................
USB标准请求................................
    获取描述符(从接口)..............................
USB标准请求................................
    获取描述符(从接口)..............................
USB标准请求................................
    获取描述符(从接口)..............................
 
在设备管理器里的显示:
点击看大图
 
原理图(用的是键盘的硬件,8键鼠标上移,4键鼠标左移,6键鼠标右移,2键鼠标下移,
9键往上滚动,3键往下滚动,alt键鼠标左键,0键鼠标中键,enter键鼠标右键):
(注意:原理图上所标的晶体值是以前的,这个程序中使用的是22.1184M的晶体.它关系到串口波特率,如果你不使用串口,那么可以不用理会它.)
 
注意:图中串口电平转换部分的C8和C10接反了,C11负端应接VDD。D12的SUSPEND(12脚)应该接地。USB接头处的D+和D-应该分别串联22欧姆的匹配电阻。由于图得比较匆忙,所以没留意。
点击看大图
 
点击看大图
 
点击看大图
点击看大图
点击看大图

系统分类: 单片机   |   用户分类: 圈圈作品   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

阅读(7577)  |  评论(31)  |  收藏(0)  |  举报  

投一票您将和博主都有获奖机会!

最新评论

  • computer00

    2008/9/20 20:09:37

    这个字符串是unicode编码,请看产品字符串。

  • vollerain@126.com

    2008/9/20 16:24:56

    那个“电脑圈圈做的USB鼠标”在哪儿可以改?把你代码所有地方搜遍都没找到

  • computer00

    2008/8/22 8:55:45

    不可以,我这个是USB设备,也就是一个普通的鼠标设备,它只能被电脑的USB口读,而不能读别的USB口。

  • zhangwenbo88

    2008/8/19 20:34:38

    请问computer00 你的程序是不是可以实现从usb读入鼠标移动或按键的数值,然后从串口输出?

  • computer00

    2008/7/13 1:09:37

    可以的,我这个程序只是在一个开发板上实现的例子而已,并不适合做产品。 做USB鼠标有专门的芯片了,便宜得很。 网上有用MEGA单片机模拟低速USB的实例,你可以去www.ouravr.com看看。

  • zhilve

    2008/7/12 22:37:55

    你的自制USB成本太高,能不能用单片机模拟usb通讯

  • yjg

    2008/1/18 9:53:32

    不服不行,老大,太感激你了

  • computer00

    2007/12/12 13:05:52

    写个程序,打开内部上拉电阻,然后测量D+,看能不能拉高。

  • wayon_yang

    2007/12/12 10:39:47

    27脚可是有3.3v电压的

  • wayon_yang

    2007/12/12 10:22:57

    改过来了

    我检查没发现28脚有电压啊

    该不会是d12挂了吧

  • computer00

    2007/12/11 23:43:37

    22欧姆的上拉电阻肯定是搞错了,22欧姆的电阻应该串联在D+和D-上的,或者干脆取消掉试试。你可以看看我最新的原理图:

    点击开大图

  • wayon_yang

    2007/12/11 21:00:45

    对了,我只用了51和pdiusbd12其余的芯片都没用,只有51最小系统(11.0592mhz),d12的晶振、电阻还有阻排(10k)

  • wayon_yang

    2007/12/11 20:53:07

    圈圈,我也按照你的原理图做了个PCB,情况和aaa差不多 ,PID和UID都为0,我仔细检查了硬件连接都没有问题,但d+和d-我都接22欧的上拉电阻了,应该也不会错啊!

    要说芯片有问题,有的时候GL---LED还有反应。

    你看就AAA兄的pcb图,你的代码还有哪里要改动的吗?

  • computer00

    2007/10/27 10:31:08

    这个芯片是有内部复位的吧? 会不会可能是焊接的时候,不小心将RST连到地了?当然也有可能是静电什么的将RST引脚给击穿了。

  • AAA

    2007/10/27 10:08:52

    那个板成功了.原来是芯片坏了.换了块芯片,一切正常!我都觉得奇怪,芯片坏了还能够有正常的电压,晶振还能够起振!就是指令写不进...我看是复位不了.复位那里坏了.谢谢圈圈!

  • computer00

    2007/10/27 8:59:09

    那是在字符串描述符中的,编码方式为unicode。很巧,我前几天才专门为它写了个工具,你可以试试。将电脑圈圈的家当几个字输进去转换一下,看是不是刚好对上呢?

    工具的地址在这里:

    http://computer00.21ic.org/user1/2198/archives/2007/42769.html

    记得多多宣传哦~~~

  • fghjk

    2007/10/27 2:24:19

    圈圈,你的那些字是怎么显示的?就是圈圈的家当那几个字?我看是两个数字代表一个字,但不知道怎么表示.请明示.

  • computer00

    2007/10/25 18:57:46

    没理由啊,你仔细检查一下D12的线路是否焊好了. 你可以写个测试程序,看能不能控制CLK OUT(13脚)的输出频率. 从你现在的现象来看,是数据未写入到D12中。

  • AAA

    2007/10/25 9:54:56

    我修改的原理图如下:rar,请圈圈看一下.

  • AAA

    2007/10/25 9:41:47

    这些我都检查过了.电源正确,28脚输出3.31V,晶振我用示波器看了是6M左右.我照你画的原理图如下,请圈圈帮我检查一下哪里有不同,我与你不同的地方是51的晶振是11.0592M的.

    点击看大图

    你的原理图D12的七个IO口的总路线上没有标接51P0口的哪个口,我就那样标了,请看一下是不是与你恰恰相反了.

  • computer00

    2007/10/24 21:43:46

    看来你没看过这个芯片的数据手册,这个芯片内部有一个上拉电阻,可以使用程序打开它,这样外面就不用接上拉电阻了。全速设备的上拉电阻是拉在D+上的。

    估计是指令和数据都没写入到D12芯片中,重点检查D12连接是否正确,电源是否正确,3.3V输出是否正常,晶是否起振等。

  • AAA

    2007/10/24 10:02:55

    圈圈,我按照你的原理图做了个PCB, 将你的这个程序烧进去检验的时候发现串口发送数据到

    系统启动................................
    断开USB连接........................
    USBD12芯片初始化
       设置地址.....................
           地址为:  0
    连接USB...............

    就不发送了.电脑显示发现未知设备,它的PID和UID都为0,我仔细检查了硬件连接都没有问题,软件正在看,还没有能完全看明白,

    现在我想请问一下这个问题出在哪里?

    还有我想请问一个问题:一般的USB接口上的D+或者D-上有一个1.5K的上拉电阻,怎么没有看到你的原理图上有呢?你平时是把它接到D+还是D-,还是不接呢?如果不接的话我怎么连那个未知设备都发现不了.我接的是D-

  • computer00

    2007/9/27 2:38:17

    请看公告.

  • lan001

    2007/9/26 19:24:59

    源码包的密码是多少?

  • computer00

    2007/8/25 11:16:05

    发现程序的一个BUG,有些朋友提到枚举不正常,可能是下面这个函数的问题,替换它再试试.

    /***************************设置地址***************************************/
    void set_usb_address(void)
    {
    usb_flags.flags.set_addr=1;
    set_usb_addr(Control_Data.DeviceRequest.wValue);
    while(select_endpoint(1)&0x01);
    write_endpoint_buff(1,0,0);
    while(select_endpoint(1)&0x01);
    usb_flags.flags.usb_endp0_in=0;
    usb_flags.flags.setup_packet_out=0;
    }
    /******************************************************************************/

  • computer00

    2007/7/12 0:33:33

    呵呵,好玩的话就自己动手做一个吧~~~~~

  • mao1984

    2007/7/11 21:57:53

    这个不错

     

  • zhang

    2007/6/2 14:17:35

    顶~~~~~~~~

  • computer00

    2007/5/14 22:40:56

    我已经上传到BLOG里面了呀,

    http://www.ednchina.com/blog/computer00/19927/message.aspx

     

    如果这里不能下载了,你可以去另一个站点下载:

    http://computer00.21ic.org

     

    就在[圈圈的作品]版块里.

  • 利剑

    2007/5/12 21:42:32

    厉害,叫你声老大。请问有没有IDE转USB的程序,能不能把程序发给我?谢谢了,2292ljq@163.com

  • TONG123

    2007/3/31 22:15:22

    GOOD