標題: 本人做的單片機鬧鐘,還不錯啊, [打印本頁]

作者: 9lyx    時間: 2014-3-4 10:24
標題: 本人做的單片機鬧鐘,還不錯啊,
希望大家多提寶貴意見。

經(jīng)過測試,是一個不錯的程序.rar (51.29 KB, 下載次數(shù): 504)

作者: ls0899    時間: 2014-3-9 16:26
先下來看看,怎么沒人下,順便把樓主的源碼貼出來 給大家省51黑電子論壇的黑幣啊
  1. //提示:k1k2k3k4分別是:小時。分鐘。秒鐘的調(diào)節(jié)功能。定時時間的顯示功能。k5k6分別是設(shè)定第二時間定為0:01:00,啟用或者關(guān)閉鬧鐘,




  2. #include"AT89X52.H"
  3. #define uchar unsigned char
  4. uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};   //斷碼
  5. uchar code pos[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};                                                //微碼
  6. sbit k1=P1^0;
  7. sbit k2=P1^1;
  8. sbit k3=P1^2;
  9. sbit k4=P1^3;
  10. sbit k5=P1^4;
  11. sbit jidianqi1=P1^5;
  12. sbit k6=P1^6;
  13. sbit led=P1^7;
  14. uchar k[8]={0,0,16,0,0,16,0,0};      //01234567

  15. uchar code seg00[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};   //斷碼
  16. uchar code pos00[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};                                                //微碼
  17. uchar k00[8]={0,0,16,0,0,16,0,0};                                                                            //01234567
  18. uchar second;
  19. uchar minite;
  20. uchar hour;
  21. uchar num;          
  22. uchar naozhongqiyongFlag;

  23. uchar second00;
  24. uchar minite00;
  25. uchar hour00;
  26. uchar num00;
  27. ////////////////////////////////////////////////////////////////////////////////////
  28. void TimeCompate(void)
  29.   {
  30. if(naozhongqiyongFlag)       
  31.   {
  32.     if((second00==0)&&(minite00==1)&&(hour00==0))               ///&&(minite00<=2),,,(naozhongqiyongFlag==1)&&,,  led=1
  33.         {
  34.               jidianqi1=0;                           
  35.              }
  36.          else if((second00==5)&&(minite00==42)&&(hour00==0))
  37.         {
  38.               jidianqi1=1;   naozhongqiyongFlag=~naozhongqiyongFlag;    led=~led;                    
  39.              }
  40.   }                  
  41. /*        if(hour00!=0)
  42.        { jidianqi1=1;   naozhongqiyongFlag=0;                              
  43.            }
  44.          if(hour00==0)  
  45.        {
  46.              if(minite00<1)
  47.              { jidianqi1=1;   naozhongqiyongFlag=0;                              
  48.              }
  49.             else if(minite00>2)
  50.               { jidianqi1=1;   naozhongqiyongFlag=0;                              
  51.               }
  52.                     else
  53.            {
  54.                   jidianqi1=0;                                 
  55.                }
  56.                 }
  57.        
  58. /*/
  59. //////////////////////////////////////////

  60.      
  61. }




  62. //////////////// //延時程序///////////////////////////////
  63. void delay_5ms(void)         
  64. {
  65.   uchar i,j;
  66.   for(i=10;i>0;i--)
  67.   for(j=248;j>0;j--)
  68.   ;
  69. }

  70. ////////////顯示程序,這個寫法不錯啊。//////////////////////////
  71. void disp(uchar m,uchar n)     
  72. {
  73. P2=pos[n];                          //查表法 把對應(yīng)的段碼送P2?
  74. P0=seg[m];                           //查表法 把對應(yīng)的未碼送P0口
  75. delay_5ms();
  76. P2=0x00;
  77. }


  78. ////////////顯示程序,這個寫法不錯啊。//////222222222222222/////
  79. void disp00(uchar x,uchar y)     
  80. {
  81. P2=pos00[y];                          //查表法 把對應(yīng)的段碼送P2?
  82. P0=seg00[x];                           //查表法 把對應(yīng)的未碼送P0口
  83. delay_5ms();
  84. P2=0x00;
  85. }



  86. ////////////////////主程序//////////////////////////////
  87. void main(void)
  88. {

  89.   uchar j;
  90.   uchar p;
  91.   TMOD=0x01;
  92.   // TH0=-50000/256;
  93.   // TL0=-50000%256;
  94.   TR0=1;
  95.   ET0=1;
  96.   EA=1;
  97.   second=0;
  98.   minite=0;
  99.   hour=0;

  100.   second00=7;
  101.   minite00=8;
  102.   hour00=9;

  103.   jidianqi1=1;
  104.   naozhongqiyongFlag=0;
  105.   led=1;

  106.   while(1)
  107.    {

  108.           TimeCompate();
  109.      if(k1==0)
  110.        {
  111.          delay_5ms();
  112.           if(k1==0)        //判斷按鍵是否按下
  113.             {  
  114.              second=0;
  115.                        while(k1==0);                                     
  116.             }
  117.         }
  118.      if(k2==0)                //判斷按鍵是否按下
  119.         {
  120.           delay_5ms();
  121.           if(k2==0)
  122.             {
  123.               minite++;
  124.               if(minite==60)  minite=0;
  125.                           while(k2==0);
  126.             }
  127.         }
  128.      if(k3==0)                    //判斷按鍵是否按下
  129.         {
  130.           delay_5ms();
  131.           if(k3==0)
  132.             {
  133.               hour++;
  134.               if(hour==24)  hour=0;
  135.               while(k3==0)
  136.                    {for(j=0;j<8;j++)              //掃描顯示程序,循環(huán)有8次,01234567.
  137.                    disp(k[j],j);               //掃描顯示程序
  138.                                             }                           
  139.             }
  140.         }

  141.         //////////////////////////////////////////////////////////////////////
  142.                
  143.                  if(k4==0)                    //判斷按鍵是否按下
  144.         {
  145.           delay_5ms();
  146.           if(k4==0)
  147.             {
  148.               while(k4==0)
  149.                                    {
  150.                     for(p=0;p<8;p++)
  151.                      disp00(k00[p],p);  
  152.                                                         TimeCompate();
  153.                                      ;
  154.                  }                          
  155.             }
  156.         }

  157.     ///////////////////////////////////////////////////////////////////////////////
  158.          if(k5==0)                    //判斷按鍵是否按下
  159.         {
  160.           delay_5ms();
  161.           if(k5==0)
  162.             {
  163.                           second00=57;
  164.               minite00=0;
  165.               hour00=0;


  166.               while(k5==0)
  167.                                    {
  168.                     for(p=0;p<8;p++)
  169.                      disp00(k00[p],p);  
  170.                                      ;
  171.                  }                          
  172.             }
  173.         }
  174. //////////////////////////////////////////////////////////////////////////////////////
  175. if(k6==0)                    //判斷按鍵是否按下
  176.         {
  177.           delay_5ms();
  178.           if(k6==0)
  179.             {
  180.              naozhongqiyongFlag=~naozhongqiyongFlag;
  181.                                  led=~led;
  182.                                   
  183.               while(k6==0)
  184.                                    {
  185.                   ;
  186.                  }                          
  187.             }
  188.         }

  189.    ////////////////////////////////////////////////////////////////////////////////////
  190.       for(j=0;j<8;j++)              //掃描顯示程序,循環(huán)有8次,01234567.
  191.       disp(k[j],j);               //掃描顯示程序
  192.   ////////////////////////////////////////////////////////////////////////////////////

  193.       TimeCompate();
  194.   ////////////////////////////////////////////////////////////////////////////////////



  195.    
  196.    }
  197. }
  198. ////////////////*定時器工作方式*/ /////////////////////////////////
  199. void t0(void) interrupt 1  /*定時器工作方式*/  using 0   //工作寄存器
  200. {
  201.   num++;
  202.   
  203.   if(num==20)
  204.     {
  205.       num=0;
  206.       second++;
  207.       if(second==60)
  208.         {
  209.           second=0;
  210.           minite++;
  211.           if(minite==60)
  212.             {
  213.               minite=0;
  214.               hour++;                                  
  215.               if(hour==24)
  216.                 {
  217.                   hour=0;
  218.                 }
  219.              }
  220.          }
  221.      k[0]=second%10;     //各位
  222.      k[1]=second/10;         //各十位
  223.      k[3]=minite%10;        //各位
  224.      k[4]=minite/10;      //各十位
  225.      k[6]=hour%10;        //各位
  226.      k[7]=hour/10;        //各十位

  227.     }
  228.   num00++;
  229.   if(num00==20)
  230.     {
  231.       num00=0;
  232.       second00++;
  233.       if(second00==60)
  234.         {
  235.           second00=0;
  236.           minite00++;
  237.           if(minite00==60)
  238.             {
  239.               minite00=0;
  240.               hour00++;
  241.               if(hour00==99)
  242.                 {
  243.                   hour00=0;
  244.                 }
  245.              }
  246.          }
  247.                              k00[0]=second00%10;         //各位
  248.               k00[1]=second00/10;         //各十位
  249.               k00[3]=minite00%10;         //各位
  250.               k00[4]=minite00/10;         //各十位
  251.               k00[6]=hour00%10;           //各位
  252.               k00[7]=hour00/10;           //各十位
  253.      }



  254.   
  255.   
  256.    TH0=-50000/256;
  257.    TL0=-50000%256;
  258.    
  259. }
復制代碼



作者: 孫文忠    時間: 2014-3-15 21:43
謝謝分享。!51黑有你更精彩!
作者: 不煽情的橙子    時間: 2014-3-17 10:31
下下來看看吧
作者: 鑫源99    時間: 2014-3-18 07:57
下來學習,先謝了
作者: 知秋一葉    時間: 2014-3-18 08:19
學習學習

作者: zxf88welding    時間: 2014-3-21 22:28

下下來看看吧
作者: yhu168    時間: 2014-3-25 14:14
不錯,值的收藏
作者: k499138416    時間: 2014-3-25 15:08
謝謝分享
作者: keepit    時間: 2014-4-2 09:42
謝謝分享
作者: liuyijiao    時間: 2014-7-4 16:18
謝謝分享。!
作者: 云不肯說    時間: 2014-12-16 19:58
來學習的。。。。。。。。。。。。。。。。。
作者: 意動神飛    時間: 2014-12-16 22:13
下來學習

作者: 星星一眨眼    時間: 2014-12-17 13:27
學習學習也想作一個
作者: 還在jl懂    時間: 2014-12-17 15:07
下載試試看
作者: 還在jl懂    時間: 2014-12-17 15:08
我先下載試試看
作者: 還在jl懂    時間: 2014-12-17 15:08
我先下載試試看
作者: 還在jl懂    時間: 2014-12-17 15:08
我先下載試試看
作者: aaaaabbbbb    時間: 2014-12-17 15:14
先看看
作者: 中奧ol    時間: 2014-12-18 18:26
看一下
作者: 阿斯達    時間: 2014-12-28 23:44
真的假的呀
作者: lxl2255    時間: 2015-1-7 11:06
good  想看看
作者: AOP    時間: 2015-2-8 17:40
看看再說..................
作者: 維超    時間: 2015-2-8 21:12
先下來看看。感謝!
作者: 維超    時間: 2015-2-8 21:15
M幣扣了下載沒到
作者: 維超    時間: 2015-2-8 21:16
M幣扣了下載沒到
作者: xsynet    時間: 2015-2-10 10:43
太好了,謝謝
作者: xsynet    時間: 2015-2-10 10:43
樓主很強大,學習了
作者: 星星一眨眼    時間: 2015-2-15 19:51
看看學習學習
作者: w2015x    時間: 2015-3-5 18:23
先看看什么鬧鐘
作者: lmn2005    時間: 2015-3-5 19:38
是用1302還是單片機定時器?
作者: wztq    時間: 2015-7-4 15:18
可以嗎?
作者: jinzhenhuaj    時間: 2015-10-28 17:21
很想做一個
作者: wangxiaomi    時間: 2015-11-1 19:31
挺好的
作者: jahgagjagj    時間: 2015-11-14 11:22
下載試試看
作者: aidanpianji    時間: 2015-11-14 11:48
如果用DS1302就好了
作者: wxgzf    時間: 2015-11-20 14:25
要是增加1302時鐘芯片就更好了。
作者: czfczf11    時間: 2015-12-7 16:39
學習學習
作者: 炮打蚊子    時間: 2015-12-7 19:56
要是增加1302時鐘芯片就更好了。
作者: bxyyhan    時間: 2015-12-24 13:57
挺好的,已經(jīng)下載了·1,
作者: 1490065869    時間: 2016-5-8 13:45
怎么讓它響啊  怎么定時啊
作者: YBZYBZ    時間: 2016-5-9 21:21
樓主發(fā)個電路圖
作者: ls0899    時間: 2016-5-9 21:44
為什么用2個4位的,不能用1個8位的嗎
作者: zhaodw9527    時間: 2016-5-9 22:04
都是大牛啊
作者: WUHANGG    時間: 2016-6-8 22:09
真心不錯的資料
作者: hantp    時間: 2016-6-16 11:11
真的沒看明白,是這樣吧=段碼送 P0 口,位碼送 P2 口,P1.0~P1.7 調(diào)整。
作者: 雙贏電子    時間: 2016-6-16 14:12
不錯的資料,謝謝分享
作者: 守望    時間: 2016-9-8 09:36
不錯,為分享點贊
作者: 張科    時間: 2016-9-23 17:18
ls0899 發(fā)表于 2014-3-9 16:26
先下來看看,怎么沒人下,順便把樓主的源碼貼出來 給大家省51黑電子論壇的黑幣啊

什么都看不到 說好的PCB文件也看不見
作者: 軒轅淺烙    時間: 2016-12-18 12:00
正好需要
作者: 軒轅淺烙    時間: 2016-12-18 12:02
謝謝樓主
作者: 白色的點點    時間: 2016-12-22 18:24
謝謝,下載學習
作者: 白色的點點    時間: 2016-12-22 18:24
謝謝樓主,好人一生平安
作者: kkヤ    時間: 2016-12-26 00:00
試試看,感謝分享
作者: hd1648    時間: 2017-2-24 17:04
ls0899 發(fā)表于 2014-3-9 16:26
先下來看看,怎么沒人下,順便把樓主的源碼貼出來 給大家省51黑電子論壇的黑幣啊


6666666
作者: zhouqiang    時間: 2017-2-24 20:48
支持支持!
作者: qwchen    時間: 2017-2-25 10:22
學習中
作者: csz9981    時間: 2017-2-26 13:19
本人做的單片機鬧鐘,還不錯啊,   [復制鏈接]
作者: a598089072    時間: 2017-2-26 13:46
P0口沒有接上拉電阻
作者: hi666    時間: 2017-3-6 12:06
學習。。謝謝分享
作者: 51busy    時間: 2017-11-1 14:28
學習學習學習
作者: yatou520    時間: 2017-11-10 09:22
下載下來試試看,學習學習
作者: yatou520    時間: 2017-11-10 09:30
下載下來看看,謝謝樓主
作者: 榆林上校    時間: 2017-11-12 09:46
謝謝樓主分享,下載看看
作者: HLW丫丫    時間: 2018-6-7 15:56
維超 發(fā)表于 2015-2-8 21:15
M幣扣了下載沒到

我的也是
作者: 張先森~    時間: 2018-6-10 13:16
下載學習學習
作者: No_Regret    時間: 2018-8-11 16:02
好好學習,天天向上
作者: pzy不懂    時間: 2018-8-11 18:24
樓主厲害
作者: 我真厲害    時間: 2018-8-11 20:48
樓主,鬧鐘你大概搞了多久啊,感覺搞不出啊
作者: 文鳳軒    時間: 2018-8-16 17:11
學習一下,謝謝分享




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1