基于51单片机的USB控制器的硬件设计与实现
基于51单片机的USB键盘设计与实现
基于51单片机的USB键盘设计与实现
一、背景介绍
USB键盘是近些年来随着计算机科技发展而出现的一种新型输入设备。
它采用USB接口,是电脑设备接口标准由PS/2接口更换而来的,可以满
足现代电脑日益增长的输入需要。
现代联想主板,微星主板都采用了USB
接口出现,同时USB接口也可以有效投放鼠标、USB外置设备等。
是一种
非常有效的替代方案。
本文的主要目的是基于51单片机的USB键盘设计与实现,在此基础上,可以得出一个具有良好性能的USB键盘,它将成为计算机用户所不可
或缺的输入设备之一
二、功能要求
B键盘的硬件部分,采用51单片机作为核心,屏幕模块和按键
模块作为主要的输入设备。
2.支持USB1.1/2.0标准,能够兼容主流的主板及不同接口的设备,
实现多种输入功能并支持多种操作系统。
3.按键部分及其他硬件设计,需考虑到键盘的灵敏度、机械结构的耐
用性、按键的设计及密度等多方面因素,以提高使用者的操作方便性。
4.软件设计,在51单片机上实现USB键盘的驱动程序,在根据不同
接口的主板及设备对应的协议、功能及数据格式等配置相应的控制程序,
以保证其能够实现对应的输入功能。
三、硬件设计
1.主控:采用51单片机作为主控。
基于单片机的USB研究与设计
基于单片机的USB研究与设计【摘要】USB 总线具有高速传输、热拔插、即插即用等特点,已经在高速数据采集系统之中得到了越来越广泛的应用。
本文基于串口通讯的原理,分析和讨论了计算机与单片机如何通过USB接口使用相关的通讯协议实现串行通信的。
【关键词】USB 总线;串行通信;单片机计算机同外界信息交流叫做通信,是指系统利用线路来进行数据的交流,目的是将数据从一端传送到另一端,实现数据的交换。
主要方式为:串行通信、并行通信。
数据的位传送,按位顺序进行,仅仅需要一根传输线即可完成完成,成本低、传送速度迅速,距离可适当调节。
在工业与生活中常常运用计算机对设备等等方面来控制操作。
其中最杰出简单实用的串行通信不仅仅结构简单,而且执行速度快、抗干扰能力强,已被广泛应用。
B通信原理概述USB是以因特尔为主,并有其它七家公司共同制定的一项简单的串行接口标准,1994年拟定最初的草案,1996年发布了USB比较规范的第一个版本1.0。
USB能够把众多的设备与pc系统连接,全部的设备都可以通过协议来共享USB,对于我们的键盘,鼠标等运用速度不算很快的设备室完全够用的。
同时总线的功能可以消除掉PC上过多的I/O端口,而单单的以一个串行通道来代替,使PC 与外设之间的连接更容易。
USB的主要设备包括HUB以及功能设备,其中的功能设备细分为定位设备、字符设备等等。
USB连接类型简单,容易使用。
这样外部的设计就简化了很多,同时也简化了用户在判断插头对应时更简便可识别度高,实现了单一的数据通用接口,节省了时间也充分提高了利用效率。
USB总线的物理连接是一种分层很明确的菊花链式,集线器是结构的中心集合。
用户可以将外设与之相连。
附加的Hub可以连接另外的外设以及下层HUBusb。
支持最多5个HUB层以及127个外部的设备设。
2.PC与单片机通过USB的通信设计在我们日常的生活或者工程运作中,通常都是利用一台电脑与单片机构成简单的系统运作,来完成简单的数据采集以及运用,利用pc机来显示,最后打印报表等等。
基于51单片机的USB键盘设计与实现
三江学院本科生毕业设计(论文)题目基于51单片机的USB键盘设计与实现高职院院(系)电气工程及其自动化专业学生姓名梁邱一学号 G*********指导教师孙传峰职称讲师指导教师工作单位三江学院起讫日期 2013年12月10日至2014年4月12日摘要随着计算机技术的不断更新和多媒体技术的快速发展,传统的计算机外设接口因为存在许多缺点已经不能适应计算机的发展需要。
比起传统的AT,PS/2,串口,通用串行总线USB,具有速度快,使用方便灵活,易于扩展,支持即插即用,成本低廉等一系列优点,得到了广泛的应用。
本论文阐述了51系列单片机和USB的相关内容,详细介绍了系统的一些功能设计,包括硬件设计和软件设计。
在程序调试期间用简单的串口通信电路,通过串口调试助手掌握了USB指令的传输过程,这对整个方案的设计起到了很大的指导作用。
论文以单片机最小系统配合模拟键盘组成的USB键盘硬件系统,通过对D12芯片的学习与探索,在其基本命令接口的支持下,结合硬件进行相应的固件程序设计,使其在USB协议下,实现USB模块与PC的数据通信,完成USB键盘的功能模拟。
总结论文研究工作有阐述USB总线的原理、对本设计的系统要求作出了分析、根据要求选定元件和具体编程方案、针对系统所要实现的功能对相关芯片作了详细介绍以及在硬件部分设计了原理图。
关键词:USB;D12;PCAbstractWith the rapid development of computer technology and multimedia technology constantly updated, traditional computer peripheral interface because there are many shortcomings have been unable to meet the development needs of thepared to traditional AT, PS / 2, serial, Universal Serial Bus USB, with fast, flexible and easy to use, easy to expand, support Plug and Play, a series of advantages, such as low cost, has been widely used.This paper describes the 51 series and USB related content, detailing some of the features of the system design, including hardware and software design.During debugging a simple serial communication circuit, through the serial port debugging assistant master USB transfer instructions, which designed the entire program has played a significant role in guiding.Thesis smallest single-chip system consisting of analog keyboard with a USB keyboard hardware system, by learning and explorationD12 chips, with the support of its basic command interface, in conjunction with the corresponding hardware firmware design, making it in the USB protocol, USB module data communication with the PC, the USB keyboard to complete the functional simulation.This paper summarizes research work has elaborated the principle of the USB bus, the system is designed to require the analysis, components and solutions based on the specific requirements of the selected programming for the system to achieve the function of the relevant chips are described in detail in the hardware part of the design as well as the principle of Figure.Keywords:USB;D12;PC目录第一章绪论 (1)1.1 PC接口简介 (1)1.2 USB 接口分析 (1)1.3 USB 器件的选择 (1)第二章系统分析 (3)2.1 USB总线简介 (3)2.2 USB技术指标 (3)2.3 USB系统构成 (4)第3章系统硬件设计 (6)3.1 STC89C52单片机简介及最小系统 (6)3.1.1 单片机发展概况及发展方向 (6)3.1.2 单片机特点及结构 (6)3.1.3 复位电路设计 (8)3.1.4 单片机最小系统硬件设计 (9)3.2 PDIUSBD12接口芯片设计 (9)3.2.1 USB接口芯片简介 (9)3.2.2 USB接口芯片引脚配置 (11)3.2.3 USB接口芯片硬件设计 (14)3.2.4 USB接口芯片端点描述 (14)3.2.5 USB接口芯片命令 (16)3.3 USB键盘硬件设计 (18)第4章系统软件设计 (19)4.1 固件编程的实现 (20)4.1.1 USB接口芯片工作流程图 (20)4.1.2 PDIUSBD12命令接口----PDIUSBD12.C (21)4.1.3 USB中断服务程序----USBISR.C (21)4.1.4 按键处理流程图 (21)4.1.5 USB键盘处理程序---KEY.C (22)4.1.6 USB主循环程序----MAIN.C (23)4.2 实物演示 (25)结束语 (27)致谢 (28)参考文献 (29)附录A (30)附录B (37)第一章绪论1.1 PC接口简介PC中的接口有两类:串行接口和并行接口。
嵌入USB控制器的51系列单片机EZ—USB
置 以 及 个 人 电 脑 的 连 接 等 几 个 方 面 , 而
US 正 是 为 了解 决 这 些 问 题 而 出 现 的 一 B
种 方 案 。 简 而 言 之 . US 的 出现 不 仅解 B 决 了 I 插 口不够 的 问题 , 而 且还 建 立 了 / O
在 每 一 个 u s 设 备 中 都 有 一 个 串 行 接 口引 擎 B (I) I SE 。SE与U B数据线的D+ D 两个引脚相连, S 和 -
●—l
№o 柏^E曲d 出 3 。 晡 曲 钾删 9
维普资讯
与 us 设 备 进 行 字 节 传 送 。 图 2表 示 B
维普资讯
嵌人 UB 军雷 达 学 院 颜 荣 江 一 空军雷达兵 第 l 4团 阴大 兴
摘 要
主 要介 绍嵌 入 u B控 制 核 的 5 系列 单 片机 E — B 的特 性 及 传输 与控 制 机 理 。 该 内棱可 S 1 z u S 帮助 0 B外 设 开 发者 完成 U B协议 中规 定 的 8 譬 9 的通 信 工作 S S O~ O 是 US 外设研 制 者 的理 想 B
一
表
1
S B响 5 S N 62 B D s Dl D SD2 次 US B块 传输 ,时 间顺 序 从左 到 右 。 芯片型号 U S 2 2 U B 0 NE 提8 P n『B 1 P ⅡlB 1 制造商 朗讯 松下 N  ̄h e" i p P ⅡmS H P 肌 S S E对 P D信 息包进行解码 ,井通过传 速 度 / ・ _ I I Mb s 。 1 2 1 2 1 2 l 2 1 2 送 的 CR 位 对 数 据进 行错 误 检 测 , 然 C 端 点 数 1 5 7 6 7 7 最大包太小 1— o 4 6 12 8瑚 6 4 8 1/418 5 / 6 2 后 , 将 有效 数 据 送 到 US 设 备 。如 果 B Mc 接 口 U 并行 并 行或 并行 并 行
51单片机与USB芯片PDIUSBD12接口固件程序
51单片机与USB芯片PDIUSBD12接口固件程序关键词:USB固件程序此函数库可以直接使用PHILIPS的Demo驱动D12TEST以下只用了端点1进行控制传输,端点2的数据传输自己添加,没有使用DMA功能,为简单的固件程序/************************************************************* *************PHILIPS PDIUSBD12 FIRMWARECOPYRIGHT (c) 2005 BY JJJ.-- ALL RIGHTS RESERVED --File Name: D12_USB.hAuthor: Jiang Jian JunCreated: 2005/4/3Modified: NORevision: 1.0************************************************************** *************/#ifndef __D12_USB_H_REVISION_FIRST__#define __D12_USB_H_REVISION_FIRST__#include <REGX51.H>sbit SUSPEND = P3^5;#define D12_INT_ENDP0OUT 0x0001 //中断寄存器位定义#define D12_INT_ENDP0IN 0x0002#define D12_INT_ENDP1OUT 0x0004#define D12_INT_ENDP1IN 0x0008#define D12_INT_ENDP2OUT 0x0010#define D12_INT_ENDP2IN 0x0020#define D12_INT_BUSRESET 0x0040#define D12_INT_SUSPENDCHANGE 0x0080#define D12_INT_EOT 0x0100#define D12_SETUPPACKET 0x20 //读最后处理状态寄存器的设置信息包0010, 0000b#define EP0_PACKET_SIZE 16 //p0最大16byte#define USB_ENDPOINT_DIRECTION_MASK 0x80 //设备请求类型,传输方向D 7 1000,0000b#define USB_REQUEST_TYPE_MASK 0x30 //bmRequest的设置#define USB_REQUEST_MASK 0x0f#define USB_STANDARD_REQUEST 0x00 //5,6位的定义#define USB_VENDOR_REQUEST 0x20#define USB_DEVICE_DESCRIPTOR_TYPE 0x01 //描述符类型设备描述符01h,配置描述符02,接口描述符04,端点描述符05#define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02#define CONFIG_DESCRIPTOR_LENGTH 0x002E //配置描述符总长度//************************************************************ **************//Port And Macros And Structure And Union Definitions#define SWAP(x) ((((x) & 0x00FF) << 8) | (((x) >> 8) & 0x00FF)) //交换高低8位#define MSB(x) (((x) >> 8) & 0x00FF) //取数据高8位#define LSB(x) ((x) & 0x00FF) //取数据低8位typedef union _Event_Flags_ //定义USB事件标志数据类型{struct _Bit_Flags_{unsigned char Timer : 1; //定时器益出事件标记unsigned char BusReset : 1; //USB总线复位标志unsigned char Suspend : 1; //USB器件挂起标志unsigned char SetupPacket : 1; //收到SETUP包标志unsigned char RemoteWakeup : 1; //远程唤醒标志unsigned char InISR : 1; //USB中断服务标志unsigned char ControlState : 2; //控制端点处理状态//0:IDEL 空闲状态//1:TRANSMIT 数据发送状态//2:RECEIVE 数据接受状态unsigned char Configuration : 1; //配置标志(0:未配置;1:已配置) unsigned char Port1RxDone : 1; //端口1收到数据标志unsigned char Port2RxDone : 1; //端口2收到数据标志unsigned char Port1TxFull : 1; //端口1输出缓冲区满标志unsigned char Port2TxFull : 1; //端口2输出缓冲区满标志unsigned char Reserve : 3; //保留,未使用}Bits;unsigned short int Value;}EVENT_FLAGS; //事件标志数据类型typedef struct _DEVICE_REQUEST_{unsigned char bmRequestType; //请求类型unsigned char bRequest; //USB请求unsigned short wValue; //USB请求值unsigned short wIndex; //USB请求索引unsigned short wLength; //记数长度}DEVICE_REQUEST;#define MAX_CONTROLDATA_SIZE 8typedef struct _control_xfer{DEVICE_REQUEST DeviceRequest; //USB请求结构体unsigned short wLength; //传输数据的总字节数unsigned short wCount; //传输字节数统计unsigned char * pData; //传输数据指针unsigned char dataBuffer[MAX_CONTROLDATA_SIZE]; //请求的数据}CONTROL_XFER;static EVENT_FLAGS EventFlags; //定义为全局变量,用于与主程序的通信static CONTROL_XFER ControlData; //保存SETUP包请求类型和请求数据unsigned char idata EndPoint1Buffer[4]; //控制端点缓存unsigned char idata EndPoint2Buffer[64];//主端点缓存//************************************************************ **************//硬件提取层,多路地址/数据总线方式读写void Outportb(unsigned int Addr, unsigned char Data){*((unsigned char xdata *) Addr) = Data;}unsigned char Inportb(unsigned int Addr){return *((unsigned char xdata *) Addr);}void USB_Delay1ms(unsigned int count){unsigned int i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}//************************************************************ **************#define D12_DATA 0#define D12_COMMAND 1//PDIUSBD12命令接口函数void D12_SetMode(unsigned char bConfig,unsigned char bClkDiv){Outportb(D12_COMMAND,0xF3);Outportb(D12_DATA,bConfig);Outportb(D12_DATA,bClkDiv);}//设置端点void D12_SetEndpointStatus(unsigned char bEndp,unsigned char bStalled) {Outportb(D12_COMMAND,0x40+bEndp);Outportb(D12_DATA,bStalled);}//应答!!!!!void D12_AcknowledgeEndpoint(unsigned char endp){Outportb(D12_COMMAND,endp);Outportb(D12_COMMAND,0xF1);if(endp==0)Outportb(D12_COMMAND,0xF2);}//设置地址使能void D12_SetAddressEnable(unsigned char bAddress,unsigned char bEnable) {Outportb(D12_COMMAND,0xd0);if(bEnable) bAddress |= 0x80;Outportb(D12_DATA,bAddress);}//设置端点使能void D12_SetEndpointEnable(unsigned char bEnable){Outportb(D12_COMMAND,0xD8);if(bEnable)Outportb(D12_DATA,1);elseOutportb(D12_DATA,0);}//读中断寄存器unsigned short D12_ReadInterruptRegister(void){unsigned char b1;unsigned int j;Outportb(D12_COMMAND,0xF4);b1=Inportb(D12_DATA);j=Inportb(D12_DATA);j<<=8;j+=b1;return j;}//读取端点状态unsigned char D12_ReadEndpointStatus(unsigned char EndPoint){unsigned char BackValue;if(EventFlags.Bits.InISR == 0)EA = 0;Outportb(D12_COMMAND, 0x80 + EndPoint);//读取端点状态BackValue = Inportb(D12_DATA);if(EventFlags.Bits.InISR == 0)EA = 1;return BackValue;}//读端点最后处理状态unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp){Outportb(D12_COMMAND,0x40+bEndp);return Inportb(D12_DATA);}//读端口unsigned char D12_ReadEndpoint(unsigned char endp,unsigned char len,un signed char *buf){unsigned char i,j;Outportb(D12_COMMAND,endp);if((Inportb(D12_DATA)&0xff)==0)//" define D12_FULLEMPTY as 0xFF by newerreturn 0;Outportb(D12_COMMAND,0x80+endp);i=Inportb(D12_DATA);i=i&0x60;Outportb(D12_COMMAND,0xF0);j=Inportb(D12_DATA);j=Inportb(D12_DATA);if(j>len)j=len;for(i=0;i<j;i++)*(buf+i)=Inportb(D12_DATA);Outportb(D12_COMMAND,0xF2);return j;}unsigned char D12_ReadEndpoint_Int(unsigned char endp,unsigned char le n,unsigned char *buf){unsigned char i,j;Outportb(D12_COMMAND,endp);if((Inportb(D12_DATA)&0xff)==0)//" define D12_FULLEMPTY as 0xFF by newerreturn 0;Outportb(D12_COMMAND,0x80+endp);i=Inportb(D12_DATA);i=i&0x60;Outportb(D12_COMMAND,0xF0);j=Inportb(D12_DATA);j=Inportb(D12_DATA);if(j>len)j=len;for(i=0;i<j;i++)*(buf+i)=Inportb(D12_DATA);Outportb(D12_COMMAND,0xF2);return j;}unsigned char D12_WriteEndpoint(unsigned char endp,unsigned char len,un signed char * buf){unsigned char i;Outportb(D12_COMMAND,endp);Inportb(D12_DATA);Outportb(D12_COMMAND,0xF0);Outportb(D12_DATA,0);Outportb(D12_DATA,len);for(i=0;i<len;i++)Outportb(D12_DATA,*(buf+i));Outportb(D12_COMMAND,0xFA);return len;}unsigned char D12_WriteEndpoint_Int(unsigned char endp,unsigned char le n,unsigned char * buf){unsigned char i;Outportb(D12_COMMAND,endp);Inportb(D12_DATA);Outportb(D12_COMMAND,0xF0);Outportb(D12_DATA,0);Outportb(D12_DATA,len);for(i=0;i<len;i++)Outportb(D12_DATA,*(buf+i));Outportb(D12_COMMAND,0xFA);return len;}void DisconnectUSB(void){D12_SetMode(0x02,0x03);//SET TO ONE? by newer}void InitialUSBInt(void);void ConnectUSB(void){EventFlags.Value = 0x0000;InitialUSBInt();D12_SetMode(0x16,0x03);}void ReconnectUSB(void){SUSPEND = 0;DisconnectUSB();USB_Delay1ms(1000);ConnectUSB();}//************************************************************ **************//中断服务程序void InitialUSBInt(void){IT1=0; //低电平中断触发EX1=1; //允许外部中断PX1=0; //优先级低EA =1;}void EP0_Out(void){unsigned char ep_last,i;ep_last=D12_ReadLastTransactionStatus(0);//interrupt symbolif(ep_last&D12_SETUPPACKET){ //recieved SETUP packet ---by newerControlData.wLength=0;ControlData.wCount=0;if(D12_ReadEndpoint_Int(0,sizeof(ControlData.DeviceRequest),(unsigned ch ar *)(&(ControlData.DeviceRequest)))!=sizeof(DEVICE_REQUEST)){D12_SetEndpointStatus(0,1);D12_SetEndpointStatus(1,1);EventFlags.Bits.ControlState=0; //should define USB_IDLE first --by newerreturn;}acket=1;EventFlags.Bits.ControlState=0; //by newer}else{if(ControlData.DeviceRequest.wLength>16)//最大传16byte{EventFlags.Bits.ControlState=0; //by newerD12_SetEndpointStatus(0,1);D12_SetEndpointStatus(1,1);}else{EventFlags.Bits.ControlState=2;//by newer}}}}else if(EventFlags.Bits.ControlState==2){i=D12_ReadEndpoint_Int(0,EP0_PACKET_SIZE,ControlData.dataBuffer+Con trolData.wCount);ControlData.wCount+=i;if(i!=EP0_PACKET_SIZE||ControlData.wCount>=ControlData.wLength){EventFlags.Bits.SetupPacket=1;EventFlags.Bits.ControlState=0;}}elseEventFlags.Bits.ControlState=0;}void EP0_In(void){short i=ControlData.wLength-ControlData.wCount;D12_ReadLastTransactionStatus(1);if(EventFlags.Bits.ControlState!=1) return;if(i>=EP0_PACKET_SIZE){D12_WriteEndpoint_Int(1,EP0_PACKET_SIZE,ControlData.pData+ControlDat a.wCount);ControlData.wCount+=EP0_PACKET_SIZE;EventFlags.Bits.ControlState=1;return;}if(i!=0){D12_WriteEndpoint_Int(1,i,ControlData.pData+ControlData.wCount);ControlData.wCount+=i;EventFlags.Bits.ControlState=0;return;}D12_WriteEndpoint_Int(1,0,0);EventFlags.Bits.ControlState=0;}void EP1_Out(void){unsigned char Length;D12_ReadLastTransactionStatus(2); /* Clear interrupt flag */Length = D12_ReadEndpoint_Int(2, sizeof(EndPoint1Buffer),EndPoint1Buffe r);if(Length != 0)EventFlags.Bits.Port1RxDone = 1;}void EP1_In(void){D12_ReadLastTransactionStatus(3);}void EP2_Out(void){unsigned char Length,EP2Status;D12_ReadLastTransactionStatus(4); /* Clear interrupt flag */EP2Status = D12_ReadEndpointStatus(4);EP2Status&=0x60;Length = D12_ReadEndpoint(4,sizeof(EndPoint2Buffer),EndPoint2Buffer); if(EP2Status==0x60)Length = D12_ReadEndpoint(4,sizeof(EndPoint2Buffer),EndPoint2Buffer); if(Length != 0)EventFlags.Bits.Port2RxDone = 1;}void EP2_In(void){D12_ReadLastTransactionStatus(5); /* Clear interrupt flag */}//************************************************************ **************//请求处理typedef struct _usb_device_descriptor{unsigned char bLength;unsigned char bDescriptorType;unsigned int bcdUSB;unsigned char bDeviceClass;unsigned char bDeviceSubClass;unsigned char bDeviceProtocol;unsigned char bMaxPacketSize0;unsigned int idVendor;unsigned int idProduct;unsigned int bcdDevice;unsigned char iManufacturer;unsigned char iProduct;unsigned char iSerialNumber;unsigned char bNumConfiguations;}USB_DEVICE_DESCRIPTOR;code USB_DEVICE_DESCRIPTOR DeviceDescr={sizeof(USB_DEVICE_DESCRIPTOR),0x01,//USB_DEVICE_DESCRIPTOR_TYPE,SWAP(0x0100),0xDC,//USB_CLASS_CODE_TEST_CLASS_DEVICE,0, 0,EP0_PACKET_SIZE,SWAP(0x0471),SWAP(0x0666),SWAP(0x0100),0, 0, 0,25};//配置描述符typedef struct _usb_configuration_descriptor{unsigned char bLength[0x2e];}USB_CONFIGURATION_DESCRIPTOR;code USB_CONFIGURATION_DESCRIPTOR ConfigDescr={0x09,0x02,0x2e,0x00,0x01,0x01,0x00,0xa0,0x32,0x09,0x04,0x00,0x00,0x04,0xdc,0xa0,0xb0,0x00,0x07,0x05,0x81,0x03,0x02,0x00,0x0a,0x07,0x05,0x01,0x03,0x02,0x00,0x0a,0x07,0x05,0x82,0x02,0x40,0x00,0x0a,0x07,0x05,0x02,0x02,0x40,0x00,0x0a};//code_tramsitvoid code_transmit(unsigned char code *pRomData,unsigned short len) {ControlData.wCount=0;if(ControlData.wLength>len)ControlData.wLength=len;ControlData.pData=pRomData;if(ControlData.wLength>=EP0_PACKET_SIZE)D12_WriteEndpoint(1,EP0_PACKET_SIZE,ControlData.pData);ControlData.wCount+=EP0_PACKET_SIZE;EA = 0;EventFlags.Bits.ControlState=1;EA = 1;}else{D12_WriteEndpoint(1,ControlData.wLength,pRomData);ControlData.wCount+=ControlData.wLength;EA = 0;EventFlags.Bits.ControlState=0;EA = 1;}}//获取描述符void get_descriptor(void){if(MSB(ControlData.DeviceRequest.wValue)==USB_DEVICE_DESCRIPTOR_T YPE){code_transmit((unsigned char code*)&DeviceDescr,sizeof(USB_DEVICE_DE SCRIPTOR));return;}if(MSB(ControlData.DeviceRequest.wValue)==USB_CONFIGURATION_DESCR IPTOR_TYPE){if(ControlData.DeviceRequest.wLength>CONFIG_DESCRIPTOR_LENGTH)ControlData.DeviceRequest.wLength=CONFIG_DESCRIPTOR_LENGTH;//标识符总大小2E byte,第二次请求时wlength=0x00ff}//这里的ConfigDescr其实应该包括其他标识符!code_transmit((unsigned char code*)&ConfigDescr,ControlData.DeviceRequ est.wLength);return;}}//single transmitvoid single_transmit(unsigned char *buf,unsigned char len){if(len<=EP0_PACKET_SIZE){D12_WriteEndpoint(1,len,buf);}}//设置地址void set_address(void){D12_SetAddressEnable((unsigned char)(ControlData.DeviceRequest.wValue &0xff),1);//比如wValue是"02 00" 应该得到02single_transmit(0,0);}//设置配置void set_configuration(void){if(ControlData.DeviceRequest.wValue==0){single_transmit(0,0);EventFlags.Bits.Configuration=0;D12_SetEndpointEnable(0);}else if(ControlData.DeviceRequest.wValue==1){single_transmit(0,0);D12_SetEndpointEnable(0);D12_SetEndpointEnable(1);EventFlags.Bits.Configuration=1;}}//读取配置void get_configuration(void){unsigned char c=EventFlags.Bits.Configuration;single_transmit(&c,1);}//读取设备接口信息void get_interface(void){unsigned char txdat=0;single_transmit(&txdat,1);}static code void (*StandardDeviceRequest[])(void)= {0,0,0,0,0,set_address,get_descriptor,0,get_configuration,set_configuration,get_interface,0,0,0,0,0};static code void (*VendorDeviceRequest[])(void)={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};void ControlHandler(void){unsigned char type,req;type=ControlData.DeviceRequest.bmRequestType&USB_REQUEST_TYPE_MA SK;//0011,0000breq=ControlData.DeviceRequest.bRequest&USB_REQUEST_MASK;//0000,11 11bif(type==USB_STANDARD_REQUEST)(*StandardDeviceRequest[req])();else if(type==USB_VENDOR_REQUEST)(*VendorDeviceRequest[req])();}void USB_ISR(void) interrupt 2{unsigned int i_st;EA = 0;EventFlags.Bits.InISR=1;i_st=D12_ReadInterruptRegister();if(i_st!=0){if(i_st&D12_INT_ENDP0OUT)EP0_Out();if(i_st&D12_INT_ENDP0IN)EP0_In();if(i_st&D12_INT_ENDP1OUT)EP1_Out();if(i_st&D12_INT_ENDP1IN)EP1_In();if(i_st&D12_INT_ENDP2OUT)EP2_Out();if(i_st&D12_INT_ENDP2IN)EP2_In();}EventFlags.Bits.InISR=0;EA = 1;}//************************************************************ **************#endif//简单主程序文件,自己按需要改写#include <REGX51.H>#include "D12_USB.h"extern EVENT_FLAGS EventFlags; //事件信号extern unsigned char idata EndPoint1Buffer[4];main(){ReconnectUSB();while(1){if(EventFlags.Bits.SetupPacket){EA = 0;EventFlags.Bits.SetupPacket = 0; ControlHandler();EA = 1;}if(EventFlags.Bits.Timer){EventFlags.Bits.Timer = 0;}if(EventFlags.Bits.Port1RxDone){EventFlags.Bits.Port1RxDone = 0; }}}那么可以写5个函数:void print();void copy();void delete();void quit();void help();然后用一个函数指针数组把他们存在一起:void (*p[])() = {print, copy, delete, quit, help}; 然后根据用户入0,1,2,3,4来直接叫函数cin >> index;p[index]();。
基于C51单片机的USB接口课程设计
摘要:本课程设计实现具有按键输入、数据储存、数据通信等功能的单片机系统。
该系统基于C51单片机的USB接口设计,该系统由最小C51单片机系统、USB接口模块组成。
系统实现按键输入数据保存至E2PROM后,可通过USB接口传送至上位机功能。
通过对系统的仿真及实物调试,完成了系统设计,实现了课程设计的要求。
关键字:USB,数据通信,单片机,按键输入,E2PROMAbstract:This course designs the single slice of machine system that the realization has a keystroke, the data functions, such as storage and data correspondence...etc..That system connects a people's design according to USB of C51 single slice of machine, that system from the minimum C51 single slice of machine system, and USB pick up a people mold piece constitute.The system carries out a keystroke data to keep to E2 PROMs, can connect a highest of a people's transmission through USB machine function.Passing is true to imitating of system and the real object adjust to try, completed a system design and carried out the request of course design.Key words:USB, data correspondence, single slice of machine, keystroke, E2PROM目录前言 (1)1.总体设计方案 (2)1.1接口设计方案 (2)1.1.1独立模式即(USB接口芯片外接C51芯片) (2)1.1.2 USB接口芯片集成了MCU (2)1.2系统设计方案 (2)2.系统设计原理 (3)2.1 USB接口简介 (3)2.2 I2C总线简介 (3)3.单元模块设计 (4)3.1 USB硬件电路设计 (4)3.1.1电源电路模块 (4)3.1.2单片机最小系统模块 (5)3.1.3 E2PROM模块: (6)3.1.4 USB接口模块 (7)3.2 USB软件设计 (9)3.2.1主程序介绍: (9)3.2.2 E2PROM写程序: (10)3.2.3 E2PROM读程序: (13)3.2.4 USB接口程序 (14)4.系统功能调试 (15)4.1调试用的软件简介: (15)4.2模块调试过程及结果: (15)5.设计总结 (18)6.参考文献 (19)前言USB是英文Universal Serial BUS的缩写,中文含义是“通用串行总线”。
51单片机控制SL811HS的USB主机底层驱动,51单片机要点
51单片机控制SL811HS的USB主机底层驱动,51单片机,SL811HS,USB主机,传输事务引言基于USB接口的设备使用方便,性价比高,因此在人们的工作和生活中得到了广泛的应用,如U盘,移动硬盘,光驱,USB摄像头,USB鼠标键盘等,同时,51系列单片机以其成熟的技术和高性价比吸引了大量国内用户,被广泛应用于测控和自动化领域,因此,如果在51单片机系统中增加USB主机接口,实现对USB从机设备的控制,则该单片机系统可以充分利用现有的各种USB从机设备,大大扩展单片机系统功能。
本设计实现了在51单片机系统中增加USB引言基于USB接口的设备使用方便,性价比高,因此在人们的工作和生活中得到了广泛的应用,如U盘,移动硬盘,光驱,USB摄像头,USB鼠标键盘等,同时,51系列单片机以其成熟的技术和高性价比吸引了大量国内用户,被广泛应用于测控和自动化领域,因此,如果在51单片机系统中增加USB主机接口,实现对USB从机设备的控制,则该单片机系统可以充分利用现有的各种USB从机设备,大大扩展单片机系统功能。
本设计实现了在51单片机系统中增加USB主机功能,采用普通51单片机外接专用USB接口芯片的方案,这种方案虽然会使系统传输速度受到限制,而且在稳定性有所欠缺,但此方案设计灵活性高,且易于移植,为低成本产品的开发提供了广阔前景,设计中采用51单片机是Atmel公司的AT89S52芯片,USB主机功能的扩展通过外接专用USB接口芯片SL811HS实现,CYPRESS公司的USB 接口芯片SL811HS可以工作在主机或从机模式,支持USB1.1的全速和低速数据传输,工作在主机模式时,SL811HS可以自动检测外设的插拔动作,可以按照外处理器(如单片机)的要求自动把数据整合为USB协议数据包进行数据传输。
本文将介绍单片机AT89S52控制SL811HS的硬件设备和底层驱动的编写,其中重点讲述底层驱动的设计。
51单片机-ch375
51单片机usb(CH375)的设计1.1 系统功能简介本设计主要完成U盘的识别和数据的读取,并将U盘中读取的MP3文件解码播放出流畅的音乐,完成.MP3播放器的存储与解码的分离。
系统功能主要包括读取U盘数据和MP3解码播放2部分。
实现设计功能需要USB接口芯片、MP3解码芯片、主控制器和其他外围电路。
考略难易程度和实际实现程度,这里的MP3只提供从u盘的根目录读取MP3格式的文件(不包括wma,wmv,midi格式),而且u盘的文件格式必须为F AT32。
再者,考略到单片机的运行速度较慢,如果文件的采样频率额过高,可能会造成播放断断续续,因此读取的MP3文件的采样频率事先转化为频率64k ps,这样可以获得较好的音质。
2.主要芯片的选取2.1.单片机的选取由于解码和播放有很高的速度要求,且需要单片机有较大的ROM和RAM,这里我们选取了STC12C5A60S2。
STC12C5A60S2是新一代51单片机,是传统51单片机的升级换代产品,可实现“1个时钟/机器周期”,在同等晶振下运行速度可以达到传统单片机的12倍。
在这里,我们采用22.1184M.2.2.USB总线接口芯片的选取通过比较部分参数,我们选择南京沁恒电子生产的一款USB通用接口芯片CH375。
CH375是一个USB总线的通用接口芯片,CH375芯片支持HOST主机方式和DEV IC E设备方式,在本地端,CH375具有8位数据总线和读、写、片选控制线以及终端输出,可以方便地挂接到单片机等控制器的系统总线上。
最重要的是,该芯片内置固件处理海量存储设备的专用通讯协议,可以使我们的编程难度大大减小。
内部集成了PLL倍频器、主从USB接口、数据缓冲区、被动并行接口、异步串行接口、命令解释器、控制传输的协议处理器、通用的固件程序等。
2.3.音频解码芯片的选取音频解码芯片选择芬兰VLSI公司生产的VSl003。
VSl003具有MP3/wMA /MIDI解码和ADPCM编码功能,他内部包含一个高性能、低功耗的DSP处理核(VSD一SP),为用户应用提供5KB的指令RAM和0.5kb的数据RAM。
基于51单片机的USB接口应用设计
基于51单片机的USB接口应用设计郭辛;陈燕;杨艳【摘要】In this paper, the USB connector circuit driver unit and the driver software were designed by using CH372 chip as the key component based on MCS-51 single -chip microcomputer (SCM), and the Dynamic Link Library (DLL) technology, completing the test between the host machine and SCM system through the USB connector. The results proved that, the host data can be exchanged under the speed rate of 1Mbps, and the high efficiency driver chip and communicational SCM system could be used for data exchange once exceeding the limit.%基于MCS-51单片机系统,以CH372芯片为核心,设计出了USB接口单元电路和驱动程序。
并以PC机为宿主机,通过USB接口,利用动态链接库技术完成了PC机与单片机系统间的传输测试。
研究表明:在低于1Mbps速率下,能成功实现微机和单片机之间的数据交换,对于较高速率的传输方式,应采用更高效的驱动芯片或通信类专用单片机系统完成并实现微机和单片机之间的数据交换。
【期刊名称】《绵阳师范学院学报》【年(卷),期】2012(031)011【总页数】4页(P37-40)【关键词】CH372芯片;USB接口;驱动程序【作者】郭辛;陈燕;杨艳【作者单位】绵阳师范学院物理与电子工程学院,四川绵阳621000;绵阳师范学院物理与电子工程学院,四川绵阳621000;绵阳师范学院物理与电子工程学院,四川绵阳621000【正文语种】中文【中图分类】TP311.10 引言随着USB接口技术在计算机上的广泛应用,USB通信方案将在控制领域显示越来越重要的作用和广阔的发展空间,并随着电子技术和计算机技术的飞速发展,USB 技术在PC机上的应用越来越广泛,传统的鼠标、打印机接口已逐步被更为便捷的USB口所取代;而单片机由于自身功能局限,USB技术在单片机系统(SCM)中的使用受到了局限,尤其在工业控制领域数据通信仍沿用传统的串口通讯方案。
基于51单片机的usb键盘设计与实现生本科学位论文
三江学院本科生毕业设计(论文)题目基于51单片机的USB键盘设计与实现高职院院(系)电气工程及其自动化专业学生姓名梁邱一学号 G105071013指导教师孙传峰职称讲师指导教师工作单位三江学院起讫日期 2013年12月10日至2014年4月12日摘要随着计算机技术的不断更新和多媒体技术的快速发展,传统的计算机外设接口因为存在许多缺点已经不能适应计算机的发展需要。
比起传统的AT,PS/2,串口,通用串行总线USB,具有速度快,使用方便灵活,易于扩展,支持即插即用,成本低廉等一系列优点,得到了广泛的应用。
本论文阐述了51系列单片机和USB的相关内容,详细介绍了系统的一些功能设计,包括硬件设计和软件设计。
在程序调试期间用简单的串口通信电路,通过串口调试助手掌握了USB指令的传输过程,这对整个方案的设计起到了很大的指导作用。
论文以单片机最小系统配合模拟键盘组成的USB键盘硬件系统,通过对D12芯片的学习与探索,在其基本命令接口的支持下,结合硬件进行相应的固件程序设计,使其在USB协议下,实现USB模块与PC的数据通信,完成USB键盘的功能模拟。
总结论文研究工作有阐述USB总线的原理、对本设计的系统要求作出了分析、根据要求选定元件和具体编程方案、针对系统所要实现的功能对相关芯片作了详细介绍以及在硬件部分设计了原理图。
关键词:USB;D12;PCAbstractWith the rapid development of computer technology and multimedia technology constantly updated, traditional computer peripheral interface because there are many shortcomings have been unable to meet the development needs of thepared to traditional AT, PS / 2, serial, Universal Serial Bus USB, with fast, flexible and easy to use, easy to expand, support Plug and Play, a series of advantages, such as low cost, has been widely used.This paper describes the 51 series and USB related content, detailing some of the features of the system design, including hardware and software design.During debugging a simple serial communication circuit, through the serial port debugging assistant master USB transfer instructions, which designed the entire program has played a significant role in guiding.Thesis smallest single-chip system consisting of analog keyboard with a USB keyboard hardware system, by learning and explorationD12 chips, with the support of its basic command interface, in conjunction with the corresponding hardware firmware design, making it in the USB protocol, USB module data communication with the PC, the USB keyboard to complete the functional simulation.This paper summarizes research work has elaborated the principle of the USB bus, the system is designed to require the analysis, components and solutions based on the specific requirements of the selected programming for the system to achieve the function of the relevant chips are described in detail in the hardware part of the design as well as the principle of Figure.Keywords:USB;D12;PC目录第一章绪论 (1)1.1 PC接口简介 (1)1.2 USB 接口分析 (1)1.3 USB 器件的选择 (1)第二章系统分析 (3)2.1 USB总线简介 (3)2.2 USB技术指标 (3)2.3 USB系统构成 (4)第3章系统硬件设计 (6)3.1 STC89C52单片机简介及最小系统 (6)3.1.1 单片机发展概况及发展方向 (6)3.1.2 单片机特点及结构 (6)3.1.3 复位电路设计 (8)3.1.4 单片机最小系统硬件设计 (9)3.2 PDIUSBD12接口芯片设计 (9)3.2.1 USB接口芯片简介 (9)3.2.2 USB接口芯片引脚配置 (11)3.2.3 USB接口芯片硬件设计 (14)3.2.4 USB接口芯片端点描述 (14)3.2.5 USB接口芯片命令 (16)3.3 USB键盘硬件设计 (18)第4章系统软件设计 (19)4.1 固件编程的实现 (20)4.1.1 USB接口芯片工作流程图 (20)4.1.2 PDIUSBD12命令接口----PDIUSBD12.C (21)4.1.3 USB中断服务程序----USBISR.C (21)4.1.4 按键处理流程图 (21)4.1.5 USB键盘处理程序---KEY.C (22)4.1.6 USB主循环程序----MAIN.C (23)4.2 实物演示 (25)结束语 (27)致谢 (28)参考文献 (29)附录A (30)附录B (37)第一章绪论1.1 PC接口简介PC中的接口有两类:串行接口和并行接口。
(完整版)AT89C51单片机USB接口驱动和应用程序的开发毕业论文
北方民族大学学士学位论文论文题目:AT89C51单片机USB接口驱动和应用程序的开发院(部)名称:电信学院学生姓名:杨闯指导教师姓名:周春艳论文提交时间: 2010年5月24日论文答辩时间:2010年5月29日学位授予时间:北方民族大学教务摘要通用串行总线USB是一种新兴的并逐渐取代其他接口标准的数据通信标准。
USB,由于速度快,使用方便灵活,易于扩展,支持即插即用,成本低廉等一系列优点,得到了广泛的应用。
本论文以基于USB总线的数据采集系统的研制过程为主要内容,阐述了利用CH372与ATMEL的AT89C51等组成的一套数据采集系统的设计方案、开发方法和开发过程,并给出了具体实现方案。
论文首先简要介绍了USB总线的相关内容,然后介绍了数据采集系统的设计。
数据采集系统的设计包括硬件设计、固件程序开发、驱动程序开发和应用程序开发四部分。
在硬件设计部分,首先介绍了设计中所用的CH372的性能和特点,然后给出了具体硬件设计方案,并对设计中应该注意的问题进行了说明。
驱动和应用程序主要完成USB设备的读写和即插即用功能,并提供一个友好的人机界面,对数据采集系统进行控制并显示采集后的数据。
本论文已完成了基于USB总线的数据采集系统的设计,用其实现了基本的数据采集功能。
使用USB总线传输数据,为数据采集系统与计算机之间的通讯开辟了新的道路。
关键词:USB、驱动程序、应用程序、AT89C51、CH372AbstractUniversal serial bus USB is one kind of emerging and replace other interface standards of data communication standards. USB, due to fast, convenient and flexible easy to expand, to support plug and play, low cost advantages, such as widely application.The paper is mainly concerned with design process of data acquisition system that is based on USB bus. The design scheme, developing method and developing process of a suit of data acquisition system used with CH372 and ATMEL’s AT89C51 are expatiate. In addition, the paper also gives the material realization scheme.At fist, the paper introduces the protocol of USB bus in brief, and then discusses the design of data acquisition system, which includes four parts, , firmware design, device driver and application program. In the in detail; the questions which should be paid attention to in design is explained. Drivers and applications of the main equipment and USB plug and play function, and provide a friendly -machine interface, control ofdata acquisition system and display the data collection.The paper of data acquisition system based on USB bus and realizedthe basal data acquisition foundation. Using USB bus to transfer data blazed a way in communication between data acquisition system and computer.Keywords: USB、Drive、Applications、AT89C51、CH372目录第1章绪论 (1)1.1 引言 (5)1.2 USB的特点 (5)1.3 USB实时数据采集系统的实现方案 (7)第2章 USB体系简介 (8)2.1 体系概述 (8)2.2 USB的传输类型 (10)2.3 USB的设备状态 (13)第3章 USB数据采集系统的硬件设计 (16)3.1 USB 接口方案 (16)3.2 USB接口的硬件设计 (17)3.2.1 CH372简介 (17)3.2.2 USB接口的硬件电路设计 (23)3.3 USB接口硬件的实现 (25)3.3.1时钟电路 (25)3.3.2 复位电路 (25)3.3.3 AD转换电路 (26)3.3.4 CH372接口电路 (27)3.3.5 单片机扩展RAM接口电路 (28)第4章 USB数据采集系统设备固件编写 (28)4.1 固件设计方案及工作流程 (29)4.1.1固件的设计思想 (29)4.1.2固件的工作流程 (29)4.2固件开发 (30)4.2.1主循环模块(MAINLOOP.C) (30)4.2.2外接口模块 (31)4.2.3 CH375_INIT初始化模块 (31)4.2.4上传数据块模块 (31)4.2.5上传中断数据模块 (31)第5章 USB设备驱动程序及应用程序 (32)5.1驱动开发工具的选择 (32)5.2 WDM概述 (32)5.3 主要模块设计 (33)5.3.1 初始化模块 (34)5.3.2即插即用管理模块 (34)5.3.3 I\O控制模块 (37)5.4 应用程序设计与实现 (37)5.4.1 操作例程及初始化 (38)5.4.2 设备读写接口程序的实现 (39)5.4.3 数据传输程序的设计和实现 (40)5.5 用户应用程序的具体实现 (45)结束语 (46)致谢 (47)参考文献 (47)附录一 (48)附录二 (48)第1章绪论1.1 引言现代工业生产和科学研究对数据采集系统的要求日益提高,目前比较通用的方法已逐渐不能适应其要求。
自制简单方便的51avr单片机USB+ISP+下载线
自制简单方便的51avr单片机USB ISP 下载线(硬件部分)文章发表于:2009-05-24 11:05?如今呢是使用笔记本的人越来越多了,可是呢买了笔记本对于学习很多单片机比如说51或者AVR就不方便了。
因为大多数电脑都不带串并口了。
但是呢新出的笔记本上的USB接口是足够用的。
因而都想用US B转了串口或者并口就能方便单片机学习开发时的ISP编程或者JTAG仿真了。
其实很多单片机开发商和销售商都早就有了USBisp的配套软件和硬件了的,只不过都比较昂贵,而且技术资料多是保密的,对于自己小本学习单片机的人而言不免都希望能与价廉物美的USBISP烧写器,而且也多想自己动手做一个了。
网上公开的比较流行的支持51和AVR的烧写器是用ATMEL公司的MAGE8单片机做的,其机理也就是通过软件编程的方式将USB接口信号转换为并口信号以实现ISP的。
其原理图如下图:使用的是个名叫PROGISP的软件,我收集了制作的相关资料在压缩包中,有兴趣的朋友可以看看或者尝试一下。
但是呢我在这里主要并不是向大家介绍这个MAGE8做的USBISP下载线,因为它的编程软件很强大但是配置太灵活了,对于初学者,很容易配错相关设置,比如AVR的融丝位,弄不好可能将你的AVR单片机锁死了。
而且烧入MAGE8的固件有可能不支持51或AVR,找固件比较麻烦。
我要向大家推荐的另一种方案是用专门的USB转串口的USB芯片。
利用它制作一个USBISP下载线,而且支持51和AVR系列的单片机,功能算比较强的,电路也并不比MAGE8做的USBISP下载线难多少,只需要在主芯片外接晶振和几个电容电阻就是了。
这个方案就是利用国产的南京沁恒公司的CH341A芯片将USB转为并口直接实现ISP编程。
可以去南京沁恒公司网页申请到免费样片(注意要做USB下载线一定要申请CH341A,填写申请表时后缀字母A不能写错了)其电路图如下图:?PCB图如下自己买来元器件后很快就可以焊好了的,当然为了保证稳定工作要注意必须给单片机单独供电而且其接地和CH341的USB电源的地必须公地。
最新51单片机控制SL811HS的USB主机底层驱动汇总
51单片机控制S L811H S的U S B主机底层驱动51单片机控制SL811HS的USB主机底层驱动技术分类:通信微处理器与DSP消费电子设计 | 2006-08-14来源:电子设计应用 | 作者:华南理工大学微电子研究所陈智荣李斌引言基于USB接口的设备使用方便,性价比高,因此在人们的工作和生活中得到了广泛的应用,如U盘、移动硬盘、移动光驱、USB摄像头、USB鼠标键盘等。
同时,51 系列单片机以其成熟的技术和高性价比吸引了大量国内用户,被广泛应用于测控和自动化领域。
因此,如果在51 单片机系统中增加USB 主机接口,实现对USB 从机设备的控制,则该单片机系统可充分利用现有的各种USB从机设备,大大扩展单片机系统的功能。
本设计实现了在51单片机系统中增加USB主机功能,采用普通51单片机外接专用USB接口芯片的方案。
这种方案虽然会使系统传输速度受到限制,而且在稳定性方面有所欠缺,但此方案设计灵活性高,且易于移植,为低成本产品的开发提供了广阔前景。
设计中采用的51单片机是Atmel公司的AT89S52芯片,USB主机功能的扩展通过外接专用USB接口芯片SL811HS实现。
CYPRESS公司的USB接口芯片SL811HS可以工作在主机或从机模式,支持USB1.1的全速和低速数据传输。
工作在主机模式时,SL811HS可以自动检测外设的插拔动作,可以按照外处理器(如单片机)的要求自动把数据整合为USB协议数据包进行数据传输。
图 1 系统硬件示意图本文将介绍单片机AT89S52控制SL811HS的硬件设计和底层驱动的编写,其中重点讲述底层驱动的设计。
硬件设计系统的硬件原理图如图1所示。
AT89S52的供电电压为5V,SL811HS的为3.3V。
尽管供电电压不同,但根据芯片引脚的信号噪声容限参数分析可知,AT89S52与SL811HS之间的引脚可以直接相连,不需要电平转换或缓冲。
表1 USB主机枚举操作驱动的层次关系软件设计USB主机驱动是一个高低层子程序的组合,实现USB传输和控制的过程是较高层子程序调用较低层子程序的过程。
单片机与USB接口设计
单片机与USB接口设计摘要:51系列芯片的串口通信速率较低,会在其串口通信中形成一个速度瓶颈。
通用串行总线(USB)作为一种新的微机总线接口规范,具有便捷、易扩展、低成本、低干扰等特点,非常适合作为主机和外设之间的通信接口。
本文介绍了一种比较简单方便设计USB设备的方法,设计采用51单片机和USB接口芯片组成的单片机最小系统来实现一个完整的USB设备,大大提高了通信速率。
在设计中,采用的控制器是51单片机AT89S52,USB电气接口则是PHILIPS公司的USB接口芯片PDIUSBD12。
单片机控制器作为下位机,通过USB电气接口芯片和USB总线与PC机交换数据,并实现USB设备的逻辑功能。
系统开发的最终硬件成果是一个带有USB接口的设备,通过USB 电缆与PC机相连接,能够实现主机对设备的列举,以及和PC机交换数据,并实现其扩展功能。
关键词:USB;单片机系统;PDIUSBD12;AT89S52;接口技术USB interface in the design of communicationAbstract:The communication rate of the series 51 chip is lower and it forms a tare bottle neck in serial communication. This paper introduced a simple and convenient method to design a USB apparatus, that is to say, to realize an intact USB apparatus with a minimum system of single-chip computer that made of 51 single-chip computer and USB interface, the circuit greatly improves communication rate. In this system, I adopted 51 one-chip computers AT89S52 as its controller, the chip PDIUSBD12 of PHILIPS Company as its electric interface. The one-chip computer as the next machine, exchanges the data with the PC, through the USB bus and USB electric interface chip, and it realizes the logic function of USB apparatus. It can exchange data with PC, and realize its expanding function, through connecting with PC.Key words:single-chip computer system;interface technology;PDIUSBD12;AT89S52;USB0 引 言USB 是英文UniversalSerialBus 的缩写,中文含义是“通用串行总线”。
USB接口技术在单片机设计中的实践与探索
USB接口技术在单片机设计中的实践与探索摘要:随着科技的不断进步和人们对数据传输速度的需求增加,USB(Universal Serial Bus,通用串行总线)接口技术已经成为了现代电子设备中最常用的接口之一。
本文将探讨USB接口技术在单片机设计中的应用,包括USB接口的定义、USB接口在单片机中的工作原理以及设计中的实践经验。
一、引言随着无线通信和互联网的快速发展,人们对数据传输的需求越来越高。
USB接口技术作为一种高速、灵活和易用的接口技术,已经成为了现代电子设备中必不可少的部分。
在单片机设计中,使用USB接口可以实现快速、稳定和安全的数据传输,大大提高了设备的性能和用户体验。
二、USB接口的定义USB接口是一种用于连接计算机和外部设备的串行总线标准。
它通过一根数据线和一根供电线实现数据和电源的传输,同时还包括一些控制线用于设备的管理。
USB接口标准由USB Implementers Forum(USBIF)负责制定和维护,目前最新的USB接口标准为USB3.2。
三、USB接口在单片机中的工作原理USB接口在单片机中的工作原理主要包括四个方面:电路连接、通信协议、数据传输和供电管理。
1. 电路连接:USB接口由A型插头和B型插口组成,A型插头连接到主机(计算机)端,B型插口连接到设备(单片机)端。
在电路连接中,还包括数据线、供电线和控制线的连接。
2. 通信协议:USB接口使用一种称为USB协议的通信协议,在传输数据之前,主机和设备会进行一系列的握手过程,以确定通信参数和建立数据通道。
3. 数据传输:USB接口支持多种数据传输方式,包括控制传输、批量传输、中断传输和等时传输。
不同的传输方式适用于不同的应用场景,例如批量传输适用于大数据传输,中断传输适用于实时响应的数据传输。
4. 供电管理:USB接口还提供了供电管理功能,通过控制线对设备进行供电管理,包括设备的上电、下电和暂停功能。
四、USB接口在单片机设计中的实践经验在实际的单片机设计中,我们可以根据具体的需求来选择合适的USB接口方案,并根据经验总结出以下几点实践经验:1. 合理选择USB接口版本:根据具体需求选择合适的USB接口版本,USB1.1适用于低速和全速设备,USB2.0适用于高速设备,USB3.0和USB3.1适用于超高速设备。
基于51单片机的口袋式实验平台的硬件设计与实现
收稿日期:2018-10-12*基金项目:2018年度江苏省高等学校自然科学研究面上项目,项目名称:基于深度学习的目标识别技术在增强现实中的研究与应用,编号: 18KJB520023。
作者简介:丛玉华(1981—),女,山东海阳人,硕士研究生,讲师,研究方向:嵌入式物联网。
0 引言51系列单片机是目前应用非常广泛的一类微处理器,价格低廉功能强大。
主要应用领域有:智能化家用电器,办公自动化设备,商业营销设备,工业自动化控制,智能化仪表,智能化通信产品,汽车电子产品,航空航天系统和国防军事、尖端武器等领域。
为此,51单片机作为8位微控制器,一直是高校自动化相关专业学生学习嵌入式知识体系的基础课程,也是对实践要求较高的应用型课程。
为提高学生的理论联系实际的能力,加强学生实践内容的学习。
本文将设计一款适用于学生学习的轻型实验平台,一方面根据具体教学内容量身设计更有针对性,另一方面平台小巧便携可随时进行实践操练。
1 授课内容选择51单片机的授课内容主要分四部分:分别是片内基础部件、输入与显示、系统扩展以及AD和DA。
下面是具体内容:1.1 片内基础部件51单片机片内基础部件包括:51单片机的内核,即单片机的CPU部件;内存部件,即片内的程序存储器ROM和片内的数据存储器RAM;I/O端口,即基本输入输出口;Timer部件,即定时/计数器;中断控制器,即管理5个中断源的控制部件;RS-232通信控制器,即串行通信控制器。
在上述基本部件里,需要实践应用的是I/O端口,Timer部件,中断控制器和RS-232串口通信部件。
1.2 输入与显示输入主要指外部输入设备提供输入信号,单片机I/O口采集输入信号并进行处理的功能。
输入部分主要学习的是按键,包括独立按键和矩阵按键。
显示主要指单片机输出显示信息,通过显示设备进行显示的功能,显示学习的主要内容是:数码管(静态数码管和动态数码管),LCD1602液晶显示器。
1.3 系统扩展51单片机在与外设进行接口设计时,随着外设部件的增加,需要对系统资源进行优化,并根据情况进行资源的扩展,扩展主要分两种类型:并行扩展和串行扩展,其中并行扩展包括简单的并行扩展(比如存储器扩展/锁存器扩展)和智能扩展(比如对I/O口进行扩展的8155芯片);串行扩展主要选择IIC总线扩展以具有IIC总线的AT24C02芯片为例。
基于USB接口的51单片机在线编程设计
基于USB接口的51单片机在线编程设计陈志英【摘要】本文论述了一种基于USB接口51单片机AT89S51/52/53的ISP在线编程设计方案,重点讨论了由CH341芯片实现的USB-SPI硬件接口转换电路及VB 上位机编程软件的设计。
该方案硬件电路简单实用,并具有成本低、体积小、功耗低和可靠性高等特点,具有较好的推广价值。
%The paper presents a design of 51 microcontroller AT89S51/52/53 in system programming base on USB interface,emphasis on the hardware design of USB-SPI interface circuit and the design of PC software for microcontroller programming by VB.The design has many advantages such as small size,low power consumption,high reliability etc.It is very valuable in the applications of 51 microcontroller and is worth references as well.【期刊名称】《电气电子教学学报》【年(卷),期】2012(034)005【总页数】3页(P49-51)【关键词】ISP在线编程;USB-SPI接口;VB上位机软件【作者】陈志英【作者单位】厦门理工学院电子与电气工程系,福建厦门361024【正文语种】中文【中图分类】TP368.20 引言51单片机的Flash存储器程序烧写主要有两种模式:并行Flash编程和串行Flash编程。
其中串Flash编程模式支持ISP编程(系统在线编程),这种模式在烧写单片机应用程序时不需要把芯片从工作环境中剥离,解决了在开发产品时因频繁插拔芯片导致其引脚折断从而损坏芯片的问题,同时也给系统软件升级提供了便利。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科毕业设计(论文)开题报告
系所:
电子工程系
专业:
班级:
姓名:
学号:
开题日期:2013年11月22日
论文
题目
基于51单片机的USB控制器的硬件设计与实现
选
题
的
背
景
、
目
的
和
意
义
由于多媒体技术的发展,对外设与电脑主机之间的数据传输率有了更高的需求,因此,USB总线技术应运而生。从USB的诞生到现在已经有了很大的进步,从最初的USB1.0到现在的USB3.0的技术发展,USB的使用变得越来越广泛。近年来,USB接口以其快速、即插即用、使用安装方便等优点逐渐成为现代数据传输的发展趋势。与老式的计算机接口相比,USB总线具有诸多优点,因此USB己经成为计算机相关外围设备的主流接口。从国外的发展情况来看,人们对USB技术极为关注,这从USB规范的改进速度和国际市场上基于USB产品普及程度可以看出。由于USB的各种协议都是国外提出的,国内目前对USB系统的研究主要在实际应用方面,例如国内现在生产的计算机都配置了USB接口,一些以往的计算机通用外设和主流的数码产品中也广泛采用USB技术。另外,现在飞速发展的嵌入式系统中也广泛使用USB技术,并成为当今嵌入式开发和应用中的一个热点。
机与设备的设计[J].微计算机信息,2005,(11).
[7]路永坤.基于USB接口的数据采集模块的设计与实现〔J].自动
化仪表,2005,26(2):3 5一37.
指导教师评语及改进意见
□同意开题□不同意开题
指导教师签字:年月日
系评语及改进意见
□同意开题□不同意开题
系主任签字(盖章):年月日
方案二:单片机采用STC89C52RC,USB芯片采用PDIUSBD12。
方案二优点:成本低,且两种芯片搭配使用的成功案例较多。
方案二缺点:STC89C52RC性能有限,在数据处理上会略显吃力。
综上所述,本设计以测试为主,选择方案二即可。
选
题
特
色
和
预
期
成
果
使用单片机采用STC89C52RC和USB芯片采用PDIUSBD12实现一个假U盘设备。当设备连接到电脑上后,设备被电脑识别为一个大容量存储设备,采用USB供电,插到电脑上后进入“我的电脑”,可以看到多出一块磁盘。里面会有一个测试文本文件TEST.TXT,占用了一定存储空间,这是在单片机固件程序中模拟的一个文件,文本文件内的内容是在固件代码中设置好的,可以对这个文件进行读写。以此来实现模拟U盘的控制。就是在单片机的内部模拟一个FAT16的文件系统,做一个假U盘。
一个扇区也叫引导扇区,它含有对文件系统识别的关键信息。根目录区存放目录项,每个目录项为32个字节,记录一个文件或目录的信息。FAT区即文件分配表,操作系统分配磁盘空间按簇来分配的。同一个文件的数据并不一定完整地存放在磁盘的一个连续的区
域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号,对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,FAT表的对应表项中记录着它所代表的簇的有关信息:诸如是否空,是否是坏簇,是否已经是某个文件的尾簇等。目录项所占的最后一个扇区之后,便是真正存放文件数据的位置了。
工
作
进
度计Βιβλιοθήκη 划主要参
考
文
献
[1]Cypressse miconductorco rporation.S L811H Sd ates heet[M ] .2002.
[2] Microsoftco rporation.F ATF ileS ystemS pecification[M ] .19 99.
[3]Compaq,In ter,M icorsoft,NEC.U niversalS erialB usS pecification
应
用
原
理
和
理
论
依
据
U盘属于大容量存储设备,当U盘枚举成功后,主机与USB设备通过BULK-ONLY传输方式传输数据,所有的通信数据都通过BULK-IN和BULK-OUT端点传输。在这种传输方式下,有CBW,CS W和普通数据三种类型的数据在USB和设备之间传送。命令块包CBW (command block wrapper)是从USB Host发送到设备的命令,命令格式遵从接口bInterfaceSub-Class中所指定的命令块,这里为SCSI传输命令集。USB设备需要将SCSI命令从CBW中提取出来,执行相应的命令,完成以后,向Host发出反映当前命令执行状态的CSW,H ost根据CSW来决定是否继续发送下一个CBW或是数据。Host要求USB设备执行的命令可能为发送数据,则此时需要将特定数据传送出去,完毕后发出CSW,以使Host进行下一步的操作。U盘一般支持FAT16文件系统,它可以分成保留区、FAT区、根目录区、数据区4个部分保留区的第
[M ]. Re visionl.1 ,19 98.
[4]史波,田凯通用串行总线USB技术概述【1l.信息技术,20DI,(4 )
[5]许永和.8051单片机USB接口程序设计【M].北京:北京航空航天大学出版社,2004.
[6]冉光志,赵明生.基于SLSII H ST和S3C4510B的嵌人式USB主
方
案
论
证
分
析
方案一:单片机采用C8051F340单片机,USB芯片采用PB375A。
方案一有点:C8051F340单片机整体性能较高,搭配USB芯片采用PB375A使用后,设计的产品性能较高,可以得到更好的使用体验。
方案一缺点:C8051F340成本较高,且设计较为复杂,并且USB芯片采用PB375A的现有资料较少,开发起来少有难度。