u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
时间: 2023-10-08 09:05:39 浏览: 77
这是一个定义了一个长度为17的unsigned char数组,其中每个元素都是一个16进制数,表示了0到F十六个数字在7段数码管上显示的方式。这个数组可以用来控制数码管的显示,比如将数字0显示在数码管上,可以通过gsmg_code[0]来获取到对应的16进制数0x3f,然后将这个数发送给数码管的控制芯片。
相关问题
请标注代码的注释:#include <REGX52.H> typedef unsigned int u16; typedef unsigned char u8; #define SMG_A_DP_PORT P0 u8 gsmg_code[10]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; int x,y=0; void delay_10us(u16 ten_us) { while(ten_us--); } int0_srv()interrupt 0 { x=x+1; delay_10us(20000); } int1_srv()interrupt 2 { x=x-1; delay_10us(20000); } void main() { IE=0x85; while(1) { if(x<=9) {SMG_A_DP_PORT=gsmg_code[x];} if(x<0){x=9;} } }
// 引入头文件
#include <REGX52.H>
// 定义数据类型
typedef unsigned int u16;
typedef unsigned char u8;
// 定义端口
#define SMG_A_DP_PORT P0
// 数码管显示的编码
u8 gsmg_code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
// 定义变量
int x,y=0;
// 延时函数
void delay_10us(u16 ten_us) {
while(ten_us--);
}
// 外部中断0服务函数
int0_srv()interrupt 0 {
x=x+1;
delay_10us(20000);
}
// 外部中断1服务函数
int1_srv()interrupt 2 {
x=x-1;
delay_10us(20000);
}
// 主函数
void main() {
// 开启外部中断0和1
IE=0x85;
while(1) {
if(x<=9) {SMG_A_DP_PORT=gsmg_code[x];}
if(x<0){x=9;}
}
}
请帮我标注代码的注释#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
}
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)