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月前
|
机器人 异构计算 SoC
实例2:树莓派GPIO控制外部LED灯闪烁
本文是一个关于使用树莓派GPIO控制外部LED灯闪烁的实验教程,介绍了树莓派的基本概念、GPIO接口的使用、RPi.GPIO库的基本操作,以及通过Python编程实现LED灯周期性闪烁的详细步骤和代码示例。
146 1
实例2:树莓派GPIO控制外部LED灯闪烁
|
5月前
|
传感器 机器人 芯片
实例4:树莓派GPIO控制舵机转动
本文是关于使用树莓派GPIO控制舵机转动的实验教程,涵盖了舵机的基本概念、结构、工作原理以及PWM信号控制方法。实验目的是通过Python编程,实现树莓派控制舵机在0°~180°范围内周期性转动。文中提供了详细的实验步骤、代码示例以及舵机调零和校准的方法。
272 1
实例4:树莓派GPIO控制舵机转动
|
6月前
|
数据格式
LabVIEW步进电机的串口控制方法与实现
LabVIEW步进电机的串口控制方法与实现
87 0
|
计算机视觉
树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”
定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”
实验:MSP430F249 按键控制四个灯,并消抖
实验:MSP430F249 按键控制四个灯,并消抖
139 0
STM32学习笔记(2) 使用外部中断控制按键
NVIC_IRQChannel ​​​​:对于RCT6来说,它的中断源如上图所示,在stm32f103.h中已经配置好寄存器,直接调用即可,下图中,RCT6主要用的是STM32F103X_HD的中断源
258 0
|
传感器
STM32小项目总结1(部分基础知识+LED+蜂鸣器+按键控制LED+OLED显示屏+光敏传感器控制蜂鸣器)
STM32小项目总结1(部分基础知识+LED+蜂鸣器+按键控制LED+OLED显示屏+光敏传感器控制蜂鸣器)
739 0
STM32小项目总结1(部分基础知识+LED+蜂鸣器+按键控制LED+OLED显示屏+光敏传感器控制蜂鸣器)
|
物联网 芯片 开发者
串口初始化及RFID上电复位|学习笔记
快速学习串口初始化及RFID上电复位
串口初始化及RFID上电复位|学习笔记

热门文章

最新文章