串口通信,用串口调试助手发送字符串,需发文本模式, 指令1 电脑端发送“数码管显示123” DIS2数码管显示123 ,(123为任意3位内的数字)电脑端接收到“已执行123”。 指令2 电脑端发送“关闭数码管” 所有数码管全灭灯 ,同时电脑端接收到“已执行”。
时间: 2024-04-05 13:31:30 浏览: 95
好的,这是一个关于串口通信的问题。你可以使用串口调试助手发送字符串,但需要以文本模式发送。对于指令1,你需要在电脑端发送“数码管显示123”,其中的123为任意三位数字。然后,DIS2数码管将会显示这个数字,并且你会在电脑端接收到“已执行123”的消息。对于指令2,你需要发送“关闭数码管”,这将会使所有数码管熄灭,并且你会在电脑端接收到“已执行”的消息。
相关问题
帮我写stc15用串口调试助手发送字符串,需发文本模式, 指令1 电脑端发送“数码管显示123” DIS2数码管显示123 ,(123为任意3位内的数字)电脑端接收到“已执行123”。 指令2 电脑端发送“关闭数码管” 所有数码管全灭灯 ,同时电脑端接收到“已执行”。
好的,我可以帮您解决这个问题。您可以参考下面的代码:
```c
#include <STC15F2K60S2.h>
#include <intrins.h>
#define FOSC 24000000L
#define BAUD 9600
typedef unsigned char uchar;
typedef unsigned int uint;
sbit LATCH = P1 ^ 0; //锁存器控制引脚
sbit CLK = P1 ^ 1; //时钟控制引脚
sbit DIO = P1 ^ 2; //数据输出引脚
void delay(uint xms)
{
uint i, j;
for (i = xms; i > 0; i--)
for (j = 112; j > 0; j--)
;
}
void SendData(char dat)
{
SBUF = dat;
while (!TI)
;
TI = 0;
}
void SendString(char *s)
{
while (*s)
{
SendData(*s++);
}
}
void InitUART()
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即24MHz
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重载模式
TL1 = FOSC / 4 / BAUD; //设定定时初值
TH1 = FOSC / 4 / BAUD >> 8; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
void Display(uint num)
{
uchar i, j, k;
uchar code table[] = {
0xC0, 0xF9, 0xA4, 0xB0,
0x99, 0x92, 0x82, 0xF8,
0x80, 0x90
};
for (i = 0; i < 8; i++)
{
LATCH = 0;
P0 = table[num % 10];
num /= 10;
LATCH = 1;
CLK = 0;
for (j = 0; j < 8; j++)
{
k = i * 8 + j;
LATCH = 0;
P0 = 0x01 << k;
LATCH = 1;
delay(2);
CLK = 1;
delay(2);
CLK = 0;
}
}
}
void CloseDisplay()
{
uchar i, j, k;
for (i = 0; i < 8; i++)
{
LATCH = 0;
P0 = 0xFF;
LATCH = 1;
CLK = 0;
for (j = 0; j < 8; j++)
{
k = i * 8 + j;
LATCH = 0;
P0 = 0x01 << k;
LATCH = 1;
delay(2);
CLK = 1;
delay(2);
CLK = 0;
}
}
}
void main()
{
InitUART();
while (1)
{
if (RI)
{
RI = 0;
if (SBUF == '1')
{
SendString("已执行");
Display(123);
}
else if (SBUF == '2')
{
SendString("已执行");
CloseDisplay();
}
}
}
}
```
在上面的代码中,我们使用了串口通信和数码管显示。当我们通过串口发送指令1时,会触发数码管显示123,同时回复“已执行123”;当我们发送指令2时,会触发数码管全灭,并回复“已执行”。
STC89C52RCPC 端通过串口(STC-ISP 的串口助手)向开发板发送字符串(字符串以’#’字 母结尾,波特率 2400),规则如下: 发送“begin#”:开发板的数码管开始循环显示 0-9,同时开发板通过串 口向 PC 端发送当前显示的数字。 发送“stop#”:停止数码管显示,同时也停止向 PC 端发送数据。 其他字符串:向 PC 端发送字符串“ERROR!”(如果当前正在循环发送数 据,先停止发送后再发送“ERROR!”,数码管同时也停止显示)。
好的,您的问题是关于STC89C52RCPC微控制器的串口通信。您需要向开发板发送特定字符串来控制数码管的显示和向PC端发送数据。发送“begin#”将开始循环显示0-9,并通过串口向PC端发送当前显示的数字。发送“stop#”将停止数码管显示,同时停止向PC端发送数据。如果发送其他字符串,则向PC端发送“ERROR!”,同时停止数码管的显示。
阅读全文