基于c51单片机的usb接口内容摘要:

一特 点给用户在设计应用系统带来了极大的便利 I2C 器件无须片选信号是否选中是由主器件发出的 I2C 从地址决定的而 I2C 器件的从地址是由 I2C 总线委员会实行统一发配我们推出的 I2C 总线的操作平台软件包只要你给出器件从地址即可进行字节读字节写多字节读多字节写能够非常方便地使用 I2C 器件无须你介入底层的 I2C 操作协议。 它是连接 USB 和 89C51 单片机所用到的总线,很方便的传送和接收数据。 3.单元模块设计 USB 硬件电路设计 电源电路模块 电源电路为有两个,通过 DCDC 器件( 7805) 将 9V 电压转换为 5V。 DC/DC 是一种高频模块电源,它可以实现直流到直流的变换,既可以把输入电压变低,也可以把输入电压变高, 还可以把电源极性反转,而且输人电压还可以在一定的范围内变化。 一路输人电压可以得到几路输出电压。 直流输出电压和输出电流有很多档次供使用者选择,而且 体积小、输出功率大。 在 DCDC 变换中, pwm和 pfm 是两种基本的控制方式,除此之外,还有相移控制等。 pwm 控制一般指开关周期固定,即频率固定,通过改变开关导通时间,调节输出电压,而 pfm一般指开关导通时间固定,通过改变开关周期,来调节输出 电压,在有些谐振电路中,因为顾忌谐振周期的缘故,所以多采用 pfm 但是, pfm控制方式,使的开关频率变化,使的滤波器的设计很困难,一般不采用。 图 5 电源电路图 5 单片机最小系统模块 89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器( FPEROM— Falsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机。 89C2051 是一种带 2K 字节闪烁可编程可擦除只读存储器的单片机。 单片机的可擦除只读存储器可以反复 擦除 100 次。 该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS51 指令集和输出管脚相兼容。 由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中, ATMEL 的 89C51 是一种高效微控制器, 89C2051 是它的一种精简版本。 89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案 图 6 单片机最小系统图 6 E2PROM 模块: E2PROM 芯片: CSI24WC02 CSI24WC02 是一个 2K 位串行 CMOS E2PROM 内部含有 256 个 8 位字节 CATALYST 公司的先进 CMOS 技术实质上减少了器件的功耗, CSI24WC01 有一个 8 字节页写缓冲器CSI24WC0 有一个 16 字节页写缓冲器该器件通过 I2C 总线接口进行操作,有一个专门的写保护功能。 表 1 CSI24WC02管脚描述 管脚名称 功能 A0 A1 A2 器件地址选择 SDA 串行数据 /地址 SCL 串行时钟 WP 写保护 Vcc + 工作电压 Vss 地 图 7 E2PROM电路图 7 图 8 E2PROM PCB图 USB 接口模块 USB 接口芯片: PDIUSBD12 PDIUSBD12 是一款性价比很高的 USB 器件。 它通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口。 它还支持本地的 DMA 传输。 这种实现 USB 接口的标准组件使得设计者可以在各种不同类型微控制器中选择出最合适的微控制器。 这种灵活性减小了开发的时间、风险以及费用,从而用最快捷的方法实现最经济的 USB 外设的解决方案。 PDIUSBD12 完全符合 版的规范,它还符合大多数器件的分类规格:成像类、海量存储器件、通信器件打印设备、以及人机接口设 备。 同样地, PDIUSBD12 理想地适用于许多外设,例如:打印机、扫描仪外部的存储设备和数码相机等等。 它使得当前使用 SCSI 的系统可以立即降低成本。 PDIUSBD12 所具有的低挂起功耗连同 LazyClock 输出可以满足使用 ACPI OnNOW 和USB 电源管理的要求。 低的操作功耗可以应用于使用总线供电的外设。 此外它还集成了许多特性,包括 SoftConTM GoodLinkTM 、可编程时钟输出、低频晶振和终止寄存器集合。 所有这些特性都为系统显著节约了成本,同时使 USB 功能在外设上的应用容易。 8 图 9 USB接口电路图 图 10 USB接口 PCB图 9 USB 软件设计 主程序介绍: 名称: main() 功能:主函数,负责发送 USB 请求、处理 USB 总线事件、进行 EEPROM 的读写操作。 图 11 主程序流程图 代码: void main(void) { init_port()。 /*初始化 I/O 口 */ init_timer0()。 /*设置定时器 0*/ init_special_interrupts()。 /*设置中断 */ // D12_DATA = 0xfb02。 /*定义数据地址 */ // D12_COMMAND = 0xfb03。 /*定义命令地址 */ D12_DATA = 0x7002。 /*定义数据地址 */ D12_COMMAND = 0x7003。 /*定义命令地址 */ 10 D12_SetDMA(0x0)。 /*不使用 DMA 功能 */ = 0。 /*初始化。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。