51单片机学习:串口通信实验

发布者:DazzlingSpirit最新更新时间:2023-07-19 来源: zhihu关键字:51单片机  串口通信  1602显示 手机看文章 扫描二维码
随时随地手机看文章

实验名称:串口通信实验
接线说明:
实验现象:下载程序后,当串口助手发送数据给单片机,单片机原封不动转发给串口助手显示
注意事项:使用黄色跳线帽将CH340旁的P5端子的UTX和P30短接,URX和P31短接,出厂默认已短接好
***************************************************************************************/
#include "reg52.h"

typedef unsigned int u16; //对系统默认数据类型进行重定义
typedef unsigned char u8;


/*******************************************************************************
* 函 数 名 : uart_init
* 函数功能 : 串口通信中断配置函数,通过设置TH和TL即可确定定时时间
* 输 入 : baud:波特率对应的TH、TL装载值
* 输 出 : 无
*******************************************************************************/
void uart_init(u8 baud)
{
TMOD|=0X20; //设置计数器工作方式2
SCON=0X50; //设置为工作方式1
PCON=0X80; //波特率加倍
TH1=baud; //计数器初始值设置
TL1=baud;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}

/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
uart_init(0XFA);//波特率为9600

while(1)
{

}
}

void uart() interrupt 4 //串口通信中断函数
{
u8 rec_data;

RI = 0; //清除接收中断标志位
rec_data=SBUF; //存储接收到的数据
SBUF=rec_data; //将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}



关键字:51单片机  串口通信  1602显示 引用地址:51单片机学习:串口通信实验

上一篇:51单片机学习:I2C-EEPROM实验
下一篇:51单片机学习:定时器1实验

推荐阅读最新更新时间:2024-11-08 12:42

初步认识51单片机-2.3单片机控制DS18B20温度传感器模块
通过前面LCD1602的例子我相信对IO口的控制和延时基本有所了解,下面再来一个例子温度传感器,同样只需要IO口操作和延时。先来个DS18B20温度传感器的简介。既然是温度传感器,那么一定有个感知温度的感应器。这个感应器能把它周围的温度直接转成数字并存储在scratchpad存储器中。这个感知温度和转换成数字信号的过程我们可以不用理解。我们要做的事情就是读存储器的内容及其他一些配置。其原理图如下: 图1 DS18B20温度传感器概述 在DS18B20中有一个温度传感器(如上图所示),它能感知周围环境温度,并能将温度的结果直接转成数字信号存储起来。温度信号转成数字信号的过程我们可以不用关心。那么数字信号存在哪里了?DS18B
[单片机]
初步认识<font color='red'>51单片机</font>-2.3单片机控制DS18B20温度传感器模块
MCS-51单片机的定时器/计数器概念
一、MCS-51单片机的定时器/计数器概念 单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,而花费的时间恰好是1微秒;只要相邻两个计数脉冲之间的时间间隔相等,则计数值就代表了时间的流逝; 因此,单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振部件;MCS-51单片机的晶振经过12分频之后提供给单片机的只有1MHZ的稳定脉冲;晶振的频率是非常准确的,所以单片机的计数脉冲之间的时间间隔也是非常准确的,这个准确的时间间隔是1微秒; MCS-51
[单片机]
MCS-<font color='red'>51单片机</font>的定时器/计数器概念
51单片机的串口收发通信C语言程序
#include REG52.h #include string.h #include stdio.h #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define ushort unsigned short #define MAX_DATA_LENGTH 32 typedef struct//定义数据发送包 { uchar head;//包头 uchar length;//数据长度 uchar cmd;/
[单片机]
51单片机模拟串口的三种方法解析
随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置机采集各种终端数据后进行处理、存储,再主动或被动上报给管理站。这种情况下下,采**需要一个串口,上报又需要另一个串口,这就要求单片机具有双串口的功能,或者做点阵驱动时,又需上机位串口。但我们知道一般的51系列只提供一个串口,那么另一个串口只能靠程序模拟。 本文所说的模拟串口, 就是利用51的两个输入输出引脚如P1.0和P1.1,置1或0分别代表高低电平,也就是串口通信中所说的位,如起始位用低电平,则将其置0,停止位为高电平,则将其置1,各种数据位和校验位则根据情况置1或置0。至于串口通信的波特率,说到底只是每位电平持续的时间,波特率越高,持续的
[单片机]
<font color='red'>51单片机</font>模拟串口的三种方法解析
单片机串口通信(串口发送3汇编)
;此程序是用串口模式3,只进行单片机给电脑送数据(此时,基本上和方式1一样,因为波特率可以) ORG 0000H RESET: MOV R0,#00H L0: DJNZ R0,L0 MOV TMOD,#00100000B MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 SETB SM0 ;模式3的9位传输格式 SETB SM1 MOV SP,#60H START: CLR TI MOV A,#30H MOV C,P ;C为PSW的第7位(cy位):进位标志位,P为PSW中的第0位,奇偶效验位(看累加器中 1 的个数) MOV TB8,C ;TB8为为方式2或3时,欲加入
[单片机]
51单片机矩阵键盘扫描和显示
KEYCARD BIT 00H ;用于标志是否有键按下 KEYS EQU 5AH ;记录键值 KEY1 EQU 5BH ;记录行扫描时的值 KEY2 EQU 5CH ;记录列扫描时的值 ORG 0000H ;程序开始 AJMP START ORG 30H ;为避免占用中断向量区,主程序从30H开始 START: MOV SP,#5FH ;设置堆栈的初始地址 MOV P3,#0FH ;P3,P2,P0的初始化 MOV P2,#00H MOV P0,#0FFH MOV KEYS,#00H ;各键值清0 MOV KEY
[单片机]
MCS-51单片机底层工作原理分析2——总线结构
了解了单片机内部的大致工作原理之后,我们或许对单片机如何读取指令代码和数据的过程存在一定的疑问,这就是总线系统。51单片机内部有三大块总线系统AB,CB,DB即地址总线,控制总线和数据总线。51系统式的存储形式是采用普林斯顿结构(冯 诺依曼结构)的,即数据和代码存放在重叠地址通过不同的控制总线控制不懂的物理存储位置读写。冯 诺依曼结构代码和数据是公用数据和地址端口的所以在执行程序的时候必须先读取指令,然后再读取数据这相对于哈弗结构来说,在一定程度上限制了程序的执行速度。借助下图可以适当说明一下冯诺依曼结构程序和数据的存储方式。外部ROM和RAM都是通过P2和P0作为地址输出,P0作为数据或者代码输入。通过CB开控制是读取代码
[单片机]
absacc.h keil软件里怎么找不到 ,如何找?
把下面的内容保存成absacc.h即可:原因是高版本的KEIL进行了优化,将以前很多库文件去除了,需要用户手动添加 #ifndef __ABSACC_H__ #define __ABSACC_H__ #define CBYTE ((unsigned char volatile code *) 0) #define DBYTE ((unsigned char volatile data *) 0) #define PBYTE ((unsigned char volatile pdata *) 0) #define XBYTE ((unsigned char volatile xdata *) 0) #define CWORD ((u
[单片机]

推荐帖子

wince5.0纸牌游戏屏幕显示不下,有法调吗?
找到了solitare.res、solitare.lib、solitare.pdb却怎么也找不到源码不知源代码是否开放?在哪里?没有的话就只能去调它了吧wince5.0纸牌游戏屏幕显示不下,有法调吗?没有开放不提供源代码的,所以没有办法修改不提供源代码的,所以没有办法修改谢谢
cfzhang WindowsCE
请推荐几本类似于 电器学原理 之类的教材,谢谢大家
请推荐几本类似于电器学原理之类的教材,谢谢大家。这书的内容有:第二章介绍电器热源及热传输主要形式、发热计算理论,第三章介绍电器中不同工况下电动力计算的基本理论,第四章至第六章主要介绍电器电弧理论、电弧熄灭条件及原理及电弧新数学模型研究,第七章主要介绍电接触理论及应用,第八章至第十章主要介绍电器中电磁系统的计算理论、电磁吸力计算和电器中电磁场数值计算基础,第十一章主要介绍电器实验研究的基本理论知识。感觉这书很实用,请推荐几本类似于电器学原理之类的教
深圳小花 单片机
编译不过问题
modulesele1of2(a,b,out,sele);inputa,b,sele;outputout;case(sele)0:~out=a;1:~out=b;endcaseendmodule编译提示verilogHDLsyntaxereor:case-;编译不过问题怎么还出这表情了,建议换一种形式上传程序,CASE前面是不是应该放个always啊modulesele1of2(a,b,out,sele);inputa,b,sele;outp
eeleader FPGA/CPLD
TI stellaris硬件驱动库中文翻译Gpio_api
今天在调试一个18B20的程序,好好的把GPIO研究了一下,这是我收集的中文资料,希望对大家有点帮助unsignedlongGPIODirModeGet(unsignedlongulPort,unsignedcharucPin)获得一个管脚的方向和模式。参数:ulPortGPIO端口的基址。ucPin管脚编号。这个函数获取所选GPIO端口某个
fengzhang2002 微控制器 MCU
帮你了解“万人迷”-GPRS
首先介绍一下到底什么是GPRS,它的优点是什么:GPRS是采用先进的无线分组技术,将无线通信与因特网紧密结合。GPRS的引入,无需我们更换手机号码,不会影响原有手机、原有业务的使用;它作为一种先进的、全新的无线网络承载手段,全面提升了无线数据通信服务。图为:GPRS示意图GPRS是在GSM基础上发展起来的一种分组交换的数据承载和传输网络,与原有的GSM相比,具有时尚前卫,令人耳目一新的优势:永远在线!只要激活GPRS应用后,将永远保持在线状态,不存在掉线的问题,类似于一种无线专线网络
mdreamj RF/无线
《Cmake构建实战》4 onnxruntime的查找模块实践
1onnxruntime模块配置onnxruntime是微软开发的一个机器学习推理和训练的加速库。onnxruntime本身并没有提供用于导入依赖的Cmake配置文件,因此需要自行实现一个用于查找onnxruntime的查找模块Findonnxruntime.cmake。查找模块主要完成对onnxruntime库的头文件/库文件的路径和库版本号等参数的查找。首先下载onnxruntime预编译包,Releasesmicrosoft/onnxruntime(githu
maskmoo 嵌入式系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved