2301_79709601 2023-12-05 20:39 采纳率: 0%
浏览 26
已结题

困扰好久了,电脑的串口调试助手向单片机发送一个字符(如:字符‘1’到‘8’),单片机点亮对应的灯(如发送字符‘2’则点亮第2个灯)并给电脑回复信息:已点亮第x个灯(其中 x 要替换成对应的数字)

  1. 串口无法返还中文,会显示空的片段啥也没有,同时无法完成点灯

#include <REGX52.H>
#include "Delay.h"
#include "UART.h"
unsigned char receivedData;

void send_string(char *s)
{
while (*s!='\0')
{
UART_SendByte(*s);
s++;
}
}

void main()
{
UART_Init(); 
UART_SendByte(10);
while(1)
{

}
}

void UART_Routine() interrupt 4
{
if(RI==1)
{
RI=0; 
receivedData=SBUF;

 switch (receivedData) {
            case '1':
                P2_0 = 0;  
                send_string("已点亮第1个灯");
                UART_SendByte(10);
                break;
            case '2':
                P2_1 = 1;  
                send_string("已点亮第2个灯");
                UART_SendByte(10);
                break;
            case '3':
                P2_2 = 0;  
                send_string("已点亮第3个灯");
                UART_SendByte(10);
                break;
            case '4':
                P2_3 = 1;  
                send_string("已点亮第4个灯");
                UART_SendByte(10);
                break;
            case '5':
                P2_4 = 1;  
                send_string("已点亮第5个灯");
                UART_SendByte(10);
                break;
            case '6':
                P2_5 = 1;  
                send_string("已点亮第6个灯");
                UART_SendByte(10);
                break;
            case '7':
                P2_6 = 1; 
                send_string("已点亮第7个灯");
                UART_SendByte(10);
                break;
            case '8':
                P2_7 = 1;  
                send_string("已点亮第8个灯");
                UART_SendByte(10);
                break;
        }
    }

以上是我的解答思路,刚学习这块,弄了好久也不会发送中文给电脑,已经将两边都改成utf8编码了
用的是51单片机89c52系列,keil5软件 串口助手用的是uart assist

  • 写回答

17条回答 默认 最新

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 创建了问题 12月5日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵