smg_display()
时间: 2023-09-10 19:05:33 浏览: 401
根据你的代码,我无法确定 `smg_display()` 函数的实现方式。不同的开发者可能有不同的实现方式,因此需要查看完整的代码才能确定该函数的具体实现。
通常情况下,`smg_display()` 函数可能是用来在数码管上显示数字的函数,其参数可能包括要显示的数字以及显示方式等。具体的实现方式可能涉及到IO口的控制、数码管的驱动等技术。
相关问题
怎么用smg_display()显示数字528
具体的方法取决于 `smg_display()` 函数的实现方式。以下是一种可能的实现方式,供参考:
假设该函数的参数包括一个长度为3的整型数组 `num` 和一个整型变量 `mode`,其中 `num` 数组用来存放要显示的数字,`mode` 用来指定显示模式。
```c
void smg_display(int num[], int mode) {
// 假设数码管的控制引脚为 P0.0 - P0.6
// 数字8对应的数码管编码为0x7F,数字5对应的数码管编码为0x5C,数字2对应的数码管编码为0x3D
// 这里假设共阳极数码管,因此需要将数码管对应的位设置为低电平才能显示数字
P0 = 0xFE; // 选中第一个数码管
P0 = (P0 & 0xC0) | num[0]; // 将第一个数码管对应的位设置为要显示的数字
delay(2); // 延时一段时间,等待数码管显示完毕
P0 = 0xFD; // 选中第二个数码管
P0 = (P0 & 0xC0) | num[1]; // 将第二个数码管对应的位设置为要显示的数字
delay(2);
P0 = 0xFB; // 选中第三个数码管
P0 = (P0 & 0xC0) | num[2]; // 将第三个数码管对应的位设置为要显示的数字
delay(2);
}
```
使用该函数显示数字528的代码如下:
```c
int num[3] = {0x7F, 0x5C, 0x3D}; // 数字8、5、2对应的编码
smg_display(num, 6); // 在数码管上显示数字528
```
该代码假设在共阳极数码管的情况下,数字8、5、2对应的编码分别为0x7F、0x5C、0x3D,而 `mode` 参数为6时表示以静态方式显示数字,即一直显示数字直到下一次调用该函数。如果 `mode` 参数为其他值,则可能会显示其他的数字或者以其他的显示方式显示数字。
save_buf[0]=save_value/100; save_buf[1]=save_value%100/10; save_buf[2]=save_value%100%10; smg_display(save_buf,6);这段代码显示数字改为528
你可以将这段代码修改为以下内容,实现在数码管上显示数字528:
```c
save_value = 528; // 将变量 save_value 的值设置为528
save_buf[0] = save_value / 100; // 528 / 100 = 5,将商赋值给 save_buf[0]
save_buf[1] = save_value % 100 / 10; // 528 % 100 = 28,28 / 10 = 2,将商赋值给 save_buf[1]
save_buf[2] = save_value % 100 % 10; // 528 % 100 = 28,28 % 10 = 8,将余数赋值给 save_buf[2]
smg_display(save_buf, 6); // 在数码管上以静态方式显示数字528
```
这段代码将变量 `save_value` 的值设置为528,并根据题目要求将其拆分成三个数字,保存到数组 `save_buf` 中,然后调用 `smg_display()` 函数在数码管上以静态方式显示这三个数字。
阅读全文