登录  | 立即注册

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

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 数码管中断消隐

[复制链接]
发表于 2021-1-16 16:42:29 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 利用中断实现数码管显示消隐
开始时间: 2021-01-16
结束时间: 2021-01-16
#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[] = {
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};//数码管显示缓冲区,初值0xFF确保启动时都不亮
unsigned char i = 0; //动态扫描的索引
unsigned int cnt = 0;//记录中断次数

void main()
{


  unsigned long sec = 0;//记录经过的秒数


  ENLED = 0;  //使能74HC245
  TMOD = 0x01;//选择定时器模式为模式1
  TH0 = 0xF5;
  TL0 = 0x55;//定初始值1毫秒
  TR0 = 1;//启动定时器
  EA = 1; //使能总中断
  ET0 = 1;//使能T0中断
  while(1)
  {
           if(cnt>=1000)//中断1000次,即为1秒
           {
              cnt = 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按十进制从高到低依次提取并转化为数码管显示字符
           }
         
  }
}
void InterruptTimer0()  interrupt 1         //定时器0中断服务函数
{
  TH0 = 0xF5;
  TL0 = 0x55;//重新加载初值
  cnt++;
  P0 = 0xFF;//显示消隐
  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.

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