写出用单片机at89c51编译七段数码管从0到9依次亮起并循环的c语言程序(加上延时函数,共阳极接法)
时间: 2024-12-30 08:36:42 浏览: 191
以下是使用AT89C51单片机和7段数码管,通过P1口控制共阳极数码管显示数字0-9,并利用定时器实现延时的一种简单C语言程序示例:
```c
#include <reg52.h>
sbit LED_PORT = P1^0; // LED_PORT用于连接数码管
void delay(unsigned int time) {
unsigned int i;
for (i = time; i > 0; --i) {
__nop(); // 这里添加适当的延时指令,如空操作指令(__nop__)
}
}
void display_digit(int num) {
char digit[10][8] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F}; // 数码管字模表
LED_PORT = digit[num]; // 设置对应数字的字模
}
int main(void) {
TMOD = 0x01; // 设置定时器T1工作模式为模式1
TH1 = 0xFD; // 计算定时器初值以获得约1ms的延时
TL1 = 0xFD;
TR1 = 1; // 启动定时器T1
while(1) {
display_digit((unsigned char)(num % 10)); // 显示当前的十位数(如果num是一个较大的整数)
num++; // 循环显示
delay(100); // 延时100ms
}
return 0;
}
阅读全文
相关推荐


















