扫描数码管c语言程序,8位数码管秒表程序--C语言程序

void timer0() interrupt 1

//    选通P2.0口数码管

// dis_buf --- 显于缓冲区基地址

{

TH0 = 0xFC;

TL0 = 0x17;

P2 = 0xff;       // 先关闭所有数码管

P0 = dis_buf[dis_index];   // 显示代码传送到P0口

P2 = dis_digit;      //

dis_digit = _cror_(dis_digit,1); // 位选通值右移(P30

dis_index++;      //

dis_index &= 0x07;   // 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描

}

void timer1() interrupt 3

//

{

unsigned char i;

TH1 |= 0xdc;

for(i = 0; i < 8; i++)

{

sec_bcd[i]++;   // 低位加1

if(sec_bcd[i] < 10)  // 如果低位满10则向高位进1

break;   // 低位未满10

sec_bcd[i] = 0;   // 低位满10清0

}

update_disbuf();   // 更新显示缓冲区

}

void update_disbuf()

// 更新显示缓冲区

{

dis_buf[0] = dis_code[sec_bcd[0]];

dis_buf[1] = dis_code[sec_bcd[1]];

dis_buf[2] = dis_code[sec_bcd[2]] & 0x7f; // 加上小数点

dis_buf[3] = dis_code[sec_bcd[3]];

dis_buf[4] = dis_code[sec_bcd[4]];

dis_buf[5] = dis_code[sec_bcd[5]];

dis_buf[6] = dis_code[sec_bcd[6]];

dis_buf[7] = dis_code[sec_bcd[7]];

}

void delayms(unsigned char ms)

// 延时子程序

{

unsigned char i;

while(ms--)

{

for(i = 0; i < 120; i++);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值