久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 單片機(jī)時(shí)分秒時(shí)鐘程序設(shè)計(jì) [打印本頁(yè)]

作者: a984458841    時(shí)間: 2019-10-17 19:17
標(biāo)題: 單片機(jī)時(shí)分秒時(shí)鐘程序設(shè)計(jì)
·       1.本設(shè)計(jì)采用STC89C51/52或AT89C51/52或AT89S51/52單片機(jī)做為主控制器;
·       2.采用74HC573驅(qū)動(dòng)數(shù)碼管顯示;
·       3.功能:六位數(shù)碼管顯示時(shí)分秒,整點(diǎn)半點(diǎn)報(bào)時(shí),夜間只有燈光提醒
·       4.采用二十四小時(shí)制
·       5.到整點(diǎn)時(shí)長(zhǎng)鳴1次,LED閃爍10次
·       6.到半點(diǎn)時(shí)短促鳴響1次,LED閃爍5次


使用方法:
三個(gè)按鍵一個(gè)是小時(shí)加,一個(gè)是分加,一個(gè)是秒清零。
開(kāi)機(jī)數(shù)碼管顯示12.30.00是12點(diǎn)30分0秒的意思。


制作出來(lái)的實(shí)物圖如下:


單片機(jī)源程序如下:
  1. /************************************************************
  2. 作品名字:簡(jiǎn)易聲光報(bào)時(shí)時(shí)鐘  
  3. 功能:六位數(shù)碼管顯示時(shí)分秒,整點(diǎn)半點(diǎn)報(bào)時(shí) ,夜間只有燈光提醒   
  4. 二十四小時(shí)制
  5. 到整點(diǎn)時(shí)長(zhǎng)鳴1次,LED閃爍10次  
  6. 到半點(diǎn)時(shí)短促鳴響1次,LED閃爍5次  
  7. 制作說(shuō)明:P0接數(shù)碼管段選,P2低6位接數(shù)碼管位   
  8.    
  9. **************************************************************/
  10. #include<reg52.h> //頭文件
  11. #define uc unsigned char //宏定義
  12. #define ui unsigned int    //宏定義
  13. sbit LED=P3^3;//定義LED
  14. sbit key1=P3^4;//定義調(diào)小時(shí)
  15. sbit key2=P3^5;//定義調(diào)分鐘
  16. sbit key3=P3^6;//定義秒清零
  17. sbit beep=P3^7;//設(shè)蜂鳴器  
  18. uc min,hour,sec,led,num; //無(wú)符號(hào)字符型變量
  19. bit bdata hourLED,halfLED,hourbeep,halfbeep; //位變量
  20. uc code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*0,1,2,3,4,5,6,7,8,9,.*///共陰極編碼
  21. void delay(ui x)//1ms延時(shí)函數(shù)
  22. {
  23.     ui i,j;
  24.     for(i=0;i<x;i++)
  25.     for(j=0;j<121;j++);
  26. }
  27. void display()//掃描顯示函數(shù),高位到低位
  28. {
  29.     P0=tab[hour/10];//給小時(shí)的十位送形
  30.     P2=0xdf;//11011111 //位選
  31.     delay(1); //延時(shí)動(dòng)態(tài)掃描
  32.     P2=0xff;  //關(guān)閉位選

  33.     P0=(tab[hour%10])|0x80;//給第二位后加“點(diǎn)
  34.     P2=0xef;//11101111
  35.     delay(1);
  36.     P2=0xff;

  37.     P0=tab[min/10];
  38.     P2=0xf7;//11110111
  39.     delay(1);
  40.     P2=0xff;

  41.     P0=(tab[min%10])|0x80;//給第四位后加“點(diǎn)”
  42.     P2=0xfb;//11111011
  43.     delay(1);
  44.     P2=0xff;

  45.     P0=tab[sec/10];
  46.     P2=0xfd;//11111101
  47.     delay(1);
  48.     P2=0xff;

  49.     P0=tab[sec%10];
  50.     P2=0xfe;//11111110
  51.     delay(1);
  52.     P2=0xff;
  53. }

  54. void keyscan()//鍵盤(pán)掃描,開(kāi)關(guān)接地
  55. {
  56.     if(key1==0)     //如果小時(shí)加按鍵按下
  57.     {
  58.         delay(5);  //延時(shí)去抖
  59.         if(key1==0)     //確定是否按鍵
  60.         {
  61.             hour++;     //小時(shí)加一
  62.             if(hour==24) //如果小時(shí)等于24
  63.             hour=0;        //小時(shí)歸零
  64.         }
  65.         while(!key1) display();//判斷是否松開(kāi)
  66.     }
  67.     if(key2==0)      //如果分鐘加按鍵按下
  68.     {
  69.         delay(5);  //延時(shí)去抖
  70.         if(key2==0)    //確定是否按鍵
  71.         {
  72.             min++; //分鐘加一
  73.             if(min==60)// 如果分鐘等于60
  74.             min=0;    //分鐘歸零
  75.         }
  76.         while(!key2) display();//判斷是否松開(kāi)
  77.     }
  78.     if(key3==0)//判斷調(diào)整秒按鍵
  79.     {
  80.         delay(5);  //延時(shí)去抖
  81.         if(key3==0)    //確定是否按鍵
  82.         {sec=0;} //秒清零
  83.         while(!key3) display();//判斷是否松開(kāi)
  84.     }
  85. }
  86. void strike()//報(bào)時(shí)函數(shù)
  87. {
  88.     if((hour>6)&&(hour<22))//判斷大于6點(diǎn)并且小于22點(diǎn)
  89.     {
  90.         if(sec==0)//以下判斷是否整點(diǎn)
  91.         {
  92.             if(min==0)//如果秒和分都等于0
  93.             {
  94.                 hourbeep=1;    //那么蜂鳴器和小燈位開(kāi)啟
  95.                 hourLED=1;
  96.             }
  97.             else if(min==30)//如果分鐘等于30
  98.             {
  99.                 if(num<10)    //閃5下響一聲
  100.                 halfbeep=1;
  101.                 halfLED=1;
  102.             }
  103.         }
  104.     }
  105.     else //小于6點(diǎn)和大于22點(diǎn)的時(shí)候
  106.     {
  107.         if(sec==0)//以下判斷是否整點(diǎn)
  108.         {
  109.             if(min==0)//如果分鐘等于0
  110.             hourLED=1; //led位開(kāi)
  111.             else if(min==30)//如果分鐘=0
  112.             halfLED=1;//進(jìn)行半點(diǎn)報(bào)時(shí)
  113.         }
  114.     }
  115. }

  116. void init()//初始化函數(shù)
  117. {
  118.     sec=0;//一通電,顯示12:30:00,蜂鳴器響一下
  119.     min=30;
  120.     hour=12;
  121.     TMOD=0x01;//設(shè)置定時(shí)器為定時(shí)器0工作方式為1
  122.     TH0=(65536-50000)/256;    //賦初值
  123.     TL0=(65536-50000)%256;  //賦初值
  124.     EA=1; //開(kāi)總中斷
  125.     ET0=1; //開(kāi)定時(shí)器0中斷
  126.     TR0=1; //啟動(dòng)定時(shí)器0
  127. }

  128. void main()//主函數(shù)
  129. {
  130.     init();//初始化
  131.     while(1) //主循環(huán)
  132.     {
  133.         display(); //顯示
  134.         keyscan();//掃描是否有鍵按下
  135.         strike();//報(bào)時(shí)函數(shù)
  136.     }
  137. }
  138. void time0() interrupt 1  //定時(shí)器中斷
  139. {
  140.     TH0=(65536-50000)/256;//重賦初值
  141.     TL0=(65536-50000)%256;//重賦初值
  142.     num++;
  143.     if((num%10==0)&&(hourLED==1)) //整點(diǎn)報(bào)時(shí)
  144.     {
  145.         led++;
  146.         LED=~LED;//取反實(shí)現(xiàn)閃爍
  147.         if(led==20)    //閃10次
  148.         {
  149.             led=0;    //之后關(guān)閉閃爍
  150.             LED=1;
  151.             hourLED=0;
  152.         }
  153.     }
  154.     else if((num%10==0)&&(halfLED==1))//半點(diǎn)報(bào)時(shí)
  155.     {
  156.         led++;
  157.         LED=~LED; //取反實(shí)現(xiàn)閃爍
  158.         if(led==10)//閃5次
  159.         {
  160.             led=0; //關(guān)閉閃爍
  161.             LED=1;
  162.             halfLED=0;
  163.         }
  164.     }
  165.     if(hourbeep==1)    //蜂鳴器響標(biāo)志位
  166.     {
  167.         if(num==1)
  168.         beep=0;
  169.         if(num==20)     //長(zhǎng)響次之后
  170.         {
  171.             beep=1;      //關(guān)閉
  172.             hourbeep=0;
  173.         }
  174.     }
  175.     else if(halfbeep==1) //蜂鳴器響標(biāo)志位
  176.     {
  177.         if(num<10)
  178.         beep=0;
  179.         if(num==10)     //短響之后
  180.         {
  181.             beep=1;     //關(guān)閉
  182.             halfbeep=0;
  183.         }
  184.     }
  185.     if(num==20)    //計(jì)時(shí)20次為1s時(shí)間
  186.     {
  187.         num=0;   
  188.         sec++;    //秒加一
  189.         if(sec==60)//如果秒等于60
  190.         {
  191.             sec=0; //秒歸零
  192.             min++; //分鐘加一
  193.             if(min==60)//如果分鐘等于60
  194.             {
  195.                 min=0; //分鐘歸零
  196.                 hour++;    //小時(shí)加一
  197.                 if(hour==24) //如果小時(shí)等于24
  198.                 {hour=0;}//小時(shí)歸零
  199.             }
  200.         }
  201.     }
  202. }

復(fù)制代碼


全部資料51hei下載地址:
時(shí)分秒時(shí)鐘.7z (8.5 MB, 下載次數(shù): 23)


作者: maxiden    時(shí)間: 2019-12-2 13:21
很有幫助




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲国产精品一区二区三区 | 亚洲精品一区二区三区中文字幕 | 久久精品毛片 | 欧美福利视频一区 | 福利久久| 99久久精品免费看国产四区 | 欧美一二三区 | 国产视频中文字幕在线观看 | 欧美成年视频 | 九九热在线免费视频 | 国产精品欧美一区二区 | 欧美精品一区三区 | 高清视频一区二区三区 | 天天爽天天操 | 操久久 | 大伊人久久 | 婷婷中文在线 | h视频在线免费观看 | 激情六月丁香婷婷 | 国产一区高清 | 国产高潮av | 五月天激情电影 | 天堂色 | 亚洲国产成人久久久 | 久草在线中文888 | 久久激情视频 | 日韩在线观看视频一区 | 狠狠干天天干 | 日韩在线不卡视频 | 日韩av最新网址 | 午夜久久久久久久久久一区二区 | 国产免费一区二区三区最新6 | www.青青草 | 国产乱xxav| 亚洲在线 | 久久精品欧美视频 | www.成人.com | 精品国产一区二区三区免费 | 亚洲高清在线 | 国产一区二区 | 九色视频网站 |