u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
时间: 2023-10-08 17:10:42 浏览: 209
这段代码定义了一个长度为16的unsigned char类型的数组smgduan,数组中存储了16种7段数码管的显示方式,每个元素都是一个二进制数,表示对应数字在7段数码管上需要点亮的位置。其中,0x3f表示数字0需要点亮的位置,0x06表示数字1需要点亮的位置,以此类推,直到0x71表示数字9需要点亮的位置。
相关问题
u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
这是一个定义了一个长度为17的unsigned char数组,其中每个元素都是一个16进制数,表示了0到F十六个数字在7段数码管上显示的方式。这个数组可以用来控制数码管的显示,比如将数字0显示在数码管上,可以通过gsmg_code[0]来获取到对应的16进制数0x3f,然后将这个数发送给数码管的控制芯片。
请帮我标注代码的注释#include <reg52.h> typedef unsigned char u8; typedef unsigned int u16; u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07}; u16 key_value; void delay(u16 i) { while(i--); } void keyscan() { P1=0x0f; if(P1!=0x0f) { delay(1000); if(P1!=0x0f) { P1=0x0f; switch(P1) { case(0x07):key_value=0;break; case(0x0b):key_value=1;break; case(0x0d):key_value=2;break; case(0x0e):key_value=3;break; } P1=0xf0; switch(P1) { case(0x70):key_value=key_value;break; case(0xb0):key_value=key_value+4;break; case(0xd0):key_value=key_value+8;break; case(0xe0):key_value=key_value+12;break; } while(P1!=0xf0); } } } void main() { while(1) { keyscan(); P0=smgduan[key_value]; P2=0x00; } }
```
#include <reg52.h> // 包含 8051 单片机头文件
typedef unsigned char u8; // 定义无符号 char 类型为 u8
typedef unsigned int u16; // 定义无符号 int 类型为 u16
u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07}; // 数码管显示的数组
u16 key_value; // 存储键盘输入的值
void delay(u16 i) { // 延时函数,参数 i 决定了延时的时间
while(i--);
}
void keyscan() { // 扫描键盘输入的函数
P1=0x0f; // 用 P1 端口来读取键盘输入
if(P1!=0x0f) { // 如果有输入
delay(1000); // 延时 1000 微秒
if(P1!=0x0f) { // 如果输入仍然存在
P1=0x0f; // 继续读取键盘输入
switch(P1) { // 根据键盘输入更新 key_value
case(0x07): key_value = 0; break;
case(0x0b): key_value = 1; break;
case(0x0d): key_value = 2; break;
case(0x0e): key_value = 3; break;
}
P1=0xf0; // 继续读取键盘输入
switch(P1) { // 根据键盘输入更新 key_value
case(0x70): key_value = key_value; break;
case(0xb0): key_value = key_value + 4; break;
case(0xd0): key_value = key_value + 8; break;
case(0xe0): key_value = key_value + 12; break;
}
while(P1!=0xf0); // 等待键盘输入结束
}
}
}
void main() {
while(1) {
keyscan(); // 不断扫描键盘输入
P0 = smgduan[key_value]; // 将对应的数码管显示在 P0 端口上
P2 = 0x00; // 将 P2 置为 0x00
}
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![jar](https://img-home.csdnimg.cn/images/20210720083455.png)