欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 以單片機(jī)為核心的廚房定時(shí)器設(shè)計(jì) [打印本頁(yè)]

作者: 唐晨晨    時(shí)間: 2018-6-11 10:18
標(biāo)題: 以單片機(jī)為核心的廚房定時(shí)器設(shè)計(jì)
這是我花了兩個(gè)星期做的以單片機(jī)為核心的廚房定時(shí)器報(bào)警電路設(shè)計(jì)其實(shí)功能有 啟動(dòng) 暫停 加一 減一
第一次發(fā)帖,希望大家體諒


電路原理圖如下:


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

  5. *8位數(shù)碼管顯示 時(shí)間格式格式 12-08-00 標(biāo)示12點(diǎn)08分00秒

  6. S1 用于小時(shí) 加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í)函數(shù)
  20. {
  21. while(--cnt);
  22. }


  23. void Displaypro(void)
  24. {

  25.                 StrTab[0]=tab[hour/10];    //顯示正常時(shí)間
  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;//定時(shí)器0 10ms in 12M crystal 用于計(jì)時(shí)
  39.         TH0=0xd8;
  40.         TL0=0xf0;
  41.         ET0=1;
  42.         TR0=1;

  43.     TMOD |=0x10; //定時(shí)器1用于動(dòng)態(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去抖以及動(dòng)作
  56.     {
  57.     delay(10000);
  58.     if(!KEY1)
  59.            {         
  60.              hour++;if(hour==24)hour=0;     //正常時(shí)間 小時(shí) 加1
  61.          Displaypro();
  62.            }
  63.         }
  64. ////////////////////////////////////////////////////////////////
  65. /////////////////////////////////////////////////////////////////
  66.   if(!KEY2) //按鍵去抖以及動(dòng)作
  67.     {
  68.     delay(10000);
  69.     if(!KEY2)
  70.            {
  71.             minute++;if(minute==59)minute=0;//分加1
  72.             Displaypro();
  73.           }
  74.         }
  75. /////////////////////////////////////////////////////////////////
  76.   if(!KEY3) //按鍵去抖以及動(dòng)作
  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. /*      定時(shí)中斷1                */
  90. /********************************/
  91. void time1_isr(void) interrupt 3 using 0//定時(shí)器1用來(lái)動(dòng)態(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ū)的值進(jìn)行掃描
  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個(gè)數(shù)碼管
  108. if(num==8)
  109.    num=0;
  110. }
  111. //////////////////////////////////////////////////////////////////
  112. /********************************/
  113. /*      定時(shí)中斷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(); //隔一定時(shí)間調(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++;  //時(shí)加1
  145.                    if(hour==24)
  146.                       hour=0;
  147.                   }  
  148.       
  149.            }
  150.    
  151.    }

  152. }
復(fù)制代碼

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



作者: bayga456    時(shí)間: 2018-6-11 23:24
鼓勵(lì)動(dòng)手。這具體的作用是什么?




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