`
hzy3774
  • 浏览: 992134 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

51单片机串口通信

 
阅读更多

使用串口可以方便的让单片机与高速设备之间通信,虽然速度比不上USB,但简单容易实现,而且.Net提供了串口通信接口,编写上机位十分方便:

单片机与电脑通信接收数据实例



 单片机串口收发是采用中断机制,单片机中有一个寄存器可以接收串口上发来的一个字节数据,位数用户可以设置,接收完成后单片机触发中断。

   所以在中断函数中处理接收的那个字节就可以了,一般将其缓存入数组或者变量,以免接收下一个字节时被覆盖。

   而主函数中,只需要从缓存中读取已接受的数据就可以了:

如下示例:

serial.h

#ifndef SERIAL_H
#define SERIAL_H

#define uchar unsigned char

//#define FOSC 11059200L //晶振频率
#define FOSC 22118400L //晶振频率
#define BAUD 9600L		//波特率

extern uchar recData;//接受到的数据
extern uchar flag;//标志位,标志是否收到数据

extern void uartInit();
extern void sendByte(uchar dat);

#endif

 

 

serial.c

#include <reg51.h>
#include "serial.h"

uchar recData;
uchar flag;

void uartInit() {
    TMOD = 0x20;//定时器一方式二
    TH1 = TL1 = -(FOSC/12/32/BAUD);//设置装入初值
    TR1 = 1;//启动定时器1
    SM0 = 0;
    SM1 = 1;//设置串口为方式一
    REN = 1;//接收使能
    EA = 1;
    ES = 1;//打开中断
    flag = 0;
}

static void serial() interrupt 4 {
    recData = SBUF;
    RI = 0;//清除中断
    flag = 1;
}

void sendByte(uchar dat) {
    ES = 0;//关闭中断
    SBUF = dat;//写入数据
    while(!TI);//等待数据发送结束
    TI = 0;//手动置0
    ES = 1;//打开中断
}
/*
void sendString(uchar *str) {
    while(*str) {
        sendByte(*str++);
    }
}*/

 main.c

#include "serial.h"

void main(){
	uartInit();
    while(1) {
        if(flag) {
            sendByte(recData);//如果收到数据,将数据原样返回
			flag = 0;
        }
    }
}

 

 如果所需的晶振和波特率不相同,在头文件中直接修改就行了

  • 大小: 52.1 KB
  • 大小: 40.2 KB
分享到:
评论

相关推荐

    51单片机串口通信C++源程序

    在“keil C下51单片机串口通信源程序”中,我们可以期待找到实现51单片机串口通信的C++代码示例。Keil μVision是一款常用的51单片机开发工具,集成了编译器、调试器和IDE。在Keil环境下编写C++程序,可以方便地进行...

    51单片机串口通信计算器

    总之,51单片机串口通信计算器结合了嵌入式系统的基本原理和串行通信技术,提供了在51单片机平台上实现数据交换和计算的解决方案。了解和掌握这些知识对于进行51单片机相关的开发工作至关重要。

    51单片机串口通信实例

    在“普通51串口通信(1)”这个文件中,很可能是包含了51单片机串口通信的示例代码或教程,涵盖了上述部分或全部知识点。通过学习和理解这些内容,开发者能够熟练地在51单片机上实现与PC机的双向串口通信,从而构建...

    两个51单片机串口通信

    本文将深入探讨“两个51单片机串口通信”的主题,包括其基本原理、实现方法和Proteus仿真的过程。 51单片机,即Intel 8051系列,以其强大的功能和相对较低的成本,成为了许多初学者和工程师的首选。该系列单片机...

    51单片机串口通信中字符发送的总结

    ### 51单片机串口通信中字符发送方法总结 #### 一、引言 在嵌入式系统开发中,51单片机作为一款经典的微控制器,因其成本低廉、易于开发等特点,在教学和实际应用中仍占有重要的地位。其中,串口通信作为一种常用...

    51单片机串口通信点亮led灯程序

    首先,了解51单片机串口通信的四种通信模式是非常重要的,这包括一种同步通信模式和三种异步通信模式。在异步通信模式中,通过串口控制寄存器SCON设置不同的通信模式。SCON寄存器中包含了多个位用于控制和监视串行...

    51单片机 串口通信—数码管实验

    在本实验中,我们将探讨如何使用51单片机实现串口通信,并通过数码管显示接收到的数据,同时将数据反馈回电脑。串口通信是计算机与外部设备间常用的一种数据传输方式,它简单高效,常用于调试和数据交换。 首先,...

    51单片机串口通信程序

    51单片机串口通信程序, 确认调式通过。

    C51单片机串口通信C程序

    C51单片机串口通信C程序,实现PC与单片机的通信,本例主要实现将PC机发给单片机的数据再发回给PC机,可以借助串口调试工具进行调试

    51单片机串口通信讲解

    详细介绍了51单片机串口通信原理以及程序流程图,对于初学者有很大帮助

    51单片机串口通讯中断应用

    通过理解以上知识点,你可以设计出可靠的51单片机串口通讯中断应用。在实际项目中,结合具体的硬件平台和软件开发环境,如Keil μVision,编写相应的C语言或汇编程序,实现高效的数据交换和实时响应。记住,实践是...

    51单片机串口通信模块C语言程序

    在"第7章"的文件中,可能包含的是关于51单片机串口通信的详细教程或示例代码,涵盖了上述知识点的具体实现。通过学习这些内容,开发者可以深入了解51单片机的串口通信,并应用于实际项目中。对于初学者来说,理解和...

    51单片机串口通讯设计

    在本文中,我们将深入探讨51单片机串口通信协议、中断接收与查询发送机制以及串行通信与并行通信的优缺点。 首先,51单片机的串口通信协议通常基于UART(通用异步收发传输器)模式,如文中所提及的SCON寄存器配置为...

    基于51单片机串口通讯方式1的双机通信实验的protues+代码

    总的来说,这个实验涵盖了51单片机串口通信的基础知识,包括方式1的配置、数据传输过程、中断处理以及Protues仿真的应用。对于学习51单片机和嵌入式系统开发的初学者而言,这是一个非常有价值的实践项目。

    51单片机串口通讯C语言源码.rar

    51单片机串口通讯C语言源码,其中串口测试程序完成串口发送任意字符到单片机,单片机通过P0口LED灯显示。比如 发送16进制的 00 单片机的LED灯全亮 发送FF灯全灭 首先 烧写程序到单片机 晶振 11.0592MHZ 连接好串口...

    51单片机串口通信(上位机接收单片机数据)

    总结一下,51单片机串口通信涉及以下关键步骤: 1. 配置单片机的串口参数。 2. 初始化UART,设置定时器以产生合适的波特率。 3. 在单片机端编写发送数据的代码。 4. 在上位机端创建应用程序,打开串口连接,设置相同...

    51单片机串口通信界面程序

    这是我自己写的51单片机串口通信的c#界面代码,供学习使用,有兴趣的可以下下研究研究!

    51单片机串口通信简单测试程序

    本文将深入探讨“51单片机串口通信简单测试程序”的相关知识,帮助读者理解和掌握51单片机如何通过串行接口进行数据交换。 串口通信,或称为UART(通用异步收发传输器),是一种广泛采用的通信协议,它允许设备以...

Global site tag (gtag.js) - Google Analytics