精华内容
下载资源
问答
  • 单片机实验汇编案例---单片机串行口与PC机通讯实验
    千次阅读
    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
    

    本素材来自网路,如有侵权,请联系删除。
    获取更多资源,请关注公众号“伊斯电子编程”

    更多相关内容
  • 实验要求: 实现以下功能:串口调试助手向单片机发送控制码,单片机向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单片机学习 串行口通信实验

    一、实验目的

    掌握串行口工作方式的程序设计,掌握单片机通信程序设计方法。

    二、原理

    发送指令:MOV SBUF,A
    接收指令:MOV A,SBUF

    1、串行口控制寄存器 SCON (地址:98H)

    • TI:发送中断标志位。发送前必须要用软件清零。
    • RI:接收中断标志位。接收前必须要用软件清零。
    • SM2:多机通信控制位。

    2、电源控制

    展开全文
  • 能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。  与之前一样,首先我们...
  • 单片机--串行口实验

    千次阅读 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/J59RXD

    P2P3.0

    J57/J59TXD

    P2P3.1

    用232串口线连接计算机的USB口和MAIN_BOARD的RS2/RS1串口。

    注意:实验箱的AT89S52单片机的晶振频率为11.0592MHz!

    参考流程图:

     

    实验结果图

    1. 实验心得

    实验过程让我熟悉了中断程序和串口的编写步骤和单片机执行串口传输的工作流程。实验中由于不熟悉中端口的相关寄存器分布和功能,导致错误设置了特殊功能寄存器,程序不能正常执行,后来在老师的指导下修改了程序和中断入口地址,程序能正常执行并返回输入内容。

    1. 附录(代码)

    (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

    展开全文
  • 里面包含AT89C51的l7-6 双机串口双向通信和l7-6 多机串口双向通信
  • 绍:串行口单片机与外界进行信息交换的工具。8051单片机通信方式有两种:并行通信:数据的各位同时发送或接收。 串行通信:数据一位一位次序发送或接收。
  • http://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...
  •    学习串行口的工作方式,掌握单片机通信程序编制方法。 二、实验设备:    PC计算机一台,Dais-52PRO+实验系统一套。 三、实验内容:    与PC进行串行通信 四、与PC进行串行通信    1、实验原理:    ...
  • 51单片机Proteus仿真+Keil工程-实验5-单片机串行口中断实验:放置两个单片机,通过串行口线的互连,应用方式1和方式3,同时设计发送和接受程序,完成两个方式的应用,将发送和接收的内容在虚拟串口中显示。
  • 例:用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显示出来 ...
  • 两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。串行口工作方式为方式1的全双工串行通信
  • 51单片机教程:单片机串行口通信程序设计1.串行口方式0应用编程8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能扩展一个并行口。单片机串行口通信程序设计硬件连接图例:用8051单片机...
  • 串行口通信实验

    2012-01-31 22:14:22
    例:用8051单片机串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。 串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于...
  • 在Windows95下使用串口API函数实现PC机与单片机AT89C51的串口通信,重点介绍计算机采用事件驱动I/O方式的函数编程及单片机串口中断发送、接收程序的实现。
  • 单片机 串口通信实验

    千次阅读 2020-08-11 07:13:58
    设计两个单片机通过串口方式1进行全双工数据通信,要求将波特率设置为2400,晶振频率为11.0592MHz,请分别编写发送程序和接收程序,接收端需使用液晶屏幕显示接收内容,发送端可循环发送一个字符串(自己定义一个...
  • 实验内容:使用keill μVision4 开发环境创建工程,并将.HEX文件烧录到Proteus仿真软件中,从而实现两机串口通信,发送方通过串口使接收方产生流水灯的效果。
  • 单片机串行口通信实验,能够实现单片机通信
  • 1.串行口方式0应用编程 8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能扩展一个并行口。例:用8051单片机串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光...
  • 单片机与计算机串行通信实验心得,很好的资料。
  • 51单片机串行通信原理

    千次阅读 2020-11-24 20:40:31
    51单片机串行通信原理计算机通信串行通信异步通信同步通信数据传送速率传输方向单片机串行口串行口特殊功能寄存器串行口控制寄存器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单片机串行通信口的结构与原理,最后介绍了串行通信的四种方式,并介绍了如何计算波特率。
  • 实验三串行口通信实验一、实验目的1、掌握单片机串行口的工作原理及工作方式;2、掌握单片机串行口波特率的设置方法;3、掌握单片机串行口查询方式程序的设计方法。二、实验内容及要求1、单片机的串行口经RS-232电平...
  • 很多单片机教材里提到了单片机和计算机串口通信的硬件和软件设计,给出了如右图所示的最简单的三线连接电路和BIOSINT14H的应用。笔者按照教材所述的方法进行了实验,但未成功。通过实验,发现在简单的三线连接电路中...
  • 单片机与 PC 机串口通信实验

    万次阅读 多人点赞 2019-01-22 17:57:24
    51 单片机串行口是一个可编程的全双工的通信接口,具有 UART(通用异步收发器)的全部功能,能同时进行数据的发送和接收,也可以作为同步移位寄存器使用。51 单片机串行口主要有两个独立的串行数据缓冲寄存器 ...
  • 51单片机之串口通信详解及代码示例

    千次阅读 2022-04-20 09:34:53
    目录一、串口介绍二、硬件电路三、51单片机的UART四、相关寄存器4.1 SCON:串口控制寄存器(可位寻址)4.2 PCON:电源控制寄存器(不可位寻址)4.3 TMOD五、串口通信操作流程5.1 发送数据流程5.2 接收数据流程六、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,354
精华内容 941
关键字:

单片机串行口通信实验

友情链接: 20120519PowerBuilder.rar