找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2254|回復: 1
打印 上一主題 下一主題
收起左側

以單片機為核心的廚房定時器設計

[復制鏈接]
跳轉到指定樓層
樓主
ID:349177 發(fā)表于 2018-6-11 10:18 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
這是我花了兩個星期做的以單片機為核心的廚房定時器報警電路設計其實功能有 啟動 暫停 加一 減一
第一次發(fā)帖,希望大家體諒


電路原理圖如下:


單片機源程序如下:
  1. /*
  2. 1、按鍵可以調(diào)整當時時間
  3. 2、按鍵可以調(diào)節(jié)定時時間
  4. 3、定時時間到繼電器吸合

  5. *8位數(shù)碼管顯示 時間格式格式 12-08-00 標示12點08分00秒

  6. S1 用于小時 加1操作  
  7. S2 用于分鐘 加1操作
  8. S2 用于分鐘減1操作
  9. */

  10. #include <reg52.h>


  11. sbit KEY1=P3^2;
  12. sbit KEY2=P3^3;
  13. sbit KEY3=P3^4;


  14. sbit LED=P1^2;
  15. code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  16.                         //共陰數(shù)碼管 0-9
  17. unsigned char StrTab[8];  //定義緩沖區(qū)
  18. unsigned char minute=30,hour=12,second;  //定義并且初始化值 12:30:00

  19. void delay(unsigned int cnt)//延時函數(shù)
  20. {
  21. while(--cnt);
  22. }


  23. void Displaypro(void)
  24. {

  25.                 StrTab[0]=tab[hour/10];    //顯示正常時間
  26.                         StrTab[1]=tab[hour%10];
  27.                         StrTab[2]=0x40;
  28.                         StrTab[3]=tab[minute/10];
  29.                         StrTab[4]=tab[minute%10];
  30.                         StrTab[5]=0x40;
  31.             StrTab[6]=tab[second/10];
  32.                         StrTab[7]=tab[second%10];
  33.        
  34. }

  35. main()//主函數(shù)
  36. {

  37.    
  38.     TMOD |=0x01;//定時器0 10ms in 12M crystal 用于計時
  39.         TH0=0xd8;
  40.         TL0=0xf0;
  41.         ET0=1;
  42.         TR0=1;

  43.     TMOD |=0x10; //定時器1用于動態(tài)掃描
  44.         TH1=0xF8;
  45.         TL1=0xf0;
  46.         ET1=1;
  47.         TR1=1;
  48.     EA =1;
  49.    

  50. Displaypro();

  51. while(1)//主循環(huán)
  52.   {
  53.    
  54. /////////////////////////////////////////////////////////////////
  55.   if(!KEY1) //按鍵1去抖以及動作
  56.     {
  57.     delay(10000);
  58.     if(!KEY1)
  59.            {         
  60.              hour++;if(hour==24)hour=0;     //正常時間 小時 加1
  61.          Displaypro();
  62.            }
  63.         }
  64. ////////////////////////////////////////////////////////////////
  65. /////////////////////////////////////////////////////////////////
  66.   if(!KEY2) //按鍵去抖以及動作
  67.     {
  68.     delay(10000);
  69.     if(!KEY2)
  70.            {
  71.             minute++;if(minute==59)minute=0;//分加1
  72.             Displaypro();
  73.           }
  74.         }
  75. /////////////////////////////////////////////////////////////////
  76.   if(!KEY3) //按鍵去抖以及動作
  77.     {
  78.     delay(10000);
  79.     if(!KEY3)
  80.            {
  81.             minute--;if(minute==0)minute=59;  //分減1
  82.             Displaypro();
  83.           }
  84.         }
  85.   }
  86. }
  87. ////////////////////////////////////////////////////////////////
  88. /********************************/
  89. /*      定時中斷1                */
  90. /********************************/
  91. void time1_isr(void) interrupt 3 using 0//定時器1用來動態(tài)掃描
  92. {
  93.     static unsigned char num;
  94.     TH1=0xF8;//重入初值
  95.         TL1=0xf0;

  96.         switch (num){
  97.      case 0:P2=0;P0=StrTab[num];break; //分別調(diào)用緩沖區(qū)的值進行掃描
  98.          case 1:P2=1;P0=StrTab[num];break;
  99.          case 2:P2=2;P0=StrTab[num];break;
  100.          case 3:P2=3;P0=StrTab[num];break;
  101.          case 4:P2=4;P0=StrTab[num];break;
  102.          case 5:P2=5;P0=StrTab[num];break;
  103.      case 6:P2=6;P0=StrTab[num];break;
  104.          case 7:P2=7;P0=StrTab[num];break;
  105.          default:break;
  106. }
  107. num++;     //掃描8次,使用8個數(shù)碼管
  108. if(num==8)
  109.    num=0;
  110. }
  111. //////////////////////////////////////////////////////////////////
  112. /********************************/
  113. /*      定時中斷0                */
  114. /********************************/
  115. void tim(void) interrupt 1 using 1
  116. {
  117. static unsigned char count;//定義內(nèi)部靜態(tài)變量

  118. TH0=0xd8;//重新賦值
  119. TL0=0xf0;
  120. count++;
  121.    switch (count)
  122.           {
  123.            case 0:
  124.            case 20:
  125.            case 40:
  126.            case 60:
  127.            case 80:Displaypro(); //隔一定時間調(diào)用顯示處理
  128.                    break;
  129.            case 50:LED=!LED; //半秒 LED閃爍
  130.                    break;
  131.            default:break;
  132.           }

  133. if (count==100)
  134.     {
  135.     count=0;
  136.     second++;//秒加1
  137.         if(second==60)
  138.            {
  139.            second=0;
  140.            minute++; //分加1
  141.            if(minute==60)
  142.                   {
  143.                    minute=0;
  144.                    hour++;  //時加1
  145.                    if(hour==24)
  146.                       hour=0;
  147.                   }  
  148.       
  149.            }
  150.    
  151.    }

  152. }
復制代碼

所有資料51hei提供下載:
203-普通定時器時鐘.zip (26.33 KB, 下載次數(shù): 19)


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

使用道具 舉報

沙發(fā)
ID:162136 發(fā)表于 2018-6-11 23:24 | 只看該作者
鼓勵動手。這具體的作用是什么?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表