您的位置 首页 观点

51单片机UART通讯[发送接纳数字字母中文,操控LED亮灭]

1、发送什么就接收什么/*工程创建MCU选取,Atmel89C55单片机:STC12C5A60S2晶振:12M功能:串口的应用波特率:48008无1无*/#incl…

1、发送什么就接纳什么

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

*/

#include // 能够运用通用的头文件

//串口中止初始化程序
void UART_init(void){
EA=1; //翻开总中止【定时器,ADC,串口,比较,计数,外部】等中止类型
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; //翻开总中止【定时器,ADC,串口,比较,计数,外部】等中止类型
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; //翻开总中止【定时器,ADC,串口,比较,计数,外部】等中止类型
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; //翻开总中止【定时器,ADC,串口,比较,计数,外部】等中止类型
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; //翻开总中止【定时器,ADC,串口,比较,计数,外部】等中止类型
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) {
unsigned char a=0 ;
UART_init();
while (1) {
UART_TC (“Ok”);
UART_T(0x30+a); // 数字偏移量
a++;
if(a>9){
a=0;
}
}
}

// 输出成果
// k0Ok1Ok2Ok3Ok4Ok5Ok6Ok7Ok8Ok9

6、输出中文

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

#include
#include

void UART_init(void){
EA=1; //翻开总中止【定时器,ADC,串口,比较,计数,外部】等中止类型
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) {
unsigned char a;
UART_init();
while (1) {
UART_TC (“寄存器值是”);
UART_T(0x30+a); // 数字偏移量
a++;
if(a>9){
a=0;
}
}
}

// 超级终端输出成果
//寄存器的值是0寄存器的值是1寄存器的值是2寄存器的值是3寄存器的值是4
//寄存器的值是5寄存器的值是6寄存器的值是7寄存器的值是8寄存器的值是9

7、串口的运用,按0键操控超级终端操控LED灯亮灭,

/*
工程创立MCU选取,Atmel 89C55
单片机:STC12C5A60S2
晶振:12M
功用:串口的运用,超级终端操控LED灯亮灭,
波特率:4800 8 无 1 无

*/

#include
#include
sbit LED=P0^0;

//串口中止初始化程序
void UART_init(void){
EA=1; //翻开总中止【定时器,ADC,串口,比较,计数,外部】等中止类型
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 UART_R(void) interrupt 4 using 1{
unsigned char UART_data;
RI=0; //RI接纳标志位1就会进入该程序,手动置0,等候新的接纳
UART_data=SBUF; //把接纳到的1bit数据放到UART_data
if(UART_data==0x30) {
LED=~LED;
UART_TC (“成功!”);
}
SBUF=UART_data; //把UART_data数据发送出去
while(TI==0); //等候发送完毕
TI=0; //TI发送标志方位0,等候新的发送
}

void main (void) {
UART_init();
UART_TC (“0键开关LED灯”);

while (1) {
}
}

按0键操控LED亮灭效果图:

// STC-ISP终端乱码的处理方法

// 1,试试下载XP超级终端,Win7超级终端,Hyper_Terminal

// 2,能够依照下图,康复KEIL本来的字符编码集,把上面的程序张贴进去,把49行和58行的这两条提示重新修改为中文。

UART串口到此告一段落!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/263656.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部