环境管理_基于windows环境下数据通信处理及存储程序设计_第1页
环境管理_基于windows环境下数据通信处理及存储程序设计_第2页
环境管理_基于windows环境下数据通信处理及存储程序设计_第3页
环境管理_基于windows环境下数据通信处理及存储程序设计_第4页
环境管理_基于windows环境下数据通信处理及存储程序设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

专业综合课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 基于PC机Windows环境下数据通信、处理及存储程序设计与实现。初始条件:(1) 提供实验室机房及安装Windows系统的PC机;(2) 数据通信的基本理论学习。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):(1)在PC机Windows环境下设计出一款集数据发送、接收处理及存储程序;(2)通信接口为RS-232,USB,网卡任意一款;(3)通信的数据流自定,处理操作自定;(4)接收的数据以文件的形式存在硬盘上;(5)对结果进行分析; (6)要求阅读相关参考文献不少于5篇;(7)根据课程设计有关规范,按时、独立完成课程设计说明书。时间安排: (1) 布置课程设计任务,查阅资料,确定方案 四天; (2) 进行编程设计 一周; (3) 完成课程设计报告书 三天;指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录摘要I1 Proteus软件简介12 Visual Basic 6.0简介23 串口通信原理33.1串行通信定义33.2串行通信的异步通信43.3波特率43.4串行接口的基本特点53.4.1串行端口工作方式54单片机与PC机通信84.1 AT89C51单片机上对应端口介绍84.3单片机通信代码94.4仿真电路图115 VB设计PC机125.1界面设计125.2 VB设计的窗体125.3 VB代码126 串口通信结果及其分析226.1通信结果226.2结果分析247 实物图258心得体会26参考文献27努力了的才叫梦想,不努力的就是空想!如果你一直空想的话,无论看多少正能量语录,也赶不走满满的负能量!你还是原地踏步的你,一直在看别人进步。摘要为了实现本次课设的要求,完成基于PC机Windows环境下数据通信、处理及存储程序设计与实现。我们采用Visual Basic 6.0软件设计和Proteus单片机串口仿真来完成课程设计的要求。我们选取的是通信接口为RS-232,利用单片机与PC机的之间相互通信来实现课设要求,Visual Basic软件主要用于设计代表PC机的窗体,实现PC机进行串口通信的基本功能;Proteus软件仿真的单片机用于模拟单片机,完成与PC机的通信。本次课设除了要用到VB和Proteus软件外,还需使用KEIL软件生成适用于51单片机的.HEX文件,以及用到Virtual Serial Port Driver软件来对PC机和单片机之间串口进行连接,使用VSPD软件来设置连接串口的时候我将单片机设为COM3,PC机设为COM1。关键字:RS-232 ,串口通信,Proteus,Visual Basic 6.01 Proteus软件简介 Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:1原理布图2PCB自动或人工布线3SPICE电路仿真4互动的电路仿真5仿真处理器及其外围电路Proteus拥有丰富的资源,它体现在:1Proteus可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。2Proteus可提供的仿真仪表资源 :示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。3除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。4Proteus可提供的调试手段 Proteus提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。 Proteus不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。 课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTEUS也能茯得愈来愈广泛的应用。2 Visual Basic 6.0简介Visual Basic(VB)是由微软公司开发的包含协助开发环境的事件驱动编程语言。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速创建一个应用程序。VB的中心思想就是要便于程序员使用,无论是新手或者专家。VB使用了可以简单创建应用程序的GUI系统,但是又可以开发相当复杂的程序。VB的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组建的属性和方法。因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。过去的版本里面VB程序的性能问题一直被放在了桌面上,但是随着计算机速度的飞速增加,关于性能的争论已经越来越少。窗体控件的增加和改变可以用拖放技术实现。一个排列满控件的工具箱用来显示可用控件(比如文本框或者按钮)。每个控件都有自己的属性和事件。默认的属性值会在控件创建的时候提供,但是程序员也可以进行更改。很多的属性值可以在运行时候随着用户的动作和修改进行改动,这样就形成了一个动态的程序。举个例子来说:窗体的大小改变事件中加入了可以改变控件位置的代码,在运行时候每当用户更改窗口大小,控件也会随之改变位置。在文本框中的文字改变事件中加入相应的代码,程序就能够在文字输入的时候自动翻译或者阻止某些字符的输入。VB的程序可以包含一个或多个窗体,或者是一个主窗体和多个子窗体,类似于操作系统的样子。有很少功能的对话框窗口(比如没有最大化和最小化按钮的窗体)可以用来提供弹出功能。VB的组件既可以拥有用户界面,也可以没有。这样一来服务器端程序就可以处理增加的模块。VB使用引用计数的方法来进行垃圾收集,这个方法中包含有大量的对象,提供基本的面向对象支持。因为越来越多组建的出现,程序员可以选用自己需要的扩展库。和有些语言不一样,VB对大小写不敏感,但是能自动转换关键词到标准的大小写状态,以及强制使得符号表入口的实体的变量名称遵循书写规则。默认情况下字符串的比较是对大小写敏感的,但是可以关闭这个功能。VB使得大量的外界控件有了自己的生存空间。大量的第三方控件针对VB提供。VB也提供了创建、使用和重用这些控件的方法,但是由于语言问题,从一个应用程序创建另外一个并不简单。3 串口通信原理3.1串行通信定义串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS-232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。3.2串行通信的异步通信字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等四部分组成。在串行通信中,发送端一帧一帧发送信息,接收端一帧一帧接收信息。两相邻字符帧之间可以无空闲位,也可以由若干空闲位,自行定义。串行通信的数据或者字符是一帧一帧地传送,在异步通信中,一帧数据先用一个起始位“0”表示字符的开始,然后是58位上数据,即该字符的代码,规定低位在前,高位在后,接下来是奇偶校验位,最后一个停止位“1”表示字符的结束。下面是异步通信一帧数据为10位的帧格式见图3-1。图3-1字符帧格式图3.3波特率波特率是通信中对数据传送速率的要求。在计算机通信中,其意义是每秒钟传送多少位二进制数。假如异步传送速率为每秒120个字符,每个字符有1个起始位,8个数据位,1个停止位组成,则其传送波特率为 传送一位所需要的时间为波特率的倒数,即 在串行传输中,二进制数据序列是以数字波形出现的,发送时在发送时钟下将通信线上传来的数据串行移入移位寄存器,所以,发送时钟和接受时钟也可作移位时钟。能产生该时钟的电路称为波特率发生器。为提高采样的分辨率,准确地测定数据位的上升沿或下降沿,时钟频率总是高于波特率的若干倍,这个倍数称为波特率因子。在单片机中,发送和接收时钟可以由系统时钟fosc产生,其波特率因子为12,32,64.如果波特率由fosc决定称为固定波特率方式。也可以由单片机的内部定时器T1产生,它工作于自动重装8位定时方式,由于定时器的计数初值可以人为的改变,T1产生的时钟频率就可以改变,称为可变波特率方式。3.4串行接口的基本特点3.4.1串行端口工作方式MCS-51单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。其中,方式0主要用于外接移位寄存器,以扩展单片机的IO电路;工作方式1多用于双机之间或与外设电路的通信;方式2、3除有方式1的功能外,还可以作多机通信,以构成分布式多微机系统。 串行端口有两个控制寄存器SCON、PCON,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率每秒传送的位数以及作为中断标志等。串行端口有一个数据寄存器SBUF在特殊功能寄存器中的字节地址为99H,该寄存器为发送和接收所共用。串行端口的波特率可以用程序来控制。在不同工作方式中,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定,使用十分方便灵活。串口控制寄存器:输入:在时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据。只有当8位数据接收完,并检测到高电平停止位后,只有满足;或接收到的第9位数据为1时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。1. 方式2方式2为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第9位数据。输出:发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通讯中地址数据信息的标志位,也可以作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令且时,就启动发送器发送。发送一帧信息后,置位中断标志TI。输入:在时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据。在接收到附加的第9位数据后,当满足;或接收到的第9位数据为1时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。且不置位RI。2. 工作方式3方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。波特率的选择如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在MCS-51串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。1方式O方式0的波特率固定为主振频率 的。2方式2 方式2的波特率由PCON中的选择位SMOD来决定,可表示为:也就是当时,波特率为,当时,波特率为。3方式1和方式3定时器T1作为波特率发生器,其公式如下:式中T1计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1计数率为fosc门2:当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。定时器T1工作于方式O:定时器T1工作于方式1: 定时器T1工作于方式2:因为方式2为自动重装入初值的8位定时器计数器模式,所以用它来做波特率发生器最恰当。这种方式下,T1的溢出率次秒计算式可以表示为:(二) 串行口的通信波特率串行口的通信波特率恰好反映串行口传输数据的速率。通信波特率的选用,不仅和所选通信设备、传输距离有关,还受传输线状况所制约。波特率设计 1、方式0的波特率 工作方式0时,移位脉冲由机器周期的第6个状态周期S6给出,每个机器周期产生一个移位脉冲,发送或接收一位数据。因此,波特率是固定的,为振荡频率的,不受PCON寄存器中SMOD的影响。用公式表示为:工作方式0的 2、方式2的波特率 工作方式2时,移位脉冲由振荡频率fosc的第二节拍P2时钟(即)给出,所以,方式2波特率取决于PCON中的SMOD位的值,当时,波特率为fosc的;当时,波特率为fosc的,用公式表示为;工作方式2: 3、工作方式1和方式3的波特率 在这两种方式下,串行口波特率是由定时器的溢出率决定的,因而波特率也是可变的。相应公式为: 实际上定时器T1通常采用方式2,因为定时器T1在方式2下工作,TH1和TL1分别设定为两个8位重装计数器。4单片机与PC机通信4.1 AT89C51单片机上对应端口介绍本次课设主要用到AT89C51单片机上的P3口,P3口的功能简介如下:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(计时器0外部输入)P3.5 T1(计时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号本次单片机部分只需用到P3口的P3.0口和P3.1口,用于和PC连接通信。4.2 RS-232简介通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,RS-232的电器特性、逻辑电平和各种信号线功能也有规定。 在TxD和RxD上: 逻辑1:-3V -15V 逻辑0:+3V+15V 发送数据(TxD)通过TxD终端将串行数据发送到MODEM,(DTEDCE)。 接收数据(RxD)通过RxD线终端接收从MODEM发来的串行数据,(DCEDTE)。4.3单片机通信代码#include #include#define uchar unsigned char#define uint unsigned intunsigned char flag,a,i;uchar code table=OH MY GOD;void delay1ms()uchar i,j;for(i=0;i10;i+)for(j=0;j33;j+);void delay(uchar n)/延时n毫秒uchar i;for(i=0;in;i+)delay1ms();void init() TMOD=0x20;/T1定时器方式2 TH1=0xfd; TL1=0xfd;/T1定时器装初值 TR1=1;/启动定时器T1 REN=1;/数据允许接受 SM0=0;设定串口方式1 SM1=1;/ EA=1;/开总中断 ES=1;/允许串口中断void main() uchar k; init(); while(1) if(flag=1) ES=0;/关闭串口中断 for(i=0;i= 0 And c = a And c = A And c = F Then IsHex = Asc(c) - Asc(A) + 10 Else IsHex = 16 End IfEnd FunctionPrivate Sub Command6_Click() Dim outs As String outs = Text2.Text Call ToChar(out, CStr(outs) MSComm1.Output = out Exit Sub Dim s As String Dim l As Integer Dim i As Integer, j As Integer, cnt As Integer Dim a As Integer Dim tmp As String Dim send_buf() As Byte ReDim send_buf(1024) cnt = 0 s = Trim(Text2.Text) l = Len(s) Do While (l) Do Until IsHex(Left(s, 1) 16 l = l - 1 If l = 0 Then Exit Do tmp = Right(s, l) Loop a = IsHex(Left(s, 1) l = l - 1 s = Right(s, l) If l 0 And IsHex(Left(s, 1) 16 Then a = a * 16 + IsHex(Left(s, 1) l = l - 1 s = Right(s, l) End If cnt = cnt + 1 send_buf(cnt) = a Loop If cnt 128 Then cnt = 128 ReDim Preserve send_buf(cnt) MSComm1.Output = send_buf()End SubPrivate Sub Command7_Click() Unload MeEnd SubPrivate Sub Form_Activate() On Error Resume Next mut = False Combo1.ListIndex = 0 Combo2.ListIndex = 5 Combo3.ListIndex = 0 Combo4.ListIndex = 0 mut = True MSComm1.PortOpen = True If Err.Number Then MsgBox 串口1已打开!, vbOKOnly, 警告 Option1.BackColor = RGB(0, 0, 0) Command1.Enabled = False Command6.Enabled = False Err.Clear End If Command1.SetFocusEnd SubPrivate Sub Form_Load() MSComm1.CommPort = 1 设置串行端口com1 MSComm1.Settings = 9600,N,8,1 设置波特率及数据帧格式 MSComm1.InputLen = 0 读取接收缓冲区的所有字符 MSComm1.InBufferSize = 256 数据接受缓冲区大小为4000字节 MSComm1.OutBufferSize = 256 数据发送缓冲区大小为4000字节 MSComm1.RThreshold = 1 每10位数据到接收缓冲区都触发接收事件 MSComm1.SThreshold = 1 发送缓冲区空触发发送事件 MSComm1.InputMode = comInputModeText 字节模式 设定 InputMode 以读取二进位资料 MSComm1.InputMode = comInputModeBinary disp_on = 1 comport = 1 rate = 9600 data_cnt = 8 stop_cnt = 1End SubPrivate Sub Label3_Click()End SubPrivate Sub MSComm1_OnComm() Static cnt As Integer Dim receive_cnt As Integer Dim i As Integer Dim Buffer As Variant Dim Arr() As Byte Dim s As String Select Case MSComm1.CommEvent Case comEvReceive receive_cnt = MSComm1.InBufferCount 接收缓冲区的字节数 往暂存区存二进位资料 Buffer = MSComm1.Input 指定给位元组阵列以便处理 Arr = Buffer s = For i = 0 To receive_cnt - 1 If Arr(i) = 32 And Arr(i) = 300 Then Text1.Text = cnt = 0 Exit Sub End If Case comEvSend End SelectEnd SubFunction ToChar(ByRef f() As Byte, ByVal s As String) ReDim f(0) Dim i As Long For i = 0 To Len(s) - 1 ReDim Preserve f(i) f(i) = Asc(Mid(s, i + 1, 1) Next i ReDim Preserve f(i) f(i) = 0End Functio6 串口通信结果及其分析6.1通信结果图6-1 VSPD设置串口图6-2单片机向PC端发送 图6-3 PC端接受单片机通信图6-4 PC端向单片机发送数据图6-5 单片机接收PC发送数据6.2结果分析 先使用VSPD软件将所涉及的VB程序与单片机的串口进行连接,在这里我设置的是将com1口和com3口进行连接,如图6-1所示。如图6-2所示,仿真开始,单片机向外发送字符“OH MY GOD”字符,接着PC端对单片机发送的字符进行接收,如图6-3所示。接下来PC端向单片机端发送字符“OH MY GOD ”如图6-4所示,最后我们在单片机的显示框中能看到PC端输入的字符,证明PC端与单片机之间的通信成功。另外当按下保存显示数据按钮时,会在指定位置生成一个名为“NICE.txt”的文件,也实现是课设要求的保存数据的要求。仿真过程中有些错误,我们可以看到在PC端的接收区,除了单片机指定发送的字符外还有部分乱码以及接收的位置不稳定,乱码虽然不多但仍需注意,不过鉴于水平有限目前还没有具体的解决方法,希望以后能加以学习改进。 7 实物图图7-1基于学习单片机的实物调试8心得体会 本次专业综合课程设计做的比以前的课设要更加复杂,任务量也比之前做过的课设要多。

温馨提示

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

评论

0/150

提交评论