日志档案

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

20

标签: 自制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欧姆的匹配电阻。由于图得比较匆忙,所以没留意。
点击看大图
 
点击看大图
 
点击看大图
点击看大图
点击看大图

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

    阅读(3413)    回复(25)  

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

  • TONG123

    2007-3-31 22:15:22

    GOOD

  • 利剑

    2007-5-12 21:42:32

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

  • computer00

    2007-5-14 22:40:56

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

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

     

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

    http://computer00.21ic.org

     

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

  • zhang

    2007-6-2 14:17:35

    顶~~~~~~~~

  • computer00

    2007-7-12 0:33:33

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

  • mao1984

    2007-7-11 21:57:53

    这个不错

     

  • 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;
    }
    /******************************************************************************/

  • lan001

    2007-9-26 19:24:59

    源码包的密码是多少?

  • computer00

    2007-9-27 2:38:17

    请看公告.

  • 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-10-24 21:43:46

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

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

  • AAA

    2007-10-25 9:41:47

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

    点击看大图

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

  • AAA

    2007-10-25 9:54:56

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

  • computer00

    2007-10-25 18:57:46

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

  • fghjk

    2007-10-27 2:24:19

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

  • computer00

    2007-10-27 8:59:09

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

    工具的地址在这里:

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

    记得多多宣传哦~~~

  • AAA

    2007-10-27 10:08:52

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

  • computer00

    2007-10-27 10:31:08

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

  • wayon_yang

    2007-12-11 20:53:07

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

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

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

  • wayon_yang

    2007-12-11 21:00:45

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

  • computer00

    2007-12-11 23:43:37

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

    点击开大图

  • wayon_yang

    2007-12-12 10:22:57

    改过来了

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

    该不会是d12挂了吧

  • wayon_yang

    2007-12-12 10:39:47

    27脚可是有3.3v电压的

  • computer00

    2007-12-12 13:05:52

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

  • yjg

    2008-1-18 9:53:32

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