專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

基于8位數(shù)碼管的可調(diào)時鐘時鐘課程設計

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2012年04月23日   【字體:

  這個東西折騰我快兩個月啊~!也是帶啦做的不是一直在做是一邊學習一邊玩弄來的啊~!但是怎么說我也弄出來啊~!心里好滿足啊~!因為這個可算是自己的成果。也給謝謝這次課程設計因為就這個設計讓我理解很多東西讓我感覺進步很多,F(xiàn)在就差自己做PCB板啊~!然后就是全部搞定啊~!哈哈~!

電路很簡單 8位共陰數(shù)碼管 (如果沒有買的可以買2個四位數(shù)碼管) 段選接P2口 位選接p1口,用stc單片機可以直接連接,兩個按鍵接p1.6 和p1.7,實現(xiàn)時間的調(diào)整功能.完整程序代碼下載地址:http://www.torrancerestoration.com/f/dzszkt.rar

這個就是我自己弄的程序小時鐘的:

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff};
uchar code kai[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7};
sbit tiao=P1^6;
sbit gai=P1^7;
uchar hour,min,sec,e,set,dada,x,i,j,u,v,w,s,m,n,p,q;
void delay(uchar k)
{
    uchar a,b;
 for(a=0;a<k;a++)
 {
  for(b=0;b<100;b++)
  {
   ;
  }
 }
}
void time_cond(void)
{
 if(sec==59)
 {
  sec=0;
  min++;
 }//sec
 if(min==59)
 {
  min=0;
  hour++;
 }//min
 if(hour==23)
 {
  hour=0;
 }//hour
}//time_con
void xianshi(uchar i,j,u,v,w,s)
{
 P2=table[i];
 P1=kai[0];
 delay(5);
 P2=table[j];
 P1=kai[1];
 delay(5);
 P2=table[p];
 P1=kai[2];
 delay(5);
 P2=table[u];
 P1=kai[3];
 delay(5);
 P2=table[v];
 P1=kai[4];
 delay(5);
 P2=table[q];
 P1=kai[5];
 delay(5);
 P2=table[w];
 P1=kai[6];
 delay(5);
 P2=table[s];
 P1=kai[7];
 delay(5);
}
void KEY_tiao(void)
{
 if(gai==0)
 {
  e++;
 }
 if(e>3)
 {
  e=1;
 }
 delay(200);
}//tiaozheng
void display_h(void)
{
 P2=table[i];
 P1=kai[0];
 delay(20);
 P2=table[j];
 P1=kai[1];
 delay(20);
 P2=table[11];
 P1=kai[0];
 delay(20);
 P2=table[11];
 P1=kai[1];
 delay(20);
 i=hour/10;
 j=hour%10;
}//display_h
void display_m(void)
{
 P2=table[u];
 P1=kai[3];
 delay(20);
 P2=table[v];
 P1=kai[4];
 delay(20);
 P2=table[11];
 P1=kai[3];
 delay(20);
 P2=table[11];
 P1=kai[4];
 delay(20);
 u=min/10;
 v=min%10; 
}//display_m
void tiaozheng(void)
{
  if(gai==0)
  TR0=0;
  KEY_tiao();
  switch(e)
 {
  case 1 :{
    if(tiao==0)
    {
     hour++;
     display_h();
     if(hour>24)
     {
      hour=0;
     }
    }
          }//case 1
   break;
   case 2 :{
    if(tiao==0)
    {
     min++;
     display_m();
     if(min>60)
     {
      min=0;
     }
    }
            }//case 2
   break;
        }//switch
}//tiaozheng
void Timer_init()
{
 ET0=0;
 TCON=0x00;
 TMOD=0x01;//工作方式1
 TH0=0x3c;
 TL0=0xaf;//定時50mS,12mHz
 ET0=1;
}//Timer_init
void Timer_Start()
{
 TR0=1;
}//Timer_Start
void Timer_interrupt(void) interrupt 1 using 0
{
 EA=0;
 dada++;
 if(dada==20)
 {
  dada=0;
  sec++;
 }
 EA=1;
 TH0=0x3c;
 TL0=0xaf;
}//Timer_interrupt
void Int1_interrupt(void) interrupt 2 using 2
{
 TR0=0;
}//Int1_interrputd
void Int0_interrupt(void) interrupt 0 using 1
{
 TR0=1;
}//Int0_interrput
void main(void)
{
 EA=1;
 EX0=1;
 EX1=1;
 Timer_init();
 Timer_Start();
 while(1)
 {
  xianshi(i,j,u,v,w,s);
  time_cond();
  i=hour/10;
  j=hour%10;
  u=min/10;
  v=min%10;
  w=sec/10;
  s=sec%10;
  p=10;
  q=10;
    tiaozheng();
 }//while
}//main

 

關閉窗口

相關文章