登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 数码管秒表(不显示高位0)

[复制链接]
发表于 2022-2-16 01:09:50 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 数码管秒表(不显示高位0)
学习安排: 数码管秒表(不显示高位0)
开始时间: 2022-02-15
结束时间: 2022-02-16
#include <STC12C5A60S2.H>
sbit ENLED = P1^1 ;   
sbit LED = P0^1 ;
sbit ADDR2 = P2^2;
sbit ADDR1 = P2^1;
sbit ADDR0 = P2^0;

unsigned char code LedChar[] = {
  0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
        0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
unsigned char LedBuff[] = {               //数码管显示缓冲区,初值0xFF确保启动时都不亮
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
unsigned char  flag1s = 0;
unsigned char cnt = 0;
unsigned char i = 0;
int main()
{
        unsigned char sec = 0;
  ENLED = 0;            
  ADDR2=1;
  ADDR1=0;
  ADDR0=1;

  TMOD = 0x01;
        TR0 = 1;               //启动定时器
        TH0 = 0xB8;
        TL0 = 0x00;
        EA = 1;
        ET0 = 1;
        while(1)
        {
          if (flag1s == 1)  //判断1秒定时标志
        {
         flag1s = 0;
                                 sec++;
                                 LedBuff[0] = LedChar[sec%10];
         LedBuff[1] = LedChar[sec/10%10];
         LedBuff[2] = LedChar[sec/100%10];
         LedBuff[3] = LedChar[sec/1000%10];
         LedBuff[4] = LedChar[sec/10000%10];
         LedBuff[5] = LedChar[sec/100000%10];
                           }  
                }
}
void InterruptTimer0() interrupt 1
{
    TH0 = 0xF5;
    TL0 = 0x55;
    cnt++;      
    if (cnt >= 1000)  
    {
        cnt = 0;      
        flag1s = 1;   
    }


      P0 = 0xFF;  
                        switch (i)
            {
                case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=LedBuff[5]; break;
                case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=LedBuff[4]; break;
                case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=LedBuff[3]; break;
                case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=LedBuff[2]; break;
                case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=LedBuff[1]; break;
                case 5: ADDR2=1; ADDR1=0; ADDR0=1; i=0; P0=LedBuff[0]; break;
                default: break;
            }
}


搞到现在也不知道哪里错了,以后再改。呜呜呜,蛋疼

好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表