找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3916|回復(fù): 2
收起左側(cè)

自己手工制作的單片機(jī)時(shí)鐘器 內(nèi)附程序+電路

[復(fù)制鏈接]
ID:298663 發(fā)表于 2019-3-20 20:47 | 顯示全部樓層 |閱讀模式
制作出來的實(shí)物圖如下:

用雕刻機(jī)雕出來的板子

用雕刻機(jī)雕出來的板子


單片機(jī)源程序如下:
  1. #include "stc15w408as.h"
  2. #include "delay.h"
  3. #include "74ls595.h"


  4. sbit key= P3^2;  // 定義按鍵入口  時(shí)間的時(shí)選擇位
  5. signed char key_mode = 0;
  6. unsigned char flag = 0;  //定義一個(gè)按鈕標(biāo)志位1
  7. sbit key1= P3^3;  // 定義按鍵入口  時(shí)間的分選擇
  8. signed char key_mode1 = 0;
  9. unsigned char flag1 = 0;  //定義一個(gè)按鈕標(biāo)志位2
  10. sbit LED=P1^1;  //定義秒鐘狀態(tài)led
  11. unsigned char idata T1[3]={0x03,0x9F,0x25};//時(shí)十
  12. unsigned char idata T2[10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09};//時(shí)個(gè)
  13. unsigned char idata T3[6]={0x03,0x9F,0x25,0x0D,0x99,0x49};//分十
  14. unsigned char idata T4[10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09};//分個(gè)
  15. unsigned char hour1,hour2,hour3,hour4;
  16. unsigned long count,count1;
  17. unsigned char temp1=0,temp2=0;
  18. /*  定時(shí)器0的配置**************************************/
  19. void Timer0Init()                //定時(shí)50ms出發(fā)一次中斷
  20. {
  21.         AUXR &= 0x7F;               
  22.         TMOD &= 0xF0;               
  23.         TL0 = 0x00;               
  24.         TH0 = 0x4C;               
  25.         //TF0 = 0;               
  26.         TR0 = 1;               
  27.         ET0=1;
  28.         EA=1;
  29. }

  30. void TIMER0()  interrupt 1
  31. {
  32.         if(temp1==0&&temp2==0)
  33.         {
  34.          count1++;
  35.         if(count1==20){count1=0;count=count+1;LED=~LED;}
  36.         if(count==60){count=0;hour4=hour4+1;} //分個(gè)位
  37.   if(hour4>9){hour4=0;hour3=hour3+1;}  //分十位
  38.   if(hour3>5){hour3=0;hour2=hour2+1;} //時(shí)個(gè)位
  39.   
  40.    if(hour1<2)
  41.          {
  42.     if(hour2>9){hour2=0;hour1=hour1+1;}//時(shí)十位
  43.          }
  44.          if(hour1==2)
  45.          {
  46.   if((hour2>3)){hour1=0;hour2=0;hour3=0;hour4=0;}
  47. }


  48.     }
  49.         else
  50.         {
  51.    if(temp1==1){hour2=hour2+1;temp1=0;}
  52.          if(temp2==1){hour4=hour4+1;temp2=0;}
  53.         }               

  54. }        



  55. void KeyInit0()  interrupt 0           //外部中斷0入口,時(shí)調(diào)節(jié)
  56. {

  57.    
  58.         
  59.     if(!key)                 
  60.     {
  61.           DelayMs(60);  //延時(shí)20ms
  62.           if(key==0&&flag==0)
  63.             {
  64.                   DelayMs(10);
  65.                   flag=1;
  66.                   }
  67.                 while(!key);
  68.        }

  69.          if(key==1&&flag==1)
  70.            {
  71.               DelayMs(60);
  72.              flag=0;
  73.                   temp1=temp1+1;
  74.                  }
  75.          

  76.    
  77.                  
  78.          }                 

  79. void KeyInit1()  interrupt 2           //外部中斷2入口,分調(diào)節(jié)
  80. {

  81.    
  82.         
  83.     if(!key1)                 
  84.     {
  85.           DelayMs(60);  //延時(shí)20ms
  86.           if(key1==0&&flag1==0)
  87.             {
  88.                   DelayMs(10);
  89.                   flag1=1;
  90.                   }
  91.                 while(!key1);
  92.        }

  93.          if(key1==1&&flag1==1)
  94.            {
  95.               DelayMs(60);
  96.              flag1=0;
  97.                  temp2=temp2+1;
  98.                  }
  99.          

  100.    
  101.                  
  102.          }                 
  103.         

  104. void main()
  105.         {
  106.                 Timer0Init()        ;
  107.                
  108.          LED=1;
  109.                
  110.                
  111.                  //配置外部中斷1和0
  112.            
  113.                 IT0=1;
  114.                 EX0=1;
  115.                 IT1=1;
  116.                 EX1=1;
  117.                 EA = 1;
  118.                
  119.                  while(1)
  120.                  {
  121.       
  122.                         
  123.                         
  124.                         if(hour1==0)  //當(dāng)時(shí)間的十分位為0不顯示
  125.                         {
  126.                           WR_595(T4[hour4]);
  127.                           WR_595(T3[hour3]);
  128.                           WR_595(T2[hour2]);
  129.                           WR_595(0xff);
  130.                                 OUT_595();
  131.                         }
  132.                         else   //當(dāng)時(shí)間的十分位位1顯示
  133.                                 {
  134.                                 WR_595(T4[hour4]);
  135.                           WR_595(T3[hour3]);
  136.                           WR_595(T2[hour2]);
  137.                           WR_595(T1[hour1]);
  138.                                 OUT_595();
  139.                                        
  140.                                        
  141.          }  
  142.                         
  143.                         
  144.                          }


  145.                         
  146.                  


  147.          }                 
復(fù)制代碼

所有資料51hei提供下載:
Sheet5.pdf (52.44 KB, 下載次數(shù): 15)
時(shí)鐘器.rar (642.99 KB, 下載次數(shù): 8)
時(shí)鐘.rar (701.55 KB, 下載次數(shù): 7)


評(píng)分

參與人數(shù) 2黑幣 +120 收起 理由
NMT1999 + 30
admin + 90 贊一個(gè)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:137349 發(fā)表于 2019-3-20 23:19 | 顯示全部樓層
贊一個(gè) 辛苦了
回復(fù)

使用道具 舉報(bào)

ID:444932 發(fā)表于 2019-3-21 09:06 | 顯示全部樓層
不容易啊,看著好看
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表