⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 18_01_1.c

📁 此实验实现简易的数字钟,通过数码管显示出来学习数码管的动态扫描原理及方法
💻 C
字号:
/*
;***************************************************************************
; 此实验实现简易的数字钟,通过数码管显示出来
; 学习数码管的动态扫描原理及方法
; 掌握定时器T0的TMOD控制寄存器的使用方法及初值的计算;
; 掌握定时器T0的溢出中断工作原理及方法
; supermcu@126.com
; www.supermcu.com
; SP0602-S52单片机学习实验开发系统
;***************************************************************************
*/
#include <REGX51.H>

#define LEDDATAPORT P0
#define LEDBITPORT  P2
const unsigned char LEDDATA[]=
{
  0x3f,0x06,0x5b,0x4f,0x66,
  0x6d,0x7d,0x07,0x7f,0x6f,
  0x77,0x7c,0x39,0x5e,0x79,0x71,
  0x00,0x40,0x38,0x37,
};
unsigned char LEDBuffer[8]={0,0,17,0,0,17,0,0};
unsigned char ScanLEDCount;

struct ClockStruct
{
  unsigned char Hour;
  unsigned char Minute;
  unsigned char Second;
  unsigned int Count;
  unsigned char RunFlag;
};
struct ClockStruct Clock;


void main(void)
{
  TMOD=0x01;
  TH0=(65536-1843)/256;
  TL0=(65536-1843)%256;
  ET0=1;
  TR0=1;
  EA=1;
  
  while(1);
}
void timer0(void) interrupt 1
{
  TH0=(65536-1843)/256;
  TL0=(65536-1843)%256;

  LEDDATAPORT=LEDDATA[LEDBuffer[ScanLEDCount]];
  LEDBITPORT=ScanLEDCount;
  ScanLEDCount++;
  if(ScanLEDCount==sizeof(LEDBuffer))ScanLEDCount=0;
 
  Clock.Count++;
  if((Clock.Count%500)==0)
    {
	  if(LEDBuffer[2]==17)
	    {
		  LEDBuffer[2]=16;
		  LEDBuffer[5]=16;
		}
		else
		  {
		    LEDBuffer[2]=17;
			LEDBuffer[5]=17;
		  }		
	}
	
  if(Clock.Count==1000)
    {
	  Clock.Count=0;
      Clock.Second++;
	  if(Clock.Second==60)
	    {
		  Clock.Second=0;
		  Clock.Minute++;
		  if(Clock.Minute==60)
		    {
			  Clock.Hour++;
			  if(Clock.Hour==24)Clock.Hour=0;
            }
        }
	  LEDBuffer[0]=Clock.Second%10;
	  LEDBuffer[1]=Clock.Second/10;
	  LEDBuffer[3]=Clock.Minute%10;
	  LEDBuffer[4]=Clock.Minute/10;
	  LEDBuffer[6]=Clock.Hour%10;
	  LEDBuffer[7]=Clock.Hour/10;
	  
	}
}
/*
;***************************************************************************
; 在开发板上运行显示的格式为"HH-MM-SS"
;***************************************************************************
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -