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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8447|回復(fù): 9
收起左側(cè)

基于51單片機(jī)的帶鬧鐘整點(diǎn)報(bào)時的數(shù)字鐘設(shè)計(jì),含代碼,原理圖,PCB代碼

  [復(fù)制鏈接]
ID:635913 發(fā)表于 2020-6-10 10:09 | 顯示全部樓層 |閱讀模式
基于51單片機(jī)的數(shù)字鐘設(shè)計(jì),功能如下:1.正常走時   2.整點(diǎn)報(bào)時   3.鬧鐘設(shè)置   4.設(shè)置時數(shù)字高亮

(缺點(diǎn):PCB蜂鳴器正負(fù)需要反一下,自行改)

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
51hei.png 51hei.png

單片機(jī)源程序如下:
  1. #include<reg52.h>

  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. #define K_1 1
  5. #define K_2 2
  6. #define K_3 3
  7. #define K_4 4  

  8. sbit K1=P3^1;                          //功能鍵,按一次調(diào)節(jié)時間,按兩次設(shè)置鬧鐘,按三次確定
  9. sbit K2=P3^0;                          //移位鍵
  10. sbit K3=P3^2;                          //調(diào)時加鍵
  11. sbit K4=P3^3;                          //調(diào)時減鍵
  12. uint w,s,f,m;                        //時分秒
  13. uint s1=0,f1=0,m1=0;        //鬧鐘的時分秒
  14. uint b=0,a=0;                        //記錄K1,K2的鍵值
  15. uint j,i=0;                                //j空循環(huán),i是標(biāo)志,避免開機(jī)鬧鐘響
  16. uint temp=0;                        //判斷掃描標(biāo)志位
  17. uint clock[3];                        //記錄鬧鐘設(shè)置的時間
  18. uint shi=0,fen=0,miao=0;//使對應(yīng)位高亮的標(biāo)志
  19. static int key=0;                //按鍵掃描的鍵值標(biāo)志
  20. sbit speak=P1^5;            //蜂鳴器
  21.         uchar led1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  22. void delay(unsigned int i)                 //延遲函數(shù)
  23. {
  24.         while(i--);
  25. }

  26. void scan(uchar h,uchar m,uchar s) //輸入時分秒
  27. {
  28.         uchar led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  29.         P0=0X00;
  30.         P0=led[s%10];                //秒個位
  31.         P2=0x01;                        //第一位
  32.         for(j=0;j<50;j++);         

  33.         P0=0X00;
  34.         P0=led[s/10];                //秒十位
  35.         P2=0x04;                        //第二位
  36.         for(j=0;j<50;j++);

  37.         P0=0X00;
  38.         P0=led[m%10];                //分個位
  39.         P2=0x08;                        //第三位
  40.         for(j=0;j<50;j++);
  41.         
  42.         P0=0X00;
  43.         P0=led[m/10];                //分十位
  44.         P2=0x0C;                        //第四位
  45.         for(j=0;j<50;j++);

  46.         P0=0X00;
  47.         P0=led[h%10];                //時個位
  48.         P2=0x10;                        //第五位        
  49.         for(j=0;j<50;j++);

  50.         P0=0X00;
  51.         P0=led[h/10];                //時十位
  52.         P2=0x14;                        //第六位        
  53.         for(j=0;j<50;j++);
  54. }

  55. void zoushi() interrupt 1           //走時中斷
  56. {
  57.         TH0=(65536-50000)/256;
  58.         TL0=(65536-50000)%256;
  59.         w++;
  60.         if(w==20)                  //機(jī)器周期計(jì)數(shù)
  61.         {
  62.                 m++;
  63.                 w=0;
  64.                 if(m==60)
  65.                 {
  66.                         f++;
  67.                         m=0;
  68.                         if(f==60)
  69.                         {
  70.                                 s++;
  71.                                 f=0;
  72.                                 if(s==24)
  73.                                         s=0;
  74.                         }
  75.                 }
  76.         }        
  77. }


  78. uint KEY_Scan()                           //按鍵掃描
  79. {
  80.         
  81.         if(K1==0||K2==0||K3==0||K4==0)
  82.         {
  83.                 for(j=0;j<10;j++);
  84.                 key=0;
  85.                 if(K1==0)
  86.                 {
  87.                         return K_1;
  88.                 }
  89.                 else if(K2==0)
  90.                 {
  91.                         return K_2;
  92.                 }
  93.                 else if(K3==0)
  94.                 {
  95.                         return K_3;
  96.                 }
  97.                 else if(K4==0)
  98.                 {
  99.                         return K_4;
  100.                 }
  101.                 else
  102.                         return 0;
  103.         }
  104. }


  105. void xiaoshi()                  //調(diào)節(jié)
  106. {
  107. //                temp=1;
  108.                 key=KEY_Scan();
  109.                 if(key==K_1)
  110.                 {
  111.                         a++;
  112.                         a%=3;
  113.                         while(!K1);
  114. //                                temp=1;//scan(s,f,m);
  115.                 }
  116.                 if(key==K_2)
  117.                 {

  118.                         b++;
  119.                         b%=3;
  120.                         while(!K2);
  121. //                                temp=1;//scan(s,f,m);
  122.                 }
  123.                
  124.                 if(a==1)
  125.                 {
  126.                         P0=0X00;
  127.                         P0=0X06;  
  128.                         P2=0X1c;
  129.                         for(j=0;j<10;j++);
  130.                         temp=1;
  131.                         if(b==0)
  132.                         {
  133.                                 P0=0X00;
  134.                                 P0=0X06;  
  135.                                 P2=0X18;
  136.                                 for(j=0;j<10;j++);
  137.                                 miao=1;
  138.                                 if(key==K_3)
  139.                                 {
  140.                                         if(m==59)
  141.                                                 m=0;
  142.                                         else
  143.                                                 m++;
  144.                                         while(!K3);
  145. //                                                temp=1;//scan(s,f,m);
  146.                                 }
  147.                                 if(key==K_4)
  148.                                 {
  149.                                         if(m==0)
  150.                                                 m=59;
  151.                                         else
  152.                                                 m--;
  153.                                         while(!K4);
  154. //                                                temp=1;//scan(s,f,m);
  155.                                 }
  156.                         }
  157.                         else if(b==1)
  158.                         {
  159.                                 P0=0X00;
  160.                                 P0=0X5B;  
  161.                                 P2=0X18;
  162.                                 for(j=0;j<10;j++);
  163.                                 fen=1;
  164.                                 if(key==K_3)
  165.                                 {
  166.                                         if(f==59)
  167.                                                 f=0;
  168.                                         else
  169.                                                 f++;
  170.                                 
  171.                                         while(!K3);
  172. //                                                temp=1;//scan(s,f,m);
  173.                                 }
  174.                                 if(key==K_4)
  175.                                 {
  176.                                         if(f==0)
  177.                                                 f=59;
  178.                                         else
  179.                                                 f--;
  180.                                 
  181.                                         while(!K4);
  182. //                                                temp=1;//scan(s,f,m);
  183.                                 }
  184.                         }
  185.                         else
  186.                         {
  187.                                 P0=0X00;
  188.                                 P0=0X4F;  
  189.                                 P2=0X18;
  190.                                 for(j=0;j<10;j++);
  191.                                 shi=1;
  192.                                 if(key==K_3)
  193.                                 {
  194.                                         if(s==23)
  195.                                                 s=0;
  196.                                         else
  197.                                                 s++;
  198.                                         while(!K3);
  199. //                                                temp=1;//scan(s,f,m);
  200.                                 }
  201.                                 if(key==K_4)
  202.                                 {
  203.                                         if(s==0)
  204.                                                 s=23;
  205.                                         else
  206.                                                 s--;
  207.                                         while(!K4);
  208. //                                                temp=1;//scan(s,f,m);
  209.                                 }
  210.                         }
  211.                 }

  212.                 else if(a==2)
  213.                 {
  214.                         i=1;
  215.                         P0=0X00;
  216.                         P0=0X5b;  
  217.                         P2=0X1c;
  218.                         for(j=0;j<10;j++);
  219.                         temp=2;
  220.                         if(b==0)
  221.                         {
  222.                                 P0=0X00;
  223.                                 P0=0X06;  
  224.                                 P2=0X18;
  225.                                 for(j=0;j<10;j++);
  226.                                 miao=1;
  227.                                 if(key==K_3)
  228.                                 {
  229.                                         if(m1==59)
  230.                                                 m1=0;
  231.                                         else
  232.                                                 m1++;
  233.                                         clock[0]=m1;
  234.                                         while(!K3);
  235. //                                                temp=1;//scan(s1,f1,m1);
  236.                                 }
  237.                                 if(key==K_4)
  238.                                 {
  239.                                         if(m1==0)
  240.                                                 m1=59;
  241.                                         else
  242.                                                 m1--;
  243.                                         clock[0]=m1;
  244.                                         while(!K4);
  245. //                                                temp=1;//scan(s1,f1,m1);
  246.                                 }
  247. //                                miao=0;
  248.                         }
  249.                         
  250.                         else if(b==1)
  251.                         {
  252.                                 P0=0X00;
  253.                                 P0=0X5B;  
  254.                                 P2=0X18;
  255.                                 for(j=0;j<10;j++);
  256.                                 fen=1;
  257.                                 if(key==K_3)
  258.                                 {
  259.                                         if(f1==59)
  260.                                                 f1=0;
  261.                                         else
  262.                                                 f1++;
  263.                                         clock[1]=f1;
  264.                                         while(!K3);
  265. //                                                temp=1;//scan(s1,f1,m1);
  266.                                 }
  267.                                 if(key==K_4)
  268.                                 {
  269.                                         if(f1==0)
  270.                                                 f1=59;
  271.                                         else
  272.                                                 f1--;
  273.                                         clock[1]=f1;
  274.                                         while(!K4);
  275. //                                                temp=1;//scan(s1,f1,m1);
  276.                                 }
  277. //                                fen=0;
  278.                         }
  279.                         
  280.                         else
  281.                         {
  282.                                 P0=0X00;
  283.                                 P0=0X4F;  
  284.                                 P2=0X18;
  285.                                 for(j=0;j<10;j++);
  286.                                 shi=1;
  287.                                 if(key==K_3)
  288.                                 {
  289.                                         if(s1==23)
  290.                                                 s1=0;
  291.                                         else
  292.                                                 s1++;
  293.                                         clock[2]=s1;
  294.                                         while(!K3);
  295. //                                                temp=1;//scan(s1,f1,m1);
  296.                                 }
  297.                                 if(key==K_4)
  298.                                 {
  299.                                         if(s1==0)
  300.                                                 s1=23;
  301.                                         else
  302.                                                 s1--;
  303.                                         clock[2]=s1;
  304.                                         while(!K4);
  305. //                                                temp=1;//scan(s1,f1,m1);
  306.                                 }
  307. //                                shi=0;
  308.                         }
  309.                                 
  310.                 }

  311.                 else
  312.                 {
  313.                         temp=0;
  314.                 }
  315. }

  316. void nao()                   //鬧鐘
  317. {
  318.         if(i==1)
  319.         {
  320.                 if((m==clock[0])&&(f==clock[1])&&(s==clock[2]))
  321.                 {
  322.                         speak=1;
  323.                         delay(10);
  324.                         speak=0;
  325.                         delay(10);
  326.                 }        
  327.         }
  328.         
  329. }

  330. //void zhengdian()                 //整點(diǎn)報(bào)時
  331. //{
  332. //        if((f==0)&&((m>=0)&&(m<=3)))
  333. //        {
  334. //                speak=1;
  335. //                delay(10);
  336. //                speak=0;
  337. //                delay(10);
  338. //        }
  339. //}

  340. void test()
  341. {
  342.         if(temp==0)                        
  343.                 scan(s,f,m);
  344.         else if(temp==1)
  345.         {
  346.                         
  347.                 if(miao==1)
  348.                 {
  349.                         scan(s,f,m);
  350.                         P0=led1[m%10];
  351.                         P2=0X01;
  352.                         delay(500);
  353.                         P0=led1[m/10];
  354.                         P2=0X04;
  355.                         delay(500);
  356.                         miao=0;
  357.                 }
  358.                 else if(fen==1)
  359.                 {
  360.                         scan(s,f,m);
  361.                         P0=led1[f%10];
  362.                         P2=0X08;
  363.                         delay(500);
  364.                         P0=led1[f/10];
  365.                         P2=0X0C;
  366.                         delay(500);
  367.                         fen=0;
  368.                 }
  369.                 else if(shi==1)
  370.                 {
  371.                         scan(s,f,m);
  372.                         P0=led1[s%10];
  373.                         P2=0X10;
  374.                         delay(500);
  375.                         P0=led1[s/10];
  376.                         P2=0X14;
  377.                         delay(500);
  378.                         shi=0;
  379.                 }
  380.         }

  381.         else
  382.         {
  383.                         
  384.                 if(miao==1)
  385.                 {
  386.                         scan(s1,f1,m1);
  387.                         P0=led1[m1%10];
  388.                         P2=0X01;
  389.                         delay(500);
  390.                         P0=led1[m1/10];
  391.                         P2=0X04;
  392.                         delay(500);
  393.                         miao=0;
  394.                 }
  395.                 else if(fen==1)
  396.                 {
  397.                         scan(s1,f1,m1);
  398.                         P0=led1[f1%10];
  399.                         P2=0X08;
  400. ……………………

  401. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
51hei.png
所有資料51hei提供下載:
基于51的數(shù)字鐘設(shè)計(jì).7z (739.09 KB, 下載次數(shù): 216)

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:773272 發(fā)表于 2020-6-17 11:55 | 顯示全部樓層
有無protues仿真圖?
回復(fù)

使用道具 舉報(bào)

ID:635913 發(fā)表于 2020-9-27 15:12 | 顯示全部樓層

沒有,這個我做的是實(shí)物
回復(fù)

使用道具 舉報(bào)

ID:929789 發(fā)表于 2021-6-2 08:48 來自手機(jī) | 顯示全部樓層
未來可期鴨 發(fā)表于 2020-9-27 15:12
沒有,這個我做的是實(shí)物

怎么設(shè)置調(diào)時間的時候顯示器高亮,整點(diǎn)報(bào)時顯示器高亮
回復(fù)

使用道具 舉報(bào)

ID:754395 發(fā)表于 2021-6-29 02:25 | 顯示全部樓層
準(zhǔn)備做一個實(shí)物了
回復(fù)

使用道具 舉報(bào)

ID:951314 發(fā)表于 2021-7-9 23:03 | 顯示全部樓層
實(shí)物能做出來嗎?還有功能怎么設(shè)置
回復(fù)

使用道具 舉報(bào)

ID:332082 發(fā)表于 2021-7-10 19:49 | 顯示全部樓層
我準(zhǔn)備按這個資料做一個實(shí)物
回復(fù)

使用道具 舉報(bào)

ID:245820 發(fā)表于 2022-5-9 11:07 | 顯示全部樓層
非常好的資料,可惜幣不夠
回復(fù)

使用道具 舉報(bào)

ID:245820 發(fā)表于 2022-5-9 11:11 | 顯示全部樓層
原理圖的數(shù)碼管驅(qū)動電路是不是接錯了,PNP三極管應(yīng)該是發(fā)射極接電源
回復(fù)

使用道具 舉報(bào)

ID:232619 發(fā)表于 2022-9-24 23:01 | 顯示全部樓層
代碼編寫的行數(shù)少,收下學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩av成人在线 | 一区二区三区小视频 | 丝袜美腿一区二区三区 | 日韩高清中文字幕 | 亚洲精品免费在线 | 亚洲欧洲日韩精品 中文字幕 | 国产午夜av片 | 9999视频| 懂色av蜜桃av | 久久成人精品视频 | 美日韩精品 | 久久狠狠| 国产精品成人国产乱一区 | 成人免费在线视频 | 国产精品一区二区久久久久 | 99re66在线观看精品热 | 日韩手机在线看片 | 亚洲日本激情 | 精品视频一二区 | 免费一区二区三区 | 成人欧美一区二区三区黑人孕妇 | 99精品国产在热久久 | 国产精品欧美日韩 | 久久久精品视频免费看 | 精品日韩一区二区 | 亚洲精品一区二区三区蜜桃久 | 97在线观视频免费观看 | 在线日韩欧美 | 日韩一二区 | 日韩在线免费观看视频 | 精品视频在线一区 | av免费网站在线观看 | 国产精品揄拍一区二区 | 欧美在线 | 欧美成人精品 | 插插插干干干 | 国产日韩精品一区二区 | 97av在线 | 在线看一区二区三区 | 美人の美乳で授乳プレイ | 亚洲欧美网站 |