基于单片机与PC机通信的设计.docx
- 文档编号:23275691
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:35
- 大小:900.40KB
基于单片机与PC机通信的设计.docx
《基于单片机与PC机通信的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机与PC机通信的设计.docx(35页珍藏版)》请在冰豆网上搜索。
基于单片机与PC机通信的设计
基于单片机与PC机通信的设计
题目:
基于单片机与PC机通信的设计
1摘要3
2设计内容及要求3
3串口通信原理3
4设计思路4
5设计框图5
6硬件实现5
6.1AT89C525
6.2MAX232芯片6
6.39针串口8
7用vc++开发串口通信软件9
7.1用户界面设计9
7.2程序设计14
8硬件电路设计17
8.1设计思路17
8.2通信协议17
8.3电路图17
8.4单片机程序18
9软件仿真21
10实物电路调试24
11总结25
参考文献26
单片机与PC机串口双向数据通信
1摘要
PC与PC或PC与端口之间的数据传输能够使用串行通讯和并行通讯二种通讯方式。
因为串行具有使用线路少、而且成本相对较低的特点,尤其是在距离较远的情况下传输时,防止了多条线路特性大相径庭而被普遍使用。
串行通讯时,规定通讯双方必须使用相同标准的接口,使得不同的设备能够快速有效地连接起来进行通讯。
RS-232-C接口(又称EIARS-232-C)是目前已知最常用的几种串行通讯接口之一。
是由各个厂商议共同拟定的用于串行通讯的使用标准。
串行通讯标准的全称是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的各个引脚的信号内容加以明确,还对各种信号的电平加以明确。
随着PC技术尤其是MCU微型计算机技术的延伸,人们已愈来愈多地使用单片机对众多工业控制应用加以管理和检测。
例如温度、流量和压力等参数。
PC机有着非常强大的监控功能,而MS89C51/52MCU则拥有快速和灵便的监控特点,通过PC机的RS-232串行接口和外部设备进行连接,是众多监控系统中最为常用的通讯方式之一。
因此怎么实现PC机与MCU之间的通讯变得极为有意义。
DatatransmissionbetweenPCandPCorPCandporttouseserialcommunicationandparallelcommunicationtwocommunicationmodes.Becausetheseriallinewiththeuseofsmall,andrelativelylowcostcharacteristics,especiallyinthelongdistancetransmissioncase,preventmultiplelinecharacteristicsandiswidelyusedtobequitedifferent.Serialcommunication,communicationbothsidesmustusethesamesetofstandardinterface,sothatdifferentdevicescanbeconnectedtocommunicatequicklyandefficiently.TheRS-232-Cinterface(alsoknownasEIARS-232-C)isoneofthemostcommonlyusedserialcommunicationinterfaceisknownatpresent.Bythevariousfactorynegotiatetogetherforserialcommunicationusingstandard.Thestandardserialcommunicationisthefullnameof"dataterminalequipment(DTE)andthedatacommunicationsequipment(DCE)betweentheserialbinarydatainterchangeinterfacetechnologystandard"DB25connectorofthestandardrequirestheuseofa25foot,thecontentofeachsignalpinconnectortobeclear,butalsoavarietyofsignalleveltobeclear.
WithPCtechnology,especiallytheextensionoftheMCUmicrocomputertechnology,peoplehavemoreandmoreuseofSCMformanyindustrialcontrolapplicationstomanageanddetection.Suchastemperature,flowandpressureparameters.PCmachinehasaverypowerfulmonitoringfunction,whiletheMS89C51/52MCUhasafastandflexiblemonitoringfeatures,areconnectedthroughtheRS-232serialinterfaceandtheexternaldevicePC,isoneofthemostcommonlyusedmeansofcommunicationofmonitoringsystem.SohowtorealizethecommunicationbetweenPCandMCUisverymeaningful.
2.选题背景
PC机与单片机分别作为作为上位机和下位机的控制系统无论是在国内还是在国外都已经很普遍。
PC机一般采用以简洁方便的人机界面进行操作,与单片机通过串口通信的方式进行积极交互。
单片机系统可以根据被控对象做出反应,从而给予对应的前向,后向信号通道,其运行时被作为作为主控机测目标。
单片机作为从机接受PC机监测和管理,不定期发送目标与本身的工作状态信息给PC机。
目前,因为电路集成程度增加,随着PC机技术的发展PC越来越微型化和超微型化。
微型计算机在军事演习,智能机器人,航空航天,医学研究等众多复杂系统之中扮演着越来越重要的角色。
在相当多的工业生产中,经常需要以多台单片机作为下位机执行对被控对象的直接控制,应用PC机作为上位机对复杂的数据进行处理,形成了一种管理相对集中、控制相对分散的集散控制系统。
为了使系统管理的先进性和安全性有所提升,集总分算系统在工业生产的自动控制和监测系统被普遍地使用。
其中以上位主PC机(主机)管理与下位机(单片机)直接参与控制监测的主从式应用系统成为最常见的方式。
因此通讯能够在在主机和从机之间进行调进行。
主机的功能:
一是能够向从机传输各种命令以及所需要的参数,二是能够对从机发送的信息进行时时搜集、整理和分析,有利于实现下一步的决策与报表。
从机则只能接收、执行由主机传输的信息,而且需要向主机反馈比较麻烦实时数据,以及单片机的运行状态。
采用串口总线技术就能够大大简化系统硬件设计、缩小系统的体积、提高体统的可靠性。
因此系统的更改和扩充也变得更为简单。
MSC51系列单片机,因为有一个对异步通讯可以使用的全双工串行的内部通讯接口,阴齿能够极为方便的构成主从式系统工作系统。
串口是PC机上非常常用的设备通讯协议之一,计算机包多数是需要两个基于RS232的串口。
众多仪器仪表设备常用的通讯协议也是串口。
例如RS-232串口也被很多使用GPIB设备所兼容。
同时搜集远程设被的数据也可以用串口通讯协议。
因此,对串口通信相关知识认真的理解学习和研究是不可或缺的。
此次将“PC机与51型单片机的串口通讯”作为毕业设计,完成了使用51单片机来完成主从式的总线系统通讯。
经过本次设计,掌握了串口通讯的原理和应用,为以后的工作和学习储备知识。
3串行通信
3.1串行通信的原理及意义
串行通讯对单片机有着极其重要的意义,不仅能够实现将单片机的数据输出到计算机端口,还能实现PC对MCU的控制.因其具有操作简单,线程短,连接简便等优点而受到普遍的应用。
远程控制系统与信息的采集系统的工作方式简单概括可以分为上位机和下位机。
因为串行通讯具有高效性、可行性、灵活性,以及便于管理的特点,所以能够成为常用的通讯方式之一。
"串行通信"其实是指单片机和PC机间使共同使用同一根数据信号线,信息必须在同一根数据信号线上按规定完成传输,每一位数据有且只有一个明确的时间长度。
串行通信使用的数据线少,在远距离通讯中可以降低通信成本,但其传输速度与并行传输相比较慢。
综合其优劣势我们选用串行通讯。
因为要满足高效率的需求,位于PC机内部的CPU与串口之间的通讯必须采用串行的通讯方式,所以串行通讯的实质就是必须实现CPU与单片机设备的数据方便快捷地进行格式转换(或者称为串并转换器),即当数据从单片机传送到PC机时,数据信息将被位(bit)转化为字节数据;相反的,当PC机将数据发送到下行单片
机设备时,字节数据在串行的方式下又被转化成为位数据
串行端口的作用就是在CPU和串行设备之间完成编码并转换。
当数据由通过CPU的串行端口被传输出去时,字节数据被转换成为位数据。
当数据被串行端口进行接收时,位数据将被转换成为字节数据。
在Windows操作系统中,串口是系统资源的重要组成部分。
应用程序要通过串行完成通讯,使用之前操作系统会对是否进行资源申请要求进行提示(串口被打开),通讯结束后一定要将资源释放(关闭串口)。
关于串行通讯的理解其实非常简单,串行按位(bit)发送和接收字节。
因为并行通信与字节(byte)相比并行通信的速度较慢,而串行能够一边使用一根线发送数据一边用另一根线接收数据。
它的实现非常简单并且能够实现远距离通讯。
例如对IEEE488进行明确并行通行状态时,一般认为设备总线的长度最好不要超过20米,而且每两个设备间的间距最好不要超过超过2米。
而串行的优点在于,长度能够达到1200多米。
3.2串行通讯的应用实例
常见的的的串口通讯应用实例就是ASCII码字符间的传输。
通信仅仅使用3根线就能够完成:
(1)地线,
(2)发送,(3)接收。
因为串行通讯必须通过异步的方式才能完成,端口能够一边在一根线上发送数据一边在另一根线上接收数据。
其他线用于握手,但是可以不使用。
串口通讯的参数可以简单概括为:
波特率、数据位、停止位以及奇偶校验。
对于PC机与89C51/52间端口的通讯务必要所有参数务必一一对应.
3.3串行通讯的参数
a,波特率:
波特率是用于通信速度的检测标准。
波特率也可以理解为每秒传送的bit的个数。
例如200波特代表的就是传输速度为200个bit每秒。
提到这里就不得不提及时钟周期,我们一般认为时钟周期所需要的波特率为4800波特率,那么,4800Hz就是我们认为的时钟周期。
也说明了串行通信在数据线上的要使用4800Hz波特率。
常见的电话线的波特率一般有14400,28800和36600几种。
其他远距离传输的波特率还远远大于这些数值,且波特率具有和距离成反比的特点。
较大的波特率经常被用于几个很近的仪器间的通讯。
在对波特率进行选择的时候优先考虑两点:
首先,系统所需的最大的通信速率。
这要决定于系统的运行特性,明确规定通信的频率的变化范围,然后计算通信时的时钟误差,务必要选用用相同频率的晶振。
在选择不同的通信时钟时其速率会有很大差别即通讯误差。
为了稳定通信,我们一定要选择最小
的时钟误差频率进行通信。
我们对波特率选择过程举例说明:
设计要求的通讯频率如果不足20000bit/s,则晶振频率就是
12MHz,对SMOD进行设置让其等于一(即波特率倍增)。
由波特率取值表,我们了解到能够选取的波特率有:
1200,2400,4800,9600,19200
波特率
计数器重载值
波特率误差
1200
207
0.17%
2400
234
0.17%
4800
247
0.17%
9600
246
7.00%
19200
257
8.61%
b,数据位:
这是测量通讯中客观数据位的标准。
当一个信息包由计算机发出,客观的数据不一定是8位的,其中有着明确标准的值是分别为5、7和8位。
怎么设定由你想传送的信息决定。
例如,ASCII码的标准是0~127(7位)。
延伸的ASCII码是由8位(0~255)组成的。
如果要使用简洁的文本数据(标准ASCII码),那么使用任意数据包都应该是7位数据。
每个包都是由一个字节组成,开始/停止位,数据位和奇偶校验位。
由于客观的数据位由通讯协议的选取而决定。
c,停止位:
用于单个包的最后一位的确定,其值一般为1,1.5和2。
因为数据是在传输线上定/计时使用的,要求每一个设备都有自己的时钟。
如果最后一位不相同,原因可能是在两台设备间在通信中出现了多多少少的不同步。
所以停止位不单单是代表结束传输,并且给PC机创造了校正时钟同步的条件。
被停止位应用的位数越多,不同时钟同步的容
忍程度越大,然而数据传输地速率也随之变慢。
d,奇偶校验位:
在串行通讯中非常简单的检错方式之一。
检错方式分为四种:
奇、偶、高和低。
校验位没有其实也是可行的。
关于奇偶校验的分析,串口能将校验位设置好。
比如,如果使用011的数据。
关于偶校验,校验位为0,能够保证逻辑最高为一定为偶数。
关于奇校验,校验位是1,这样逻辑高位会出现3个。
高位和低位并不能对数据进行真正检查。
为了使奇偶校验的纠错能力有所提高,最好使用双向奇偶校验(RowandColumnParity),也被称为双向冗余校验(VerticalandLongitudinalRedundancyChecks)。
通过奇偶校验就能使接收设备可以明确是哪一个位的状态,能够辨别噪声是否被通信干扰了或者是数据在传送和接收时是否同步。
2〉串行口的控制寄存器
①串行口数据缓冲器SBUF
采用了互相独立两个接收器。
共用一个地址99H的发送的缓冲器SBUF对应着2个寄存器(发送寄存器和接收寄存器)。
缓冲发送器用于存放要发送的数据,只能写入,不能读出。
接收缓冲器用于存放接收到的数据,只能读出,不能写入。
对SBUF的指令进行辨认,根据是读指令还是写指令来区别是对接收缓冲器还是对发送缓冲器进行操作。
读SBUF,比如MOVA,SBUF指令,就是读接收缓冲器的内容;
写SBUF,比如MOVSBUF,A指令,就是修改发送缓冲器的内容。
②串行控制寄存器SCON
SCON可用于确定串行通信的工作方式和控制串行通道的某些功能,监视和控制串行口的工作状态,也可用于存放要发送和接收到的第9个数据(TB9、RB8),并没有接收和发送中断标志RI和TI。
四设计要求及内容
4.1设计要求
在PC机控制系统中,难免要使用多机进行通讯。
因为单片机在各个行业的普遍应用,所以要优化利用51/52单片机系统与PC机J间的RS232的连接,我们要使用串行连接。
能够简单方便地完成双通道数据传输。
我们使用protues仿真调试软件,反复地向串口传送“1”、“2”、“3”......“8”、“9”、“0”等信号,单片机收到信号之后在数码管上展示出来,并且也将向PC机反馈出现成功的确认信息,也就是在在PC机串口调试区域也就是接收缓冲区中将出现“displayOK!
”的字样。
4.2总体方框图
4.3通信过程分析
单片机通电后缓存区的数据通过数码管显示出来,对串行中断进行等待。
串行中断传输时,先要对接受中断或者发送中断进行判断。
如果对中断进行发送,则需要对将TI清零然后中断返回;如果需要对中断进行接收,将进入处理子程序。
在子程序的处理过程中,接收到的ASCII码将进行数据转换成为十六进制的数字并由单片机发送出去,在显示缓存区中存放,调用显示子程序在数码管上显示出接收到的数据,再调用发送子程序给PC端软件回送一个确认显示的信号。
4.4通信方式的选择
一、数据通信的传输方式:
单工、半双工、全双工和多工方式。
A.单工方式:
数据只能够一个单一的方向进行传输。
因为单工方式的功能十分有限,所以常用于串行口的打印数据传输与简单系统间的数据采集。
B.双工方式:
数据的传送也可以是双向的,但不可以同时实现。
在日常生活中多要实现收发开关转换采用某种协议一般多使用某种协议。
C.全双工方式:
可以实现双方同时对数据进行双向传输,与单工方式和双工方式相比较而言要完成全双工电路的线路和设备的连接还是较为繁琐得。
D.多工方式:
以上三种传输方式都是同一线路传输一种频率信号,为了充分的利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分、或码分复用技术,即可实现在同一线路上资源共享功能,我们称之为多工传输方式。
4.5本设计中串行通信的实现
(1)通信协议:
PC机首先发送一个数据(以ASCII码形式表示的数字),单片机接收到之后返回一个约定的数据(本设计约定为2AH)到PC机表示通信正常,并且单片机已经正常显示收到的数据。
(2)串行异步通信、不使用奇偶校验位,一个数据包括,一位起始位、八位数据位、一位停止位。
(3)单片机串行口工作于方式一;用定时器1产生9600bit/s的波特率,工作于方式二。
(4)每次通信传输一个数据。
5设计框图
图5-1系统框图
6硬件实现
6.1AT89C52
AT89C52:
AT89C52是51系列MCU之中功能最多切最常用的单片机,它是由ATMEL公司生产的。
AT89C52是常见的低电压,高功率的CMOS8位微控制器之一,该单片机主要由8kbytes的可反复擦写的Flash只读程序存储器和256字节的随机存取数据存储器(RAM)组成,该单片机的元器件一般使用ATMEL公司生产的具有高密度、非易失性存储技术的产品,明确单片机指令系统的使用,该单片机的主要组成是由八位中央处理器和Flash存储单元。
具有强大功能的AT89C52微控制器适用于众多较位复杂的系统控制应用服务。
这种类型的单片机共有40个引脚,分别为:
32个双向的输入/输出(I/O)的外部端口,2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线。
AT89C52单片机能够通过常规方式下载程序,但是缺点是不能够使用在线编写程序(S系列的才支持在线编程)。
AT89C52将常用的的8位微处理器和Flash存储器有效地结合在一起。
特别是使用能够反复使用的Flash存储器能够最大化地节约开发成本。
微处理器的封装形式有三种分别为PDIP、PQFP/TQFP及PLCC,分别用于不同产品的使用。
图6-1AT89c52引脚图
6.2MAX232芯片
MAX232芯片的简介:
由MAXIM公司生产的MAX232。
MAX232使用了IC芯片的两个接收器和驱动器,能够很好地在任意EIA-232C和V.28/V.24的通信端口上使用。
MAX232芯片的作用:
因为需要将+5V的电源电压变为RS-232C输出电平正常使用的±10V电压所以MAX232包含了一个电源电压变换器。
所以,MAX232芯片接口应用的串行通信系统仅仅在+5V电源下就可以工作了。
在很多情况下没有+12V电压,其具有更强的适应性.
图6-2MAX232芯片引脚
管脚说明如下
①C0+、C0-、C1+、C1-是外接电容端;
②R1IN、R2IN是2路RS-232C电平信号接收输入端;
③RlOUT、R2OUT是2路转换后的TTL电平接收信号输出端,送8051的RXD接收端;
④TlIN、T2IN是2路TTL电平发送输入端,接8051的TxD发送端;
⑤TlOUT、T2OUT是2路转换后的发送RS-232C电平信号输出端,接传输线;
⑥V+经电容接电源+5V;
⑦V-经电容接地。
这种连接的传输介质一般采用双绞线,通信距离一般不超过15m,传输率小于20kB/s。
图6-3MAX232典型工作电路图
6.39针串口
由数据线接法不难观察到,数据线内部引脚并未出现交叉。
其原因是母头与公头的自身的引脚功能是不同的,因此没有必要进行交叉。
9真串口在外部表现为计算机COM1口公头的数据引脚并未交叉的连向了开发板的COM2母头。
数据线的连接方法有很多种但仅仅记住一点就可以了:
一样的头必须得交叉,不一样的头不用交叉。
公头和母头自身的引脚确定了9针引脚之中大的一头是由5个引脚组成,小的一头是由4个引脚组成的。
为了数据的发送与接收能够顺利实现就不得不提到以上这三个引脚。
而其它引脚是用来控制传输规则的,即握手协议。
下面是9针串口(DB9),引脚功能。
引脚号
缩写
英文全称
功能说明
1
DCD
DataCarrierDetection
数据载波检测
2
RXD
ReceiveData
接收数据
3
TXD
TransmitData
发送数据
4
DTR
DataTerminalReady
数据终端准备
5
GND
SystemGround
信号地
6
DSR
DataSetReady
数据设备准备好
7
RTS
RequesttoSend
请求发送
8
CTS
CleartoSend
清除发送
9
RI
RingIndicator
振铃指示
表6.3.1九针串口引脚功能
图6-4串口图
我们还应该注意串口插座有公母两种类型其中:
公的串口插座是带有插针的(有针)
母的串口插座是不带有插针的(有洞).
(4)RS-232总线规定[2]
RS-232标准总线为25根,采用标准的D型25芯插头座。
引脚及功能如图6-5所示.
7用vc++开发串口通信软件
7.1用户界面设计
在进行应用程序设计前,首先需要使用vc++6.0提供的AppWizard工具自动生成一个工程。
选择【开始】/【程序】/【MicrosoftVisualC++6.0】启动程序。
在主界面的选择菜单命令FileNew,在如图所示的新建对话框选择【MFCAppWizard(exe)】,输入项目名称单击next按钮,选择基本对话框,其他选项不变,连续单击next,直至最后Finish。
至此工程建立完成。
具体步骤如下图所示:
图7-1vc++建立工程图
图7-2应用程序类型选择
图7-3工程建立完成示意图
工程建立完成后,出现如图所示对话框
图7-4基本对话框示意图
将对话框中的两个按钮,及静态文本删除,添加其他控件,将对话框设置如下图所示
图7-5界面设计示意图
其中
在基本控件框中是没有的,需要把它添加进来。
具体步骤是【工程】【增加到工程】【Componentsandcontrols】如下图所示:
图7-6添加控件
图7-7控件选择
单击Insert,确定。
至此控件添加完成。
接下来就是对控件变量的设置,单击【查看】【建立类向导】
图7-8t
图7-8控件变量的设置
选择IDC-EDIT1,单击addvariable,输入控件名称单击ok。
用同样方法设置其它控件。
完成后如图所示。
图7-9控件变量设置
下来就是添加对应函数,如上对话框选mes
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 PC 通信 设计