51单片机串口通讯c语言程序,如何使用51单片机实现串口通信
描述
STC51单片机一般带有1个串口,有的带有2个串口,串口一般用于下载程序和串口通信。串口通信特别适合控制设备,所以工控机的电脑上一般都带有串口。
51单片机的串口引脚为P3.0引脚与P3.1引脚,分别是RXD和TXD引脚。串口通信可以用于单片机和其它芯片通信或者单片机之间通信或者单片机与电脑通信。串口通信一般都是交叉连接。标准的串口有9个引脚,我们一般情况下,只用RXD TXD GND,剩下的引脚都是通信控制引脚,在以前用于控制电话机,现在已经基本上不用了。所以我们的51单片机上只保留了RXD和TXD。
串口通信的协议非常简单。如果单片机上的串口不够用,还可以用任意两个引脚模拟串口通信。
一般情况,我们用带有起始位的8位串口协议。波特率常用9600,此外还有1200 2400 4800 115200等。
打开串口的程序如下:
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
SCON=0X50;
TR1=1;
程序涉及到5个寄存器的配置。
TMOD是定时器控制寄存器
TH1和TL1是定时器1的初值寄存器
SCON是串行口控制寄存器
TR1是TCON寄存器中的bit4,因为该寄存器可以位操作
串口发送数据的程序如下所示:
SBUF=55; // 发送数据55
while(!TI);
TI=0;
程序涉及到2个寄存器
SBUF是串口数据寄存器
TI是SCON寄存器中的bit1,位操作
串口接收数据的程序如下所示:
if(RI)
{
recebuf=SBUF;
RI=0;
}
程序涉及到2个寄存器
SBUF是串口数据寄存器
RI是SCON寄存器中的bit0,位操作
SBUF既是发送数据寄存器,又是接收数据寄存器。
可以把上面的功能模块封装成函数,在使用的时候,直接调用。
打开APP精彩内容
点击阅读全文
51单片机串口通讯c语言程序,如何使用51单片机实现串口通信相关推荐
- 单片机定时报警C语言程序,求一个51单片机定时闹钟程序。要C语言。能够调时间...
我来发一个C语言211351单片机时钟程序,希望5261能帮到你/* 程序功能:4102带定时闹铃时钟 *//*------- ...
- 简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序
<(最新整理)基于51单片机的电子钟C语言程序>由会员分享,可在线阅读,更多相关<(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)>请在人人文库网上搜索. 1.完整) ...
- 单片机c 语言0-99,单片机“0~99”加法计数器程序的设计51单片机原理及应用.doc...
单片机"0~99"加法计数器程序的设计51单片机原理及应用 课 程 设 计 课程名称51单片机原理及应用题目名称单片机"0~99"加法计数器程序设计专业班级学生 ...
- 51单片机的电子钟c语言程序,基于51单片机的电子钟C语言程序
基于单片机C语言的电子钟程序代码与仿真 基于51单片机的电子钟C语言程序: 程序代码 #include #include #define uchar unsigned char #define uin ...
- AT89C51单片机流水灯c语言程序及详解(扫盲教程)
AT89C51单片机是我们学习单片机必学的一个单片机,也是单片机入门的教材,下面给大家展示一下流水灯的编写方法适合初学者 首先先在proteus画出仿真图,方便仿真程序 下面来编写程序,先来写入头函数 ...
- 单片机 中断秒表 c语言程序,51单片机c语言的秒表设计.doc
51单片机c语言的秒表设计.doc 课程设计报告 基于AT89C51单片机的秒表设计 院 系 电子信息工程学院 专 业 电子信息工程 1 姓 名 摘 要 本设计是设计一个单片机控制的多功能秒表系统. ...
- 51单片机c语言程序执行顺序,51单片机程序执行流程详细分析
这里是一个循环,根据DJNZ指令的功能:每执行一次DJNZ RO, IDATALOOP就将R0的值减1,若R0的值不为0则就跳到IDATALOOP地址去.很显然这是一个循环,那么RO的值是多少呢,在以 ...
- 电子时钟单片机c语言程序,51单片机电子时钟C语言程序
本程序基于ATM89系列单片机的电子时钟C语言程序,能显示月日时分秒,同时还能调节其值!显示方式用六个8段数码管! #include//头文件 #define uchar unsigned char/ ...
- c51语言主函数,51单片机的基本c51语言程序介绍
描述 c51语言程序是 一个由主函数和若干个函数构成.其中主函数就是程序的起点,单片机运行程序,首先会执行主函数里面的第一条语句,直到执行完成主函数的所有语句,单片机的程序一般都是来完成某项具体功能的 ...
最新文章
- mysql命令行执行复杂sql_mysql命令行中执行sql的几种方式总结
- np.c_和np.r_的用法解析
- Codility:Titanium 2016 challenge:BracketsRotation
- 程序员的进阶课-架构师之路(3)-线性表
- UVA10018 Reverse and Add【回文数+水题】
- css布局:多列等高布局
- 解决排列组合问题的通用算法(转)
- 企业项目开发--cookie(3)
- html字体播放,Html 字体
- 三种 绘制奈奎斯特曲线 的方法
- python图片加透明通道并将背景设为透明
- Linux系统日志分析与管理
- 手机就能申请摇号 杭州市小客车摇号功能全新上线
- uboot引导kernel - 4 -gd bd详解
- 论文笔记SAR-U-Net: Squeeze-and-excitation block and atrous spatial pyramid pooling based residual U-Net
- 拯救期末!大四留学生发“论文机器人”,替你读文献给方向调格式,已被ACL2019收录
- day21-学习总结
- 亚马逊html邮件,创建电子邮件模板 - Amazon Pinpoint
- R语言之LDA算法应用
- java用mysql方便吗_面试题总结:可能是全网最好的MySQL重要知识点
热门文章
- 区块链软件开发公司谈区块链为什么被大众所接受
- Echarts实现中国地图完整示例
- gradle mapstruct 提升警告: Unmapped target property: “
- 关于EZDML的数据类型
- 美工效果图大小 html,六、DIV CSS实战之布局美工图分析与切图
- Chinese Text Detection and Recognition
- 解决component ‘*.OCX’控件出错
- 程序员必备的600个英语词汇(4)
- 在win7旗舰版卸载ie11,win7安装ie8的问题
- 利用Python产生加密表和解密表