基于PC机Windows环境下数据通信、处理及存储程序设计与实现课程设计.doc

上传人:本田雅阁 文档编号:2182866 上传时间:2019-02-26 格式:DOC 页数:26 大小:3.86MB
返回 下载 相关 举报
基于PC机Windows环境下数据通信、处理及存储程序设计与实现课程设计.doc_第1页
第1页 / 共26页
基于PC机Windows环境下数据通信、处理及存储程序设计与实现课程设计.doc_第2页
第2页 / 共26页
基于PC机Windows环境下数据通信、处理及存储程序设计与实现课程设计.doc_第3页
第3页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于PC机Windows环境下数据通信、处理及存储程序设计与实现课程设计.doc》由会员分享,可在线阅读,更多相关《基于PC机Windows环境下数据通信、处理及存储程序设计与实现课程设计.doc(26页珍藏版)》请在三一文库上搜索。

1、专业综合课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 5.基于PC机Windows环境下数据通信、处理及存储程序设计与实现。PC机Windows环境下程序设计能力是电子信息专业技术人员的一项基本技能,本课程设计题要求学生采用任何一种开发平台,设计出一款单片机与PC机间的数据通信、处理及存储的程序(数据收、发程序都要提供)。设计内容及要求:(1)通信接口为RS-232,USB,网卡任意一款。(2)通信的数据流自定。(3)处理操作自定。(4)接收的数据以文件的形式存在硬盘上。时间安排: (1) 布置课程设计任务,查阅资料,确定方案 四天; (2) 进行编程设计 一周; (

2、3) 完成课程设计报告书 三天;指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录摘要I1 Visual Basic 6.0简介22 串口通信原理33.1串行通信定义33.2串行通信的异步通信43.3波特率43.4串行接口的基本特点53.4.1串行端口工作方式53单片机与PC机通信84.1 AT89C51单片机上对应端口介绍84.3单片机通信代码94.4仿真电路图114 VB设计PC机125.1界面设计125.2 VB设计的窗体125.3 VB代码125 串口通信结果及其分析226.1通信结果226.2结果分析246 实物图257心得体会26参考文献27摘要为了实现本次课设的

3、要求,完成基于PC机Windows环境下数据通信、处理及存储程序设计与实现。我们采用Visual Basic 6.0软件设计和51单片机完成课程设计的要求。我们选取的是通信接口为RS-232,利用单片机与PC机的之间相互通信来实现课设要求,Visual Basic软件主要用于设计代表PC机的窗体,实现PC机进行串口通信的基本功能;单片机用于完成与PC机的通信。本次课设除了要用到VB软件外,还需使用KEIL软件生成适用于51单片机的.HEX文件。关键字:RS-232 ,串口通信, Visual Basic 6.1 Visual Basic 6.0简介Visual Basic(VB)是由微软公司开

4、发的包含协助开发环境的事件驱动编程语言。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速创建一个应用程序。VB的中心思想就是要便于程序员使用,无论是新手或者专家。VB使用了可以简单创建应用程序的GUI系统,但是又可以开发相当复杂的程序。VB的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组建的属性和方法。因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。过去的版本里面VB程

5、序的性能问题一直被放在了桌面上,但是随着计算机速度的飞速增加,关于性能的争论已经越来越少。2 串口通信原理2.1串行通信定义串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS-232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。2.2串行通信的异步通信字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等四部分组成。在串行通信中,发送端一帧一帧发送信息,接收端一帧一帧接收信息。两相邻字符帧之间可以无空闲位,也可以由若干空闲位,自行定义。串行通信的数据或者字符是一帧一帧地传送,

6、在异步通信中,一帧数据先用一个起始位“0”表示字符的开始,然后是58位上数据,即该字符的代码,规定低位在前,高位在后,接下来是奇偶校验位,最后一个停止位“1”表示字符的结束。下面是异步通信一帧数据为10位的帧格式见图3-1。图3-1字符帧格式图2.3波特率波特率是通信中对数据传送速率的要求。在计算机通信中,其意义是每秒钟传送多少位二进制数。假如异步传送速率为每秒120个字符,每个字符有1个起始位,8个数据位,1个停止位组成,则其传送波特率为 传送一位所需要的时间为波特率的倒数,即 在串行传输中,二进制数据序列是以数字波形出现的,发送时在发送时钟下将通信线上传来的数据串行移入移位寄存器,所以,发

7、送时钟和接受时钟也可作移位时钟。能产生该时钟的电路称为波特率发生器。2.4串行接口的基本特点2.4.1串行端口工作方式串行端口有两个控制寄存器SCON、PCON,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率每秒传送的位数以及作为中断标志等。串行端口有一个数据寄存器SBUF在特殊功能寄存器中的字节地址为99H,该寄存器为发送和接收所共用。串行端口的波特率可以用程序来控制。在不同工作方式中,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定,使用十分方便灵活。串口控制寄存器:输入:在时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接

8、收一帧数据。只有当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的指令且时,就启动发送器发送。发送一帧信息后,置位中

9、断标志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方

10、式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的溢出率次

11、秒计算式可以表示为:(二) 串行口的通信波特率串行口的通信波特率恰好反映串行口传输数据的速率。通信波特率的选用,不仅和所选通信设备、传输距离有关,还受传输线状况所制约。波特率设计 1、方式0的波特率 工作方式0时,移位脉冲由机器周期的第6个状态周期S6给出,每个机器周期产生一个移位脉冲,发送或接收一位数据。因此,波特率是固定的,为振荡频率的,不受PCON寄存器中SMOD的影响。用公式表示为:工作方式0的 2、方式2的波特率 工作方式2时,移位脉冲由振荡频率fosc的第二节拍P2时钟(即)给出,所以,方式2波特率取决于PCON中的SMOD位的值,当时,波特率为fosc的;当时,波特率为fosc的

12、,用公式表示为;工作方式2: 3、工作方式1和方式3的波特率 在这两种方式下,串行口波特率是由定时器的溢出率决定的,因而波特率也是可变的。相应公式为: 实际上定时器T1通常采用方式2,因为定时器T1在方式2下工作,TH1和TL1分别设定为两个8位重装计数器。3单片机与PC机通信3.1 STC89C51单片机上对应端口介绍本次课设主要用到AT89C51单片机上的P3口,P3口的功能简介如下:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故

13、。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的电器特性、逻

14、辑电平和各种信号线功能也有规定。 在TxD和RxD上: 逻辑1:-3V -15V 逻辑0:+3V+15V 发送数据(TxD)通过TxD终端将串行数据发送到MODEM,(DTEDCE)。 接收数据(RxD)通过RxD线终端接收从MODEM发来的串行数据,(DCEDTE)。3.2单片机通信代码#include#define uchar unsigned char#define uint unsigned intuint i;uchar key,fasong; uchar xdata tab32=0x80,0x81,0x82,0x83, 0x84,0x85,0x86,0x87, 0x88,0x89,

15、0x8a,0x8b, 0x8c,0x8d,0x8e,0x8f, 0xc0,0xc1,0xc2,0xc3, 0xc4,0xc5,0xc6,0xc7, 0xc8,0xc9,0xca,0xcb, 0xcc,0xcd,0xce,0xcf;/lcd地址表sbit dula=P26;/关闭数码管sbit wela=P27;void write_com(uchar com); /lcd写指令void write_data(uchar data_);/lcd写数据sbit rs=P20; /lcd写指令,写数据sbit rw=P21; /lcd读写sbit en=P22; /lcd使能sbit s1=P34;

16、 /s1-s4为按键sbit s2=P35;sbit s3=P36;sbit s4=P37;sbit rd=P33; /按键检测void init();void delay(uint n);uchar scan();void clear();void main()init();while(1)while(1)fasong=scan(); /检测按键if(fasong=*)/*为结束符号,结束发送数据break;if(fasong!=0)/按下按键a,b,c三个数据按键SBUF=fasong;/发送数据while(!TI);/发完一个字节,跳出循环TI=0; while(1) while(!RI

17、);/接收完一个数据,跳出循环RI=0;write_com(tabi+); if(SBUF=*) break;write_data(SBUF); if(i=32)i=0; clear();void init()TMOD=0x20; /定时器1工作于定时方式2TH1=0xD0;TL1=0XD0;/波特率600TR1=1;SCON=0x50;/发送数据dula=0; /关闭数码管 wela=0;write_com(0x01);/清显示write_com(0x06);/光标增量移位write_com(0x0f);/显示ON,光标ON,闪烁ONwrite_com(0x38);/8位,双行,5X7uch

18、ar scan() /键盘检测 rd=0; s1=1; s2=1; s3=1; s4=1; while(s1=0) delay(5); while(s1=0) /s1确实按下 while(!s1); /松手检测 key=a; return (key); while(s2=0) delay(5); while(s2=0) while(!s2); key=b; return (key); while(s3=0) delay(5); while(s3=0) while(!s3); key=c; return (key); while(s4=0) delay(5); while(s4=0) while

19、(!s4); key=*; return (key); key=0; /无键按下,返回0 return (key); void delay(uint n) /延时函数 uint j,k; for(j=0;j0;k-); void write_com(uchar com) rs=0; rw=0; P0=com; en=1; delay(5); en=0; void write_data(uchar data_) rs=1; rw=0; P0=data_; en=1; delay(5); en=0; void clear() /清lcd显示并将光标定位到0x80 for(i=0;i32;i+) w

20、rite_com(tabi);write_data( );write_com(0x80);i=0; 4 VB设计上位机4.1界面设计本次设计需要添加MSComm控件,可用Project-Componentscomm control 6.0进行添加。在设计窗体时要添加以下控件:5个ComboBox 、5个Label、3个 Frame、5个Command Button、2个 TextBox。4.2 VB设计的窗体图4-1 VB设计软件4.3 VB代码Option ExplicitDim ComPort As IntegerDim HexReceiveFlag As LongDim AutoSend

21、Flag As LongPrivate Sub cmdClearReceivetext_Click() 清除接收区txtReceive.Text = End SubPrivate Sub cmdClearSendtext_Click() 清除发送区txtSend.Text = End SubPrivate Sub cmdOpencom_Click() 按下 “打开/关闭串口”ComPort = Val(Right(Trim(cboComPort.Text), 1) 端口号Dim A As String设置串口通信参数If Trim(cmdOpencom.Caption) = 打开串口 Then

22、 With MSComm1 .CommPort = ComPort .Settings = Trim(cboBaudRate.Text) & , & _ Left(Trim(cboParity.Text), 1) & , & _ Trim(cboDataBits.Text) & , & _ Trim(cboStopBits.Text) 波特率,校验位,数据位,停止位 .RThreshold = 1 接收到1个字节数据就立即触发OnComm()事件 .InputMode = 1 设置接受数据的类型是二进制类型数据 .PortOpen = True 打开串口 End With A = MSComm

23、1.Input 读取输入缓冲区内容给A cmdOpencom.Caption = 关闭串口 cboComPort.Enabled = False 设置不可用 cboBaudRate.Enabled = False cboDataBits.Enabled = False cboStopBits.Enabled = False cboParity.Enabled = False cmdSend.Enabled = TrueElse MSComm1.PortOpen = False cmdOpencom.Caption = 打开串口 cboComPort.Enabled = True cboBaud

24、Rate.Enabled = True cboDataBits.Enabled = True cboStopBits.Enabled = True cboParity.Enabled = True cmdSend.Enabled = FalseEnd IfEnd SubPrivate Sub cmdSave_Click() 按下“保存接收数据” Open F:VB接收数据.txt For Output As #1 Write #1, txtReceive.Text Close #1 MsgBox 接收数据已保存End SubPrivate Sub cmdSend_Click() 按下 发送MS

25、Comm1.Output = txtSend.Text 将输出文本框内容给输出缓冲区End SubPrivate Sub Form_Load()Dim i As IntegercboComPort.Text = cboComPort.List(0)For i = 1 To 8 波特率 cboBaudRate.AddItem 600 * 2 iNext icboBaudRate.Text = 600For i = 4 To 8 数据位 cboDataBits.AddItem iNext icboDataBits.Text = 8With cboStopBits 停止位 .AddItem 1 .A

26、ddItem 1.5 .AddItem 2 .Text = 1End WithWith cboParity 校验 .AddItem None .AddItem Even .AddItem Odd .Text = NoneEnd WithEnd SubPrivate Sub MSComm1_OnComm()Dim bytReceive() As ByteDim i As IntegerSelect Case MSComm1.CommEvent Case comEvReceive bytReceive() = MSComm1.Input For i = 0 To UBound(bytReceive

27、) txtReceive.Text = txtReceive.Text & Chr(Val(bytReceive(i) 接收 Next iEnd SelectEnd Sub5 串口通信结果及其分析5.1通信结果图5-1 PC端接受单片机通信图5-2 PC端向单片机发送数据24图5-3 单片机接收PC发送数据图5-4 接收数据保存在F:VB文件夹中5.2结果分析测试开始,按下三个按键,单片机向上位机发送字符a,b,c,如图6-1所示,上位机收到数据并显示。按下第四个按键,单片机发送数据结束,开始接收数据,PC端对单片机发送的字符或字符串进行接收,如图6-3所示,LCD显示发送的数据VB is u

28、seful。在上位机发送字符*后,单片机停止接收数据LCD清屏,并开始发送数据。此时按下三个按键,在上位机再次接收到字符a,b,c。如上过程往复循环,实现单片机与PC机的半双工通信。当点击“清发送区”按钮时,发送编辑框清空;当单击“清接收区”按钮时,接收编辑框清空。当点击“保存接收数据”按钮时,接收到的数据保存在F:VB文件夹下,如图6-4所示,实现接收数据保存在硬盘上。 6 实物图图6-1基于学习单片机的实物调试7心得体会本次课设要求我们做基于PC机Windows环境下数据通信、处理及存储程序设计与实现,既要设计出一款集数据发送、接收处理及存储程序,又要将接收的数据以文件的形式存在硬盘上。通

29、过对题目的分析我们决定采用RS-232串口来实现PC端与单片机端的相互通信,要做到这一点,我们得先要设计一个类似于串口助手的软件来模仿我们的PC端。为了达到这个目的,我们利用Visual Basic 6.0来设计我们需要的软件,查阅了书籍相关资料并在网上查找有关的代码,遇到不会的会请教其他VB学的好的同学。在我们的努力和他们的帮助下,我们的课设顺利完成。我主要负责实现单片机的程序便携盒调试。之前学习过单片机,也曾编写过串口和LCD的程序,所以单片机程序的编写较容易实现。本次课程设计虽然完成了,但是还是有的地方有一些缺陷,如单片机接收数据时有时会出现第一个字符重复在LCD显示的情况,所以在今后的日子里,还要继续努力,继续学习。参考文献1郭天祥.新概念51单片机C语言教程.电子工业出版社.2009.1.12朱清慧. Proteus教程.清华大学出版社.2011.63许庆芳.VisualBasic 6.0程序设计与应用教程.清华大学出版社,2007.94乔平安. VisualBasic 6.0程序设计.人民邮电出版社.2013.2本科生课程设计成绩评定表姓 名性 别专业、班级课程设计题目:基于PC机Windows环境下数据通信、处理及存储程序设计与实现课程设计答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字: 年 月 日

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1