您当前的位置:五五电子网电子知识单片机-工控设备51单片机数码管秒表C程序 正文
数码管秒表C程序

数码管秒表C程序

点击数:7674 次   录入时间:03-04 11:44:59   整理:http://www.55dianzi.com   51单片机
    
    update_disbuf();
    
}

bit scan_key()
{
    key_s = 0x00;
    key_s |= K1;
    return(key_s ^ key_v);    
}

void proc_key()
{
    if((key_v & 0x01) == 0)
    {
        key_times++;
        if(key_times == 1)
        {
            TR1 = 1;
        }
        else if(key_times == 2)
        {    
            TR1 = 0;
        }
        else
        {
            clr_time();
            key_times = 0;
        }
        
    }
}

void timer0() interrupt 1
// 定时器0中断服务程序, 用于数码管的动态扫描
// dis_index --- 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
// dis_digit --- 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,
//                选通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);    // 位选通值右移(P20<-P27), 下次中断时选通下一位数码管
    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++);
    }
}



上一页  [1] [2] 


本文关键字:程序  数码管  51单片机单片机-工控设备 - 51单片机