3461AS数码管实现定时倒计时的代码
时间: 2023-10-26 13:18:47 浏览: 40
以下是用C语言实现的数码管定时倒计时代码:
```c
#include <reg51.h>
sbit dula = P2^6; // 数码管段选
sbit wela = P2^7; // 数码管位选
unsigned char code table[]={
// 数码管显示 0~9,A~F 对应的编码
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code timerc[]={
// 定时时间,设定为1~9秒
0x01,0x02,0x03,0x04,0x05,
0x06,0x07,0x08,0x09};
void delay(unsigned int i)
{
while(i--);
}
void main()
{
unsigned char sec = 9; // 定时时间,初始设置为9秒
unsigned char i = 10; // 循环显示时间,初始设置为10个循环
unsigned char j = 0;
while(1)
{
// 先显示秒数
P0 = table[sec];
dula = 0;
delay(100);
dula = 1;
// 判断是否需要换位(个位和十位)
if(i % 10 == 0)
{
i = 10; // 重新开始循环显示时间
j++; // 编号加1
}
i--;
// 换位显示编号(1~9)
P0 = table[j];
wela = 0;
delay(5);
wela = 1;
// 判断是否定时结束
if(sec == 0)
{
delay(1000); // 延时1秒
sec = timerc[j-1]; // 定时时间减1
}
else
sec--;
// 判断是否需要清零
if(j > 9)
{
sec = 9; // 重新开始计时
j = 0; // 编号清零
}
}
}
```
注意:本代码仅供学习参考,实际使用应根据实际需求进行修改和优化。