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

QQ登錄

只需一步,快速開始

搜索
查看: 32087|回復(fù): 64
打印 上一主題 下一主題
收起左側(cè)

我做的單片機(jī)電子時(shí)鐘 含原理圖 源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:121043 發(fā)表于 2016-5-16 13:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
這是我花了好久時(shí)間做的一個(gè)電子時(shí)鐘,沒有按照老師的要求去做,而是按照我自己的思路做的。完全是自己的原創(chuàng),沒有抄襲,里面有很多不足的地方,希望大神能修改了與我分享。

飛機(jī)里面包含硬件系統(tǒng)和軟件系統(tǒng),使用的是51單片機(jī)。

仿真電路圖:


所有資料下載: 時(shí)鐘計(jì)時(shí).rar (57.11 KB, 下載次數(shù): 280)



電子時(shí)鐘程序源碼:
  1. /*************  頭文件與宏定義  ************/
  2. #include <reg52.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. /*************  數(shù)組與位碼  ************/
  6. uchar code DSY_CODE[]=
  7. {
  8.         0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,
  9. };//第11個(gè)為-

  10. uchar code Scan_BITs[]=
  11. {
  12.           0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80
  13. };
  14. uchar data Buffer_Counts[8];
  15. uchar KeyNO=16;
  16. uchar Key_N;

  17. uint Count_H=23; //小時(shí)
  18. //uint Count_A;          //顯示-
  19. uint Count_M=59; //分鐘
  20. //uint Count_B;         //顯示-
  21. uint Count_S=00; //秒
  22. uint TCNT;

  23. /*************  延時(shí)程序  ************/
  24. void DelayMS(uint x)
  25. {
  26.         uchar t;
  27.         while(x--)
  28.         {
  29.                  for(t=0;t<120;t++);
  30.         }
  31. }

  32. /*************  鍵處理  ************/
  33. void Keys_Scan()
  34. {
  35.         uchar Tmp;
  36.         P1 = 0xff;
  37.         DelayMS(1);
  38.         Tmp = P1 ^ 0xff;
  39.         while(P1!=0xff) {}
  40.         switch(Tmp)
  41.         {
  42.                  case 1:KeyNO=0;break;
  43.                 case 2:KeyNO=1;break;
  44.                 case 4:KeyNO=2;break;
  45.         case 8:KeyNO=3;break;
  46.                 case 16:KeyNO=4;break;
  47.         }
  48. }

  49. /*************  段碼顯示  ************/
  50. void Show_Counts()
  51. {
  52.         uint i;
  53.         Buffer_Counts[0] = Count_H / 10;
  54.         Buffer_Counts[1] = Count_H % 10;//小時(shí)
  55.        
  56.         Buffer_Counts[2] =10;

  57.         Buffer_Counts[3] = Count_M / 10;
  58.         Buffer_Counts[4] = Count_M % 10;//分鐘       
  59.        
  60.         Buffer_Counts[5] =10;

  61.         Buffer_Counts[6] = Count_S / 10;
  62.         Buffer_Counts[7] = Count_S % 10;//秒       
  63.                 for(i=0;i<8;i++)
  64.         {
  65.                  P2 = ~Scan_BITs[i];
  66.                 P0 = ~DSY_CODE[Buffer_Counts[i]];
  67.                 DelayMS(1);
  68.         }
  69. }

  70. /*************  時(shí)間到進(jìn)位  ************/
  71. void TIME_INT0() interrupt 1
  72. {        TH0=(65536-5000)/256;
  73.         TL0=(65536-5000)%256;
  74.         TCNT ++;
  75.         if(TCNT==20)
  76.         {
  77.     Count_S++;
  78.         TCNT=0;
  79.           if(Count_S==60)
  80.           {
  81.           Count_M++;
  82.           Count_S=0;
  83.             if(Count_M==60)
  84.             {
  85.                 Count_H++;
  86.             Count_M=0;
  87.               if(Count_H==24)
  88.               {
  89.               Count_H=0;
  90.           Count_M=0;
  91.               Count_S=0;
  92.               TCNT=0;
  93.               }
  94.             }
  95.       }  
  96.   }
  97. }

  98. /*************  主函數(shù)  ************/
  99. void main()
  100. {
  101.     TMOD = 0x01;
  102.         TH0  = (65536-5000)/256;
  103.         TL0  = (65536-5000)%256;
  104.         EA=1;
  105.         ET0=1;
  106.         TR0 = 0;
  107.         while(1)
  108.         { if(P1 != 0xff)
  109.             {Keys_Scan();}
  110.                 switch(KeyNO)
  111.                 {
  112.                  case 0:        
  113.                              if(Key_N>2)
  114.                                                  Key_N=0;
  115.                                          else if(Key_N==0)
  116.                                                   TR0=~TR0;
  117.                                          else
  118.                                                  Key_N++;
  119.                                 break;
  120.                  case 1:
  121.                              if(~TR0)Count_H++;
  122.                                           
  123.                                           {
  124.                                            if(Count_H==24)
  125.                                            Count_H=0;
  126.                                            Count_M=0;
  127.                                            Count_S=0;
  128.                                            }break;
  129.                  case 2:
  130.                              if(~TR0)Count_M++;
  131.                                            {
  132.                                            if(Count_M==60)
  133.                                            Count_M=0;
  134.                                            Count_S=0;
  135.                                            }
  136.                                           break;
  137.                  case 3:
  138.                              if(~TR0)Count_S++;
  139.                                           {
  140.                                            if(Count_S==60)Count_S=0;
  141.                                            }break;
  142.                  case 4:          if(Key_N==0)
  143.                              Count_H=0;
  144.                                          Count_M=0;
  145.                                          Count_S=0;
  146.                                           break;
  147.                  }
  148.                 KeyNO=5;
  149.             Show_Counts();
  150.             }
  151. }













  152. /*void main()
  153. {
  154. while(1)
  155. {
  156.     TMOD=0x01;
  157.         TH0=(65536-5000)/256;
  158.         TL0=(65536-5000)%256;
  159.         EA=1;
  160.         ET0=1;
  161.         TR0=1;
  162.         Show_Counts();
  163. switch(P1)
  164. {
  165. case 1: Count_H++;
  166. case 2: Count_M++;       
  167. case 4: Count_S++;
  168. }
  169. }

  170. } */
復(fù)制代碼


評(píng)分

參與人數(shù) 10黑幣 +94 收起 理由
dfdfuhuh + 3 絕世好帖!
dianzhongmiao + 5
程慕雨 + 2 很給力!
azx321045 + 5 很給力!
可樂333 + 4 贊一個(gè)!
逸興 + 10
zhf1229 + 5 贊一個(gè)!
小末末 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
cqhejian + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂10 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

64#
ID:990362 發(fā)表于 2021-12-10 15:08 | 只看該作者
很優(yōu)秀,太棒了自己搞出來(lái)
回復(fù)

使用道具 舉報(bào)

63#
ID:988531 發(fā)表于 2021-12-9 10:56 | 只看該作者
在嗎 如何讓第三個(gè)-和第6個(gè)- 閃爍
回復(fù)

使用道具 舉報(bào)

62#
ID:986522 發(fā)表于 2021-11-30 19:45 | 只看該作者
做的很好,非常有幫助對(duì)我
回復(fù)

使用道具 舉報(bào)

61#
ID:780543 發(fā)表于 2020-6-16 12:08 | 只看該作者
頂一下 好帖子
回復(fù)

使用道具 舉報(bào)

60#
ID:780662 發(fā)表于 2020-6-16 09:48 來(lái)自觸屏版 | 只看該作者
大神能不能發(fā)我一份
回復(fù)

使用道具 舉報(bào)

59#
ID:773076 發(fā)表于 2020-6-8 17:16 | 只看該作者
厲害厲害,頂貼!
回復(fù)

使用道具 舉報(bào)

58#
ID:772967 發(fā)表于 2020-6-8 16:43 | 只看該作者
秒針無(wú)法跳動(dòng),不知道什么原因
回復(fù)

使用道具 舉報(bào)

57#
ID:768475 發(fā)表于 2020-6-3 15:07 | 只看該作者
學(xué)習(xí)了,樓主很有探索精神,贊一個(gè)。。
回復(fù)

使用道具 舉報(bào)

56#
ID:768323 發(fā)表于 2020-6-3 12:39 | 只看該作者
牛皮,學(xué)到了
回復(fù)

使用道具 舉報(bào)

55#
ID:720793 發(fā)表于 2020-4-2 10:47 | 只看該作者
大神膜拜
回復(fù)

使用道具 舉報(bào)

54#
ID:690150 發(fā)表于 2020-2-5 10:12 | 只看該作者
這個(gè)思路確實(shí)不錯(cuò),眼前一亮。
回復(fù)

使用道具 舉報(bào)

53#
ID:657012 發(fā)表于 2019-12-5 19:48 | 只看該作者
剛好學(xué)到這里,師傅也布置了一個(gè)類似的題目,有很大的幫助
回復(fù)

使用道具 舉報(bào)

52#
ID:649516 發(fā)表于 2019-11-25 22:48 | 只看該作者
請(qǐng)問一下這個(gè)怎么打開使用呢 ?
回復(fù)

使用道具 舉報(bào)

51#
ID:577630 發(fā)表于 2019-7-4 11:04 | 只看該作者
做的很好 學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

50#
ID:577609 發(fā)表于 2019-7-4 09:31 | 只看該作者
大神給力
回復(fù)

使用道具 舉報(bào)

49#
ID:563611 發(fā)表于 2019-6-16 13:57 | 只看該作者
為什么我照著弄,顯示出來(lái)的是亂碼?
回復(fù)

使用道具 舉報(bào)

48#
ID:422322 發(fā)表于 2018-11-7 14:23 | 只看該作者
為什么下載了沒用啊 只顯示前面3個(gè)燈
回復(fù)

使用道具 舉報(bào)

47#
ID:374869 發(fā)表于 2018-10-30 17:11 | 只看該作者
新的思路
回復(fù)

使用道具 舉報(bào)

46#
ID:417322 發(fā)表于 2018-10-29 18:05 來(lái)自觸屏版 | 只看該作者
厲害了
回復(fù)

使用道具 舉報(bào)

45#
ID:415398 發(fā)表于 2018-10-25 18:32 | 只看該作者
樓主給力,謝謝 分享,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

44#
ID:410468 發(fā)表于 2018-10-25 17:52 | 只看該作者
謝謝樓主大恩大德
回復(fù)

使用道具 舉報(bào)

43#
ID:410468 發(fā)表于 2018-10-25 17:51 | 只看該作者
厲害,收藏學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

42#
ID:406408 發(fā)表于 2018-10-16 13:47 來(lái)自觸屏版 | 只看該作者
學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

41#
ID:408496 發(fā)表于 2018-10-16 10:26 | 只看該作者
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

40#
ID:410159 發(fā)表于 2018-10-15 19:52 | 只看該作者
好貼!!!!!!
回復(fù)

使用道具 舉報(bào)

39#
ID:73182 發(fā)表于 2018-10-15 16:52 | 只看該作者
仿真可以,不知樓主實(shí)物做出了沒?正在著手做一個(gè),請(qǐng)教下液晶不加供電不知道IO腳的電流是否夠?
回復(fù)

使用道具 舉報(bào)

38#
ID:378372 發(fā)表于 2018-10-14 20:19 | 只看該作者
很   贊
回復(fù)

使用道具 舉報(bào)

37#
ID:409518 發(fā)表于 2018-10-14 17:42 | 只看該作者
為什么我的時(shí)鐘不動(dòng)啊
回復(fù)

使用道具 舉報(bào)

36#
ID:352182 發(fā)表于 2018-6-19 23:05 | 只看該作者
謝謝分享,已下載做為研究
回復(fù)

使用道具 舉報(bào)

35#
ID:354521 發(fā)表于 2018-6-19 18:17 | 只看該作者
你這個(gè)很棒啊,自己編寫的程序
回復(fù)

使用道具 舉報(bào)

34#
ID:354277 發(fā)表于 2018-6-19 14:08 | 只看該作者
怎么加鬧鐘
回復(fù)

使用道具 舉報(bào)

33#
ID:353236 發(fā)表于 2018-6-17 14:04 | 只看該作者
厲害呀
回復(fù)

使用道具 舉報(bào)

32#
ID:348510 發(fā)表于 2018-6-17 08:24 | 只看該作者
為什么下載了沒用啊 只顯示前面3個(gè)燈
回復(fù)

使用道具 舉報(bào)

31#
ID:348510 發(fā)表于 2018-6-16 21:56 | 只看該作者
下載看看
回復(fù)

使用道具 舉報(bào)

30#
ID:352736 發(fā)表于 2018-6-15 23:27 | 只看該作者
很給力
回復(fù)

使用道具 舉報(bào)

29#
ID:350863 發(fā)表于 2018-6-14 09:58 來(lái)自觸屏版 | 只看該作者
剛好學(xué)到這里能用到!
回復(fù)

使用道具 舉報(bào)

28#
ID:351232 發(fā)表于 2018-6-13 17:20 | 只看該作者
思路清晰 對(duì)初學(xué)很有幫助
回復(fù)

使用道具 舉報(bào)

27#
ID:351232 發(fā)表于 2018-6-13 17:10 | 只看該作者
思路就是不一樣很有幫助
回復(fù)

使用道具 舉報(bào)

26#
ID:351232 發(fā)表于 2018-6-13 17:09 | 只看該作者
思路就是不一樣
回復(fù)

使用道具 舉報(bào)

25#
ID:340304 發(fā)表于 2018-5-29 09:41 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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