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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機電子時鐘+萬歷表+鬧鐘(代碼+原理圖+PCB文件)

[復制鏈接]
跳轉到指定樓層
樓主
                        電 子 時 鐘 萬 年 歷 + 鬧 鐘 設 置
實 現 功 能 :1 . 一 上 電 顯 示 00-00-00 ,且 ‘-’ 一 秒 閃 爍 一 次
                    2 . 按 鍵 功 能 :
                      k1:設 置 位
                      k2:加 位
                      k3:減 位
                      k4:萬 年 歷 、鬧 鐘 、時 鐘 切 換 位      
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)

單片機源程序如下:
  1. /********************************************************
  2.                         電 子 時 鐘 萬 年 歷 + 鬧 鐘 設 置
  3. 實 現 功 能 :1 . 一 上 電 顯 示 00-00-00 ,且 ‘-’ 一 秒 閃 爍 一 次
  4.                       2 . 按 鍵 功 能 :
  5.                             k1:設 置 位
  6.                             k2:加 位
  7.                       k3:減 位
  8.                       k4:萬 年 歷 、鬧 鐘 、時 鐘 切 換 位                                   
  9. *********************************************************/
  10. #include <reg52.h>
  11. typedef         unsigned char u8;
  12. typedef  unsigned int  u16;

  13. u16 i,j,k;
  14. u8 anjian,jia,jian,beep;
  15. u8 sec,min,hour,shine;
  16. u8 N_sec,N_min,N_hour;                //鬧鐘
  17. u8 shine1;
  18. u16 year=2019,month=6,day=17;

  19. sbit buzzer=P3^7;
  20. sbit k2=P3^1;
  21. sbit k1=P3^0;
  22. sbit k3=P3^2;
  23. sbit k4=P3^3;

  24. u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00}; //數碼管顯示0123456789- 空

  25. u8 code smgwei[]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c};         //選擇1-8位數碼管

  26. /********延時函數*************/
  27. void delay(i)
  28. {
  29.         while(i--);
  30. }

  31. /***********數碼管段位選********/
  32. void time(j,k)
  33. {        
  34.         P2=smgwei[j];          //數碼管位選
  35.         P0=smgduan[k];          //數碼管段選
  36.         delay(100);                  //間隔一段時間
  37. }

  38. /**********數碼管時間循環流動**********/
  39. void time_Display()
  40. {
  41.    if(shine == 1)    //3、6位數碼管'-'閃爍
  42.         {
  43.                  time(2,11);
  44.                  time(5,11);           
  45.         }
  46.         else if(shine==0)
  47.         {
  48.                  time(2,10);
  49.                  time(5,10);
  50.         }

  51.    if(anjian==0)        //一上電,時鐘顯示00-00-00
  52.           {
  53.             time(0,sec%10);
  54.                 time(1,sec/10);
  55.                 time(3,min%10);
  56.                 time(4,min/10);
  57.                 time(6,hour%10);
  58.                 time(7,hour/10);
  59.         }

  60.         else if(anjian==1)        //切換設置模式,選擇位為秒位
  61.         {
  62.                 TR0=0;                        //關閉定時器0,在設置模式下時鐘不運行
  63.                 TR1=1;                        //打開定時器1,開始計數
  64.         if(shine1<=50)        //在shine1為0-50區間內,即1秒滅
  65.         {
  66.                 time(0,11);
  67.                 time(1,11);
  68.         }
  69.         else if((shine1>50)&&(shine1<=100))         //在shine1為50-100區間內,即1秒亮
  70.         {
  71.                 time(0,sec%10);
  72.                 time(1,sec/10);
  73.         }
  74.                 time(3,min%10);        //其他不變
  75.             time(4,min/10);
  76.             time(6,hour%10);
  77.              time(7,hour/10);
  78.         }

  79.         else if(anjian==2)        //設置模式下,選擇位為分位
  80.         {
  81.                 TR0=0;                        //關閉定時器0,在設置模式下時鐘不運行
  82.                 TR1=1;                        //打開定時器1,開始計數
  83.                 if(shine1<=50)        //在shine1為0-50區間內,即1秒滅
  84.                 {
  85.                         time(3,11);
  86.                         time(4,11);
  87.             }
  88.            else if((shine1>50)&&(shine1<=100)) //在shine1為50-100區間內,即1秒亮
  89.            {
  90.                  time(3,min%10);
  91.              time(4,min/10);
  92.            }
  93.             time(0,sec%10);        //其他不變           
  94.              time(1,sec/10);
  95.                 time(6,hour%10);
  96.              time(7,hour/10);
  97.         }
  98.         else if(anjian==3)        //設置模式下,選擇位為時位
  99.         {
  100.                 TR0=0;                        //關閉定時器0,在設置模式下時鐘不運行
  101.                 TR1=1;                        //打開定時器1,開始計數
  102.                 if(shine1<=50)        //在shine1為0-50區間內,即1秒滅
  103.                 {
  104.                         time(6,11);
  105.                         time(7,11);
  106.                         }
  107.                 else if((shine1>50)&&(shine1<=100))        //在shine1為50-100區間內,即1秒亮
  108.                 {
  109.                         time(6,hour%10);
  110.                         time(7,hour/10);
  111.                 }
  112.                         time(0,sec%10);         //其他不變
  113.                         time(1,sec/10);
  114.                         time(3,min%10);
  115.                         time(4,min/10);
  116.                 }

  117.         //k2加一功能        
  118.         if(jia==1&&anjian==1)  //選擇秒位時,按下k2加一
  119.         {        
  120.                 jia=0;
  121.                 sec++;
  122.                 if(sec>59)
  123.                 sec=0;
  124.                 TR0=0;                          //時鐘暫停
  125.         }

  126.         if(jia==1&&anjian==2)        //選擇分位時,按下k2加一
  127.         {        
  128.                 jia=0;
  129.                 min++;
  130.                 if(min>59)
  131.                 min=0;
  132.                 TR0=0;                           //時鐘暫停
  133.         }

  134.         if(jia==1&&anjian==3)  //選擇時位時,按下k2加一
  135.         {        
  136.                 jia=0;
  137.                 hour++;
  138.                 if(hour==24)
  139.                 hour=0;
  140.                 TR0=0;                           //時鐘暫停
  141.         }

  142.         //k3減一功能
  143.         if(jian==1&&anjian==1)        //選擇秒位時,按下k3減一
  144.         {        
  145.                 jian=0;
  146.                 sec--;
  147.                 if(sec==-1)
  148.                 sec=59;
  149.                 TR0=0;                                //時鐘暫停
  150.         }
  151.         if(jian==1&&anjian==2)        //選擇分位時,按下k3減一
  152.         {        
  153.                 jian=0;
  154.                 min--;
  155.                 if(min==-1)
  156.                 min=59;
  157.                 TR0=0;                            //時鐘暫停
  158.         }


  159.         if(jian==1&&anjian==3)        //選擇時位時,按下k3減一
  160.         {        
  161.                 jian=0;
  162.                 hour--;
  163.                 if(hour==-1)
  164.                 hour=23;
  165.                 TR0=0;                            //時鐘暫停
  166.         }
  167. }
復制代碼
詳細代碼在附件中


全部資料51hei下載地址:
51單片機電子時鐘 萬歷表 鬧鐘(代碼 原理圖 PCB).zip (2.04 MB, 下載次數: 146)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:409824 發表于 2019-7-10 10:48 | 只看該作者
里面文件少了,和帖子里面的有誤差
回復

使用道具 舉報

板凳
ID:323044 發表于 2019-7-10 12:09 | 只看該作者
電子愛好者1號 發表于 2019-7-10 10:48
里面文件少了,和帖子里面的有誤差

少了啥?
回復

使用道具 舉報

地板
ID:782897 發表于 2020-6-18 15:08 來自手機 | 只看該作者
老哥,仿真圖不來一張?
回復

使用道具 舉報

5#
ID:1091598 發表于 2024-6-4 12:14 | 只看該作者
請問燒錄口是在USB口嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩久久精品视频 | 欧美日本在线观看 | 一区二区免费在线 | 亚洲精品电影网在线观看 | 日韩国产一区二区三区 | 性做久久久久久免费观看欧美 | 红桃成人在线 | 中文字幕精品视频 | 欧美精品一区二区三区在线播放 | 亚洲午夜精品一区二区三区他趣 | 午夜影院在线播放 | 国产一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 日本精品一区二区 | 欧美成年人 | 亚洲一区二区久久 | 日韩午夜网站 | 天天干狠狠操 | 成人av一区| 日本成人午夜影院 | 国产免费av在线 | 国产一区三区在线 | 免费观看一级黄色录像 | 亚洲成人综合社区 | 激情国产| 97精品久久 | 国产一级影片 | 美女黄色在线观看 | 国产99久久| 99国产欧美| 久色网 | 青青久久 | 亚洲精品视频在线观看免费 | 欧美夜夜 | 亚洲一区二区三区在线 | 久久免费高清 | 美国a级毛片免费视频 | 国产成人精品一区二区 | 色999视频 | 国产精品久久久久久婷婷天堂 | 亚洲视频在线看 |