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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8164|回復: 4
收起左側

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

[復制鏈接]
ID:323044 發表于 2019-6-26 11:13 | 顯示全部樓層 |閱讀模式
                        電 子 時 鐘 萬 年 歷 + 鬧 鐘 設 置
實 現 功 能 :1 . 一 上 電 顯 示 00-00-00 ,且 ‘-’ 一 秒 閃 爍 一 次
                    2 . 按 鍵 功 能 :
                      k1:設 置 位
                      k2:加 位
                      k3:減 位
                      k4:萬 年 歷 、鬧 鐘 、時 鐘 切 換 位      
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)

PCB

PCB

原理圖

原理圖

單片機源程序如下:
  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. }
復制代碼
詳細代碼在附件中
0.png

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

評分

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

查看全部評分

回復

使用道具 舉報

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 來自觸屏版 | 顯示全部樓層
老哥,仿真圖不來一張?
回復

使用道具 舉報

ID:1091598 發表于 2024-6-4 12:14 | 顯示全部樓層
請問燒錄口是在USB口嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看中文字幕视频 | 久久精品视频网站 | 欧美亚洲国语精品一区二区 | 91精品国产乱码麻豆白嫩 | 毛片一级黄色 | 久久久久综合 | a级毛片基地 | 日本超碰| 午夜手机在线 | 欧美久久国产 | 日韩综合一区 | 午夜久久久久 | av看片| av黄色在线观看 | 特级毛片爽www免费版 | 天天操欧美 | 欧美视频成人 | 国产精品永久 | 亚洲区一区二 | 四虎伊人 | 亚州激情 | 麻豆视频国产在线观看 | 亚洲成人精选 | 亚洲国产精品久久久 | 91精品一区二区三区久久久久久 | 亚洲欧美国产毛片在线 | 午夜视频在线免费观看 | 99国产精品久久久久久久 | 毛片免费在线 | 中文字幕亚洲视频 | 亚洲一区二区三区在线观看免费 | 岛国午夜 | 97caoporn国产免费人人 | 97色在线视频 | 电影在线| www.99re| 91精品国产自产在线老师啪 | 91福利在线导航 | 羞羞的视频免费看 | 精品国产99 | 91视频88av|