单片机鼠标读取USB鼠标

UsbMouse 51单片机操作USB鼠标的代码。对学习非常有用 SCM 开发 238万源代码下载-
&文件名称: UsbMouse
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 103 KB
&&上传时间:
&&下载次数: 43
&&提 供 者:
&详细说明:51单片机操作USB鼠标的代码。对学习非常有用-51 MCU operation USB mouse code. For learning is very useful. .
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&UsbMouse\config.h&&........\Key.c&&........\Key.h&&........\Key.LST&&........\Key.OBJ&&........\LED.h&&........\Main.c&&........\Main.LST&&........\Main.OBJ&&........\MyType.h&&........\PDIUSBD12.c&&........\PDIUSBD12.h&&........\PDIUSBD12.LST&&........\PDIUSBD12.OBJ&&........\STARTUP.A51&&........\STARTUP.LST&&........\STARTUP.OBJ&&........\UART.c&&........\UART.h&&........\UART.LST&&........\UART.OBJ&&........\UsbCore.c&&........\UsbCore.h&&........\UsbCore.LST&&........\UsbCore.OBJ&&........\UsbMouse&&........\UsbMouse.hex&&........\UsbMouse.lnp&&........\UsbMouse.M51&&........\UsbMouse.Opt&&........\UsbMouse.plg&&........\UsbMouse.Uv2&&........\UsbMouse_Opt.Bak&&........\UsbMouse_Uv2.Bak&&UsbMouse
&[]:很好,推荐下载
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - PS2键盘接口程序,51单片机,PC鼠标的读取与显示
&[] - 51 单片机 c语言编程 机器人制作实例
&[] - 51单片机控制16X80LED点阵滚屏程序
&[] - USB鼠标程序,51单片机实现,对与玩USB从机开发的朋友很有参考价值,代码全部有详细注释
&[] - 鼠标的单片机驱动程序 把鼠标的四条线接在89c52 上把程序编译好后下载进去 就可使用。但要看好接口。
&[] - PS2鼠标控制实验,51单片机控制PS2鼠标
&[] - This design package includes reference materials for creating a
USB - PS/2 combination mouse that auto-detects the interface and
configures itself t
&[] - PS2鼠标控制实验,51单片机控制PS2鼠标
&[] - read me.txt中有说明。
是我几年来学习单片机的所有的程序的精华,各个功能已经做成子函数,做项目时可以直接调用,外围模块非常丰富,包括红外,键盘鼠标操控,液晶显示等。
&[] - 鼠标的单片机驱动程序 把鼠标的四条线接在89c52 上把程序编译好后下载进去 就可使用。但要看好接口。扫一扫关注官方微信
后使用快捷导航没有帐号?
请完成以下验证码
用51单片机做的USB鼠标程序,对与玩USB从机开发的朋友很有参考价值
本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
才可以下载或查看,没有帐号?
用51做的USB鼠标程序,对与玩USB从机开发的朋友很有参考价值
/******************************************************************
& &本程序只供学习使用,未经作者许可,不得用于其它任何用途
config.h file
作者:电脑圈圈
版本:V1.1
版权所有,盗版必究。
Copyright(C) 电脑圈圈
All rights reserved& && && && &
*******************************************************************/
以下是部分源代码全部代码见附件
/******************************************************************
本程序只供学习使用,未经作者许可,不得用于其它任何用途
main.c file
来源:MCU资讯
作者:电脑圈圈
建立日期:
版本:V1.1
版权所有,盗版必究。
Copyright(C) 电脑圈圈
All rights reserved
*******************************************************************/
#include &AT89X52.H& //头文件
#include &Key.h&
#include &Led.h&
#include &UART.h&
#include &pdiusbd12.h&
#include &UsbCore.h&
#include &config.h&
code uint8 HeadTable[][74]={
&********************************************************************\r\n&,
&****** 《圈圈教你玩USB》之 USB鼠标 ******\r\n&,
&****** AT89S52 CPU ******\r\n&,
&****** 建立日期:&,__DATE__,& ******\r\n&,
&****** 建立时间:&,__TIME__,& ******\r\n&,
&****** 作者:电脑圈圈 ******\r\n&,
&****** 欢迎访问作者的 ******\r\n&,
&****** MCU资讯论坛:http://www.mcuzx.net/ ******\r\n&,
&****** MCU资讯论坛:http://www.mcuzx.net/ ******\r\n&,
&****** MCU资讯论坛:http://www.mcuzx.net/ ******\r\n&,
&****** 请按K1-K8分别进行测试 ******\r\n&,
&****** K1:光标左移 K2:光标右移 K3:光标上移 K4:光标下移 ******\r\n&,
&****** K5:滚轮下滚 K6:滚轮上滚 K7:鼠标左键 K8:鼠标右键 ******\r\n&,
&********************************************************************\r\n&,
};
/********************************************************************
函数功能:根据按键情况返回报告的函数。
入口参数:无。
返 回:无。
备 注:无。
********************************************************************/
void SendReport(void)
{
//需要返回的4字节报告的缓冲
//Buf[0]的D0就是左键,D1就是右键,D2就是中键(这里没有)
//Buf[1]为X轴,Buf[2]为Y轴,Buf[3]为滚轮
uint8 Buf[4]={0,0,0,0};
//我们不需要KEY1~KEY6按键改变的信息,所以先将它们清0
KeyUp &=~(KEY1|KEY2|KEY3|KEY4|KEY5|KEY6);
KeyDown &=~(KEY1|KEY2|KEY3|KEY4|KEY5|KEY6);
//如果有按键按住,并且不是KEY7、KEY8(左、右键)
//或者KEY7、KEY8任何一个键有变动的话,则需要返回报告
if((KeyPress&(~(KEY7|KEY8)))||KeyUp||KeyDown)
{
if(KeyPress & KEY1) //如果KEY1按住,则光标需要左移,即X轴为负值。
{
Buf[1]=-1; //这里一次往左移动一个单位。
}
if(KeyPress & KEY2) //如果KEY2按住,则光标需要右移,即X轴为正值。
{
Buf[1]=1; //这里一次往右移动一个单位。
}
if(KeyPress & KEY3) //如果KEY3按住,则光标需要上移,即Y轴为负值。
{
Buf[2]=-1; //这里一次往上移动一个单位。
}
if(KeyPress & KEY4) //如果KEY4按住,则光标需要下移,即Y轴为正值。
{
Buf[2]=1; //这里一次往下移动一个单位。
}
if(KeyPress & KEY5) //如果KEY5按住,则滚轮下滚,即滚轮值为负。
{
Buf[3]=-1; //这里一次往下滚动一个单位。
}
if(KeyPress & KEY6) //如果KEY6按住,则滚轮上滚,既滚轮值为正
{
Buf[3]=1; //这里一次往上滚动一个单位。
}
if(KeyPress & KEY7) //鼠标左键
{
Buf[0]|=0x01; //D0为鼠标左键
}
if(KeyPress & KEY8) //鼠标右键
{
Buf[0]|=0x02; //D1为鼠标右键
}
//报告准备好了,通过端点1返回,长度为4字节。
D12WriteEndpointBuffer(3,4,Buf);
Ep1InIsBusy=1; //设置端点忙标志。
}
//记得清除KeyUp和KeyDown
KeyUp=0;
KeyDown=0;
}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:主函数。
入口参数:无。
返 回:无。
备 注:无。
********************************************************************/
void main(void) //主函数
{
uint8
uint16
uint8 InterruptS
EA=1; //打开中断
InitKeyboard(); //初始化按键
InitUART(); //初始化串口
for(i=0;i&18;i++) //显示信息
{
Prints(HeadTable[i]);
}
id=D12ReadID();
Prints(&Your D12 chip\'s ID is: &);
PrintShortIntHex(id);
if(id==0x1012)
{
Prints(&. ID is correct! Congratulations!\r\n\r\n&);
}
else
{
Prints(&. ID is incorrect! What a pity!\r\n\r\n&);
}
UsbDisconnect(); //先断开USB连接
UsbConnect(); //将USB连接上
ConfigValue=0; //配置值初始化为0
while(1) //死循环
{
if(D12GetIntPin()==0) //如果有中断发生
{
D12WriteCommand(READ_INTERRUPT_REGISTER); //写读中断寄存器的命令
InterruptSource=D12ReadByte(); //读回第一字节的中断寄存器
if(InterruptSource&0x80)UsbBusSuspend(); //总线挂起中断处理
if(InterruptSource&0x40)UsbBusReset(); //总线复位中断处理
if(InterruptSource&0x01)UsbEp0Out(); //端点0输出中断处理
if(InterruptSource&0x02)UsbEp0In(); //端点0输入中断处理
if(InterruptSource&0x04)UsbEp1Out(); //端点1输出中断处理
if(InterruptSource&0x08)UsbEp1In(); //端点1输入中断处理
if(InterruptSource&0x10)UsbEp2Out(); //端点2输出中断处理
if(InterruptSource&0x20)UsbEp2In(); //端点2输入中断处理
}
if(ConfigValue!=0) //如果已经设置为非0的配置,则可以返回报告数据
{
LEDs=~KeyP //利用板上8个LED显示按键状态,按下时亮
if(!Ep1InIsBusy) //如果端点1输入没有处于忙状态,则可以发送数据
{
KeyCanChange=0; //禁止按键扫描
if(KeyUp||KeyDown||KeyPress) //如果有按键事件发生
{
SendReport(); //则返回报告
}
KeyCanChange=1; //允许按键扫描
}
}
}
}
////////////////////////End of function//////////////////////////////
复制代码
(102.82 KB, 下载次数: 172)
22:36 上传
点击文件名下载附件
下载积分: M币 -1
width:100%">
不错!!!!!!!!!
width:100%">
width:100%">
很感谢楼主的贴啊!最好每句代码交代一下就好了,让初学者能看得更加明白,学到更多东西!{:13_784:}
width:100%">
谢谢分享 ................
width:100%">
非常感谢...................
width:100%">
& & 谢谢楼主分享,学习中。
width:100%">
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
width:100%">
我下了,非常感谢我下了,非常感谢
width:100%">
我来学习。。。。。。。。。。。。。。。。。。。
width:100%">
日,爱普生(中国)有限公司与中国智能仪器仪表设计大赛组织委员会在上海
已更新至AltiumDesigner16.0.5AltiumDesigner14.2.3(31764)最新版另附32G学习资料、
高三毕业作品,这个该怎么做?
低功耗的触摸滑调MCU,1T8051单片机,带AD,带PWM,带LCD/LED驱动,Flash芯片。
强烈推荐单片机顶级好书,此书的编写建立在作者十多年的产品研发经验基础之上,又经历
日,爱普生(中国)有限公司与中国智能仪器仪表设计大赛组织委员会在上海
已更新至AltiumDesigner16.0.5AltiumDesigner14.2.3(31764)最新版另附32G学习资料、
高三毕业作品,这个该怎么做?
服务时间:周一至周日 8:30-20:30使用stm32作为usb主机实现usb鼠标键盘的识别
13:03:53来源: eefocus
后附相关文档
关于Usage ID可以参考 http://www.freebsddiary.org/APC/usb_hid_usages
附2:相关资料文档&/s/1i3J1ftN
关键字:&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。}

我要回帖

更多关于 单片机支持鼠标吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信