单片机与电脑USB通信.docx

上传人:b****8 文档编号:11455683 上传时间:2023-03-01 格式:DOCX 页数:15 大小:386.33KB
下载 相关 举报
单片机与电脑USB通信.docx_第1页
第1页 / 共15页
单片机与电脑USB通信.docx_第2页
第2页 / 共15页
单片机与电脑USB通信.docx_第3页
第3页 / 共15页
单片机与电脑USB通信.docx_第4页
第4页 / 共15页
单片机与电脑USB通信.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机与电脑USB通信.docx

《单片机与电脑USB通信.docx》由会员分享,可在线阅读,更多相关《单片机与电脑USB通信.docx(15页珍藏版)》请在冰豆网上搜索。

单片机与电脑USB通信.docx

单片机与电脑USB通信

编号:

课程设计说明书

题目:

单片机与电脑USB通信

院(系):

专业:

学生姓名:

学号:

指导教师:

 

2013年12月1日

摘要

本课程设计的要求是用51系列单片机通过USB接口实现和电脑的通信,通信内容是电脑向单片机发送字符或数字,是单个数字或字符发送,这次课堂设计是基于ch372芯片实现的,利用ch372的内置的USB协议,我们只要负责应用层上的程序编写,无需顾忌底层协议的实现,电脑向单片机发送数据,单片机接收后,如果是数字则通过数码管显示出来,是字符则加一后回发给电脑并显示出来。

上位机是采用MFC编写的程序,有10个按钮对应0到9的数字,下位机采用keilC51编写,分别为数码管显示部分,主函数及数据接收和发送函数。

关键字:

单片机;ch372;USB通信;

 

Abstract

Thiscoursedesigniswith51seriesmicrocontrollerthroughtheUSBinterfaceimplementationandcomputercommunication,communicationcontentisacomputertosendcharactersordigitalsingle-chipmicrocomputer,isasinglenumberorcharactertosend,theclassroomisbasedonch372chipdesignimplementation,usingthech372built-inUSBprotocol,weonlyresponsiblefortheprogramtowriteontheapplicationlayer,withoutscrupletheunderlyingprotocolimplementation,senddatatothesinglechipcomputer,singlechipisaccepted,ifitisdigital,throughdigitaltubedisplay,ischaracterafteraddabacktothecomputeranddisplayed.PCiswrittenusingMFCprogram,thereare10buttonscorrespondtotheNumbers0to9,underamachineadoptskeilC51written,dividedintodigitaltubedisplaypart,themainfunctionanddatareceivingandsendingfunction.

Keywords:

Singleslicemachine;ch372;USBcommunicaton

 

引言

随着计算机硬件飞速发展,外围设备日益增多,键盘、鼠标、调制解调器、打印机、扫描仪早已为人所共知,数码相机、MP3随身听接踵而至,这么多的设备,如何接入个人计算机?

USB就是基于这个目的产生的。

USB是一个使计算机周边设备连接标准化、单一化的接口,其规格是由Intel(英特尔)、NEC(日本电气株式会社)、Compaq(康柏)、DEC(美国数字设备公司)、IBM(国际商业机器公司)、Microsoft(微软)、NorthernTelecom(北方电信公司)联合制定的。

USB1.1标准接口传输速率为12Mbps,但是一个USB设备最多只可以得到6Mbps的传输频宽。

因此若要外接光驱,至多能接六倍速光驱,无法再高。

而若要即时播放MPEG-1的VCD影片,至少要1.5Mbps的传输频宽,这点USB办得到,但是要完成数据量大四倍的MPEG-2的DVD影片播放,USB可能就很吃力了,若再加上AC-3音频数据,USB设备就很难实现即时播放了。

一个USB接口理论上可以支持127个装置,但是还无法达到这个数字。

其实,对于一台计算机,所接的周边外设很少有超过10个的,因此这个数字是足够我们使用的。

USB还有一个显著优点就是支持热插拔,也就是说在开机的情况下,你也可以安全地连接或断开USB设备,达到真正的即插即用。

当前USB设备虽已被广泛应用,比较普遍的是USB2.0接口,它的传输速度为480Mbps。

 

1设计目标

1.1设计方案意义

单片机是一种集成电路芯片,可以对它编程实现对外连电路的控制,这次课堂设计选用at89s51,选用51单片机主要是自己以前自己选修过有关51单片机的课程,所以对它比较熟悉。

CH372是一个USB总线的通用设备接口芯片,是CH371的升级产品,是CH375芯片的功能简化版。

在本地端,CH372具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上;在计算机系统中,CH372的配套软件提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写文件。

CH372内置了USB通讯中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。

在内置固件模式下,CH372自动处理默认端点0的所有事务,本地端单片机只要负责数据交换,所以单片机程序非常简洁。

在外置固件模式下,由外部单片机根据需要自行处理各种USB请求,从而可以实现符合各种USB类规范,所以这次课堂设计选用了CH372作为单片机和电脑通信的桥梁。

这次课程设计,我运用以前学到的单片机知识,对单片机的运用更加牢固了,对单片机的各个功能模块有了更深一步的认识。

这次软件实现是用C语言实现的,单片机端用C51实现,电脑端则使用MFC实现界面。

1.2设计功能简介

(1)用usb线将单片机和电脑相连接,单片机电源由usb线供应。

(2)单片机端有个数码管用来显示接收到的数字。

(3)电脑端有0到9个按钮,分别对应数字0到9,单击0按钮则是让电脑向单片机发送0,其它类似。

1.3总体设计框图

 

图1-1设计框图

 

2电路实现方案

2.1方案选择论证

(1)CH372是一个USB总线的通用设备接口芯片,是CH371的升级产品,是CH375芯片的功能简化版。

在本地端,CH372具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上;在计算机系统中,CH372的配套软件提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写文件。

CH372内置了USB通讯中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。

在内置固件模式下,CH372自动处理默认端点0的所有事务,本地端单片机只要负责数据交换,所以单片机程序非常简洁。

在外置固件模式下,由外部单片机根据需要自行处理各种USB请求,从而可以实现符合各种USB类规范。

(2)单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。

 

图1-2单片机和CH372连接图

(3)USB总线属于一种轮询式总线,主机控制端口初始化所有的数据传输。

每一总线动作最多传送三个数据包,包括令牌(Token)、数据(Data)、联络(HandShake)。

按照传输前制定好的原则,在每次传送开始时,主机送一个描述传输动作的种类、方向、USB设备地址和终端号的USB数据包,这个数据包通常被称为令牌包(TokenPacket)。

USB设备从解码后的数据包的适当位置取出属于自己的数据。

数据传输方向不是从主机到设备就是从设备到主机。

在传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。

接收端也要相应发送一个握手的数据包表明是否传送成功。

发送端和接收端之间的USB数据传输,在主机和设备的端口之间,可视为一个通道。

USB中有一个特殊的通道一缺省控制通道,它属于消息通道,设备一启动即存在,从而为设备的设置、状态查询和输入控制信息提供一个入口。

2.2单元电路

2.2.1数码管显示电路

该电路主要用74ls164芯片实现,外接一个共阴极数码管,74ls164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。

数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。

时钟(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。

主复位(MR)输入端上的一个低电平将使其它所有输入端都无效,非同步地清除寄存器,强制所有的输出为低电平。

选用74ls764作为控制数码管显示主要是因为这样只要占用单片机的三根I/O线,节约了单片机的I/O口的使用。

将单片机的P1.0口作为74LS164的数据输入口,P1.0口作为74LS164的时钟输入口。

2.2.2单片机和CH372连接电路

本次课堂设计采用AT89S52单片机作为控制器,将AT89S52的P0.0到P0.7分别和CH372的数据端口D0到D7连接,AT89S52的读使能端RD连接到CH372的读使能端,单片机的写使能端WR连接到CH372的写使能端,单片机的外部中断0号连接到CH372的中断输出端,单片机的P2.0和P2.1分别和CH372的A0端和CS使能端相连接。

2.2.3单片机控制电路

本课程设计中该段电路由单片机芯片和部分外围电路组成,通过编程在将程序烧进芯片中,从而达到对数码管显示电路和CH372芯片的控制。

2.2.4CH372和电脑连接电路

CH372和电脑连接电路很简单,只要在单片机端焊接一个USB接口,用USB线直接将它们连接起来就行了,本次课堂设计单片机端的USB接口为B型口,所以才用普通的MP4数据线就可以了。

单片机的电源电路和CH372的电源电路均采用USB线的5V电源,这样无需再接外部电源了。

2.3用proteus仿真

由于proteus软件比较容易操作易学,所以用这个软件挺方便的,所以用起来得心应手,对照设计方案将元件在proteus上进行正确的连接后,用KeiluVision3软件进行编程生成.hex文件,在将此文件导入proteu中仿真,调试,以检验设计思路的正确性,仿真后结果可以运行。

由于在proteus软件上没有CH372芯片,所以这次仿真只做了数码管显示部分的仿真,仿真结果如下图

 

图1-3数码管显示仿真图

3电路板的制作及调试

3.1电路的改进

3.1.1数码管驱动芯片的选择

刚开始选用的是74ls373,这是三态输出的8D输出锁存器,但因为它的封装管教不整齐,它的输出或输出管脚不是并排一起的,所以在画PCB时很难布线,并且74ls373还占用8个I/O,所以将它换成74ls164,串入并出的8位移位寄存器,它只占用2个I/O口,一个连接数据输入口,一个连接时钟输入口。

3.1.2单片机的选择

单片机采用at89s52,使用51系列的单片机主要是自己以前学习过51单片机的理论课,并且自己有at51系列单片机的烧写器,所以就方便而使用了。

3.1.3USB芯片的选择

本次课堂设计采用CH372,采用CH372作为USB芯片,主要是它内置了USB协议,并提供了芯片的驱动程序,所以我们可以直接在应用层上写程序,无需关心底层的实现细节。

3.2protel原理图和pcb的印制

先前通过KeiluVision3软件的编程和proteus软件的仿真,调试和改进,反复验证电路可行性,然后开始转用protel软件进行原理图和pcb的印制,开始以为此过程会很简单,但却花了很长时间。

下载并安装DXP软件,导入元器件库跟封装库,在库里找到电路图上所需要的各个元器件,放入原理图中,连接好电路,给元器件编号,标上标称值。

但是,首先有很多元器件没有封装,自己为此画了很多元件的封装图和原理图,其次发现封装库有很多的错误,为此花了很长时间来检查各管脚的标号与原理图的对应情况,最后,布线布了很多天,刚开始自动布线但发现有很多错误隐含在其中,弃之改为手动布线,但发现需要很多跳线需要做,为此重新布线摆元件,但总是需要跳很多的线,为此问了很多同学和老师,要不就双层,否则必须跳线,通过同学介绍,发现有元器件店有卖0欧电阻,为此并不影响电路的美观。

所以我选择了用0欧电阻跳线完成pcb的印制。

通过此次做板,对protel的应用有了更深的认识,对其用起来也更加得心硬应手和熟练。

 

1-4protel原理图

 

图1-5pcb电路图

3.3电路板的制作

把PCB拿到打印店去打印出来,然后到科协实验室去制作电路板。

首先用砂纸把铜板磨至光滑,然后加热电熨斗,当电熨斗达到合适的温度以后就可以把PCB熨到铜板上,此步要掌握好压电熨斗的力度,一开始先把电熨斗压在板子上不动,然后才慢慢移动电熨斗,使板子各个部分受热均匀,熨好板以后腐蚀,把浓盐酸跟双氧水倒到盆里,加入一点水稀释,把熨好的板子放入腐蚀液中,翻动一下板子可以加快腐蚀速度,注意不要让腐蚀液溅到眼睛里去,腐蚀好以后用清水冲洗一下板子,擦干,接着打孔,最好再涂上一层助焊的松香水。

选用合适的钻针,打孔的时候要很细心,慢慢打,钻针要选得合适,太大的钻针会造成焊盘脱落,打好孔以后就可以安装元件啦,安装前先测量一下各元件的值是不是跟标称值吻合,不吻合要更换。

参照PCB把元件插上,特别要注意二极管跟极性电容的正负,所有元件都插上以后用焊锡跟焊笔把元件焊好,剪掉过长的管脚,至此电路板初步完成了。

3.4故障分析及调试

做好板后开始调试,我是分步骤来调试的,首先调试的是数码管显示部分,将USB线和电脑相连起来,将数码管测试程序烧入单片机,本以为可以显示的,但很失望,数码管没有显示,亮都不亮,我怀疑是自己电路连接错了,仔细查看了一番,并和电脑原理图对照了几遍,但都没有错,然后又以为是单片机没有接通电源,测了下单片机的电源和地都正常,这时候很失望了,自己又测了下是不是单片机坏了,为此自己就写了个测试单片机的小程序,但单片机还是运行正常,自己想了好久都没有想到是怎么回事,以为自己焊接不良,自己又把电路板测试了一下,但都没有发现接触不良的和虚焊的,就为这个我苦恼了半天时间,最后自己查看下自己的仿真程序,我在proteus上仿真时成功的,所以都没有怀疑是代码的问题,自己讲仿真原理图和DXP上的原理图好好对照了翻,才知道是自己将线接反了,仿真图上P1.0是接时钟的,P1.1是接74LS164的数据输入端,自己在DXP原理图上则反过来了,发现这个很高兴了,立马回到程序将管脚定义改了,然后通上电,数码管显示成功了!

数码管显示成功后,自己开始调试单片机和电脑的通信了,选用的测试程序是CH372官方的测试程序,自己将单片机和CH372的连接和测试程序的管脚定义对照了,将程序的管脚定义改为自己板子的实际连接相对应,改好后将程序烧进单片机,心情激动的将usb线插上电脑,但还是很失望,没有成功,测试程序显示没有打开设备,自己在网上查了下,才知道是要安装驱动的,自己将驱动安装好后,继续连接上,测试程序上显示已打开设备了,很高兴,然后点击测试按钮,但结果却是令人失望了的,自己翻找了很多资料,在网上查了很多信息,也把单片机端的代码仔细看了看,还是没发现什么错误,这个弄了我一天时间都没解决,第二天继续查找资料。

我是在单片机外部中断1号处理接受发送的,自己仔细的读了几次那部分代码,但还是没发现错误,然后自己决定将发送和接受的代码放到外部中断0号来,测试了下,成功了,测试程序有返回了,可以正常使用了,自己立马就将CH372中断输出线连接到单片机端的外部0号中断来,单片机和电脑通信测试完后,自己就开始写电脑端的程序了,我是用VCmfc写的,自己以前学习过一些基础。

后来看单片机相关书籍时才知道是自己把中断号弄错了,外部中断1号我在程序中叶直接写成了1号,其实是2号才对。

4心得体会

经过前后接近一个月的研究学习和制版,终于完成了课程设计。

从课题的选择、方案的论证、电路的编程和仿真,再到具体方案设计每一步制作对我来说无疑都是巨大的尝试和挑战。

通过这次课程设计我懂得了理论与实际相结合时很重要的,只有理论知识是远远不够的,有把所学的理论知识和实践相结合才能提高自己的动手能力和独立思考的能力。

在设计过程中可以说困难重重,会遇到各种各样的问题,同时在设计过程中发现自己的不足之处,对以前所学的知识理解不够深刻,掌握的不够牢固。

此次课程设计,学到了理论课学不到的东西,比如独立思考解决问题,出现差错如何分析解决,还有与人合作的共同提高,都受益匪浅。

在具体的设计过程中我不断给自己提出新问题,然后去论证、推翻。

在接着提出新问题,在这个循环往复的过程中每一次改进我都收获良多,每一次修改我都兴奋了好长一段时间,虽然我的设计作品不是很成熟,有很多不足之处,但我心里仍然有一种莫大的幸福感。

因为我实实在在走过了一个完整的设计做所应该走过的每一个过程,并且享受每个过程。

 

谢辞

在这次课设中,首先要感谢我的指导老师梁红玉,因为梁老师每周都要进山对我们的课设进度和方案各方面进行指导,很不容易。

也要感谢这次课设制作过程中所有给予我指点和帮助的人,他们帮我解决了很多技术上的难题和技巧,感谢科协的同学,谢谢他们为我提供了制作课设的场地和资源,教会我使用许多工具和获取信息的渠道,告诉我很多制作及调试电路板的小窍门。

没有他们,我就不可能如此顺利的完成我的课设任务,也学不到这么多的东西。

在此致予我深深的感谢。

 

参考文献

[1]郭天祥编著:

《51单片机C语言教程》电子工业出版社2009

[2]谭浩强编:

《C语言设计》(第三版)清华大学出版社2005

[3]清源计算机工作室编著:

《protel99se原理图与pcb》机械工业出版社2007

[4]周灵彬任开杰编著:

《基于proteus的电路与PCB设计》电子工业出版社2010

[5](美)弗洛伊德著,余璆等译:

《数字电子技术(第九版)》电子工业出版社2008

[6]胡学海编著:

《单片机原理及应用系统设计》电子工业出版社2008

[7]赵建国薛园园编著:

《51单片机开发与应用技术详解》电子工业出版社2009

[8]雷伏容张小林编著:

《51单片机常用模块设计查询手册》清华大学出版社2010

[9]李群芳张士军编著:

《单片微型计算机与接口技术》电子工业出版社2008

[10]秦广军编著:

《C++从入门到实践》清华大学出版社2009

 

附录

1.设计相关附图

元件名称

数值

个数

74ls164

1个

AT89s51

1个

电容

20p

2个

晶振

12M

1个

电阻

20k

2个

按键开关

2个

Ch372

1个

插槽

40p

1个

图1.6元件清单

 

图1.7实物图

 

 

图1.8电脑端程序界面

部分程序代码如下

数码管显示函数

voidsendbyte(unsignedcharbyte)//这个是数码管显示

{

unsignedcharnum,d;

num=tab[byte];

for(d=0;d<8;d++)

{

CLK=0;

DAT=num&0x80;

CLK=1;

num<<=1;

}

}

CH372写命令函数

voidCH375_WR_CMD_PORT(unsignedcharcmd)

{

delay2us();

CH375_CMD_PORT=cmd;

delay2us();

}

CH372写数据函数

voidCH375_WR_DAT_PORT(unsignedchardat)

{

CH375_DAT_PORT=dat;

}

CH372读数据函数

unsignedcharCH375_RD_DAT_PORT(void)

{

return(CH375_DAT_PORT);

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1