单片机串行口与PC机通讯资料.docx
- 文档编号:7183517
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:15
- 大小:209.42KB
单片机串行口与PC机通讯资料.docx
《单片机串行口与PC机通讯资料.docx》由会员分享,可在线阅读,更多相关《单片机串行口与PC机通讯资料.docx(15页珍藏版)》请在冰豆网上搜索。
单片机串行口与PC机通讯资料
单片机串行口与PC机通讯
第1节引言1
1.1单片机串行口与PC机通信概述1
1.2系统主要功能1
第2节单片机串行口与PC机通讯硬件设计2
2.1系统的硬件构成2
2.2设计说明2
2.3系统电路图3
2.48031单片机及其引脚说明5
2.5显示接口8279的功能及其引脚说明5
2.6数据格式和数据的协议6
第3节系统软件设计7
3.1系统主程序框架图7
3.2系统主要程序8
第3节结束语14
参考文献15
第1节引言
单片机应用中,串口通信是不可缺少的部分。
如何编写有效的串口通信程序对程序的结构、可靠性都有很大的影响。
串口控制程序一般分为查询和中断两者方式。
查询方式适用于简单的应用,简单可靠,但是缺点是需要占用处理器资源,在发送或者接收数据的时候不能做其它的事情,处理器利用率低。
中断方式下,在发送或者接受数据的时候处理器还可以做其它的工作,效率较高。
1.1单片机串行口与PC机通讯概述
目前,计算机控制系统已逐步从单机控制发展成为多机控制并出现了以计算机技术为核心,与数据通讯技术相结合的集检测、控制和管理为一体的计算机网络,即集中分布式测控系统。
其中单片机作为从机,负责现场控制和实时数据的采集;PC机作为主机,负责对各从机发来的数据进行分析、处理,并向各从机发布命令,以实现对工业现场的集中监控与管理。
由于主从机需不断进行信息交流,因此通信成为分布式测控系统重要而基本的功能。
基本原理PC机与单片机之间通常采用2种通信方式:
并行通信和串行通信。
并行通信是指将待发送数据的各位同时传送,串行通信则将数据一位一位地按顺序传送。
并行通信虽然传输效率高,由于所需硬件设备复杂,不适于长距离通信,所以一般只适用于要求实时性强,传送速率较高的控制系统中,实用面较窄;相比之下,串行通信简单易实现,传输距离较长,所以已被广泛应用于各种工控系统中。
串行通信分为同步通信和异步通信2种方式。
同步通信是指通过在每个数据块开始时的同步字符来实现收/发双方同步的一种数据传输方法,常用于信息量大,速度要求高的场合;异步通信则规定了标准的字符数据传输格式,即每一帧信息由起始位、数据位、奇偶校验位和停止位组成。
由于有冗余位,所以传送效率不高,常用于信息量不大,速度较低的场合。
在计算机测控系统中,由于串行接口的标准化,一般采用异步串行通信方式,以提高其通用性。
由于各种接口的机械和电器特性有所差异,串行通信分为近程通信和远程通信。
2 接口电路的设计2.1 近程通信目前,PC机是利用异步通讯控制器来实现串行通讯的,其核心是8250通讯芯片加上一些收发逻辑电路。
接口标准大多是RS232标准,其通讯距离小于15m,传输速率小于20kb/s。
RS232标准是按负逻辑定义的,他的“1”电平在-5~-15V之间,“0”电平在+5~+15V之间。
由于PC机使用的是TTL电平信号,因此数据输出时必须把TTL电平信号转换成驱动器MC1488和接收器MC1489,其作用除了电平转换外,还实现正负逻辑电平转换。
1.2系统主要功能
本实验实现以下功能,将从实验机键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到实验机的数码管上。
第2节单片机串行口与PC机通讯硬件设计
2.1系统的硬件构成
利用8031单片机串行口,实现与PC机通讯。
CS8279接8700H。
模块中的十个短路套都套在8279侧。
8279状态口地址为8701H;8279数据口地址为8700H
2.2设计说明
1.当用GR命令执行程序时,实验机内部会将8031串行口电路切换与PC机通讯,无须连线。
2.程序执行前,进入LCA51,加载程序后,才进入调试菜单工具中的对话窗口,然后执行GR0,就可实行单片机串行口与PC机通信实验
2.3系统电路图
图1系统电路图
2.48031单片机及其引脚说明
单片机有许多种类,从生产厂家看,有Intel、Motorola、Epson、NEC、Phlips等公司;按位数分有四位机、八位机、十六位机----也就是可以同时对四位、八位或十六位二进制码进行运算;从用途上又可以分为通用和专用。
Intel公司的MCS-51系列属于8位机的系列,性能可能满足大多数应用的需要。
它应用广泛、价格便宜、技术成熟,适于初学者学习。
在MCS-51系列中又有许多型号,包括8031、8051、8751等。
其中8051的程序已经由工厂做在单片机内部(称做掩膜),是为批量用户定制的,对于我们学习不适用。
8751是在芯片内有可擦写的程序存储器,这种芯片是为做掩膜前验证电路用的,也用于一些有特殊要求的场所。
8031内部没有程序存储器,它的程序存储器接在芯片外面,这样恰好便于在开发过程中对程序存储器进行控制,因此选8031学习是比较适宜的。
其实这几种型号的原理完全一样,学会8031其它型号也就掌握了
图28031引脚配置
8031芯片的40条引脚功能为:
1、主电源引脚VCC和VSS
VCC——(40脚)接+5V电压;
VSS——(20脚)接地。
2、外接晶体引脚XTAL1和XTAL2
XTAL1(19脚)接外部晶体的一个引脚。
在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。
当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚)接外晶体的另一端。
在单片机内部,接至上述振荡器的反相放大器的输出端。
采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS,此引脚应悬浮。
3、控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP
①RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。
推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。
VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。
当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±0.5V)内,VPD就向内部RAM提供备用电源。
②ALE/PROG(30脚):
当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。
即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。
因此,它可用作对外输出的时钟,或用于定时目的。
然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。
ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。
对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。
③PSEN(29脚):
此脚的输出是外部程序存储器的读选通信号。
在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。
但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。
PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。
④EA/VPP(引脚):
当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。
当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。
对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。
对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP)。
4、输入/输出(I/O)引脚P0、P1、P2、P3(共32根)
①P0口(39脚至32脚):
是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。
②P1口(1脚至8脚):
是准双向8位I/O口。
由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。
P1口能驱动(吸收或输出电流)4个LS型的TTL负载。
对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。
对EPROM编程和程序验证时,它接收低8位地址。
③P2口(21脚至28脚):
是准双向8位I/O口。
在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。
在对EPROM编程和程序验证期间,它接收高8位地址。
P2可以驱动(吸收或输出电流)4个LS型的TTL负载。
④P3口(10脚至17脚):
是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。
P3能驱动(吸收或输出电流)4个LS型的TTL负载。
作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。
作为第二功能使用时,各引脚的定义如表所示。
值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。
图3系统主程序流程图
2.5显示接口8279的功能及其引脚说明
可编程键盘/显示接口8279可编程键盘/显示接口8279的引脚功能
8279采用单一+5V电源供电,40脚封装。
DB0~DB7:
双向数据总线,用来传送8279与CPU之间的数据和命令。
CLK:
时钟输入线,用以产生内部定时的时钟脉冲。
RESET:
复位输入线,8279复位后被置为字符显示左端输入,二键闭锁的触点回弹型式,程序时钟前置分频器被置为31,RESET信号为高电平有效。
CS:
片选输入线,低电平有效,单片机在CS端为低时可以对8279读/写操作。
A0:
缓冲器低位地址,当A0为高电平时,表示数据总线上为命令或状态,当为低电平时,表示数据总线上为命令或状态,当为低电平时,表示数据总线上为数据。
RD:
读信号输入线,低电平有效,将缓冲器读出,数据送往外部总线。
WR:
写信号输入线,低电平有效,将缓立器读出,将数据从外部数据总线写入8279的缓冲器。
RL2--140--VCC
RL3--239--RL1
CLK--338--RL0
IRQ--437--CNTL/STB
RL4--536--SHIFT
RL5--635--SL3
RL6--734--SL2
RL7--833--SL1
RESRT--932--SL0
RD--1031--OUTB0
WR--1130--OUTB1
DB0--1229--OUTB2
DB1--1328--OUTB3
DB2--1427--OUTA0
DB3--1526--OUTA1
DB4--1625--OUTA2
DB5--1724--OUTA3
DB6--1823--BD
DB7--1922--CS
VSS--2021--A0
IRQ:
中断请求输出线,高电平有效,在键盘工作方式下,当FIFO/传感器RAM中有数据时,此中断线变为高电平,在FIFO/传感器RAM每次读出时,中断线就下降为低电平,若在RAM中还有信息,则此线重又变为高电平。
在传感器工作方式中,每当探测到传感器信号变化时,中断线就变为高电平。
SL0~SL3:
扫描线,用来扫描按键开关,传感器阵列和显示数字,这些可被编程或被译码。
RL0~RL7:
回送线,经过按键或传感器开关与扫描线联接,这些回送线内部设置有上拉电路,使之保持为高电平,只有当一个按闭合时,对应的返回线变为低电平;无按键闭合时,均保持高电平。
SHIFT:
换位功能,当有开关闭合时被拉为低电平,没有按下SHIFT开关时,SHIFT输入端保持高电平,在键盘扫描方式中,按键一闭合,按键位置和换位输入状态一起被存贮起来。
CNTL/STB:
当CNTL/STB开关闭合时将其拉到低电平,否则始终保持高电平,对于键盘输入方式,此线用作控制输入端,当键被按下时,按键位置就和控制输入状态一起被存贮起来,在选通输入方式中,作选通用,把数据存入FIFORAM中。
OUTA3~OUTA0及OUTB3~OUTB0:
显示输出A口及B口,这两个口是16×4切换的数字显示。
这两个端口可被独立控制,也可看成一个8位端口。
BD:
空格显示,此输出端信号用于在数字转换时将显示空格或者用显示空格命令控制其显示空格字符。
VCC:
+5V电源输入线。
VSS:
地线输入线。
2.6数据格式和数据交换的协议
Max232产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。
该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。
该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-VTTL/CMOS电平。
每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。
图4系统主程序流程图
计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。
由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。
在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。
RS-232-C接口(又称EIARS-232-C)是目前最常用的一种串行通讯接口。
它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。
它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。
一般只使用3-9条引线。
第3节系统的软件设计
本系统的软件系统主要可分为主程序、串口收发程序,读取键盘子程序,显示字符子程序四大模块。
3.1系统主程序设计
图5系统主程序流程图
图6INIT8279子程序框图
3.2主要程序
Z8279EQU8701H;8279状态/命令口地址
D8279EQU8700H;8279数据口地址
LEDMODEQU00H;左边输入八位字符显示
;外部译码键扫描方式,双键互锁
LEDFEQEQU2FH;扫描速率
LEDCLSEQU0C1H;清除显示RAM
LEDWR0EQU80H;设定的将要写入的显示RAM地址
READKBEQU40H;读FIFORAM地址0的命令字
ORG0000H
AJMPSTART
ORG0040H
START:
MOVSP,#60H
LCALLINIT8279;初始化8279
MOVSCON,#50H;串口方式1
MOVTMOD,#20H;T1方式1
MOVTL1,#0FDH;波特率9600的常数
MOVTH1,#0FDH
SETBTR1;开中断
SETBET1
SETBEA
WAIT:
JBCRI,DIS_REC;是否接收到数据
LCALLGETKEY;读键盘
CJNEA,#0FFH,WAIT;是否有键输入
MOVSBUF,B;串口输出键盘输入的值
NOP
SS:
JBCTI,WAIT;是否发送完毕
SJMPSS
DIS_REC:
MOVA,SBUF;读串口接收到的数据
CLRC
SUBBA,#30H;以下判定输入是否在0-F
JCERROR
SUBBA,#0AH
JNCDIS_REC1
ADDA,#0AH
SJMPDIS_REC2
DIS_REC1:
SUBBA,#7H
JCERROR
SUBBA,#6H
JNCERROR
ADDA,#10H
DIS_REC2:
MOVR4,#00H
MOVR5,A
LCALLDISLED;显示输入的数字(0-F)
ERROR:
AJMPWAIT
INIT8279:
;8279初始化子程序
PUSHDPH;保存现场
PUSHDPL
PUSHACC
LCALLDELAY;延时
MOVDPTR,#Z8279
MOVA,#LEDMOD;置8279工作方式
MOVX@DPTR,A
MOVA,#LEDFEQ;置键盘扫描速率
MOVX@DPTR,A
MOVA,#LEDCLS;清除LED显示
MOVX@DPTR,A
POPACC;恢复现场
POPDPL
POPDPH
RET
;读取键盘子程序
;输入:
无;输出:
B:
读到的键码A:
按键的标志
GETKEY:
PUSHDPH;保存现场
PUSHDPL
PUSHPSW
MOVDPTR,#Z8279
MOVXA,@DPTR;读8279状态
ANLA,#07H;屏蔽D7-D3
JNZGETVAL;判断是否有键输入
MOVA,#0H;置标志(无键输入)
SJMPNKBHIT
GETVAL:
MOVA,#READKB;读FIFORAM命令
MOVX@DPTR,A
MOVDPTR,#D8279
MOVXA,@DPTR;读键
ANLA,#0FH;屏蔽SHIFT和CTRL键
MOVDPTR,#KEYCODE;键码表起始地址
MOVCA,@A+DPTR;查表
MOVB,A;置返回键值
MOVA,#0FFH;置标志(有键输入)
NKBHIT:
POPPSW;恢复现场
POPDPL
POPDPH
RET
;显示字符子程序输入:
R4,位置R5,值
DISLED:
PUSHDPH;保存现场
PUSHDPL
PUSHACC
MOVA,#LEDWR0;置显示起始地址
ADDA,R4;加位置偏移量
MOVDPTR,#Z8279
MOVX@DPTR,A;设定显示位置
MOVDPTR,#LEDSEG;置显示常数表起始位置
MOVA,R5
MOVCA,@A+DPTR;查表
MOVDPTR,#D8279
MOVX@DPTR,A;显示数据
POPACC;恢复现场
POPDPL
POPDPH
RET
DELAY:
;延时子程序
PUSH0;保存现场
PUSH1
MOV0,#0H
DELAY1:
MOV1,#0H
DJNZ1,$
DJNZ0,DELAY1
POP1;恢复现场
POP0
RET
;LED显示常数表
LEDSEG:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;'0,1,2,3,4,5,6,7'
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;'8,9,A,B,C,D,E,F'
DB0BFH,086H,0DBH,0CFH,0E6H,0EDH,0FDH,087H;'0.,1.,2.,3.,4.,5.,6.,7.'
DB0FFH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H;'8.,9.,A.,B.,C.,D.,E.,F.'
DB6DH,02H,08H,00H,59H,0FH,76H;'U,-,_,,I,O,P,'
;键盘键码表
KEYCODE:
DB30H,31H,32H,33H,34H,35H,36H,37H;'1,2,Q,W,A,S,+,Z'
DB38H,39H,41H,42H,43H,44H,45H,46H;'3,4,E,R,D,F,X,C'
DB47H,48H,49H,4AH,4BH,4CH,4DH,4EH;'5,6,T,Y,G,H,V,B'
END
结束语
经过一段时间的收集资料,我的应用设计终于完成,看着自己的成果,有说不出的感触。
通过这段时间的努力,对我这学期的学习有了系统的总结,对我自己感兴趣的知识也有了一些进步。
本设计就是采用MCS-51系列单片机,利用8031单片机串行口,实现与PC机通讯。
本设计中包括了单片机通讯的编制,串行通讯的硬环境,数据格式的协议,数据交换的协议等多方面的知识,在这个单片机串行口与PC机通讯设计中,我主要是说明它的原理和应用,然后用一个相对简单的实验来实现这个功能。
通过这次设计使我对这一学期所学的知识更加的系统化、深层次化。
通过这次设计学会了分析问题、处理问题的方法,可以说达到了举一反三的目的。
为以后工作、学习都打下了比较坚实的基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 串行口 PC 通讯 资料