




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要: 本课程设计实现具有按键输入、数据储存、数据通信等功能的单片机系统。该系统基于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 peoples 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 peoples 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, e2prom20目 录前言11.总体设计方案21.1接口设计方案21.1.1独立模式即(usb接口芯片外接c51芯片)21.1.2 usb接口芯片集成了mcu21.2系统设计方案22系统设计原理32.1 usb接口简介32.2 i2c总线简介33单元模块设计43.1 usb硬件电路设计43.1.1电源电路模块43.1.2单片机最小系统模块53.1.3 e2prom模块:63.1.4 usb接口模块73.2 usb软件设计93.2.1主程序介绍:93.2.2 e2prom写程序:103.2.3 e2prom读程序:133.2.4 usb接口程序144.系统功能调试154.1调试用的软件简介:154.2模块调试过程及结果:155.设计总结186.参考文献19前言 usb是英文universal serial bus的缩写,中文含义是“通用串行总线”。它不是一种新的总线标准,而是应用在pc领域的接口技术。usb是在1994年底由英特尔、康柏、ibm、microsoft等多家公司联合提出的。不过直到近期,它才得到广泛地应用。从1994年11月11日发表了usb v0.7版本以后,usb版本经历了多年的发展,到现在已经发展为2.0版本,成为目前电脑中的标准扩展接口。目前主板中主要是采用usb1.1和usb2.0,各usb版本间能很好的兼容。usb用一个4针插头作为标准插头,采用菊花链形式可以把所有的外设连接起来,最多可以连接127个外部设备,并且不会损失带宽。usb需要主机硬件、操作系统和外设三个方面的支持才能工作。usb具有传输速度快(usb1.1是12mbps,usb2.0是480mbps, usb3.0是5 gbps),使用方便,支持热插拔,连接灵活,独立供电等优点,可以连接鼠标、键盘、打印机、扫描仪、摄像头、闪存盘、mp3机、手机、数码相机、移动硬盘、外置光软驱、usb网卡、adsl modem、cable modem等,几乎所有的外部设备。随着计算机硬件飞速发展,这么多的设备,如何接入个人计算机,usb就是基于这个目的产生的。usb是一个使计算机周边设备连接标准化、单一化的接口,其规格是由intel、nec、compaq、dec、ibm、microsoft、northern telecom联系制定的由于usb总线接口具有体积小、携带方便、热插拔等特征,国内近年来计算机非键盘输入技术在汉字英文和数字的手写识别方面发展很快,此项目的目的是吸收usb总线和motorola微控制器的先进技术与手写识别技术相结合设计生产新一代usb手写输入系统。除了这种系统,还有一种无线式专家评审智能系统,需要一块具有usb 接口的无线式数据通信接口卡,来实现中央数据处理站计算机与各智能评分器之间的数据交换。1.总体设计方案1.1接口设计方案1.1.1独立模式即(usb接口芯片外接c51芯片)这种是纯粹的usb接口芯片,仅处理usb通信,使用时必须由外部微控制器(mcu)进行控制,如philips的pdiusbd1 2,national semiconductor的usbn9604等。usb接口设计独立模式说明连接外设的一种简单模式,所有寄存器和数据的读写都是通过c8051的i/o接口来仿真。其优点是传输数据速率较快,也可以通过接口转换,与其他功能的外设相连,具有较广泛的适用性。但是数据吞吐速率较低,适合间歇式数据的传送。c51芯片usb接口芯片图1 独立模式电路结构图:1.1.2 usb接口芯片集成了mcu这种芯片如cypress的ez-usb。带集成的usb 2.0 全速接口的c51:灵活的自可编程的闪存人机接口能力外围设备广品种包括大容量存储器接口。mcu被集成在usb接口芯片,在使用时会更加的方便可行。usb接口芯片 c51芯片图2 集成模式电路结构图1.2系统设计方案该系统由最小c51单片机系统、usb接口模块组成。上位机通过usb接口,由c51控制对e2prom进行读写。c51单片机功能是通过mcu控制器对输入数据进行控制、处理,使数据通过io接口被送到e2prom(电可擦可编程只读存储器)中被存储起来,以便输出需要。e2prom是电可擦可编程只读存储器,数据被送到里面后,如果因为设计需要,必须对数据进行修改、增加、删除时,它可以通过电子信号来修改,并不影响未修改的软件程序。usb接口芯片主要是与c51芯片相连,通过mcu空制器对数据的控制,以使数据通过usb接口被输送到pc机或上位机。at89c51模块usb接口芯片模块模块eeprom模块图3 系统结构图2系统设计原理2.1 usb接口简介usb是一种常用的pc接口,他只有4根线,两根电源两根信号,如图4.故信号是串行传输的,usb接口也称为串行口,usb2.0的速度可以达到480mbps。可以满足各种工业和民用需要.usb接口的输出电压和电流是: +5v 500ma 实际上有误差,最大不能超过+/-0.2v 也就是4.8-5.2v 。usb接口的4根线一般是下面这样分配的,需要注意的是千万不要把正负极弄反了,否则会烧掉usb设备或者电脑的南桥芯片:黑线:gnd 红线:vcc 绿线:data+ 白线:data-。图4 usb接口定义图2.2 i2c总线简介为了非常方便地对 i2c 从器件进行快速的正确的读写操作,我们为此而设计出虚拟i2c 总线操作平台软件包。i2c 总线是philips 公司推出的芯片间串行数据传输总线2 根线即可实现完善的全双工同步数据传送能够十分方便地地构成多机系统和外围器件扩展系统i2c 器件是把i2c 的协议植入器件的i/o 接口使用时器件直接挂到i2c 总线上,这一特点给用户在设计应用系统带来了极大的便利i2c 器件无须片选信号是否选中是由主器件发出的i2c 从地址决定的而i2c 器件的从地址是由i2c 总线委员会实行统一发配我们推出的i2c 总线的操作平台软件包只要你给出器件从地址即可进行字节读字节写多字节读多字节写能够非常方便地使用i2c 器件无须你介入底层的i2c 操作协议。它是连接usb和89c51单片机所用到的总线,很方便的传送和接收数据。3单元模块设计3.1 usb硬件电路设计3.1.1电源电路模块电源电路为有两个,通过dc-dc器件(7805)将9v电压转换为5v。dc/dc是一种高频模块电源,它可以实现直流到直流的变换,既可以把输入电压变低,也可以把输入电压变高, 还可以把电源极性反转,而且输人电压还可以在一定的范围内变化。一路输人电压可以得到几路输出电压。直流输出电压和输出电流有很多档次供使用者选择,而且 体积小、输出功率大。在dc-dc变换中,pwm和pfm是两种基本的控制方式,除此之外,还有相移控制等。pwm控制一般指开关周期固定,即频率固定,通过改变开关导通时间,调节输出电压,而pfm一般指开关导通时间固定,通过改变开关周期,来调节输出电压,在有些谐振电路中,因为顾忌谐振周期的缘故,所以多采用pfm但是,pfm控制方式,使的开关频率变化,使的滤波器的设计很困难,一般不采用。图5 电源电路图3.1.2单片机最小系统模块89c51是一种带4k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器,俗称单片机。89c2051是一种带2k字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的89c51是一种高效微控制器,89c2051是它的一种精简版本。89c单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案图6 单片机最小系统图3.1.3 e2prom模块:e2prom芯片:csi24wc02csi24wc02 是一个2k 位串行cmos e2prom 内部含有256 个8 位字节catalyst 公司的先进cmos 技术实质上减少了器件的功耗,csi24wc01 有一个8 字节页写缓冲器csi24wc0 有一个16 字节页写缓冲器该器件通过i2c总线接口进行操作,有一个专门的写保护功能。表1 csi24wc02管脚描述管脚名称功能a0 a1 a2器件地址选择sda串行数据/地址scl串行时钟wp写保护vcc +1.8v 6.0v工作电压vss地图7 e2prom电路图图8 e2prom pcb图3.1.4 usb接口模块usb接口芯片:pdiusbd12 pdiusbd12是一款性价比很高的usb 器件。它通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口。它还支持本地的dma 传输。这种实现usb 接口的标准组件使得设计者可以在各种不同类型微控制器中选择出最合适的微控制器。这种灵活性减小了开发的时间、风险以及费用,从而用最快捷的方法实现最经济的usb 外设的解决方案。pdiusbd12 完全符合usb1.1 版的规范,它还符合大多数器件的分类规格:成像类、海量存储器件、通信器件打印设备、以及人机接口设备。同样地,pdiusbd12 理想地适用于许多外设,例如:打印机、扫描仪外部的存储设备和数码相机等等。它使得当前使用scsi 的系统可以立即降低成本。pdiusbd12 所具有的低挂起功耗连同lazyclock 输出可以满足使用acpi onnow 和usb 电源管理的要求。低的操作功耗可以应用于使用总线供电的外设。此外它还集成了许多特性,包括softconnettm goodlinktm 、可编程时钟输出、低频晶振和终止寄存器集合。所有这些特性都为系统显著节约了成本,同时使usb 功能在外设上的应用容易。图9 usb接口电路图图10 usb接口 pcb图3.2 usb软件设计3.2.1主程序介绍: 名称: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;/*定义命令地址*/ d12_setdma(0x0);/*不使用dma功能*/ beppflags.value = 0;/*初始化usb寄存器*/ /*上电复位,usb总线重新连接指令 */ reconnect_usb(); while(true ) if(beppflags.bits.configuration) i2cwriteread();/*若设备已配制,调用i2cwriteread()*/usbserve();/*处理usb的setup包*/ 3.2.2 e2prom写程序: 名称:write_csi24wcxx() 功能:进行eeprom写操作。图12 e2prom写操作程序流程图:代码:void write_csi24wcxx(void) unsigned char rwcount; unsigned char adr_bak; bit write_ok; rwcount=0; do /*取出当前操作字节个数,与命令要求的操作字节个数进行比较及处理*/ if (comepbuf5rwlen.byte.low) comepbuf5=comepbuf5-rwlen.byte.low;else rwlen.byte.low=comepbuf5; comepbuf5=0; /*判断操作地址是否溢出*/if( (rwrom_addr.word+rwlen.byte.low) rom_sizerwrom_type.byte.low ) rwlen.word=rom_sizerwrom_type.byte.low-rwrom_addr.word; if (rwrom_addr.wordrom_sizerwrom_type.byte.low) operate_type=0; comepbuf5=0; /*进行写操作,csi24wc01、02、04、08、16的地址位a10 a9 a8 由rwrom_addr.byte.high设置*/if (operate_type=1) eprom_sla=0xa0 | rwrom_addr.byte.high; eprom_sla&=0xfe;/*csi24wc01、02、04、08、16所使用的从机地址为0axh*/ /*本次写操作所写的数据的起始地址为epbufrwcount,操作个数rwlen.byte.low*/ write_ok=isendstr(eprom_sla, rwrom_addr.byte.low, &(epbufrwcount), rwlen.byte.low); if (operate_type=2) eprom_sub=&(rwrom_addr.byte.high); eprom_sla=0xa0;/*csi24wc32、64、128、256所使用的从机地址均为0a0h*/ write_ok=isendstr2(eprom_sla, eprom_sub, &(epbufrwcount), rwlen.byte.low); if(write_ok=0) rwcount=0; break; else while(iwcheck(eprom_sla)=0);/*等待写周期完成*/ /*写参数的修改,以达到页写的目的。*/if(operate_type=1) /csi24wc01、02、04、08、16的地址位a10 a9 a8 的调整 adr_bak=rwrom_addr.byte.low; rwrom_addr.byte.low=rwrom_addr.byte.low+rwlen.byte.low; if(adr_bakrwrom_addr.byte.low) rwrom_addr.byte.high=rwrom_addr.byte.high+2; rwrom_addr.byte.high=rwrom_addr.byte.high&0x0f; else rwrom_addr.word=rwrom_addr.word+rwlen.byte.low;rwcount=rwcount+rwlen.byte.low;/*写入字节个数计数*/rwlen.byte.low=i2crom_maskrwrom_type.byte.low+1; while (comepbuf5!=0); /*判断是否写完数据(由地址来判断),若没有则继续返回已写入字节个数,若为0时则表示eeprom操作出错*/ epbuf0=rwcount; d12_writeendpoint(5, 1, epbuf);3.2.3 e2prom读程序: 名称:read_csi24wcxx() 功能:进行e2prom读操作。图13 e2prom读操作程序流程图:代码:void read_csi24wcxx(void) int i; bit read_ok; if(operate_type=1) eprom_sla=0xa0 | rwrom_addr.byte.high; eprom_sla&=0xfe;read_ok=ircvstr(eprom_sla, rwrom_addr.byte.low, epbuf, rwlen.byte.low);if(read_ok=1) d12_writeendpoint(5, rwlen.byte.low, epbuf); /* end of read 24c01,02,04,08 */ if(operate_type=2) eprom_sub=&(rwrom_addr.byte.high); eprom_sla=0xa0 | rwrom_addr.byte.high; eprom_sla&=0xfe;read_ok=ircvstr2(eprom_sla, eprom_sub, epbuf, rwlen.byte.low);if(read_ok=1) d12_writeendpoint(5, rwlen.byte.low, epbuf); /* end of read 24c64 */ for(i=0; i2000; i+); /*若读操作出错,则返回出错信息*/ if(read_ok=0) genepbuf0=0xaa;genepbuf1=0x88;d12_writeendpoint(3, 2, genepbuf); else genepbuf0=0xbb;/*读操作成功*/genepbuf1=0x02;d12_writeendpoint(3, 2, genepbuf); 3.2.4 usb接口程序 名称:i2cwriteread() 功能:负责接收usb总线上的命令,并进行分析及作出相应的eeprom读写操作等。图14 usb程序流程图:4.系统功能调试4.1调试用的软件简介:keil:keil c51是美国keil software公司出品的51系列兼容单片机c语言软件开发系统,与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用c来开发,体会更加深刻。keil c51软件提供丰富的库函数和功能强大的集成开发调试工具,全windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到keil c51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。4.2模块调试过程及结果: 图15 keil里对usb程序进行编译首先在keil里对usb程序进行编译,使之生成.hex的文档,如图16所述,编译成功通过,当然在编译前进行了一些必要的设置。图16 软件编程运行dpflash下载软件,并将之进行擦除,然后将图16中最后生成的.hex文档装载到软件中。点击编程出现上图的界面,当显示“编程操作成功”字样表示已成功的将usb程序下载到芯片了。图17 安装驱动程序当运行接上usb的试验箱时,出项了对usb需要进行安装驱动,上面几幅图为安装驱动的过程,最终成功安装了usb 的驱动。i图18 写入e2prom数据打开zlgeasyd12_demo.exe软件,通过usb线和iic总线向eeprom写一组数据,如图21数据是01234567890,出现上图的提示框表示向eeprom成功写入数据图19 读取e2prom数据通过usb 线和iic总线从eeprom读取数据,如图所示读出了10个数据,出现图22的提示框表示读eeprom数据成功。结论:经过上面的操作可以得出usb接口部分能成功的与单片机和上位机进行数据交换。表明设计得到了实现5.设计总结课程设计是培养学生综合运用所学知识 ,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今usb接口技术的应用在生活中可以说得是无处不在。因此能够了解并掌握usb接口技术的内容是十分重要的。经过两个星期的奋斗我们小组终于圆满完成了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗大数转型与公共卫生服务优化策略
- 医疗AI的监管框架与数据隐私保护
- 五金建材批发合同范例
- 买手签认购合同范例
- 区块链技术在商业领域的合规性及法律环境分析
- 医疗信息化的安全管理与保障
- 公众号制作服务合同范例
- 医疗器械的技术进步与健康产业发展
- 幼儿骨干教师培训心得体会模版
- 医疗AI在健康教育中的伦理影响
- “九小”场所、沿街门店安全排查表
- GB/T 5248-1998铜及铜合金无缝管涡流探伤方法
- GB/T 40822-2021道路车辆统一的诊断服务
- 仿生原理与创新设计课件
- 【自考练习题】大连理工大学概率论与数理统计真题汇总(附答案解析)
- 小儿吸痰法讲稿
- xx学校研学旅行活动告家长书
- (格式已排好)国家开放大学电大《计算机应用基础(专)》终结性考试大作业答案任务一
- 圣地非遗-鲁锦纹样特征
- 中秋节英文PPT
- 项目二:旅游电子商务概述(授课PPT)教学课件
评论
0/150
提交评论