<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發(fā)網(wǎng)

      電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
      搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機(jī) >> 正文

      C51定時(shí)鬧鐘程序

      作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2011-3-31
      #include<reg52.h> //頭文件
      #include<intrins.h>
      #define uchar unsigned char//宏定義
      #define uint  unsigned int
      sbit key1=P3^5;   //位聲明
      sbit key2=P3^6;
      sbit key3=P3^7;
      sbit fmq=P2^0;
      uchar code table[]={0x3f,0x06,0x5b,//數(shù)碼管顯示的數(shù)值
      0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
      0xbf,0x86,0xdb,//帶小數(shù)點(diǎn)的數(shù)值
      0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
      void jia();   //函數(shù)聲明
      void jian();
      uchar table_1[6]; //定義數(shù)組,數(shù)組內(nèi)含有6個(gè)數(shù)值
      uchar table_2[6];
      uchar shi=23,fen=59,miao=50; //顯示初始值
      uchar shi1,fen1,miao1,shi2,fen2,miao2,shi3,fen3,miao3;//定義全局變量
      uchar flag,flag1,cnt,count;//定義全局變量
      void delay(uchar i)  //延時(shí)函數(shù),用于動(dòng)態(tài)掃描數(shù)碼管
      {
           uchar x,y;
           for(x=i;x>0;x--)
                for(y=110;y>0;y--);
      }
      void init()   //初始化函數(shù)
      {
           TMOD=0X01; //工作方式1
           TH0=(65536-50000)/256; //定時(shí)時(shí)間為:50ms
           TL0=(65536-50000)%256;
           ET0=1;     //打開定時(shí)器
           EA=1;    //開總中斷
           TR0=1;    //啟動(dòng)定時(shí)器
      }
      void display()  //顯示子函數(shù),用于顯示時(shí)間數(shù)值
      {
           uchar i,j;
           table_1[0]=miao%10;  //分離秒的各位與十位
           table_1[1]=miao/10;
           table_1[2]=fen%10+11;  //分離分的各位與十位
           table_1[3]=fen/10;
           table_1[4]=shi%10+11; //分離時(shí)的各位與十位
           table_1[5]=shi/10;
           j=0x7f;    //從秒到時(shí)的掃描
           for(i=0;i<6;i++)
           {
            P2=j;
            P0=table[table_1[i]];//顯示數(shù)值
            delay(10);
            j=_cror_(j,1);//循環(huán)右移 
           }
      }
      void display_1() //顯示子函數(shù),用于顯示定時(shí)時(shí)間
      {
           uchar i,j;
           table_2[0]=miao2%10;  //以下含義同上
           table_2[1]=miao2/10;
           table_2[2]=fen2%10+11;
           table_2[3]=fen2/10;
           table_2[4]=shi2%10+11;
           table_2[5]=shi2/10;
           j=0x7f;
           for(i=0;i<6;i++)
           {
                P2=j;
                P0=table[table_2[i]];
                delay(10);
                j=_cror_(j,1); 
           }
      }
      void shijian() //時(shí)間子函數(shù)
      {
           if(flag>=20)  //判斷是否到一秒
           {
                flag=0;  //到了,則標(biāo)志位清零
                miao++;  //秒加1
                if(miao>=60) //判斷秒是否到60s
                {
                     miao=0;//到了,則清零
                     fen++; //分加1
                     if(fen>=59) //以下含義同上
                     {
                          fen=0;
                          shi++;
                          if(shi>23)
                               shi=0;
                     }
                }
           }
      }
      void key_scan() //鍵盤掃描子函數(shù)
      {
           uchar i;   //定義局部變量
           if(key1==0)
           {
                while(!key1)  //防止掉顯
                {
                     if(cnt==0||cnt==1||cnt==2||cnt==3||cnt==4||cnt==8)
                     {
                          display();
                     }
                     if(cnt==5||cnt==6||cnt==7)
                     {
                          display_1();
                     }
                }
                cnt++; //記下按鍵key1按下的次數(shù)
                if(cnt==1) //第一次按下,停止計(jì)數(shù)
                TR0=0;
                if(cnt==2)   //第二次按下
                {
                     miao1=miao; //保存秒的數(shù)值
                     miao=99;//顯示99,表示可以調(diào)節(jié)秒的數(shù)值了 
                     for(i=0;i<100;i++)
                      display(); //顯示99
                     miao=miao1; //恢復(fù)前一刻秒的數(shù)值
                }
                if(cnt==3) //以下含義同上
                {
                     fen1=fen;
                     fen=99; 
                     for(i=0;i<100;i++)
                          display();
                     fen=fen1;
                }
                if(cnt==4)
                {
                     shi1=shi;
                     shi=99; 
                     for(i=0;i<100;i++)
                          display();
                     shi=shi1;
                }
                if(cnt==5)
                {
                     miao1=miao2;
                     miao2=88; 
                     for(i=0;i<100;i++)
                          display_1();
                     miao2=miao1;
                }
                if(cnt==6)
                {
                     fen1=fen2;
                     fen2=88; 
                     for(i=0;i<100;i++)
                          display_1();
                     fen2=fen1;
                }
                if(cnt==7)
                {
                     shi1=shi2;
                     shi2=88;
                     for(i=0;i<100;i++)
                          display_1();
                     shi2=shi1;
                }
                if(cnt==8) //第八次按下
                {
                     TR0=1;  //開始計(jì)數(shù)
                     cnt=0; //按下次數(shù)清零
                }
           }
           if(key2==0)   //判斷key2是否按下
           {
                while(!key2)  //防止掉顯
                {
                     if(cnt==0||cnt==1||cnt==2||cnt==3||cnt==4||cnt==8)
                     {
                          display();
                     }
                     if(cnt==5||cnt==6||cnt==7)
                     {
                          display_1();
                     }
                }
                jia();//調(diào)用加1的子函數(shù) 
           }
           if(key3==0)  //判斷key3是否按下
           {
                while(!key3)  //防止掉顯
                {
                     if(cnt==0||cnt==1||cnt==2||cnt==3||cnt==4||cnt==8)
                     {
                          display();
                     }
                     if(cnt==5||cnt==6||cnt==7)
                     {
                          display_1();
                     }
                }
                jian(); //調(diào)用減1子函數(shù) 
           }
      }
      void jia()   //加1子函數(shù)
      {
           if(cnt==2) //判斷key1按下的次數(shù)是否為2
           {
                miao++; //是,則秒加1
                if(miao>59) //判斷秒是否大于59,是,則秒清零
                     miao=0;
           }
           if(cnt==3) //以下含義同上
           {
                fen++;
                if(fen>59)
                     fen=0;
           }
           if(cnt==4)
           {
                shi++;
                if(shi>23)
                     shi=0;
           }
           if(cnt==5)
           {
                miao2++;
                if(miao2>59)
                     miao2=0;
           }
           if(cnt==6)
           {
                fen2++;
                if(fen2>59)
                     fen2=0;
           }
           if(cnt==7)
           {
                shi2++;
                if(shi2>23)
                     shi2=0;
           }
      }
      void jian()    //減1子函數(shù)
      {
           if(cnt==2) //判斷key1按下的次數(shù)是否為2,是則秒減1
           {
                miao--;
                if(miao==255)  //判斷秒是否減到255,是,則秒清零
                     miao=59;
           }
           if(cnt==3)
           {
                fen--;
                if(fen==255)
                     fen=59;
           }
           if(cnt==4)
           {
                shi--;
                if(shi==255)
                     shi=23;
           }
           if(cnt==5)
           {
                miao2--;
                if(miao2==255)
                     miao2=59;
           }
           if(cnt==6)
           {
                fen2--;
                if(fen2==255)
                     fen2=59;
           }
           if(cnt==7)
           {
                shi2--;
                if(shi2==255)
                     shi2=23;
           }
      }
      void clock() //鬧鈴子函數(shù)
      {
           if(miao2==miao) //顯判斷秒的數(shù)值是否相等
                if(fen2==fen)  //是,在判斷分是否相等
                     if(shi2==shi) //是,再判斷時(shí)是否相等
                     {
                          flag1=0; //是,則標(biāo)志位,flag1清零
                          while(!(flag1==100))  //判斷flag1是否到100
                          {
                               fmq=0;  //沒有,則,繼續(xù)驅(qū)動(dòng)蜂鳴器響,時(shí)間約為:5s
                               shijian(); //調(diào)用時(shí)間子函數(shù)
                               display(); //調(diào)用顯示子函數(shù)   
                          }
                          fmq=1;//關(guān)閉蜂鳴器
                     }
      }
      void main()
      {
           init();//調(diào)用初始化子函數(shù)
           while(1)
           { 
                key_scan(); //調(diào)用鍵盤掃描子函數(shù)
                shijian(); //時(shí)間子函數(shù)
                clock(); //鬧鐘子函數(shù)
                //顯示子函數(shù)
                if(cnt==0||cnt==1||cnt==2||cnt==3||cnt==4||cnt==8)
                {
                     display();
                }
                if(cnt==5||cnt==6||cnt==7)
                {
                     display_1();
                }
           }
      }
      void time0() interrupt 1 //定時(shí)器0
      {
           TH0=(65536-50000)/256; //初值50ms
           TL0=(65536-50000)%256;
           flag++;   //標(biāo)志位
           flag1++;
      }
      Tags:51單片機(jī),定時(shí),鬧鐘程序,時(shí)鐘程序  
      責(zé)任編輯:admin
      請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個(gè)字
      [ 查看全部 ] 網(wǎng)友評(píng)論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁(yè)面
      下到頁(yè)底
      晶體管查詢
      主站蜘蛛池模板: 狠狠色综合网站久久久久久久高清| 久久精品亚洲综合专区| 国产婷婷色综合AV蜜臀AV| 国产91久久综合| 伊人久久综合热线大杳蕉下载| 97久久国产综合精品女不卡| 综合无码一区二区三区四区五区 | 八区精品色欲人妻综合网| 色噜噜狠狠色综合中文字幕| 亚洲AV人无码综合在线观看 | 国内偷自视频区视频综合| 国内精品综合久久久40p| 色综合久久最新中文字幕| 国产精品一区二区综合| 国产精品无码久久综合| 色综合视频一区中文字幕| 国产色婷婷精品综合在线| 91探花国产综合在线精品| 精品第一国产综合精品蜜芽| 国产天天综合永久精品日| 亚洲狠狠成人综合网| 国产精品激情综合久久| 激情综合色五月丁香六月亚洲| 激情五月婷婷综合| 久久久久久综合网天天| 久久久久噜噜噜亚洲熟女综合 | 亚洲国产天堂久久综合网站| 人人狠狠综合久久88成人 | 国内偷自视频区视频综合| 亚洲国产欧洲综合997久久| 色综合久久无码中文字幕| 五月丁香六月综合av| 亚洲伊人色一综合网| 色综合久久久久综合体桃花网| 一本一本久久a久久精品综合麻豆| 久久一日本道色综合久| 久久综合综合久久综合| 亚洲精品二区国产综合野狼| 婷婷五月综合色中文字幕| 天天爱天天做色综合| 综合91在线精品|