51单片机keil编程实现一位数码管循环显示9-0,循环往复,使用 typedef unsigned int u16; typedef unsigned char u8; u8 gsmg_code[]
时间: 2024-09-16 07:01:11 浏览: 45
如果你想使用`typedef unsigned int u16;`和`typedef unsigned char u8;`简化类型声明,并在Keil C中实现一位数码管循环显示9到0,可以这样做:
首先,通过typedef定义新的类型,这将帮助我们在代码中更清晰地表示整数和字符类型:
```c
typedef unsigned int u16;
typedef unsigned char u8;
u8 gsmg_code[10] = {
B0111111, // 数码管9的映射值(八进制)
B0000000, // 数码管0的映射值
//... 其他数码管数字映射
};
```
这里的`B0111111`代表二进制的十进制等价值,例如9对应的二进制是`00001001`,转换为八进制就是`0111111`。
接下来,创建`display_num()`函数来展示数码管的数字:
```c
void display_num(u16 num) {
u8 index = num % 10; // 获取当前显示的数字索引
P1 = gsmg_code[index]; // 设置P1口的数据,显示相应的数码管字符
_nop(); // 添加无操作指令(可能需要根据实际系统调整延时)
_nop();
_nop(); // 这里模拟稍微长一点的延时,以便观察数字变化
}
```
最后,在主函数中无限循环显示:
```c
int main(void) {
while (1) {
display_num(0x9); // 从9开始,注意用u16类型表示
}
return 0;
}
```
阅读全文