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

📄 数码时钟.c

📁 这是利用ATMEGA对数码时钟的设计程序
💻 C
字号:
# include<iom16.h>
# include<stdio.h>
#include <intrinsics.h>
#define uchar unsigned char
#define uint  unsigned int
uchar displaycode[]={0xc0,0xf9,0xa4,0xb0,0x99,
                      0x92,0x82,0xf8,0x80,0x90};//数码管显示代码;
uchar displaybit[]={0xfe,0xfd,0xff,0xf7,0xef,0xff,0xbf,0x7f};//数码管位控制
uchar disbuf[]={0,0,0,0,0,0,0,0};
uint ms;
uchar i;
uchar hour,min,sec;
/************键盘扫描程序**********************/

void key_scan(void)
{  

  if(PINC==0XFE)
      {
      __delay_cycles(1000);
   if(PINC==0XFE)
      sec++;
 if(sec>=60)
  sec=0;
   while(PINC==0XFE);
      }

if(PINC==0XFD)
      {
      __delay_cycles(1000);
   if(PINC==0XFD)
      min++;
 if(min>=60)
  min=0;
   while(PINC==0XFD);
      }

if(PINC==0XFB)
      {
      __delay_cycles(1000);
   if(PINC==0XFB)
      hour++;
 if(hour>=24)
  hour=0;
   while(PINC==0XFB);
      }
if(PINC==0XF7)
      {
      __delay_cycles(1000);
   if(PINC==0XF7)
      min--;
 if(min<=0)
  min=59;
   while(PINC==0XF7);
      } 

if(PINC==0Xef)
      {
      __delay_cycles(1000);
   if(PINC==0Xef)
      hour--;
 if(hour<=0)
  hour=23;
   while(PINC==0Xef);
      }
 /* if(PINC7==0)
  {
    __delay_cycles(2000)
     if(PINC7==0)
       hour++;
  }       
  */

  disbuf[0]=sec%10;
  disbuf[1]=sec/10;
  disbuf[3]=min%10;
  disbuf[4]=min/10;
  disbuf[6]=hour%10;
  disbuf[7]=hour/10;
  
}

/***********************************************/

void main()
{
  //void key_scan();
  PORTA=0XFF;
  DDRA=0XFF;
  PORTB=0XFF;
  DDRB=0XFF;
  PORTC=0XFF;
  DDRC=0X00;
  TCCR0=0X01;
  TIMSK=0X01;
  SREG=0X80;
  TCNT0=0X06;
  while(1)
  {
  
     
   
    key_scan();
    
    if(ms>=4000)
    {
      ms=0;
      sec++;
      if(sec>=60)
      {
        sec=0;
        min++;
        if(min>=60)
        {
          min=0;
          hour++;
          if(hour>=24)
            hour=0;
        }
      }
    }
  
   
  }
}

/*****************************************************/
#pragma vector=TIMER0_OVF_vect
 __interrupt   void timer0() 
 {
   //TCNT0=0X06;
   ms++;
   i++;
   if(i==8)
     i=0;
  PORTA=displaycode[disbuf[i]];
    PORTB=displaybit[i];
 }

⌨️ 快捷键说明

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