PC机与单片机之间的通讯被广泛的用于工业.doc
文本预览下载声明
PC机与单片机之间的通讯被广泛的用于工业、医疗测控等领域之中。在应用中,我们通常将单片机作为“感 受器”和“效应器”,负责数据采集、响应计算机发出的指令对电路进行控制,有时也进行一些简单的运算, 最后再将执行数据反馈给计算机处理。本程序将实现在PC机上输入一个0-255之间的整数,将此数据发送到单片 机,单片机接收到数据后,将数据在显示管上显示,再将此数除以2,将得数返回给PC机。其实现方法如下: ????? A、同PC机间通讯的实现方法A-B。 ????? B、连接电脑和单片机。注意!由于PC机端的RS232电平与单片机端TTL的并不不匹配,故应注意电平转换。 ????? C、在VB中输入以下代码: Private Sub Mscomm1_Oncomm() ...通讯事件发生 Dim indata As Variant Dim bte(0) As Byte Select Case MSComm1.CommEvent Case comEvReceive ...有接受事件发生 indata = MSComm1.Input ...注意!要通过MSComm控件发送或接收二进制数据必须用Variant类型的变量对二进 ...制Byte类型的变量进行转换! bte(0) = AscB(indata) Text2.Text = bte(0) MSComm1.InBufferCount = 0 ...清空输入寄存器 End Select End Sub Private Sub Command1_Click() ...发送数据 Dim Num As Integer Dim outbte(0) As Byte Num = Val(Text1.Text) outbte(0) = CByte(Num) MSComm1.OutBufferCount = 0 ...清空输出寄存器 MSComm1.Output = outbte(0) ...发送数据 End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() ...初始化 MSComm1.CommPort = 1 ...使用Com1口 MSComm1.Settings = 9600,n,8,1 ...设置通讯参数 MSComm1.PortOpen = True ...打开串口 End Sub ????? D、单片机工作方式置于1,比特率设为9600bit/s。在单片机上,我们只得使用汇编语言编写,并且调用中 断实现对串口数据的收发工作。源代码如下: PUSH PSW??????? ;将程序状态字压入堆栈 PUSH ACC??????? ;将累加器压入堆栈 CLR EA????????? ;关闭系统中断????????? CLR RI????????? ;清除中断标志位 MOV A,SBUF????? ;从接收寄存器中读取数据 MOV 70H,A?????? ;分解数据百、十、个位并显示 MOV B,#100????? DIV AB MOV 52H,A?????? ;分解百位,送入存储器52H MOV A,B MOV B,#10 DIV AB MOV 51H,A?????? ;分解十位,送入存储器51H MOV 50H,B?????? ;分解个位,送入存储器50H MOV A,70H MOV B,#2?? DIV AB??????????? ;将接受的数据除以2 MOV SBUF,A????? ;将得数发送到输出寄存器 ACALL DL1?????? ;延时保证数据完整发送 ACALL DL1 CLR RI????????? ;清除中断标志位 SETB EA???????? ;打开系统中断 POP ACC?????????? ;累加器出栈 POP PSW???????? ;程序状态字出栈 RETI??????????? ;中断程序返回 3、编程环境????? 以上程序在Windows 2000 Professional,Visual Basic 6.0企业版,AT89C52型单片机下调试通过。 四、总结 ??? 从以上程序可以看出,在VB中利用MSComm控件,可以快速开发出串口通讯程序,从而大大提高编程效率。VB中串口通讯的实现一、概述 ???? 串口通讯作为一种古老而又灵活的通讯方式,被广泛地应用于PC间的通讯以及PC和单片机之间的通讯之中。 提到串口通讯的编程,人们往往立刻想到C、汇编等对系统底层操作支持较好的编程语言以及大串繁琐的代码。 ?? 实际上,只要我们借助相关
显示全部