基于RS-232C的串口通信设计毕业论文

上传人:红** 文档编号:182574031 上传时间:2023-01-25 格式:DOC 页数:37 大小:811.13KB
收藏 版权申诉 举报 下载
基于RS-232C的串口通信设计毕业论文_第1页
第1页 / 共37页
基于RS-232C的串口通信设计毕业论文_第2页
第2页 / 共37页
基于RS-232C的串口通信设计毕业论文_第3页
第3页 / 共37页
资源描述:

《基于RS-232C的串口通信设计毕业论文》由会员分享,可在线阅读,更多相关《基于RS-232C的串口通信设计毕业论文(37页珍藏版)》请在装配图网上搜索。

1、基于RS-232C的串口通信 摘 要 随着计算机系统的应用和微机网络的发展,通信功能越来越显的重要。通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输。串口接口RS-232C实现较为简单,可以实现全双工的实时通信。因此,它作为一种标准,目前已在微机通信接口中广泛采用。PC机与单片机之间传送数据可通过RS-232C接口实现。PC机可以作为上位机,单片机作为从机进行串口通信。PC机在Windows平台上,利用Visual Basic编程语言中的

2、 mscomm控件可以开发串口通信程序界面,进行串口通信的实时观测,并利用MAX232进行电平转换与单片机相连。通过单片机编写通信协议就可以实现PC机与单片机之间的数据传送,从而实现基于RS-232C的串口通信控制。 关键词: 单片机 MAX232 RS-232C 串口通信 Visual Basic Serial Port Communication Based on RS-232C Abstract Alon

3、g with the application of computer system and the development of microcomputer network, Communication is more and more important .It can be exchange information between computer and the peripheral equipments , and between computer and the other computers .Because the serial communication is transmit

4、ted the information with bit by bit ,it only uses a few line and also can use the ready-made telephone line .So it suits to the long-distance transmission .the RS-232C realization is simple and the communication is duplex and real-time. Therefore it is looked as a kind of standard and used in microc

5、omputer communication widely .The realization of data communication between PC and single-chip can use RS-232C. During the communication PC is a upper machine and single-chip is host machine .In the windows platform ,using mscomm control in Visual Basic software to develop the surface of serial port

6、 communication and carry on real-time observation .Using MAX232 to realize the level conversion and connect with single-chip .Programming in the single-chip to realize the communication protocol and it can complete the data transmission. Key words: single-chip; MAX232;RS-232C; Serial port communi

7、cation; Visual Basic 目 录 1引言 1 2 Visual Basic与单片机实现串口通信的总体设计方案 2 2.1 Visual Basic与单片机串口通信功能的实现方法 2 2.2 MAX232的结构与功能 3 2.3 MAX232实现PC机与单片机的联调 3 3 Visual Basic开发串口通信程序设计 5 3.1mscomm控件实现串口通信的方法 5 3.2 Visual Basic开发串口通信程序界面设计 8 4单片机开发串口通信程序设计 15 4.1 MCS-51单片机的串口结构与功能 15 4.2波特率的产生与通信协议的

8、制定 18 4.3单片机程序设计 20 5结论 23 谢辞 24 参考文献 25 附录 26 外文资料 35 1引言 不同的独立系统经由线路相互交换数据便是通信。通信的形式可以区分为两种,一种是并行传输方式的通信,另一种则为串行传输方式的通信。所谓并行通信是指一次传输8位(1个字节);而串行通信一次只传输1位。计算机与计算机或计算机与终端之间的数据传送可以采用串行通信和并行通信二种方式。由于串行通信方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 在串行通信时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通

9、信。 RS-232C接口(又称 EIA RS-232-C)是目前最常用的一种串行通信接口。 RS-232C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~20000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。大多数通信设备厂商都生产与RS-232C制式兼容的通信设备。RS-485也是一种常用的通信标准,在要求通信距离为几十米到上千米时,广泛采用RS-485 串行总线标准。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。但RS-232C由于实现较为简单,而且价格上也便

10、宜很多,可以实现全双工的实时通信。因此,它作为一种标准,目前已在微机通信接口中被广泛采用。 PC机与单片机相结合在工业监控、数据采集和实时控制系统中应用广泛。其中,单片机系统作为从机进行数据采集和执行控制,而PC机作为主机进行发送命令、实时检测、数据存储、动态显示等工作。利用Visual Basic中的mscomm 控件可实现与单片机的串行通信。其中可利用VB开发串口通信程序,单片机编写通信协议就可实现双方数据的传送与接收。 2 Visual Basic与单片机实现串口通信的总体设计方案 2.1 Visual Basic与单片机串口通

11、信功能的实现方法 串行通信的数据是逐位传送的,发送方发送的每一位都具有因定的时间间隔,这就要求接收方也要按照发送方同样的时间间隔来接收每一位。不仅如此,接收方还要确定一个信息组的开始和结束。为此,串行通信对传送数据的格式作了严格的规定。不同的串行通信方式具有不同的数据格式。常用的两种基本串行通信方式有同步通信和异步通信。 所谓同步通信是指在约定的通信速率下,发送端和接收端的时钟信号频率和相信始终保持一致(同步),这就保证了通信双方在发送和接收数据时具有完全一致的定时关系。同步通信传送信息的位数几乎不受限制,通常一次通信传的数据有几十到几千个字节,通信效率较高。但它要求在通信中保持精确的同步

12、时钟,所以其发送器和接收器比较复杂,成本也较高,一般用于传送速率要求较高的场合。 异步通信是指通信中两个字符之间的时间间隔是不固定的,而在一个字符内各位的时间间隔是固定的。异步通信规定字符由起始位(start bit)、数据位(data bit)、奇偶校验位(parity)和停止位(stop bit)组成。起始位表示一个字符的开始,接收方可用起始位使自己的接收时钟与数据同步。停止位则表示一个字符的结束。这种用起始位开始,停止位结束所构成的一串信息称为帧(frame)。比较适合于远距离串行通信。 常用于数据通信的传输方式有单工、半双工、全双工。单工方式:数据仅按一个固定方向传送。因而这种

13、传输方式的用途有限,常用于串行口的打印,数据传输与简单系统间的数据采集。半双工方式:数据可实现双向传送,但不能同时进行,实际的应用是采用某种协议实现收/发开关转换。全双工方式:允许双方同时进行数据双向传送,可以实时通信。 本设计采用的是PC机与单片机的全双工异步通信方式。具体方案如下: (1)Visual Basic是一种可视化的编程语言,利用Visual Basic中的控件建立一个用户端的界面,供用户进行选择进入主程序界面。 (2)在Visual Basic主界面程序中添加mscomm控件,开发串口通信程序。 (3)通过MCS-51系列单片机编写串口通信协议。 (4)单片机进行数码

14、管接口扩展,数码管显示PC机发送的数据,并且将PC机发送的数据通过单片机回传给PC机。即通过PC机的VB串口通信程序界面,从PC机键盘发送一个数传给单片机则单片机控制的数码管则可以显示该数,并且将发送的数据传回PC机,若接受到的数据与发送的数据相同且与数码管显示的数据相同则表示发送成功。 (5)由于RS-232接口与单片机的电气特性不同,可通过MAX232芯片进行电平转换,联调单片机与PC机进行串口通信。 2.2 MAX232的结构与功能 MAX232 芯片是MAXIM 公司生产的,包含两路接收器和驱动器的IC 芯片。RS-232C采用的是EIA电平,其规定如下:在TXD、RXD上规定逻

15、辑1时,电压为-3V~ -15V,逻辑0时,为+3V~ +15V。而单片机所用的是TTL+5V逻辑电平。MAX232 芯片内部有一个电源电压转换器,可以把输入的+ 5V 电压变换为RS-232 输出电平所需的-10~ +10V 电压。所以采用此芯片接口串行通信系统只需单一的 + 5V 电源就可以了。对于没有- 12~ + 12V 的场合,其适应性更强。加之其价格适中,硬件接口简单,所以被广泛采用。其芯片引脚图如下: 图1 MAX232引脚结构 其中引脚11,12为TTL电平接口的收发引脚。13,14为RS-232C接口的收发引脚。 2.3

16、 MAX232实现PC机与单片机的联调 目前较为常用的RS-232C 9针串口在通信距离较近时,仅需3根线便可在两个数字设备之间全双工的传送数据,即需要TXD、RXD、  GND即可完成。RS-232针脚的功能如下: TXD(pin 3):串口数据输出 RXD(pin 2):串口数据输入 RTS(pin 7):发送数据请求 CTS(pin 8):清除发送 DSR(pin 6):数据发送就绪 DCD(pin 1):数据载波检测 DTR(pin 4):数据终端就绪 GND(pin 5):地线 RI (pin 9):载波侦测 连线方式如下图所示: MCS-51

17、 P3.0 P3.1 图2 PC机与单片机连线方法 3 Visual Basic开发串口通信程序设计 3.1mscomm控件实现串口通信的方法 一般说来,计算机都有一个或多个串行端口,它们依次为Com1,Com2……,这些串口还提供了外部设备与PC机进行数据传输和通信的通道,这些串口在CPU和外设之间充当解释器的角色。当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为字符数据传递给CPU。

18、而Visual Basic 是一种可视化的,面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows 环境下的各类应用程序。Visual Basic的版本分为普及版,企业版,专业版。可以进行串口通信程序开发的串行通信组件包含在企业版及专业版中。 Visual Basic企业版及专业版中提供了串行端口控制mscomm来为应用程序提供串行通信。该控件屏蔽了通信过程中的底层操作,可以设置、监视mscomm控件的属性和事件,结合Timer控件即可完成对串行口的初始化和数据的输入输出工作。由于Visual Basic的mscomm控件不会主动出现在工具箱中,因此可在Visual B

19、asic工程界面中的工具箱中空白处单击鼠标右键选择部件选项,在弹出的对话框中选择添加Microsoft Comm Control 6.0 控件。 mscomm控件的主要属性如下: (1)Commport 设置并返回通讯端口号。端口号可以设置为1~16的任何数,如mscomm.Commport=2表示设置当前通讯端口为COM2。 (2)Setting 设置并返回波特率、奇偶校验、数据位、停止位。格式为mscomm.Setting=String。String是一个包含四部分的字符串:第一部分为波特率;第二部分为奇偶校验,N表示不校验,M表示符号校验,E表示偶校验,O表示奇校验,S表

20、示空格校验;第三部分为数据位数,其可选值为4,5,6,7,8;第四部分为停止位位数,其可选值为1,1.5,2。例如Setting属性的缺省值为“1200,N,8,1”。该属性中各含义如下: 波特率:是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如200波特表示每秒钟发送200个bit。当提到时钟周期时,就是指波特率。例如如果协议需要9600波特率,那么时钟是9600Hz。这意味着串口通信在数据线上的采样率为9600Hz。 数据位:是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于要传送的信息。比如,标准的ASC

21、II码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 奇偶校验位:在串口

22、通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。 (3)Portopen 设置并返回通讯端口的状态,也可以打开和关闭端口。 (4)Input 从接收缓冲区返回和删除字符。

23、该属性在运行时为只读。 (5)InputLen 设置并返回每次Input属性从接收缓冲区中读取的字符数。InputLen属性的缺省值为0。设置InputLen为0时,Input将读取接收缓冲区的全部字符。 (6)Output 向传送缓冲区写数据。要传送的数据可是文本数据或二进制数据。 (7)CommEvent 返回最近的通讯事件或错误。只要有通讯错误或事件发生错误时就会产生Oncomm事件。CommEvent属性中存有该错误或事件的数值代码。 在VB开发串口程序时需多次用到Timer控件,其主要属性如下: (1)Enabled 返回或设置一个值,该值用来确定一个窗体或控件否能够对用户

24、产生的事件作出反应。通过把Enabled设置为“False”来使Timer控件成为无效,将取消由控件的Interval属性所建立的倒计时数。 (2)Interval 返回或设置对Timer控件的计时事件调用间的毫秒数。Timer控件的Enabled属性决定该控件是否对时间的推移作出响应。将Enabled设置为“False”会关闭Timer控件,设置为“True”则打开Timer控件。当Timer控件置为有效时,倒计时总是从其Interval属性设置值开始。创建Timer事件程序。可通知VB在每次Interval到时该做什么。Timer控件和Enabled属性设置为“True”时,VB将在In

25、terval时间到后自动访问Timer_Timer过程。 为实现通信程序,须在VB开发环境下设置一个用做控制通信的窗体。窗体上主要有通信控件mscomm和Timer控件。VB的特点是事件驱动,定时器控件会定时触发相应事件的驱动程序。通信程序如下: (1)在添加的mscomm控件的属性中选择CommPort的端口号为1。(若Comm1口被占用可选择Comm2口)此属性也可以通过代码设置其程序如下: mscomm1.Commport1=1 (2)设置握手协议即mscomm的HandShanking为0-ComNone (3)设置传输速度参数属性Setting 为“1200,N,8,1

26、”其意义(即通信协议)表示为所使用的通信端口是以每秒1200Bit的速度传输,不作字符校验,每次数据位是8个Bit,而停止位是1个Bit。 (4)设置两个文本框TEXT1,TEXT2用于接收与发送数据。在添加一个Timer控件控制自动侦测接受数据。Timer控件的Interval属性值为20。 (5)打开通信端口: mscomm1.PortOpen = True (6)接收数据程序的实现方法: Private Sub Command4_Click() Dim Buf$ Buf = Trim(MSCOMM1.Input) If Len(Buf) = 0 Then Text1.T

27、ext = "" Else Text1.Text = Buf End If End Sub (7)启动自动侦测读取数据的程序: Private Sub Command5_Click() Timer1.Enabled = Not Timer1.Enabled End Sub Private Sub Timer1_Timer() If mscomm1.InBufferCount > 0 Then Text1.Text = Text1.Text + mscomm1.Input End If End Sub (8)发送程序的实现方法: Private Sub Comman

28、d1-Click() Comm1. Output = Text1. Text ;将发送区文本框中的内容放入 End Sub (9)清空接收区显示数据 Private Sub Command6_Click() Text1.Text = "" End sub (10)结束 Private Sub Command 3-Click() Comm1. PortOpen = False End Sub 3.2 Visual Basic开发串口通信程序界面设计 1、封面1的设计: (1)打开一个新的Visual Basic工程,在新建工程选项框中选择标准EXE。在For

29、m 属性中的Picture中选择添加图片。这样就完成了显示屏幕中出现图片的效果。 初始化代码为: Private Sub Form_Load() Set ball.Picture = LoadPicture("D:\04计通1\图片\00.jpg") X = 10 Y = 10 ;定义添加图片出现的起始位置 a = 30 b = 50 End Sub (2)动态图片的设计: 在

30、Form界面中添加一个Timer控件,设其Interval属性值为20,enable属性为Ture 。这样就实现了封面中类似屏保的图片的移动。在Timer事件中的图片动态显示程序代码: Private Sub Timer1_Timer() ball.Move X, Y X = X + a Y = Y + b If X >= Form2.Width - ball.Width Then a = -50 If Y >= Form2.Height - ball.Height Then b = -20 If X <= 0 Then a = 10 If Y <= 0 Then b = 20

31、 End Sub (3)添加两个标签分别设Caption属性为“您好!欢迎使用!”“下一步”来显示文本。 图3封面1 2、界面1的设计: (1)动态标签字幕颜色变换放大的实现: 在Form界面中添加一个计时器Timer控件,设其Interval属性值为100。再添加一个标签设Caption属性为“Visual Basic与单片机的串口通信演示”。 程序代码为: Dim X, Y, a, b As Single Private Sub Timer2_Timer() Static X, Y Y = Y +

32、1 X = X + 1 If X > 30 Then X = 1 If Y > 15 Then Y = 1 Label1.ForeColor = QBColor(Y) Label1.FontSize = X End Sub (2)同理在在Form界面中添加一个计时器Timer( Timer3)控件,设其Interval属性值为100。添加一个标签Label2设Caption属性为“欢迎点击进入” 此标签用于提示进入主界面。 程序代码为: Dim X, Y, a, b As Single Private Sub Timer3_Timer() Static X, Y Y

33、= Y + 1 X = X + 1 If X > 40 Then X = 1 If Y > 15 Then Y = 1 Label2.ForeColor = QBColor(Y) Label2.FontSize = X End Sub (3)移动图片实现的方案: 添加1个计时器Timer (Timer1)控件设其Interval属性值为100。添加Image1,Image2 ,Image3, Image4, Image5, Image6控件,Stretch属性均为Ture, Image1,Image2加载PC机图片,Image4, Image5添加单片机图片。Image1,Im

34、age2,Image4, Image5的visible为False。这样可以实现图片从屏幕左边逐渐右移并循环移动的效果。 程序代码为: Private Sub Timer1_Timer() If Image3.Left > frmSplash.ScaleWidth Then Image3.Left = frmSplash.ScaleLeft - 200 End If Image3.Left = Image3.Left + 350 If Image3.Picture = Image1.Picture Then Image3.Picture = Image2.Picture El

35、se Image3.Picture = Image1.Picture End If If Image6.Left > frmSplash.ScaleWidth Then Image6.Left = frmSplash.ScaleLeft - 200 End If Image6.Left = Image6.Left + 350 If Image6.Picture = Image1.Picture Then Image6.Picture = Image5.Picture Else Image6.Picture = Image4.Picture End If End Sub

36、 图4 界面1 3、选项对话框的设计 在工具箱中空白处单击鼠标右键选择部件选项,在弹出的对话框中选择添加Sstab 控件。在该控件的属性中分别设置标题为“通用”、“缓存”、“硬件”。在每一个标题下添加命令按钮用以三个标题的切换。选项对话框可以使得用户随时查看串口通信的参数信息。 程序如下: Private Sub command1_Click() Dialog.Visible = False End Sub Private Sub Command2_Click() Dialog.Visible = False

37、End Sub Private Sub Command3_Click() Dialog.Visible = False End Sub 图5 选项对话框 4、主界面的设计 (1)菜单的设计: 新建一个form界面。通过工具栏的菜单编辑器选项编辑菜单,设计标题为“启动程序”、“字体”、“颜色”、“选项”然后通过菜单的Click事件调用各个程序。在工具箱中空白处单击鼠标右键选择部件选项,在弹出的对话框中选择添加2个CommonDiolag控件。单击“字体”、“颜色”、“选项”后可以调出各个对话框。 程序代码如下: 颜色对话框程序代码: Pri

38、vate Sub color_Click() CommonDialog1.Flags = 1 CommonDialog1.color = BackColor CommonDialog1.Action = 3 Text2.ForeColor = CommonDialog1.color End Sub 字体对话框程序代码: Private Sub Fontname_Click() CommonDialog2.Flags = 3 CommonDialog2.ShowFont Text2.fontname = CommonDialog2.fontname Text2.FontSi

39、ze = CommonDialog2.FontSize Text2.FontBold = CommonDialog2.FontBold Text2.FontItalic = CommonDialog2.FontItalic Text2.FontUnderline = CommonDialog2.FontUnderline Text2.FontStrikethru = CommonDialog2.FontStrikethru End Sub (2)动态字幕的实现方案 在主界面中添加一个picture 控件和一个Label标签与一计时器控件。Label标签的Caption属性为“ 基

40、于RS-232的单片机与PC机串口通信实验演示” Timer 控件设其Interval属性值为100。将Label标签添加在picture 控件中,这样实现了字幕自左端向右循环移动的效果。 程序代码为: Dim thetitle As String, counter1 As Integer Private Sub Timer2_Timer() Dim str As String str = Mid(thetitle, 1, counter1) If Len(str) = Len(thetitle) Then counter1 = 0 End If Label3.Caption

41、 = str counter1 = counter1 + 1 End Sub (3)图片交替显示的实现方案: 在主界面中添加Image1 ,Image2, Image3控件,Stretch属性均为TureImage1,加载PC机图片Image2添加单片机图片。在加入一个Timer控件设其Interval属性值为300。这样实现单片机图片与PC机图片交替出现的效果。 程序代码如下: Private Sub Timer4_Timer() If Image3.Left > Form1.ScaleWidth Then Image3.Left = Form1.ScaleLeft - 20

42、0 End If Image3.Left = Image3.Left + 300 If Image3.Picture = Image1.Picture Then Image3.Picture = Image2.Picture Else Image3.Picture = Image1.Picture End If End Sub 通过以上程序就可以完成Visual Basic实现串口通信的设计。 图6 主界面 4单片机开发串口通信程序设计 4.1 MCS-51单片机的串口结构与功能 MC

43、S-51单片机的主要结构包含以下几个部分: 1、中央处理器(CPU):MCS-51的CPU能处理8位二进制数或代码。 2、内部数据存储器(RAM):8051芯片共有256个RAM单元,其中后128单元被专用寄存器占用,能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。地址范围为00H~FFH(256B)。是一个多用多功能数据存储器,有数据存储、通用工作寄存器、堆栈、位地址等空间。 3、内部程序存储器(ROM): 8051内部有4KB的ROM,用于存放程序、原始数据或表格。 4、定时器/计数器:8051共有2个

44、16位的定时器/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。定时时靠内部分频时钟频率计数实现,做计数器时,对P3.4(T0)或P3.5(T1)端口的低电平脉冲计数。 5、并行I/O口:MCS-51共有4个8位的I/O口(P0、P1、P2、P3)以实现数据的输入输出。 6、串行口:MCS-51有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为移位器使用。RXD( P3.0)脚为接收端口,TXD(P3.1)脚为发送端口。 7、中断控制系统:MCS-51单片机的中断功能较强,以满足不同控制应用的需

45、要。共有5个中断源,即外中断2个,定时中断2个,串行中断1个,全部中断分为高级和低级共两二个优先级别。 8、时钟电路:MCS-51芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。系统允许的晶振频率为12MHZ。 MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行口的输入输出引脚上加上电平转换器,就可方便地构

46、成标准的RS-232C接口. 该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为移位器使用。RXD( P3.0)脚为接收端口,TXD(P3.1)脚为发送端口。  MCS-51单片机串行口寄存器结构图7所示。SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发送器寄存器,可以实现全双工通信。MCS-51的串行数据传输很简单,只要向发送缓冲器写入数据即可发送数据。从接收缓冲器读出数据即可接收数据。其内部结构如下: 图7  MCS-51单片机串行口寄存器结构 串行口控制寄存器(SCON)结构如下:

47、 表1串行口控制寄存器(SCON) D7 D6 D5 D4 D3 D2 D1 D0 SMO SM1 SM2 REN TB8 RB8 TI RI 各控制位功能介绍如下:      (1)SM0、SM1:串行口工作方式控制位。          SM0、SM1:工作方式              00       方式0              01       方式1              10       方式2              11       方式3      (2)

48、SM2:多机通信控制位。      多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第位数据是0还是1,都难得数据送入SBUF,并发出中断申请。      工作于方式0时,SM2必须为0。      (3)REN:允许接收位。      REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。     (4)TB8:发送接收数据

49、位8。      在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。      (5)RB8:接收数据位8。      在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。      (6)TI:发送中断标志位。      可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。      (7)RI:接收中断标志位。      可寻址标志位。接

50、收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。 PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H, SMOD=1则波特率加倍。其结构格式如下: 表2电源管理寄存器结构 PCON D7 D6 D5 D4 D3 D2 D1 D0 位符号 SMOD - - - GF1 GF0 PD IDL 中断允许寄存器IE:      ES为串行中断允许控制位,ES=1允许串行中断,ES=0,禁止串行中断。

51、 表3中断允许寄存器结构 位符号 EA - - ES ET1 EX1 ET0 EX0 位地址 AFH AEH ADH ACH ABH AAH A9H A8H 因为预先设置传输数据时是8个数据位,1个停止位。所以可设置串口工作方式1,方式1是一个8位的异步串行通信接口。SCON控制寄存器的初值为: 表4 SCON控制寄存器的初值 D7 D6 D5 D4 D3 D2 D1 D0 SMO SM1 SM

52、2 REN TB8 RB8 TI RI 0 1 0 1 0 0 1 0 串口的初始化程序为: mov scon, #52h ;串口工作在方式1 4.2波特率的产生与通信协议的制定 MCS-51的单片机内有两个16位可编程的定时/计数器,它们具有四种工作方式,其控制字和状态字均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。 MCS-51单片机内部的定时/计数器的结构中,定时器T0是由特性功能寄存器TL0(低8位)和TH0(高8位)构成,定时器T1由特性功能寄存器TL1(低8位)和TH1(高8位)构成。特殊功能寄存器TM

53、OD控制定时寄存器的工作方式,TCON则用于控制定时器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。程序开始时需对TL0、TH0、TL1和TH1进行初始化编程,以定义它们的工作方式和控制T0和T1的计数。   TMOD和TCON这两个特殊功能寄存器的格式参见下表: TMOD用于控制T0、T1的工作方式: 表5 TMOD寄存器结构 D7 D6 D5 D4 D3 D2 D1 D0 GATA C/T M1 M0 GATA C/T M1 M0 ←T1方式字段→ ←T0方式字段→ 其中

54、低四位用于T0,高四位用于T1。M1、M0是工作方式的控制位,当M1M0=10时为工作方式2(为常数自动重装入的8为定时/计数器)GATE=0时,只要用软件TR0或TR1置1就可以启动定时器,而GATE=1时只有INT0或INT1引脚为高电平且由软件使TR0或TR1置1时才能启动定时器。C/T=0时为定时方式,C/T=1时为计数方式。 定时器控制积存器TCON,字节地址为88H,位地址为88H—8FH,其格式如表6: 表6 TCON结构 D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1

55、 IT1 IE0 IT0 TR1由软件置位和清零来启动或关闭T1。当GATE=0时,TR1=1时,允许T0计数,当GATE=1时,仅当TR1=1时且INT0为高电平时才可启动TR0计数。 当M1M0=10时,定时/计数器处于工作方式2.此时定时器的等效电路如图8所示。 图8 定时/计数器工作方式2的等效电路 工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度,工作方式2就针对这个问题而设置,它具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载

56、工作方式。在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。      程序初始化时,给TL0和TH0同时赋以初值,当TL0计数溢出时,置位TF0的同时把预置寄存器TH0中的初值加载给TL0,TL0重新计数。如此反复,这样省去了程序不断需给计数器赋值的麻烦,而且计数准确度也提高了。但这种方式也有其不利的一面,就是这样一来的计数结构只有8位,计数值有限,最大只能到255。所以这种工作

57、方式很适合于那些重复计数的应用场合。例如我们可以通过这样的计数方式产生中断,从而产生一个固定频率的脉冲。也可以当作串行数据通信的波特率发送器使用。 当M1M0=10时,定时/计数器处于工作方式2在种情况下,定时/计数器1通常作为串行口的波特率发生器使用,以确定串行通信的速率。当作波特率发生器使用时,只需设置好工作方式,即可自动运行。本设计使用定时/计数器1。预设数据传送速率为1200b/s。 SMOD=0 计算定时器1工作方式2初值的公式为X=256-fos*(SMOD+1)/384*波特率。Foc=6.144MHZ,定时器处值为X=0F3H。 定时器产生波特率的其程序代码为: mov

58、 tmod, #20h ;定时器1设为工作方式2 mov th1,#0f3h ;定时器处值 mov tl1,#0f3h ;8位重装值 SETB TR1 ;启动定时器1 该程序设置了数据传送速率为1200b/s。 4.3单片机程序设计 在设置好串口工作方式与波特率的基础上,把PC机发送的数据传给数码管可以显示发送的数据,并且回传给PC机。通过观察数码管的显示与回传的数据进行比较是否一致就可以验证串口通信的正确性。 通过P3.3、P3.4口的位选控制2位数码管显示数据。 主要程序流程图: 开始

59、 串口初始化 启动定时器 N Ri是否为1 Y 清除RI,接收数据 发送数据

60、 将接收数据进行显示 图9 主程序流程图 程序源代码如下: st_addr equ 4000h port equ 1b30h org st_addr ljmp main main: clr p3.4 ;清p3.4 clr p3.3 ;清p3.3 mov tmod, #20h ;定时器1工作方式2 mov scon, #52h ;串口工作方式1 mov th1,#0f3h ;定时器处值波特率1200b

61、/s mov tl1,#0f3h setb tr1 ;启动定时器 jnb ri,load1 ;判断RI是否为1 load: clr ri ;清RI clr p3.3 ;清p3.3 clr p3.4 ;清p3.4 mov a,sbuf ;传输数据 mov r0,a ;数据显示 mov sbuf,a ;回传数据 jnb ti,$ ; 判断T

62、I是否为1 clr ti load1:mov a,r0 swap a ;高字节与低字节交换内容 anl a,#0fh ;屏蔽高四位 mov dptr,#table2 movc a,@a+dptr ;查表 mov p1,a ;送数码管显示 setb p3.4 ;P3.4置1 lcall delay ;调用延时子程序 clr p3.4 ;清P3.4

63、 mov a,r0 anl a,#0fh ;取高四位 mov dptr,#table2 movc a,@a+dptr ;查表 mov p1,a ;送于数码管显示 setb p3.3 lcall delay ;调用延时子程序 clr p3.3 mov a,r0 jnb ri,load1 ; jmp load delay:mov r7,#0ffh ;延

64、时程序 ys1: mov r6,#0ffh djnz r6,$ djnz r7,ys1 ret table2:db 3fh,06h,5bh,4fh,66h,6dh db 7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h end 5结论 通过Visual Basic中的mscomm控件开发的串口通信程序,并通过单片机编写的通信协议在进行电平转换的基础上就可以实现串口通信。PC机作为上位机发送一个数据后,经

65、过串口传送给单片机,单片机将数据再通过P1口传给数码管,通过位选使得两位数码管显示数据。单片机再将数据回传给PC机,回传的数据与发送的数据和数码管显示一致,说明基于RS-232C的串口通信成功。 谢辞 毕业设计是一项实践性很强的工作,对动手能力和自学能力要求很高,由于本人缺乏这方面的锻炼,在设计过程中遇到了很多困难,而指导教师师给予了我很大的帮助,老师及时地、耐心地解答了我们在设计过程中遇到的各种问题,使我受益匪浅,并且在学习能力方面得到了很大的提高。这也是我人生中一次重要的锻炼老师亲切随和,治学严

66、谨,在我的心里留下深刻的影响。在整个毕业设计中当我们遇到问题时,吕老师一直是很热情的在给予指导。在此我要向吕老师表示我衷心的感谢与敬意。 参考文献 [1]李 华. MCS51系列单片机实用接口技术[M ]. 北京北京航空航天大学出版社, 1993 [2]朱明宇,武 峰. 8031单片机主从式数据采集系统设计 [3]求实科技,仵浩, 齐燕杰等. Visual Basic 串口通信工程开发实例导航[M]. 北京: 人民邮电出版社, 2002. [4]范逸之, 陈立元, 孙德营等. 利用Visual Basic 实现串并行通信技术[M]. 北京: 清华大学出版社, 2001. [5]李肇庆,韩涛. 串行端口技术[M] . 北京:国防工业出版社,2004. [6][美]Evangelos Petroutsos 著. 邱仲潘译. Visual Basic 6 从入门到精通[M]. 北京: 电子工业出版社, 1999. [7]范逸之. Visual Basic 与RS232 串行

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

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!