毕业设计(论文)-单片机与计算机串行通信设计.doc_第1页
毕业设计(论文)-单片机与计算机串行通信设计.doc_第2页
毕业设计(论文)-单片机与计算机串行通信设计.doc_第3页
毕业设计(论文)-单片机与计算机串行通信设计.doc_第4页
毕业设计(论文)-单片机与计算机串行通信设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

合肥师范学院2011届本科生毕业论文(设计)摘 要单片微型计算机简称单片机,它是将中央处理器(cpu)、存储器(ram,rom)、定时计数器和各种接口电路都集成到一块集成电路芯片上的微型计算机。随着计算机技术尤其是单片机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统参数进行检测和控制。pc机具有强大的监控和管理功能,单片机则具有快速及灵活的控制特点,通过pc机的rs 232串行接口与外部设备进行通信,是许多通信系统中常用的一种通信解决方案。因此如何实现pc机与单片机之间的通信具有非常重要的现实意义。本设计介绍了stc89c52单片机与pc机串行通信的实现方法,给出了具体通信接口电路以及利用vb6.0的通信控件mscomm实现pc机串行通信的程序。通过vb程序控制led及数码管的亮灭,同时可实现对两者的参数设置,更改其亮灯次数和间隔时间。系统经过实际应用,效果令人满意 .关键词:串行通行 单片机 vb程序 proteus仿真合肥师范学院2011届本科生毕业论文(设计)abstractsingle-chip microcomputer(scm) is also be called the single chip computer which is integrated the central processing unit(cpu), memory(ram and rom), timer/counter and various interface circuit into a piece of integrated circuit chip of microcomputer. with the development of computer technology, especially in microcomputer technology development, people have increasingly used single-chip microcomputer into some industry controlling system parameters to test and control. personal computers(pc) have powerful functions of monitoring and management. scm has rapid and flexible controlling features. through the rs-232 serial interface of pc communicate with external devices, it is an common communication solutions in many communication system. therefore, how to realize the communication between the microcomputer and pc has very important practical significance.this design introduces the realization method of serial communication between microcomputer(stc89c52) and pc. it gives the specific communication interface circuit and the program which using vb6.0 mscomm control realize serial communication with pc. the led and digital tube can be controlled by the vb program, which can set the parameters both of them and change time interval and bright light times. by practical application, the effect of system is satisfactory.key words: serial communication microcomputer vb program proteus simulation合肥师范学院2011届本科生毕业论文(设计)目 录一 前言11.1概述11.2串行通信基本概念11.3本次设计的工作任务2二 总体方案设计32.1可行性分析32.2系统功能分析32.3单片机选型32.4系统硬软件的功能设计4三 通信系统硬件电路设计63.1串行接口的基本通信方式63.3电平转换电路的设计83.4绘制电路原理图10四 串行通信程序设计134.1下位机(单片机)串行通信及程序设计134.2上位机(pc机)串行通信及程序设计14五 总结18六 致谢19参考文献20附 录21合肥师范学院2011届本科生毕业论文(设计)一 前言1.1概述单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器cpu随机存储器ram、只读存储器rom、多种i/o口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、a/d转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了i/o设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的cpu,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十k的尺寸,对于家用pc的硬盘来讲没什么,可是对于单片机来讲是不能接受的。单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用pc上来运行,家用pc的也是承受不了的。1.2串行通信基本概念单片机在与外部设备或与其他计算机之间交换信息时,通常采用并行通信和串行通行两种方式。其中串行通行又可分为异步传送和同步传送。异步传送时,数据在线路上似一个字(或字符),为单位来传送的,各个字符之间可以是接连传送,也可以是间断传送,这完全由发送方根据需要来决定。另外,在异步传送时,发送方和接收方各用自己的时钟源来控制发送和接收。在异步通信时,对字符必须规定一定的格式,以利于接收方能判别何时有字符传来及何时是一个新字符的开始。异步通信方式中的一个字符有四部分组成:起始位、数据位、奇偶校验位和停止位。起始位为“0”信号时,用来通知接收设备一个新的字符开始来到。线路在不传输数据时应保持位“1”,接收端不断检测线路的状态,若连续为“1”后又检测到一个“0”,就知道又发来了一个新的字符。起始位还被用来同步接收端的时钟,以保证以后的接收能正确进行。起始位后面紧跟的是数据位,他可以是五位、六位、七位或八位。串行通信的速度与数据的位数成比例因此要根据需要来确定数据的位数。在本课题中没有用到奇偶校验位,有一个起始位、一个停止位和八位数据位。在串行通信中有个重要指标叫波特率,它定义为每秒传送二进制数码的位数,以位/秒为单位。在异步通信中,波特率位每秒传送的字符数和每个字符位数的乘积1。1.3本次设计的工作任务标准的51单片机都有一个全双工串行通信接口,利用这个通信接口,我们可以方便地与其它单片机系统或电脑(pc机)进行串行通信,相互交换数据。在微机测控系统中,一般称计算机为上位机、而前端采集控制的单片机系统称为下位机。上位机主要负责所有测控数据的综合管理与下位机的调度控制,而下位机由单片机构成前端的测控系统,进行原始数据的采集及设备的控制,下位机受上位机的管理控制。串口对单片机意义重大,不但可以将单片机采集的实时数据传输到电脑上,而且也能接受电脑对单片机的控制指令,实现对单片机的智能化控制,从而开发出以计算机为控制中心的数据发送和接收系统,这样不仅拓宽了单片机的应用领域,而且使我们的控制系统、监控系统可以充分利用计算机强大的数据处理能力和管理功能,使系统功能更加完善、更加强大、更加完美。基于此目的,进行单片机与pc机串行通信系统设计,本次设计的主要工作:(1)单片机系统:实现和pc通信的串口通信的方法。(2)外围电路:实现单片机和pc机之间的串口电平转换。(3)通信程序:一方面是单片机汇编程序,另一方面是pc的通信程序。2合肥师范学院2011届本科生毕业论文(设计)二 总体方案设计按照单片机系统的设计方法,这一阶段,我需要考察实际应用环境的需要,确定单片机与pc机串行通信系统的整体设计方案。它包括系统的可行性分析、功能分析、单片机选型以及系统硬软件的分工问题。2.1可行性分析毕业设计在指导老师的指导下,搜集、查阅相关资料,确定单片机系统能达到需要的设计目标,而且达到目标需要的经济成本没有超出可接收的范围。2.2系统功能分析单片机以其体积小、价格低、抗干扰性好等特点,在现在控制系统中常用在操作现场进行数据采集,以及实现现场控制中。但是由于其数据存储容量和数据处理能力都较低,所以一般情况下要通过通信手段使它与pc机相连,把所接收到的数据传送到pc机上,再在外部设备上进行显示。由于单片机输入、输出电平是ttl电平,而pc机配置的是rs-232标准串行接口,两者的电气规范不一致,因此要完成单片机与pc机的数据通信,必须对单片机输出的ttl电平进行电平转换。2.3单片机选型单片机的选型的依据为,应用系统本身对数据处理能力的要求,以及是否有其他方面的特殊需要(低功耗、工作温度、接口电路)的原则来确定。在此,选择intel公司的mcs-51系列单片机中的8051单片机。mcs-51系列的单片机是intel公司在1980年推出的8位机系列,8051为这一系列的代表产品。8051单片机内部包括8位cpu、4kb片内rom、128kb片内ram、4个8位并口、一个全双工的串口,支持64kb寻址空间,并提供5个中断源和两级中断。其性能指标如表2-1。表2-1 mcs-51系列单片机8051的性能指标单片机片内rom(kb)片内rom(kb)i/o并口计数器串行口dmaa/d中断源空闲和掉电方式类型型号rom8051412842 16uart无无5无以上我选用的单片机的种类和型号,取决于对该类型号的熟悉程度以及手头所具备开发系统的条件。而在第六章用单片机实验板对系统软件进行调试所用到的单片机是stc89c52rc,其特点是可以直接用串口进行isp编程。2.4系统硬软件的功能设计对系统的各项功能进行划分,确定软件和硬件的分工问题,实现该方案需要从通信协议(串行通信总线标准接口)、硬件电路和程序3个方面考虑。2.4.1通信协议标准接口,就是明确定义若干信号线,使接口电路标准化、通用化,借助串行通信标准接口,不同类型的数据通信设备很容易实现它们之间的串行通信连接。标准异步串行通信接口有以下几类:rs-232c、rs-232e、rs-449、20ma电流环、usb通用接口。rs485为点对多通信,距离可达1200米,2线半双工通信方式。根据协议的广泛性和此次设计为短距离通信,并且pc机配置的是rs-232标准串行接口等条件。所以采用rs-232,它被定义为一种在低速率串行通讯中增加通讯距离的单端标准。rs-232采取不平衡传输方式,即所谓单端通讯。由于发送电平与接收电平的差仅为2v至3v左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。rs-232是为点对点(即只用一对收、发设备)通讯而设计的,所以rs-232适合本地设备之间的通信。2.4.2硬件电路数据通信的硬件上采用3线制,将单片机和pc串口的3个引脚(txd、rxd、gnd)分别连在一起,即将pc机和单片机的发送数据线txd与接收数据线rxd交叉连接,两者的地线gnd直接相连,而其他信号线如握手信号线均不用,采用软件握手的方式。这样既可以实现预定的任务又可以简化电路设计。但由于单片机的ttl逻辑电平和rs-232的电气特性完全不同,rs-232的逻辑0电平规定为+5+15v之间,逻辑1电平为-5-15v之间,因此在将pc机和单片机的txd和rxd交叉连接时必须进行电平转换,本次设计选用的是max232电平转换芯片2。2.4.3传输程序单片机和pc的通信,在程序上涉及两个部分的内容:一方面是单片机的c51程序或者汇编程序,完成数据的收发。二是pc机的串口通信程序和界面的编制。经过这一阶段的设计,总结系统设计框架现在总结如下:1.确定单片机与pc机串行数据通信系统的通信方案2.选择intel公司的mcs-51系列单片机中的8051,实验板对系统软件进行调试所用到的单片机是stc89c52rc;3.串行通信总线标准接口采用rs-232c;4.串行数据通信的硬件上采用3线制,选用的是max232芯片进行单片机与rs-232接口的电平转换;5.单片机端用汇编程序进行编程,完成数据的收发,pc机端完成串口通信程序和界面的编制。此时,可以开始进行系统的硬件设计工作了。13三 通信系统硬件电路设计3.1串行接口的基本通信方式3.1.1串口基本结构的认识单片机的串行口的功能是与外部器件进行串行数据通信。串行口电路也称为通用异步收发器(uart)。从原理上说,一个uart包括发送器电路、接收器电路和控制电路。8051单片机的uart已集成在其中,构成一个全双工串口,全双工通信是指同时可以作双向通信,两个即可同时发送、接收,又可同时接收、发送。这种串口即可以实现串行异步通信,也可以作为同步移位寄存器使用3。8051的串行口通过引脚rxd(p3.0串行口数据接收端)和引脚txd(p3.1串行口数据发送端)与外部设备进行串行通信。图3-1为8051单片机内部串行口结构示意图。图3-1 串行口的内部结构图图3-1中共有两个串口双缓冲寄存器(sbuf),一个是发送寄存器,一个是接收寄存器,以便8051能以全双工方式进行通信。串行发送时,从片内总线向发送sbuf写入数据;串行接收时,从接收sbuf向片内总线读出数据。它们都是可寻址的寄存器,但因为发送与接收不能同时进行,所以给这两个寄存器赋一同一地址99h。在接收方式下,串行数据通过引脚rxd进入,由于在接收寄存器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,以避免在数据接收过程中出现帧重叠错误,即在下一帧数据来时,前一帧数据还没有走4。在发送方式下口,串行数据通过引脚txd发出。与接收数据情况不同,发送数据时,由于cpu是主动的,不会发生帧重叠错误,因此发送电路就不需要双缓冲结构,这样可以提高数据发送速度。3.1.2串口工作方式的对比(1)方式0工作方式0以8位数据为一帧进行传输,不设起始位和停止位,先发送或接收最低位,其一帧格式如下:表3-1 方式0的帧格式d0d1d2d3d4d5d6d7方式0为移位寄存器输入/输出方式。可外接移位寄存器以扩展i/o口,也可以外接同输入/输出设备。8位串行数据是从rxd输入或输出,txd用来输出同步脉冲。在方式0下,串行数据从rxd引脚输出,txd引脚输出移位脉冲。cpu将数据写入发送寄存器时,立即启动发送,将8位数据以固定波特率从rxd输出,低位在前,高位在后。发送完一帧数据后,发送中断标志ti由硬件置位。当串行口以方式0接收时,先置位允许接收控制位ren。此时,rxd为串行数据输入端,txd仍为同步脉冲移位输出端。当ri=0和ren=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位ri。(2)方式1工作方式1为波特率可变的10位异步通信接口方式。一帧信息包括1个起始位、8个数据位和1个停止位,其一帧格式如下:表3-2 方式1的帧格式起始d0d1d2d3d4d5d6d7停止当数据写入发送缓冲sbuf时,就启动发送。串行数据从txd引脚输出,发送完一帧数据后,就由硬件置位ti。在ren=1时,rxd引脚确认开始位,开始接收一帧数据。只有当ri=0且停止位为1时,停止位才进入rb8,8位数据才能进入接收寄存器,并由硬件置位中断标志ri;否则该数据会丢失。所以在方式1接收时,应先用软件清零ri和sm2标志。(3)方式2 方式2为固定波特率的11位uart方式。比方式1增加了一位可程控第9位数据。其帧格式为:表3-3 方式2的帧格式起始d0d1d2d3d4d5d6d7d8停止由txd端输出一帧11位的数据,附加的第9位来自scon寄存器的tb8位,用软件置位或复位。它可作为数据的奇偶校验位。当数据写入subf的指令时,就启动发送器发送。发送一帧信息后,置位中断标志ti。在ren=1时,串行口采样rxd引脚,开始接收一帧数据。在接收到附加的第9位数据后,当ri=0或者sm2=0时,第9位数据才进入rb8,8位数据才能进入接收寄存器,并由硬件置位中断标志ri;否则信息丢失。(4)方式3 方式3为波特率可变的11位uart方式。除波特率外,其余与方式2相同5。3.2通信协议的采用(1)方案采用的依据串行通信中,只有通信双方采用相同的接口标准,才能进行正常的通信。由于不同设备串行接口的信号线定义、电器规格等特性都不尽相同,因此要使这些设备能够相互连接,需要一个统一的串行通信接口。在本次设计中,采用rs-232协议作为通信协议,rs-232(又称eia rs-232c)是目前最常见的一种串行通信接口标准,它是在1970年由美国电子工业协会联合贝尔系统、调制解调器厂家及计算机终端生厂厂家共同制定的用于串行通信的标准。rs-232适合于数据传输速率在020 000bit/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定,作为一种标准在微机通信接口中广泛采用。由于单片机系统使用的是ttl电平,单片机中的串口输出的信号也是如此,但是串行通信中使用的rs-232c通信协议,二者的电平并不相同,在和单片机进行通信时,还需要有一定的外围电路的配合,使得单片机的通信电平和标准的串行通信协议相匹配6。(2)rs-232c的电器特性、逻辑电平和各种信号线功能txd、rxd:高电平(逻辑1)为-5v-15v,低电平(逻辑0)为+5+15v。rts、cts、dsr、dtr和dcd:控制线,信号有效(接通,on状态,正电压)时的电平为+5v+15v,信号无效时(断开,off状态,负电压)的电平为-5v-15v。对于rs-232c的信号而言,当传输电平的绝对值大于3v时,电路可以有效地检查出来,介于-5v+5v之间的电压无意义,低于-15v或高于+15v的电压也认为无意义。所以,rs-232c是用正负电压来表示逻辑状态,与ttl以高低电平表示逻辑状态的规定不同。为了能够同计算机接口或终端的ttl器件连接,必须在eia-rs-232c与ttl电路之间进行电平和逻辑关系的变换。rs-232c中的rs是英文“推荐标准”的缩写,232为标示号,c表示修改的次数。rs-232c总线标准规定了21个信号和25个引脚,包括一个主通道和一个辅助通道,在多数情况下主要使用主通道。3.3电平转换电路的设计3.3.1设计方法和其他的单片机器件一样,作为单片机的标准外围电路,串口的电平转换也有专用的芯片,但也可以使用三极管自行调整电平匹配。本设计主要采用专用芯片进行电平转换的方法。目前较为广泛的是使用集成电路转换器件,max232芯片可完成ttl和rs-232c的双向电平转换。在这里我采用的芯片是max232。图3-2 max232引脚图3.3.2max232的引脚介绍max232的引脚主要为5个部分。(1)外接电容:有5个外接电容、进行电压匹配和电源去耦。(2)ttl的输入:电路ttl电平的输入引脚11和10引脚,连接单片机的txd输出端口。(3)ttl的输出:电路ttl电平的输出引脚12和9引脚,连接单片机的rxd输出端口。(4)rs-232的输入:两路rs-232电平的输入引脚13和8引脚,连接rs-232的txd的输出端口。(5)rs-232的输出:两路rs-232电平的输出引脚14和7引脚,连接rs-232的rxd的输出端口。通过max232的ttl和rs-232的输入/输出端口,自动地调节了单片机串口的ttl电平信号和rs-232的串行通信信号的电平匹配7。3.3.3电平转换芯片与单片机的连接电路地址分配和连接:只列出和系统相关的、关键部分的单片机与各个模块管脚的连接和相关的地址分配。max232的11引脚:max232的ttl电平输入引脚,连接单片机的txd,ttl串口输入信号。max232的12引脚:max232的ttl电平输出引脚,连接单片机的rxd、ttl串口输入信号。max232的14引脚:max232的rs-232电平输出引脚,连接rs-232的rxd,rs-232的串口输入信号。max232的13引脚:max232的rs-232电平输入引脚,连接rs-232的txd,rs-232的串口输出信号8。3.4绘制电路原理图系统硬件设计阶段,设计者需要对各个模块的硬件部分进行具体设计。这部分包括单片系统的设计,外围功能模块的选择,i/o口的分配,单片机与外围模块,单片机与单片机之间通信线路的选择,模拟输入/输出通道电路设计等方面。当具体的硬件系统功能框图完成后,可以绘制电路的原理图,同时设计者还要对电路设计进行进一步的验证。完成电路原理图的绘制后,还需要使用protues等工具软件绘制硬件系统的版图,然后进行电路板的制作。(1)打开原理图设计界面安装了protues后,双击isis打开进入原理图编辑器。在工具栏中选择“库”“拾取原件/符号”,在弹出的窗口中输关键字进行查找。例如输入at89c52弹出如图3-3所示界面:图3-3 绘制原理图按照此法选择单片机、cap-elec、compim、led-red、lde-green、7seg-7、button max232、晶振crystal、电容cap等在编辑区域中添加。元件选取完毕后,在原理图编辑区合适位置摆放,可先单击选中进行拖放。在“终端模式”中选取接地、电源及总线后将放置完毕的元件进行电路图中各对象间的连线,目的是按照电路设计的要求建立网络的实际连通性。系统各元器件清单:8051:单片机。crystal:晶振,选择12mhz,便于设置波特率。max232:单片机串口的电平转换芯片。com1:pc机的串口1。led:发光二极管。button:用于复位的按钮。res:电阻。cap:电容。图3-4 单片机与计算机串行通信电路原理图图3-5 硬件电路实物图当接通电源后,绿色led灯和数码管显示“8”,实物中有一个单片机芯片,电平转换器、led及数码管等。如下图:图3-6 接通电源后实物显示图合肥师范学院2011届本科生毕业论文(设计)四 串行通信程序设计4.1下位机(单片机)串行通信及程序设计一个完整的单片机系统只有硬件还不能工作,必须有软件来控制整个系统的运行。单片机系统的软件设计主要使用汇编语言或c51语言。单片机的软件部分 ,主要任务包括系统的初始化、各模块参数的设置、中断请求管理、定时器管理、外围模块读写、功能算法实现、可靠性和抗干扰设计等方面9。软件的设计可以分两个阶段。首先,在等待电路板制作期间,设计者可以按照最初的设计思路完成部分的软件设计工作。随后当硬件部分的制作完成后,设计者还需要根据硬件将事先完成的软件部分的各个模块进行组合和调整。本文以protues为集成开发环境利用汇编语言完成下位机软件设计,软件的功能是利用单片机接收数据在数码管和led灯上进行显示。它一方面显示数据,另一方面将数据发送出去。下位机汇编语言程序如下:org0000hajmpmainorg0100hmain:movsp,#06h movscon,#50h /8位uart(1 start ,8 data ,1 stop),允许接受movtmod,#20h /t1工作方式2movth1,#0fdhmovtl1,#0fdhsetbtr1key:mova,#0ffhmovp0,amova,p0jnbacc.0,key0jnbacc.1,key1 ajmpmainkey0:movp1,#0ffhk0:jbri,kk /是否接收到数据,有则跳至kksjmpk0kk:mova,sbuf /将接收到的数据保存到累加器movp1,a /输出至p1clrri /清除risjmpk0retkey1:movp2,#0ffhk01:jbri,kk1 /是否接收到数据,有则跳至kksjmpk01kk1:mova,sbuf /将接收到的数据保存到累加器movp2,a /输出至p2clrri /清除risjmpk0retend图4-1 利用keil c编译结果4.2上位机(pc机)串行通信及程序设计上位机软件采用vb编写,本文中上位的数据接收是通过串口实现的,在vb中mscomm控件管理串口,其主要的属性有以下几个方面。commport设置其打开端口号为1或2,3,4等;inbuffersize=1024,接收缓冲区中字节数;inputlen=0,设置一次接收缓冲字节数为全部字节数;inputmode=cominputmodebinary表示数据通过input属性为二进制形式;outbuffersize=1024,设置并返回传输缓冲区的大小;rthreshold=1,设置接收一个字节产生oncomm事件;rtsenable=false,若设为true则会发送信息到调制解调器,而不是通过串口通信;setting=9600,n,8,1,设置并返回波特率、奇偶校验、数据位、停止位参数。9600,n,8,1即波特率为9600,无奇偶校验,8个数据位,1个停止位;sthreshold=0(缺省值)。数据传输事件不会产生oncomm事件。若设置sthreshold属性为1,当传输缓冲区完全空时,mscomm控件产生oncomm事件10。在使用mscomm控件的input属性读取数据之前,必须先设置inputl.en属性确定被input属性读取的字符数,设置inputlen为0,则input属性读取缓冲区中全部的内容 如果接收的数据类型为文本数据,则设置mscomml.inputmode=cominputmodetext,input属性通过一个variant返回文本数据。下面是vb部分程序,完整程序附于附录:mscomm控件的初始化(属性设置)程序:with mscomm1 .commport = 11 使用com11 .settings = baudrate & ,n,8,1 设置通信口参数 .inbuffersize = 1024 设置mscomm1接收缓冲区为1024字节 .outbuffersize = 1024 设置mscomm1发送缓冲区为1024字节 .inputmode = cominputmodebinary 设置接收数据模式为二进制形式- .inputlen = 0 设置input 一次从接收缓冲读取全部字节数 .sthreshold = 0 设置发送完所有产生oncomm事件 .inbuffercount = 0 清除接收缓冲区 .outbuffercount = 0 清除发送缓冲区 .rthreshold = 1 设置接收一个字节产生oncomm事件 .rtsenable = true- if not .portopen then 判断通信口是否打开 on error resume next .portopen = true 打开通信口 if err then 错误处理 msgbox 串口被占用或此串口不存在!通信无效!, 16, 错误提示 exit sub end if end ifend with数据接收子程序:private sub mscomm1_oncomm() on error resume next dim indata as string 串口接收的数据 dim inbyte() as byte 定义一个二进制指针放接收到的数据 dim inbyte1() as byte select case mscomm1.commevent 选择事件 case comevreceive 接收到字符 timenum = 4 -赋值计时常量 inbyte = mscomm1.input 数据转移到指针 serial_rece_fg = true dim j as long for j = 0 to ubound(inbyte) 循环到指针上标 if inbyte(j) = 13 then indata = indata & vbcr lf else indata = indata & chr(inbyte(j) -ascii码显示处理 end if next j txt_rcv.seltext = indata 将刚收到的字符串显示出来 indata = txt_rcv.selstart = len(txt_rcv.text) 光标置后 case comeventrxover -接收缓冲区满的处理 mscomm1.inbuffercount = 0 msgbox 接收缓冲区满了! -发出警告 end selectend sub以上vb编辑产生的界面如下:图4-2 vb界面在启动运行后,显示如下界面面,此时点击相应按钮可显示对应数值,例如点击led1和“0”后,灯变为红色、数码管显示0。如下图:图4-3 单击led1和“0”显示的结果五 总结从选择课题到现在设计接近最后阶段,让人感受颇深,有关于单片机知识的,但更多是自己的动手能力。因为我们平时接触的都是纯粹理论的东西,做实验也是雾里看花,对硬件的认识是很缺乏的。在网上查阅了大量的单片机和数字芯片的资料,资料比较多也很分散,所以整理有用的资料就显得很重要,有些东西实在是不懂我就把资料带回来请教同学,让我受益匪浅。然后在硬件电路的设计中,由于要涉及软件设计的具体情况,在老师的精心指导下,最终确定了一个比较容易接受的方案。当时感觉这下任务该完成了,没有想到的是在实际的调试中更是遇到了太多的麻烦。拿着设计好的电路接线图和设计的程序室调试,可未能得到我所想要的结果,后来对电路进行了一些改动,在反复检查电路调试程序后,最后终于有了结果。通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至差别很大。这次实践使我更深刻的体会到了理论联系实际的重要性,在今后的学习工作中会更加的注重实际,避免称为只会纸上谈兵。通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。29参考文献1 张刚毅.彭喜元.单片机原理及接口技术.北京:人民邮电出版社,2008,9118.2 徐爱钧.单片机原理及应用.北京:机械工业出版社,2010,1525,131156.3 刘炳文.visual basic程序设计简明教程.北京:清华大学出版社,2006,1156.4 常敏.王涵.范江波等.单片机应用教程开发与实践.北京:电子工业出版社,2009,2938,103109.5 李全利.仲伟峰.徐军.单片机原理及应用.北京:清华大学出版社,2006,111136.6 郭清溥.visual basic程序设计教程.北京:中国水利水电出版社,2009,35183.7 曾一江.单片机原理与接口技术.北京:科学出版社,2006,126142.8 杜洋.爱上单片机.北京:人民邮电出版社,2010,2197.9 沙占友.单片机外围电路设计.北京:电子工业出版社,2009,88136.10 戴佳.单片机应用系统开发典型实例.北京:中国电力出版社,2005,103169.附 录vb完整程序如下:dim cport as integerprivate sub cmd_0_click() dim aa(0) as byte aa(0) = &h3f mscomm1.output = aa image1.picture = imagelist1.listimages(10).pictureend subprivate sub cmd_2_click() dim aa(0) as byte aa(0) = &h5b mscomm1.output = aa image1.picture = imagelist1.listimages(2).pictureend subprivate sub cmd_3_click() dim aa(0) as byte aa(0) = &h4f mscomm1.output = aa image1.picture = imagelist1.listimages(3).pictureend subprivate sub cmd_4_click() dim aa(0) as byte aa(0) = &h66 mscomm1.output = aa image1.picture = imagelist1.listimages(4).pictureend subprivate sub cmd_5_click() dim aa(0) as byte aa(0) = &h6d mscomm1.output = aa image1.picture = imagelist1.listimages(5).pictureend subprivate sub cmd_6_click() dim aa(0) as byte aa(0) = &h7d mscomm1.output = aa image1.picture = imagelist1.listimages(6).pictureend subprivate sub cmd_8_click() dim aa(0) as byte aa(0) = &h7f mscomm1.output = aa image1.picture = imagelist1.listimages(8).pictureend subprivate sub cmd_9_click() dim aa(0) as byte aa(0) = &h6f mscomm1.output = aa image1.picture = imagelist1.listimages(9).pictureend subprivate sub cmd_led1_click() if not mscomm1.portopen then 判断通信口是否打开 msgbox 串口被占用或此串口不存在!通信无效!, 16, 错误提示 exit sub end if dim aa(0) as byte aa(0) = &hfe mscomm1.output = aa shape0.fillcolor = vbred shape0.bordercolor = vbred shape1.fillcolor = vbblack shape1.bordercolor = vbblack shape2.fillcolor = vbblack shape2.bordercolor = vbblack shape3.fillcolor = vbblack shape3.bordercolor = vbblack shape4.fillcolor = vbblack shape4.bordercolor = vbblack shape5.fillcolor = vbblack shape5.bordercolor = vbblack shape6.fillcolor = vbblack shape6.bordercolor = vbblack shape7.fillcolor = vbblack shape7.bordercolor = vbblack end subprivate sub cmd_led2_click() if not mscomm1.portopen then 判断通信口是否打开 msgbox 串口被占用或此串口不存在!通信无效!, 16, 错误提示 exit sub end if dim aa(0) as byte aa(0) = &hfd mscomm1.output = aa shape0.fillcolor = vbblack shape0.bordercolor = vbblack shape1.fillcolor = vbred shape1.bordercolor = vbred shape2.fillcolor = vbblack shape2.bordercolor = vbblack shape3.fillcol

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论