51单片机的串口通信

来源:互联网 发布:地产网络推广 编辑:程序博客网 时间:2024/04/27 13:46
一、程序下载的不同方式
1、程序传送和电平接口:

由于两个电平无法通信,所以需要转换电平
1、转换电平可以装驱动(CH340)

2、可以使用转电平芯片

一般采用第一种方式

二、通信方式
(一)、并行通信

(二)、串行通信

三、串行通信传输方向

四、串行通信的分类
(一)、异步通信

异步通信的数据格式

(二)、同步通信
同步通信要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步(时钟线)

80C51为串行异步通信
C51的传输格式可概括为:“8N1”:8个数据位,N:NO没有校验位,1个停止位

三、80C52串行口结构:

四、80C52寄存器

SCON各位释义:

五、波特率设置

其中X为初值,fosc为晶振频率

六、常用波特率
以下晶振频率均为1.0592M
1、X = 253(0xfd),波特率= 9600
2、X = 250(0xfa),波特率= 4800
3、X = 0xf4,波特率= 2400

#include <reg52.h>

unsigned char ch;

void uart_init()
{
    SCON = 0x50; //设置串口工作方式
      TMOD |= 0x20;//设定定时器工作方式
      TH1 = 0xFD;//设置波特率为9600
      TR1 = 1;//打开定时器1
      //中断服务法
      ES = 1;//打开串口服务中断
      EA = 1;
}

void uart_send_char(unsigned char ch)
{
      SBUF = ch;
      while(!TI);//等待TI为1
      TI = 0;//TI置0
}

void uart_send_str(unsigned char *str)
{
    while(*str != '\0')
        {
              uart_send_char(*str++);
        }
}

void uart_isr() interrupt 4
{
      ES = 0;

      if(RI)
        {
              uart_send_str("I receieve is:");
              uart_send_char(SBUF);
              uart_send_char('\n');
              RI = 0;
        }
}

void main()
{
      uart_init();
}












0 0