开发者社区> 李蔚蓬> 正文

AT80C51串口通信编程 | 按键控制LED灯列

简介: uart8051.h: #ifndef __UART_H__ #define __UART_H__ #define XTAL 12000000 #define baudrate 9600 char UART_putchar(char...
+关注继续查看

uart8051.h:

img_8380354b9b30dc309691ed19087edf49.jpe

#ifndef __UART_H__
#define __UART_H__

#define XTAL 12000000
#define baudrate 9600

char UART_putchar(char ch);
char UART_getkey(void);
void InitCom(void);

#endif

uart8051.c:

img_f69a1be2ee4018e79e086796d6df6c47.jpe

img_a275ac307ba962cced2f1344b0b63f48.jpe
#include <reg51.h>
#include "uart8051.h"

char UART_putchar(char ch)
{
    if(ch=='\n')
    {
        SBUF = 0x0d;
        while(TI == 0);
          TI=0;
        SBUF = 0x0a;
    }
    
    else
          SBUF = ch;
    while(TI == 0);
    TI = 0;
    return ch;
}

char UART_getkey(void)
{
    char c;
    
    while(!RI);
    c = SBUF;
    RI = 0;
    return(c);
}

void InitCom(void)
{
    SCON=0X50;
    TMOD=0X20;
    PCON=0X80;
    TH1=0XF3;
    TL1=0XF3;
    ES=0;
    EA=1;
    TR1=1;
}

main.c:

img_93536365201714adc5ca79f55221e14e.jpe
img_7a80e826055237f0c3ac694dd013d708.jpe

#include <reg51.h>
#include <stdio.h>
#include "uart8051.h"

char putchar(char ch)
{
    return UART_putchar(ch);
}

char _getkey(void)
{
    return UART_getkey();
}

void main(void)
{
  
  
    unsigned int tem;
    InitCom();
    printf("´®¿Ú²âÊÔ£¬³£¹æÊ¹ÓÃ:\n");
    UART_putchar('A');UART_putchar(' ');
    UART_putchar('B');UART_putchar(' ');
    UART_putchar('C');UART_putchar(' ');
    UART_putchar('D');UART_putchar(' ');
    UART_putchar('\n');
    
    printf("Ç¿´óµÄ¸ñʽ»¯Á÷Êä³ö£º\n");
    printf("Êä³öÒ»¸öÕûÐΣº%d\n",(int)6886);
    printf("Êä³öÒ»¸öʵÐÍ£º%d\n",(float)68.86);
    while(1)
    {
        printf("\nÊäÈëÒ»¸öÕûÐÍ£¬ËÍP2¿Ú×¢Òâ¹Û²ìP2¿ÚµÄµÆ:\n");
        scanf("%d",&tem);
        
        P2=tem;
    }
}

编译之后,打开烧录软件烧录,然后打开串口通信助手进行调试:

img_43adbc0b54ed94c4c66343981f142872.png

如上图,分别输入1+空格,2+空格,3+空格,效果图如下:
1+空格:

img_3114177d7fe69f1ad917e2c853a7ef39.png

2+空格:
img_058185997c8c0dae3f673b9882f63f63.png

3+空格:
img_23201c49429055671c6258877fea4683.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
STM32:按键控制LED
STM32:按键控制LED
24 0
STM32小项目总结1(部分基础知识+LED+蜂鸣器+按键控制LED+OLED显示屏+光敏传感器控制蜂鸣器)
STM32小项目总结1(部分基础知识+LED+蜂鸣器+按键控制LED+OLED显示屏+光敏传感器控制蜂鸣器)
140 0
STM32:光敏电阻控制蜂鸣器
STM32:光敏电阻控制蜂鸣器
55 0
串口初始化及RFID上电复位|学习笔记
快速学习串口初始化及RFID上电复位
73 0
教你用Qt开发一个串口上位机控制LED
教你用Qt开发一个串口上位机控制LED
242 0
非中断方式实现按键控制LED灯
非中断方式实现按键控制LED灯 简述 宏定义与预处理 按键处理 延迟 主函数
64 0
树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
544 0
中断方式控制LED灯
中断方式控制LED灯 宏定义 初始化 中断函数 主函数
48 0
按键实现控制LED灯
按键实现控制LED灯 功能简述 宏定义与预处理 初始化 主函数
184 0
T3定时器中断控制实现控制LED灯
T3定时器中断控制实现控制LED灯 宏定义 初始化 中断 主函数
84 0
+关注
李蔚蓬
有两年Android开发经验,具备一定的Web基础,接触过matlab数字图像处理,ARM/ROS开发的基础知识
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载