登录  | 立即注册

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

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 数码管动态显示

[复制链接]
发表于 2021-1-15 17:52:24 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 实现数码管动态显示
开始时间: 2021-01-15
结束时间: 2021-01-15
#include <STC12C5A60S2.H>

sbit ENLED = P1^1;
sbit ADDR0 = P2^0;
sbit ADDR1 = P2^1;
sbit ADDR2 = P2^2;

unsigned char code LedChar[] = {
  0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
  0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
};//数码管显示字符转换表
unsigned char LedBuff[6] = {
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};//数码管显示缓冲区,初始值位0xFF确保启动时都不亮
void main()
{
  unsigned int cnt = 0;          //中断的次数
  unsigned long sec = 0;  //记录经过的秒数
  unsigned char i = 0;          //动态扫描的索引

  ENLED = 0;  //打开使能74HC245
  TMOD = 0x01; //选择中断模式为1
  TH0 = 0xF5;  
  TL0 = 0x95;  //定时1毫秒
  TR0 = 1;           //启动定时
  while (1)
  {
    if(TF0 == 1)
        {
           TF0 = 0;        //判断是否溢出,溢出后清零中断标志
           TH0 = 0xF5;
           TL0 = 0x95; //重新赋初始值
           cnt++;           //计数值自加1
           if(cnt >=1000)//判断溢出是否达到1000次,即到达1秒
           {
              cnt = 0;          //计数清0
                  sec++;          //秒数自加1
                  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];

           } //将sec按十进制位从低到高依次提取并转化为数码管显示字符
           switch(i)
           {
              case 5:ADDR2 = 0;ADDR1 = 0;ADDR0 = 0;i=00=LedBuff[5];break;
                  case 4:ADDR2 = 0;ADDR1 = 0;ADDR0 = 1;i++0=LedBuff[4];break;
                  case 3:ADDR2 = 0;ADDR1 = 1;ADDR0 = 0;i++0=LedBuff[3];break;
                  case 2:ADDR2 = 0;ADDR1 = 1;ADDR0 = 1;i++0=LedBuff[2];break;
                  case 1:ADDR2 = 1;ADDR1 = 0;ADDR0 = 0;i++0=LedBuff[1];break;
                  case 0:ADDR2 = 1;ADDR1 = 0;ADDR0 = 1;i++0=LedBuff[0];break;
                  default:break;

           }//完成数码管动态扫描刷新


        }
  }
}

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

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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