郭天祥51开发板 数码管循环三次 C语言
时间: 2023-08-05 09:18:14 浏览: 232
针对郭天祥51开发板 数码管 矩阵键盘 AD DA 等个人实践代码
如果您使用的是郭天祥51开发板,并且想要让数码管循环三次,可以使用以下代码实现:
```c
#include <reg51.h>
#include <intrins.h> // 使用 _nop_ 函数需要引入此头文件
sbit D1 = P2^0; // 数码管第一位
sbit D2 = P2^1; // 数码管第二位
sbit D3 = P2^2; // 数码管第三位
sbit D4 = P2^3; // 数码管第四位
sbit A = P2^4; // 数码管 A 线
sbit B = P2^5; // 数码管 B 线
sbit C = P2^6; // 数码管 C 线
sbit D = P2^7; // 数码管 D 线
unsigned char digit[10] = {
0xC0, // 0
0xF9, // 1
0xA4, // 2
0xB0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xF8, // 7
0x80, // 8
0x90 // 9
};
void display(unsigned char dat) {
A = (dat & 0x01); // 取出二进制的最低位
B = (dat & 0x02) >> 1; // 取出二进制的第二位
C = (dat & 0x04) >> 2; // 取出二进制的第三位
D = (dat & 0x08) >> 3; // 取出二进制的最高位
}
int main() {
int i, j;
while (1) {
for (j = 0; j < 3; j++) {
for (i = 0; i < 10; i++) {
D1 = 1; // 打开第一位数码管
display(digit[i]); // 显示数字 i
_nop_();
D1 = 0; // 关闭第一位数码管
D2 = 1; // 打开第二位数码管
display(digit[i]); // 显示数字 i
_nop_();
D2 = 0; // 关闭第二位数码管
D3 = 1; // 打开第三位数码管
display(digit[i]); // 显示数字 i
_nop_();
D3 = 0; // 关闭第三位数码管
D4 = 1; // 打开第四位数码管
display(digit[i]); // 显示数字 i
_nop_();
D4 = 0; // 关闭第四位数码管
}
}
}
return 0;
}
```
以上代码使用了 74LS47 芯片进行数码管的驱动。其中,`digit` 数组中存储了数字 0 到 9 对应的二进制编码。在循环中,依次显示 0 到 9,循环三次。为了防止数码管闪烁,使用了 `_nop_()` 函数进行短暂的延时。
希望这个回答能够帮助到您。
阅读全文