微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机UART通信[发送接收数字字母中文,控制LED亮灭]

51单片机UART通信[发送接收数字字母中文,控制LED亮灭]

时间:11-20 来源:互联网 点击:
1、发送什么就接收什么

/*
工程创建MCU选取,Atmel 89C55
单片机:STC12C5A60S2
晶振:12M
功能:串口的应用
波特率:4800 8 无 1 无

*/

#include // 可以使用通用的头文件

//串口中断初始化程序
void UART_init(void){
EA=1; //打开总中断等中断类型
ES=1;//允许串口的中断

TMOD=0x20; // 定时器1 T/C1工作方式,用来产生串口工作频率
SCON=0x50; // 串口工作方式1
TH1=0xF3; // 定时器初始值高8位的设置,查表得频率
TL1=0xF3; // 定时器初始值低8位的设置,查表得频率
PCON=0x80; // 波特率倍频2400为4800了
TR1=1; // 定时器启动
}

void UART_R(void) interrupt 4 using 1{
unsigned char UART_data;
RI=0; //RI接收标志位1就会进入该程序,手动置0,等待新的接收
UART_data=SBUF; //把接收到的1bit数据放到UART_data

SBUF=UART_data; //把UART_data数据发送出去
while(TI==0); //等待发送结束
TI=0; //TI发送标志位置0,等待新的发送
}

void main (void) {
UART_init();
while (1) {
}
}

2、把UART_data数据加2发送出去

/*
工程创建MCU选取,Atmel 89C55
单片机:STC12C5A60S2
晶振:12M
功能:串口的应用
波特率:4800 8 无 1 无

*/

#include // 可以使用通用的头文件

//串口中断初始化程序
void UART_init(void){
EA=1; //打开总中断等中断类型
ES=1;//允许串口的中断

TMOD=0x20; // 定时器1 T/C1工作方式,用来产生串口工作频率
SCON=0x50; // 串口工作方式1
TH1=0xF3; // 定时器初始值高8位的设置,查表得频率
TL1=0xF3; // 定时器初始值低8位的设置,查表得频率
PCON=0x80; // 波特率倍频2400为4800了
TR1=1; // 定时器启动
}

void UART_R(void) interrupt 4 using 1{
unsigned char UART_data;
RI=0; //RI接收标志位1就会进入该程序,手动置0,等待新的接收
UART_data=SBUF; //把接收到的1bit数据放到UART_data

SBUF=UART_data+0x02; //把UART_data数据加2发送出去
while(TI==0); //等待发送结束
TI=0; //TI发送标志位置0,等待新的发送
}

void main (void) {
UART_init();
while (1) {
}
}

3、串口的应用:输出指定的数值

/*
工程创建MCU选取,Atmel 89C55
单片机:STC12C5A60S2
晶振:12M
功能:串口的应用:输出指定的数值
波特率:4800 8 无 1 无

*/

//#include // 可以使用通用的头文件
#include

//串口中断初始化程序
void UART_init(void){
EA=1; //打开总中断等中断类型
ES=1;//允许串口的中断

TMOD=0x20; // 定时器1 T/C1工作方式,用来产生串口工作频率
SCON=0x50; // 串口工作方式1
TH1=0xF3; // 定时器初始值高8位的设置,查表得频率
TL1=0xF3; // 定时器初始值低8位的设置,查表得频率
PCON=0x80; // 波特率倍频2400为4800了
TR1=1; // 定时器启动
}

void main (void) {
UART_init();
while (1) {
SBUF=0xfa;
while(TI==0);
TI=0;
}
}

4、串口的应用:输出字符“Ok9”

/*
工程创建MCU选取,Atmel 89C55
单片机:STC12C5A60S2
晶振:12M
功能:串口的应用:输出字符“Ok9”
波特率:4800 8 无 1 无
*/

#include
#include

void UART_init(void){
EA=1; //打开总中断等中断类型
ES=1;//允许串口的中断

TMOD=0x20; // 定时器1 T/C1工作方式,用来产生串口工作频率
SCON=0x50; // 串口工作方式1
TH1=0xF3; // 定时器初始值高8位的设置,查表得频率
TL1=0xF3; // 定时器初始值低8位的设置,查表得频率
PCON=0x80; // 波特率倍频2400为4800了
TR1=1; // 定时器启动
}

void UART_T (unsigned char UART_data){ //定义串口发送数据变量
SBUF = UART_data; //将接收的数据发送回去
while(TI == 0); //检查发送中断标志位
TI = 0; //令发送中断标志位为0(软件清零)
}

void UART_TC (unsigned char *str){
while(*str != ){
UART_T(*str);
*str++;
}
*str = 0;
}

void main (void) {
UART_init();
while (1) {
UART_TC ("Ok");
UART_T(0x30+9);// 数字偏移量
}
}

5、串口的应用:输出字符“Ok0”到“Ok9”

/*
工程创建MCU选取,Atmel 89C55
单片机:STC12C5A60S2
晶振:12M
功能:串口的应用:输出字符“Ok9”
波特率:4800 8 无 1 无
*/

#include
#include

void UART_init(void){
EA=1; //打开总中断等中断类型
ES=1;//允许串口的中断

TMOD=0x20; // 定时器1 T/C1工作方式,用来产生串口工作频率
SCON=0x50; // 串口工作方式1
TH1=0xF3; // 定时器初始值高8位的设置,查表得频率
TL1=0xF3; // 定时器初始值低8位的设置,查表得频率
PCON=0x80; // 波特率倍频2400为4800了
TR1=1; // 定时器启动
}

void UART_T (unsigned char UART_data){ //定义串口发送数据变量
SBUF = UART_data; //将接收的数据发送回去
while(TI == 0); //检查发送中断标志位
TI = 0; //令发送中断标志位为0(软件清零)
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top