-
2020-06-21 20:44:55
一.实验要求
利用8031单片机串行口,实现与PC机通讯。
本实验实现以下功能,将从实验机键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到实验机的数码管上。
二.实验目的
1.掌握串行口工作方式的程序设计,掌握单片机通讯的编制。
2.了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议。
3.了解PC机通讯的基本要求。
三.实验电路及连线
实验电路已在实验机监控电路上构成。
CS8279接8700H。 模块中的十个短路套都套在8279侧。
8279状态口地址为8701H;8279数据口地址为8700H;
四.实验说明
1.当用GR命令执行程序时,实验机内部会将8031串行口电路切换与PC机通讯,无须连线。
2.程序执行前,进入LCA51,加载程序后,才进入调试菜单工具中的对话窗口,然后执行GR0,就可实行单片机串行口与PC机通信实验。
六.实验程序: Z8279 EQU 8701H ;8279 状态/命令口地址 D8279 EQU 8700H ;8279 数据口地址 LEDMOD EQU 00H ;左边输入 八位字符显示 ;外部译码键扫描方式,双键互锁 LEDFEQ EQU 2FH ;扫描速率 LEDCLS EQU 0C1H ;清除显示 RAM LEDWR0 EQU 80H ;设定的将要写入的显示RAM地址 READKB EQU 40H ;读 FIFO RAM 地址 0 的命令字 ORG 0000H AJMP START ORG 0040H START: MOV SP,#60H LCALL INIT8279 ;初始化8279 MOV SCON,#50H ;串口 方式 1 MOV TMOD,#20H ;T1 方式 1 MOV TL1,#0FDH ;波特率 9600 的常数 MOV TH1,#0FDH SETB TR1 ;开中断 SETB ET1 SETB EA WAIT: JBC RI,DIS_REC ;是否接收到数据 LCALL GETKEY ;读键盘 CJNE A,#0FFH,WAIT ;是否有键输入 MOV SBUF,B ;串口输出键盘输入的值 NOP SS: JBC TI,WAIT ;是否发送完毕 SJMP SS DIS_REC: MOV A,SBUF ;读串口接收到的数据 CLR C SUBB A,#30H ;以下判定输入是否在0-F JC ERROR SUBB A,#0AH JNC DIS_REC1 ADD A,#0AH SJMP DIS_REC2 DIS_REC1: SUBB A,#7H JC ERROR SUBB A,#6H JNC ERROR ADD A,#10H DIS_REC2: MOV R4,#00H MOV R5,A LCALL DISLED ;显示输入的数字(0-F) ERROR: AJMP WAIT INIT8279: ;8279初始化子程序 PUSH DPH ;保存现场 PUSH DPL PUSH ACC LCALL DELAY ;延时 MOV DPTR ,#Z8279 MOV A,#LEDMOD ;置8279工作方式 MOVX @DPTR,A MOV A,#LEDFEQ ;置键盘扫描速率 MOVX @DPTR,A MOV A,#LEDCLS ;清除 LED 显示 MOVX @DPTR,A POP ACC ;恢复现场 POP DPL POP DPH RET ;读取键盘子程序 ;输入: 无 ; 输出: B: 读到的键码 A: 按键的标志 GETKEY: PUSH DPH ;保存现场 PUSH DPL PUSH PSW MOV DPTR,#Z8279 MOVX A,@DPTR ;读8279状态 ANL A,#07H ;屏蔽D7-D3 JNZ GETVAL ;判断是否有键输入 MOV A,#0H ;置标志(无键输入) SJMP NKBHIT GETVAL: MOV A,#READKB ;读 FIFO RAM 命令 MOVX @DPTR,A MOV DPTR,#D8279 MOVX A,@DPTR ;读键 ANL A,#0FH ;屏蔽 SHIFT 和 CTRL 键 MOV DPTR,#KEYCODE ;键码表起始地址 MOVC A,@A+DPTR ;查表 MOV B,A ;置返回键值 MOV A,#0FFH ;置标志(有键输入) NKBHIT: POP PSW ;恢复现场 POP DPL POP DPH RET ;显示字符子程序 ;输入: R4,位置 R5,值 DISLED: PUSH DPH ;保存现场 PUSH DPL PUSH ACC MOV A,#LEDWR0 ;置显示起始地址 ADD A,R4 ;加位置偏移量 MOV DPTR,#Z8279 MOVX @DPTR,A ;设定显示位置 MOV DPTR,#LEDSEG ;置显示常数表起始位置 MOV A,R5 MOVC A,@A+DPTR ;查表 MOV DPTR,#D8279 MOVX @DPTR,A ;显示数据 POP ACC ;恢复现场 POP DPL POP DPH RET DELAY: ;延时子程序 PUSH 0 ;保存现场 PUSH 1 MOV 0,#0H DELAY1: MOV 1,#0H DJNZ 1,$ DJNZ 0,DELAY1 POP 1 ;恢复现场 POP 0 RET ;LED显示常数表 LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7' DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F' DB 0BFH,086H,0DBH,0CFH,0E6H,0EDH,0FDH,087H ;'0.,1.,2.,3.,4.,5.,6.,7.' DB 0FFH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H ;'8.,9.,A.,B.,C.,D.,E.,F.' DB 6DH,02H,08H,00H,59H,0FH,76H ;'U,-,_, ,I,O,P, ' ;键盘键码表 KEYCODE:DB 30H,31H,32H,33H,34H,35H,36H,37H ;'1,2,Q,W,A,S,+,Z' DB 38H,39H,41H,42H,43H,44H,45H,46H ;'3,4,E,R,D,F,X,C' DB 47H,48H,49H,4AH,4BH,4CH,4DH,4EH ;'5,6,T,Y,G,H,V,B' END
本素材来自网路,如有侵权,请联系删除。
获取更多资源,请关注公众号“伊斯电子编程”更多相关内容 -
51单片机-串行口通信实验
2022-04-18 12:19:33实验要求: 实现以下功能:串口调试助手向单片机发送控制码,单片机向PC回送控制码,0:熄灭;1:LED从上往下循环;2:LED从下往上循环;3:LED闪烁;4:蜂鸣器响 电路设计: USB供电及自动下载原理图 串口...实验要求:
实现以下功能:串口调试助手向单片机发送控制码,单片机向PC回送控制码,0:熄灭;1:LED从上往下循环;2:LED从下往上循环;3:LED闪烁;4:蜂鸣器响
电路设计:
USB供电及自动下载原理图
串口转USB以及蜂鸣器原理图
软件代码:
方案一:
#include<8052.h> __sfr __at (0xE8) P4; __sbit __at (0xEC) P4_4; #define LSA P1_5 #define LSB P1_6 #define LSC P1_7 #define BUZZ P4_4 /*LED初始化*/ void LedInit() { LSA = 0; LSB = 0; LSC = 0; P0 = 0xff; } /*延迟函数*/ void Delayms(unsigned int xms) { unsigned int i,j; for (i = xms;i > 0;i--) { for (j = 110;j > 0;j--); } } /*LED从上向下循环3次*/ void Up2Down(int x){ int i, j; unsigned char sel=0xfe; for(i=0;i<x;i++) { for(j=0;j<8;j++) { P0 = sel; Delayms(250); sel =sel<<1; } sel=0xfe; } } /*LED从下往上循环3次*/ void Down2Up(int x){ int i, j; unsigned char sel=0x7f; for(i=0;i<x;i++) { for(j=0;j<8;j++) { P0 = sel; Delayms(250); sel=sel>>1; } sel=0x7f; } } /*LED闪烁*/ void Led_Shan(int x){ unsigned int i; for (i = 0;i < x;i++){ P0 = 0xff; Delayms(500); P0 = 0x00; Delayms(500); } P0 = 0xff; } void Buzz() { BUZZ=0; Delayms(1000); BUZZ=1; Delayms(1000); } void ConfigUART(unsigned int baud)//UART波特率初始化 { SCON = 0x50; //串口工作方式1 TMOD &= 0x0F; TMOD |= 0x20; TH1 = 256 - (11059200/12/32)/baud; TL1 = TH1; ET1 = 0; ES = 1; TR1 =1; } void InterruptUART(void) __interrupt 4 //串口中断 { unsigned char temp; if (RI==1) { //串口接收 RI = 0; temp = SBUF; if ((temp == '0')||(temp == '1')||(temp == '2')||(temp == '3')||(temp == '4')) { TI = 1; } } if (TI==1){ //串口发送 TI = 0; SBUF = temp; while(TI == 0); if (temp == '0') { P0 = 0xff; } if (temp == '1') { Up2Down(3); } if (temp == '2') { Down2Up(3); } if (temp == '3') { Led_Shan(3); } if (temp == '4') { Buzz(); } TI = 0; } } void main(){ EA = 1; //开启总中断 ConfigUART(9600); //波特率设为9600 LedInit(); //LED初始化 while(1); }
方案二:
#include <reg52.h> #include <intrins.h> sbit LSA = P2^2; sbit LSB = P2^3; sbit LSC = P2^4; sbit beep= P1^5; void U2D(unsigned int xms,unsigned char m); void D2U(unsigned int xms,unsigned char m); void delayms(unsigned int xms); void Shinning(unsigned int xms,unsigned char m); void ConfigUART(unsigned int baud); void delayms(unsigned int xms) { unsigned int i,j; for(i=0;i<xms;i++) { for(j = 0;j<110;j++); } } void U2D(unsigned int xms,unsigned char m) { unsigned char i,j,temp; temp = 0x7f; for(i=0;i<m;i++) { for(j=0;j<8;j++) { P0 = temp; delayms(xms); temp = _cror_(temp,1); } } } void D2U(unsigned int xms,unsigned char m) { unsigned char i,j,temp; temp = 0xfe; for(i=0;i<m;i++) { for(j=0;j<8;j++) { P0 = temp; delayms(xms); temp = _crol_(temp,1); } } } void Shinning(unsigned int xms,unsigned char m) { unsigned char i; for(i=0;i<m;i++) { P0 = 0x00; delayms(xms); P0=0xff; delayms(xms); } } void ConfigUART(void); unsigned char Rdata; unsigned char Tdata; void main(void) { LSA=LSB=LSC=0; ConfigUART(9600); while(1); } void ConfigUART(unsigned int baud) { SCON=0x50; TMOD=TMOD&0x0f; TMOD=TMOD|0x20; TH1=TL1=256-(11059200/12/32)/baud; EA=1; ES=1; ET1=0; TR1=1; } void UARTINIT(void) interrupt 4 { if(RI) { RI=0; Rdata=SBUF; Tdata=Rdata+1; SBUF=Tdata; while(!TI); TI=0; switch(Rdata) { case 0:P0=0xff;break; case 1:U2D(100,1);break; case 2:D2U(100,1);break; case 3:Shinning(100,1);break; case 4:beep=0;delayms(500);beep=1;break; default: P0=0xff;beep=1;break; } } }
程序改进:修改程序,能把串口接收到控制码显示到数码管上。
数码管接口电路原理图
方案一:
#include<8052.h> __sfr __at (0xE8) P4; __sbit __at (0xEC) P4_4; #define LSA P1_5 #define LSB P1_6 #define LSC P1_7 #define BUZZ P4_4 unsigned char smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; /*LED初始化*/ void LedInit() { LSA = 0; LSB = 0; LSC = 0; P0 = 0xff; } /*延迟函数*/ void Delayms(unsigned int xms) { unsigned int i,j; for (i = xms;i > 0;i--) { for (j = 110;j > 0;j--); } } /*LED从上向下循环3次*/ void Up2Down(int x){ int i, j; unsigned char sel=0xfe; for(i=0;i<x;i++) { for(j=0;j<8;j++) { P0 = sel; Delayms(250); sel =sel<<1; } sel=0xfe; } } /*LED从下往上循环3次*/ void Down2Up(int x){ int i, j; unsigned char sel=0x7f; for(i=0;i<x;i++) { for(j=0;j<8;j++) { P0 = sel; Delayms(250); sel=sel>>1; } sel=0x7f; } } /*LED闪烁*/ void LedShan(int x){ unsigned int i; for (i = 0;i < x;i++){ P0 = 0xff; Delayms(500); P0 = 0x00; Delayms(500); } P0 = 0xff; } void Buzz() { BUZZ=0; Delayms(1000); BUZZ=1; Delayms(1000); } void ConfigUART(unsigned int baud)//UART波特率初始化 { SCON = 0x50; //串口工作方式1 TMOD &= 0x0F; TMOD |= 0x20; TH1 = 256 - (11059200/12/32)/baud; TL1 = TH1; ET1 = 0; ES = 1; TR1 =1; } void SMG(int x) { LSA=1; LSB=0; LSC=0; P0=smg[x]; } void InterruptUART(void) __interrupt 4 //串口中断 { unsigned char temp; if (RI==1) { //串口接收 RI = 0; temp = SBUF; if ((temp == '0')||(temp == '1')||(temp == '2')||(temp == '3')||(temp == '4')) { TI = 1; } } if (TI==1){ //串口发送 TI = 0; SBUF = temp; while(TI == 0); LSA = 0; LSB = 0; LSC = 0; if (temp == '0'){ P0 = 0xff; SMG(0); } if (temp == '1') { Up2Down(3); SMG(1); } if (temp == '2') { Down2Up(3); SMG(2); } if (temp == '3') { LedShan(3); SMG(3); } if (temp == '4') { Buzz(); SMG(4); } TI = 0; } } void main(){ EA = 1; //开启总中断 ConfigUART(9600); //波特率设为9600 LedInit(); //LED初始化 while(1); }
方案二:
#include <reg52.h> #include <STC89C52RC.h> #include <intrins.h> #include <led.h> void ConfigUART(unsigned int baud); void delay(unsigned int xms); unsigned char code smg[]={0xc0,0xf9,0xa4,0xb0,0x99}; unsigned char temp; void main() { LSA=LSB=LSC=0; EA=1; ConfigUART(9600); while(1) { if(temp==0) { LedScan(0,smg[0]); } else if(temp==1) { LedScan(0,smg[1]); } else if(temp==2) { LedScan(0,smg[2]); } else if(temp==3) { LedScan(0,smg[3]); } else if(temp==4) { LedScan(0,smg[4]); } } } void ConfigUART(unsigned int baud) { SCON=0x50; TMOD&=0x0F; TMOD|=0x20; TH1=256-(11059200/12/32)/baud; TL1=TH1; ET1=0; ES=1; TR1=1; void interruptUART(void) interrupt 4 { if(RI) { RI=0; temp=SBUF; SBUF=temp; } if(TI) { TI=0; } } void delay(unsigned int xms) { unsigned char m,n; for(m=0;m<xms;m++) { for(n=0;n<110;n++); } }
STC89C52RC.h #ifndef _STC89C52RC_H_ #define _STC89C52RC_H_ sfr AUXR=0X8E; sfr AUXR1=0XA2; sfr IPH=0xb7; sfr XICON=0XC0; sfr P4=0xE8; sbit P44=P4^4; sbit P43=P4^3; sbit P42=P4^2; sbit P41=P4^1; sbit P40=P4^0; #endif
led.c void LedScan(unsigned char pos,unsigned char dispCode) { switch(pos) { case 0: LSA=1; LSB=0; LSC=0;break; case 1: LSA=0; LSB=1; LSC=0;break; } P0=dispCode; delay(1); P0=0xff; LSA=1; LSB=1; LSC=1; }
led.h #ifndef __LED_H_ #define __LED_H_ #include<reg52.h> sbit LSA=P1^5; sbit LSB=P1^6; sbit LSC=P1^7; void LedScan(unsigned char pos, unsigned char dispCode); void delay(unsigned int xms); #endif
-
51单片机学习 串行口通信实验
2021-01-19 19:27:20 -
如何设置51单片机的串行口来实现与PC机通信
2021-01-19 18:13:38能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们... -
单片机--串行口实验
2019-11-30 16:10:40使用AT89S52单片机的串行口通过RS232通信接口与PC机进行通信,让单片机把接收到的每一帧数据(即PC机发送给单片机的每一帧数据)直接再发送给PC机。(串行口波特率设定为9600Bit/s,使用方式1)注意:使用串口调试...目的:利用“模块化单片机教学实验平台”,加深对单片机的串行口的理解。
任务:利用单片机的串行口完成程序设计。
使用AT89S52单片机的串行口通过RS232通信接口与PC机进行通信,让单片机把接收到的每一帧数据(即PC机发送给单片机的每一帧数据)直接再发送给PC机。(串行口波特率设定为9600Bit/s,使用方式1)注意:使用串口调试助手(Baud 9600、数据位8、停止位1、效验位无)作为上位机来向单片机发送数据和接收单片机串口所发的数据,观察串口调试助手接收窗口。
实验过程和结果
电路图
硬件连线:
母版
CPU板
J57/J59:RXD
P2:P3.0
J57/J59:TXD
P2:P3.1
用232串口线连接计算机的USB口和MAIN_BOARD的RS2/RS1串口。
注意:实验箱的AT89S52单片机的晶振频率为11.0592MHz!
参考流程图:
实验结果图
实验过程让我熟悉了中断程序和串口的编写步骤和单片机执行串口传输的工作流程。实验中由于不熟悉中端口的相关寄存器分布和功能,导致错误设置了特殊功能寄存器,程序不能正常执行,后来在老师的指导下修改了程序和中断入口地址,程序能正常执行并返回输入内容。
(1)基本实验
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP U
MAIN:
MOV SCON,#01010000B
SETB ES
SETB EA
MOV TMOD,#00100000B
MOV TH1,#0FDH
SETB TR1
LJMP $
U:
CLR RI
MOV A,SBUF
MOV SBUF,A
JNB RI,$
CLR RI
RETI
END
(2)扩展实验
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP U
MAIN:
MOV SCON,#01010000B
SETB ES
SETB EA
MOV TMOD,#00100000B
MOV TH1,#0FDH
SETB TR1
SETB T1 ;手动执行中断
LJMP $
U:
CLR RI
MOV SBUF,#68H
MOV SBUF,#65H
MOV SBUF,#6CH
MOV SBUF,#6CH
MOV SBUF,#6FH
MOV SBUF,#26H
MOV SBUF,#20H
MOV SBUF,#77H
MOV SBUF,#6FH
MOV SBUF,#72H
MOV SBUF,#6CH
MOV SBUF,#64H
MOV SBUF,#0DH
MOV SBUF,#0AH
MOV SBUF,#0AH
JNB RI,$
CLR RI
LJMP U ;发送完毕后回到中断程序头部,循环发送hello world
RETI
END
-
两机多机通信仿真工程_单片机/串行口通信_双机通信实验_beltnck_
2021-09-29 14:22:17里面包含AT89C51的l7-6 双机串口双向通信和l7-6 多机串口双向通信 -
单片机串行口介绍-经典
2020-08-15 10:51:40绍:串行口是单片机与外界进行信息交换的工具。8051单片机的通信方式有两种:并行通信:数据的各位同时发送或接收。 串行通信:数据一位一位次序发送或接收。 -
单片机串行口通信程序汇编语言编写
2021-05-23 06:15:08http://www.51hei.com 出品汇编语言串口通信程序mov p1,#0ffhmov p3,#0ffh;mov p3,#00hmov p1,#00hMOV SCON,#50H;设置成串口1方式MOV TMOD,#20H;波特率发生器T1工作在模式2上MOV PCON,#80H;波特率翻倍为2400x2=4800... -
51单片机汇编语言实验(四)----串行通信实验(附参考代码及注释)
2020-07-12 10:40:59学习串行口的工作方式,掌握单片机通信程序编制方法。 二、实验设备: PC计算机一台,Dais-52PRO+实验系统一套。 三、实验内容: 与PC进行串行通信 四、与PC进行串行通信 1、实验原理: ... -
51单片机Proteus仿真+Keil工程-实验5-单片机串行口中断实验
2020-08-12 10:05:4751单片机Proteus仿真+Keil工程-实验5-单片机串行口中断实验:放置两个单片机,通过串行口线的互连,应用方式1和方式3,同时设计发送和接受程序,完成两个方式的应用,将发送和接收的内容在虚拟串口中显示。 -
单片机串行口通信程序设计
2020-12-15 12:33:41例:用8051单片机串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于... -
单片机C51 - 串行通信原理及串口编程实验
2016-09-07 10:42:00一、两种通信方式概念 1.并行通信 传输原理:并行通信时数据的各个位同时传送,以字节为单位并行传输优点:并行通信速度快,传输的数据宽度可以是1~128位...优点:串行通信传输线少,占用引脚资源少,成本低,适合远 -
单片机串行通信
2020-08-07 12:11:42文章目录串行通信串行口控制器内部结构串行口控制寄存器工作方式0工作方式 1工作方式2工作方式 3 串行通信 计算机与外部设备的通信方式有两种,一是并通信、二是串行通信。 串行通信有:单工、半双工(常用)、全... -
单片机(AT89C51)的串行通信实验
2020-04-28 13:31:20串口通信的重要性和基础就不用我多讲了吧?... 这一次的重点是讲解几个串口的实验来加深自己对串口...实验一(将一个简单的字符串输出到单片机中): 实验目的: 实现输出“nihao” 用VIRTUAL TERMINAL显示出来 ... -
单片机:双机之间的串行通信设计.doc
2019-10-09 20:05:43两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。串行口工作方式为方式1的全双工串行通信。 -
51单片机教程:单片机串行口通信程序设计
2020-12-05 17:33:1351单片机教程:单片机串行口通信程序设计1.串行口方式0应用编程8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能扩展一个并行口。单片机串行口通信程序设计硬件连接图例:用8051单片机... -
串行口通信实验
2012-01-31 22:14:22例:用8051单片机串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。 串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于... -
PC机与单片机AT89C51的串行通信
2020-08-19 02:07:55在Windows95下使用串口API函数实现PC机与单片机AT89C51的串口通信,重点介绍计算机采用事件驱动I/O方式的函数编程及单片机串口中断发送、接收程序的实现。 -
单片机 串口通信实验
2020-08-11 07:13:58设计两个单片机通过串口方式1进行全双工数据通信,要求将波特率设置为2400,晶振频率为11.0592MHz,请分别编写发送程序和接收程序,接收端需使用液晶屏幕显示接收内容,发送端可循环发送一个字符串(自己定义一个... -
掌握MCS-51单片机串行口的基本工作原理 掌握串行口初始化及工作方式的选择
2021-06-22 20:05:09实验内容:使用keill μVision4 开发环境创建工程,并将.HEX文件烧录到Proteus仿真软件中,从而实现两机串口通信,发送方通过串口使接收方产生流水灯的效果。 -
实验三_单片机串行口_molecularxnd_enemyox4_
2021-10-03 06:16:08单片机串行口通信实验,能够实现单片机通信 -
22课:单片机串行口通信程序设计
2021-05-23 10:16:121.串行口方式0应用编程 8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能扩展一个并行口。例:用8051单片机串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光... -
单片机与计算机串行通信实验心得
2011-12-10 11:26:42单片机与计算机串行通信实验心得,很好的资料。 -
51单片机串行通信原理
2020-11-24 20:40:3151单片机串行通信原理计算机通信串行通信异步通信同步通信数据传送速率传输方向单片机串行口串行口特殊功能寄存器串行口控制寄存器SCON电源控制寄存器PCON 计算机通信 计算机通信:计算机与外部设备或计算机之间的... -
《单片机》实验——实验6 MCS-51内部串行口实验
2021-03-15 20:04:36《单片机》实验——实验6 MCS-51内部串行口实验一、实验目的二、知识要点三、实验内容 一、实验目的 1.理解串行通信的特点及分类 2.掌握单片机内部串口的3种工作方式的特点及应用 3.掌握双机通信的编程以及单工传输... -
51单片机——串行通信
2021-08-28 23:03:37本文首先介绍了并行通信和串行通信的概念,然后对串行通信进行详细的介绍。然后介绍了51单片机的串行通信口的结构与原理,最后介绍了串行通信的四种方式,并介绍了如何计算波特率。 -
单片机-实验三-串行口通信实验
2020-12-05 17:33:10实验三串行口通信实验一、实验目的1、掌握单片机串行口的工作原理及工作方式;2、掌握单片机串行口波特率的设置方法;3、掌握单片机串行口查询方式程序的设计方法。二、实验内容及要求1、单片机的串行口经RS-232电平... -
单片机与计算机串行通信的心得体会
2021-07-16 03:09:06很多单片机教材里提到了单片机和计算机串口通信的硬件和软件设计,给出了如右图所示的最简单的三线连接电路和BIOSINT14H的应用。笔者按照教材所述的方法进行了实验,但未成功。通过实验,发现在简单的三线连接电路中... -
单片机与 PC 机串口通信实验
2019-01-22 17:57:2451 单片机的串行口是一个可编程的全双工的通信接口,具有 UART(通用异步收发器)的全部功能,能同时进行数据的发送和接收,也可以作为同步移位寄存器使用。51 单片机的串行口主要有两个独立的串行数据缓冲寄存器 ... -
51单片机之串口通信详解及代码示例
2022-04-20 09:34:53目录一、串口介绍二、硬件电路三、51单片机的UART四、相关寄存器4.1 SCON:串口控制寄存器(可位寻址)4.2 PCON:电源控制寄存器(不可位寻址)4.3 TMOD五、串口通信操作流程5.1 发送数据流程5.2 接收数据流程六、...