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

简介: uart8051.h:#ifndef __UART_H__#define __UART_H__#define XTAL 12000000#define baudrate 9600char 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

目录
相关文章
|
5月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
450 2
|
3月前
|
机器人 异构计算 SoC
实例2:树莓派GPIO控制外部LED灯闪烁
本文是一个关于使用树莓派GPIO控制外部LED灯闪烁的实验教程,介绍了树莓派的基本概念、GPIO接口的使用、RPi.GPIO库的基本操作,以及通过Python编程实现LED灯周期性闪烁的详细步骤和代码示例。
97 1
实例2:树莓派GPIO控制外部LED灯闪烁
|
4月前
STM32CubeMX 按键控制LED
STM32CubeMX 按键控制LED
71 0
|
计算机视觉
树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
【51单片机】Kn独立按键控制【LED亮灭】【LED状态】【LED二进制式显示】【LED不断移位】(4)
【51单片机】Kn独立按键控制【LED亮灭】【LED状态】【LED二进制式显示】【LED不断移位】(4)
实验:MSP430F249 按键控制四个灯,并消抖
实验:MSP430F249 按键控制四个灯,并消抖
122 0
STM32+ESP8266+QT客户端上位机显示DHT11温湿度与点灯
STM32+ESP8266+QT客户端上位机显示DHT11温湿度与点灯
51单片机--利用独立按键控制LED
51单片机--利用独立按键控制LED
296 0
单片机——按钮控制LED的不同效果电亮
单片机——按钮控制LED的不同效果电亮
183 0
STM32学习笔记(2) 使用外部中断控制按键
NVIC_IRQChannel ​​​​:对于RCT6来说,它的中断源如上图所示,在stm32f103.h中已经配置好寄存器,直接调用即可,下图中,RCT6主要用的是STM32F103X_HD的中断源
234 0