c语言实现串口通信_51单片机学习笔记——串口通信实验

40dbac5083cdb56d68132687b8c5f08c.gif

点击箭头处

“蓝色字”

,关注我们哦!!

问:怎么每天看到这种文章?

答:只需搜索公众号"51单片机学习网"免费关注

smiley_8437e205.pngsmiley_8437e205.pngsmiley_8437e205.png电子资料全集(免费给你确定不要?)

↓↓↓

文章底部更精彩

一.串口通信基础

1.串行通信

  • 串行通信将数据字节分成一位一位的形式在一条传输线上逐个传送。单片机采用串行通信。特点是:传输线少,长距离传送成本低,但数据传送控制复杂。

  • 串行通信的传输的传输方向:单工(数据传输只能沿一个方向),半双工(传输数据和接受数据分布进行),全双工(传输和接受同步进行)。

  • 单片机采用异步通信,发送和接受设备使用各自的时钟频率,容易实现,但传输效率不高,数据格式 42b8afe3d745007ee87ab649f9dbb4c8.png

2.MAX232

  • 实验通过MAX232电平转换芯片,可把计算机串口电平(-12V~+12V)转换为单片及TTL电平。电路原理图如下 058a7bab5f18f2057c86d97f5572c104.png

3.80C51串行口

1fb0028b7299974f62a80d21af48c8b6.png向发送缓冲器SBUF写入数据,两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H ;接收器是双缓冲结构 ;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。

4.工作方式寄存器SCON

D7D6D5D4D3D2D1D0
功能SM0SM1SM2RENTB8RB8T1R1
  • 介绍

  • RI:接收中断标志位 
    接收结束时,会由硬件置1,向CPU发出中断请求。(要由软件复位)

  • TI:发送中断标志位 
    发送结束时,会由硬件置1,向CPU发出中断请求。要由软件复位)

  • TB8:用来存放发送的第9位。

  • RB8:用来存放接收的第9位。

  • REN:是串行接收允许位 
    0时:禁止串行接收 
    1时:允许串行接收

5.工作方式寄存器PCON

  • PCON是没有位寻址的,也就是说不能直接操作SMOD要直接操作PCON寄存器。

  • SMOD:是波特率是否加倍的选择位。 
    0时:波特率不加倍。 
    1时:波特率加倍。

6.串口的操作步骤:

第一步:设置波特率,设置定时器T1为工作方式2(设置TMOD寄存器),给计数器赋初值(工作方式2会自动重装)

第二步:设置串口工作方式,设置SCON(如果允许)。

第三步:如果使用中断方式,那么打开相应的中断和总中断。

第四步:打开定时器T1,开始产生波特率。TCON设置TRx。


二.实验例程

1.说明:本实验通过使用串口调试助手向计算机发送数据,并返回,实验不需要接线。

2.程序源代码如下:

C

#include#define uchar unsigned char#define uint unsigned intuchar flag,i;/*串口初始化函数*/void init_uart(){
    SCON=0x50;  //设置为工作方式1 0101 0000
    TMOD=0x20;  //设置计数器工作方式2
    PCON=0x80;  //波特率加倍
    TH1=0xF3;   //计数器初始值,波特率为4800
    TL1=0xF3;
    EA=1;       //打开总中断
    ES=1;       //打开接受中断
    TR1=1;      //打开计数器}void main(){
    init_uart();    while(1)
    {        if(flag==1)
        {
            ES=0;      //关闭串口中断
            flag=0;
            SBUF=i;    //接受到的数据写入SBUF
            while(!TI);//判断是否发送完
            TI=0;
            ES=1;      //打开串口中断
         }
     }}   void serial() interrupt 4{
    RI=0;              //接受标志位清零
    i=SBUF;            //从SBUF读数据
    flag=1;            //说明接受到数据}

de3f1790994aa0eb54e164604c359636.png

原文地址: http://www.mcuc.com.cn/post/19.html版权属于:智凡单片机c语言入门     本文作者:智凡单片机

本文转自网络,版权归原作者,如果您觉得不好,请联系我们删除!

↙↙↙点这里

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值