在主系统机PC端安装“串口调试助手”应用软件,远程控制8*8点阵的显示。控制要求,当在“串口调试助手”输入指令01H时,单片机接收后并发送应答信号01H,显示屏显示“[爱心] ”;当在“串口调试助手”输入指令02H时,单片机接收后并发送应答信号
02H,显示屏显示“H”。
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言问题分析: 我们需要完成以下3个任务:
void setup(){
// 初始化串口
Serial.begin(9600);
// 设置8*8点阵的引脚
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
}
void loop(){
if(Serial.available() > 0){ // 如果串口有数据可读
int cmd = Serial.read(); // 读取指令
switch(cmd){
case 0x01:
Serial.write(0x01); // 发送应答信号01H
heart(); // 显示心形符号
break;
case 0x02:
Serial.write(0x02); // 发送应答信号02H
display_H(); // 显示H
break;
default:
Serial.write(0xFF); // 发送错误码
display_error(); // 显示错误信息
break;
}
}
}
// 显示心形符号
void heart(){
byte heart[8] = {
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
for(int i = 0; i < 8; i++){
digitalWrite(i+6, HIGH);
for(int j = 0; j < 8; j++){
digitalWrite(j+9, bitRead(heart[i], j));
delay(1);
}
digitalWrite(i+6, LOW);
}
}
// 显示H
void display_H(){
byte letter_H[8] = {
B10001,
B10001,
B10001,
B11111,
B11111,
B10001,
B10001,
B10001
};
for(int i = 0; i < 8; i++){
digitalWrite(i+6, HIGH);
for(int j = 0; j < 8; j++){
digitalWrite(j+9, bitRead(letter_H[i], j));
delay(1);
}
digitalWrite(i+6, LOW);
}
}
// 显示错误信息
void display_error(){
byte error[8] = {
B00111,
B01000,
B10000,
B10000,
B10000,
B01000,
B00111,
B00000
};
for(int i = 0; i < 8; i++){
digitalWrite(i+6, HIGH);
for(int j = 0; j < 8; j++){
digitalWrite(j+9, bitRead(error[i], j));
delay(1);
}
digitalWrite(i+6, LOW);
}
}