单片机通过串口向电脑端发送数据&&电脑端发送数据控制led

这篇具有很好参考价值的文章主要介绍了单片机通过串口向电脑端发送数据&&电脑端发送数据控制led。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上节课我们学习了串口的理论部分,这节课我们要来学习实操部分。

要想实现单片机通过串口向电脑端发送数据,我们首先要来配置寄存器。

1.配置SCON

SCON寄存器中的SM0配置为0,SM1配置为1决定了串口工作在模式一,也就是8位UART, 波特率可变的工作模式。REN置1表示能接收到电脑端的数据(本节实验可置1也可以置0,因为暂时不用接收电脑端发送过来的数据),所以SCON=0x50或者0x40。这样SCON寄存器就配置完成了。

2.配置PCON

PCON中只需要把最高位SMOD0配置为1,使波特率加倍即可。所以PCON=0x80;。这样PCON就配置好了。

SBUF不需要配置,只需要赋值或者被赋值即可。

本实验串口需要配置的内容就这么多。

3.配置TH1定时器

本实验需要用到定时器1,通过定时器1的溢出来约定波特率,通过分频来控制收发器的采样时间,由于本实验不需要中断,所以定时器1中断无需打开单片机通过串口向电脑端发送数据&&电脑端发送数据控制led

TMOD &= 0x0F;        //设置定时器模式,定时器1
    TMOD |= 0x20;        //设置定时器模式,定时器1
    TL1 = 0xF3;            //设置定时初始值,系统生成
    TH1 = 0xF3;            //设置定时重载值,系统生成
    ET1 = 0;            //禁止定时器中断,本程序只需要定时器溢出即可,不需要产生中断
    TR1 = 1;            //定时器1开始计时 

本实验的定时器采用8为重装,不需要在中断内部重新赋初值。

目前为止,本节课所需配置的所有东西都已配置完成。

接下来我们看原理图:

单片机通过串口向电脑端发送数据&&电脑端发送数据控制led

 第一个SBUF是写入数据,当8位数据全部写好后,通过TI发送出去,发送完成后TI置1,需要软件复位。

第二个SBUF是接收数据,当接受控制器接收好数据后,移入SBUF,接收完成后RI置1,需要软件复位。

定时器T1通过溢出率来约定波特率,控制收发器采样时间。

接下来我们看写完的代码:

单片机通过串口向电脑端发送数据&&电脑端发送数据控制led

单片机通过串口向电脑端发送数据&&电脑端发送数据控制led 

首先,我们要写一个UART_SendByte(unsigned char Byte)函数来发送SBUF里面的数据,这时SBUF在左边,是被赋值的对象,当主函数调用这个函数时,参数为sec,每次调用后sec++,在函数内部,通过while循环判断TI是否为1,如果不为1则死循环,直到TI为1为止,数据才算发出去。数据发送完成后,软件复位TI=0;通过单片机的快速扫描,这个函数就实现了每隔一段时间,单片机串口向电脑端发送递增的数据。 主函数内部的 Delay(1)是为了消除晶振带来的误差。

所以本实验的第一个代码就完成了。

接下来我们看本实验的第二个代码:电脑端发送数据控制led

这个代码相比于上一个代码,我们需要用到UART的中断,所以我们在配置寄存器的时候,还需要将UART的中断打开,即ES=1,EA=1,当TI和RI其中一个中断信号经过时,都会产生中断。

我们来看代码实现:

单片机通过串口向电脑端发送数据&&电脑端发送数据控制led

 在中断内部,我们首先要判断产生的中断信号是TI还是RI,只有RI中断信号可进入中断要操作的程序,此时的SBUF在等号右边,是赋值给P2口,由电脑端直接写入,此时电脑就可以直接通过写入的数据控制led亮灭,写入成功后,在利用上个代码中的发送SBUF,将数据原封不动的返回电脑,最后再将RI置0,为下一次带电脑控制led做准备。

QS:为什么SBUF作为发送数据的时候,不需要用到中断,而作为接收端的时候则需要呢?

答:当SBUF作为发送端时,只需要发送数据到电脑端上,并不需要单片机产生任何操作,所以不需要打断单片机的主程序,进入中断执行另一个程序。

当SBUF作为接收端时,电脑通过发送数据控制led,单片机需要做出相应操作,所以需要中断。文章来源地址https://www.toymoban.com/news/detail-419872.html

到了这里,关于单片机通过串口向电脑端发送数据&&电脑端发送数据控制led的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C51单片机串口发送数据的使用

             假如说电路板上没有CH340芯片,我们就要使用TTL转USB模块来进行电平的转换,然后将模块的RX接单片机的TX,模块的TX接单片机的RX,来进行接线连接。          在连接好连线后,我们打开计算机管理,来查看端口是否存在,如果没有,我们需要下载CH340驱动,

    2024年02月03日
    浏览(77)
  • 51单片机串口的应用(单片机和电脑互发数据)

    现在来详细看一下寄存器,我们直接查看单片机手册。 SCON寄存器 先来说说SCON寄存器。 前一节我们提过,我们一般使用串口用的是模式1,即8位UART,这样我们就用不到校验位。从手册中可以看到,寄存器SCON中的SM0和SM1配置成01即可。 SM2寄存器明显用不到,因为我们没有用模

    2024年02月07日
    浏览(59)
  • Proteus基于51单片机通过PWM脉冲调制控制电机转速_按键与串口控制转速_电机转速可测

    临近期末,学校的单片机课程需要做课程设计,主要内容是基于51单片机的可调速电机,具体要求如下,在此记录一下具体的一个解题方案。 要求利用单片机输出PWM波形,通过改变占空比,改变电枢两端电压的平均值,从而改变电动机的转速 通过按键进行手动速度调整(速度

    2023年04月14日
    浏览(67)
  • 蓝牙模块(HC-05)与手机连接,蓝牙与蓝牙互联,电脑通过蓝牙控制单片机

    HC-05蓝牙模块,USB TO TTL手机APP为SPP蓝牙串口 第一章:蓝牙模块配置 一:HC-05与USB TO TTL连接 EN:为使能引脚,一般不接 VCC:接USB TO TTL模块的5v脚(3.3v不亮) GND:接USB TO TTL模块的GND脚 TXD:接USB TO TTL模块的RXD脚 RXD:接USB TO TTL模块的TXD脚 STATE:状态引脚,一般不接 二:进入

    2024年02月12日
    浏览(71)
  • GD32单片机串口DMA发送

    一:在使用GD32单片机进行串口DMA发送时,需要进行以下配置: 使能 DMA 时钟和 串口时钟 。 配置 DMA通道 ,包括数据 方向 、数据 宽度 、传输 模式 等参数。 配置串口发送端口 GPIO 的模式和引脚。 配置串口的 基本参数 ,如波特率、数据位、停止位、校验位等。 配置串口D

    2024年02月12日
    浏览(44)
  • 【笔记】6位数码管显示定时器定时的时分秒,通过按键控制时间,自定义串口通信协议,根据单片机接收到的指令控制数码管显示

              目的:利用PROTUES仿真软件、串口调试助手、虚拟串口,搭建单片机与PC通信仿真平台,熟悉单片机串口的配置及与PC机的通信方法;尝试制定通信协议(含开始码、指令、数据、停止码),单片机根据通信协议解析接收到的内容,并根据接收的指令执行相应的操

    2024年02月05日
    浏览(57)
  • SU-03T,通过串口输入播放数字,可以使用单片机读取传感器数据并播报

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 使用SU-03T,通过串口输入播放数字。 提示:以下是本篇文章正文内容,下面案例可供参考 第一步:先配置串口IO 第二步:配置触发方式串口输入 第三步:配置串口输入的参数,第一个参数选择int,可以

    2024年02月01日
    浏览(50)
  • 单片机开发教程3——串口发送MPU6050姿态角

    MPU6050 是 InvenSense 公司推出的整合性 6 轴运动处理组件,其内部整合了 3 轴陀螺仪和 3 轴加速度传感器,并且含有一个IIC 接口, 可用于连接外部磁力传感器,并利用自带的数字运动处理器(DMP: Digital Motion Processor) 硬件加速引擎,通过主 IIC 接口,向应用端输出完整的 9 轴融

    2024年02月14日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包