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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)數(shù)字時鐘pcb及原理圖Proteus仿真及C51源代碼下載

  [復(fù)制鏈接]
ID:95411 發(fā)表于 2015-11-11 16:08 | 顯示全部樓層 |閱讀模式
51單片機(jī)做的數(shù)字時鐘pcb及原理圖: 數(shù)字時鐘.7z (45.39 KB, 下載次數(shù): 323)
0.png

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif
下面是源代碼:
  1. #include <reg51.h>

  2. unsigned char led[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};  //用一維數(shù)組定義0-9、橫杠、全滅

  3. unsigned char num[10]={2,0,0,8,0,1,1,6,6,8} ;
  4. unsigned char a[8];           
  5. unsigned char second=0,minute=0,hour=0;
  6. unsigned char minute1=0,hour1=0;
  7. unsigned char b[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};        //掃描
  8. unsigned char k=0;
  9. unsigned int temp;          // 記錄1000毫秒為1秒的變量
  10. unsigned char M,S_flag;        //M是模式,更新時間的4種模式加上正常模式        S_flag閃爍標(biāo)志
  11. sbit K1=P3^0;
  12. sbit K2=P3^1;
  13. sbit K3=P3^2;
  14. sbit BEEP=P3^3;



  15. void delay(unsigned n)              //0.2毫秒
  16. {
  17.   int x,y;
  18.   for(x=0;x<n;x++)
  19.   for(y=0;y<24;y++);
  20. }
  21.   


  22. void init()
  23. {
  24.   M=0;
  25.   S_flag=0;     //閃爍標(biāo)志位
  26.   TMOD=0x10;   //定時器1以方式1定時
  27.    TH1=0xfc;
  28.    TL1=0x18;
  29.    EA=1;     //打開總中斷
  30.    ET1=1;         //允許定時器1中斷
  31.    TR1=1;         //開啟定時器1 (開始定時計(jì)數(shù))

  32. }


  33. void display_led()
  34. {
  35.         int x;
  36.         char l,a,m;
  37.         for(a=0;a<26;a++)
  38.         {
  39.                 x=a-8;
  40.                 for(l=0;l<50;l++)
  41.                 {
  42.                         for(m=0;m<8;m++)
  43.                         {
  44.                                 P2=b[m];
  45.                                 if(x>=0&&x<10) P1=led[num[x]];
  46.                                 else P1=led[11];
  47.                                 
  48.                                 delay(10);
  49.                                 x++;
  50.                         }
  51.                         x-=8;
  52.                 }
  53.         }
  54. }

  55. void time1() interrupt 3                 //定時器1中斷函數(shù)
  56. {
  57.    TH1=0xfc;                          //定時1ms        
  58.    TL1=0x18;
  59.    temp++;

  60.    if(temp==1000)                 //配合定時器定時1s
  61.    {   temp=0;
  62.                    second++;        
  63.    }

  64.         if(second==59)                                
  65.      {    second=0;
  66.              if(minute<59)
  67.                       minute++;
  68.                  else  {   minute=0;
  69.                                    hour++;
  70.                                    hour%=24;   
  71.                        }
  72.         }
  73.    if(hour1==hour&&minute1==minute&&second<10)                  //鬧鐘時間到
  74.    {
  75.    BEEP=!BEEP;
  76.    
  77.    }  
  78.    if(temp%250==0)            //每250ms
  79.        S_flag=!S_flag;              //閃爍標(biāo)志位取反

  80.         
  81.             
  82.          
  83.     if(k==8)  k=0;
  84.          P1=a[k];               
  85.          P2=b[k++];   
  86.          delay(1);         
  87.          P2=0xff;               

  88. }            


  89. void display()
  90. {

  91.         switch(M)
  92.         {
  93.         case 0:
  94.                 {
  95.                         a[0]=led[hour/10];
  96.                         a[1]=led[hour%10];
  97.                         a[2]=led[10];
  98.                         a[3]=led[minute/10];
  99.                         a[4]=led[minute%10];
  100.                         a[5]=led[10];
  101.                         a[6]=led[second/10];
  102.                         a[7]=led[second%10];
  103.                 }break;
  104.         case 1:
  105.                 {
  106.                         if(S_flag==1)
  107.                         {
  108.                                 a[0]=led[hour/10];
  109.                                 a[1]=led[hour%10];
  110.                         }
  111.                         else
  112.                         {
  113.                                 a[0]=led[11];
  114.                                 a[1]=led[11];
  115.                         }
  116.                         a[2]=led[10];
  117.                         a[3]=led[minute/10];
  118.                         a[4]=led[minute%10];
  119.                         a[5]=led[10];
  120.                         a[6]=led[second/10];
  121.                         a[7]=led[second%10];
  122.                 }break;
  123.         case 2:
  124.                 {
  125.                         a[0]=led[hour/10];
  126.                         a[1]=led[hour%10];
  127.                         a[2]=led[10];
  128.                         if(S_flag==1)
  129.                         {
  130.                                 a[3]=led[minute/10];
  131.                                 a[4]=led[minute%10];
  132.                         }
  133.                         else
  134.                         {
  135.                                 a[3]=led[11];
  136.                                 a[4]=led[11];
  137.                         }
  138.                         a[5]=led[10];
  139.                         a[6]=led[second/10];
  140.                         a[7]=led[second%10];
  141.                 }break;
  142.         case 3:
  143.                 {
  144.                         if(S_flag==1)
  145.                         {
  146.                                 a[0]=led[hour1/10];
  147.                                 a[1]=led[hour1%10];
  148.                         }
  149.                         else
  150.                         {
  151.                                 a[0]=led[11];
  152.                                 a[1]=led[11];
  153.                         }
  154.                         a[2]=led[10];
  155.                         a[3]=led[minute1/10];
  156.                         a[4]=led[minute1%10];
  157.                         a[5]=led[10];
  158.                         a[6]=led[11];
  159.                         a[7]=led[11];
  160.                 }break;
  161.         case 4:
  162.                 {
  163.                         a[0]=led[hour1/10];
  164.                         a[1]=led[hour1%10];
  165.                         a[2]=led[10];
  166.                         if(S_flag==1)
  167.                         {
  168.                                 a[3]=led[minute1/10];
  169.                                 a[4]=led[minute1%10];
  170.                         }
  171.                         else
  172.                         {
  173.                                 a[3]=led[11];
  174.                                 a[4]=led[11];
  175.                         }
  176.                         a[5]=led[10];
  177.                         a[6]=led[11];
  178.                         a[7]=led[11];
  179.                 }

  180.         }
  181. }           


  182. void key_prc()
  183. {
  184.   
  185.            if(K1==0)
  186.                  {
  187.                         delay(10);                //延時去抖                          
  188.                         if(K1==0)           //按K1進(jìn)行模式切換  
  189.                         {   M++;
  190.                                 if(M==5)
  191.                  M=0;
  192.                         }
  193.                         while(!K1);//等待按鍵釋放
  194.                  }                                                         

  195.   
  196.        if(M!=0)
  197.        {
  198.          switch(M)
  199.          {
  200.               case 1:                   //模式1——調(diào)時
  201.               {
  202.                                 if(K2==0)
  203.                                 {
  204.                                         delay(10);                //延時去抖         
  205.                                     if(K2==0)       //加鍵按下
  206.                                         {           
  207.                                                 if(hour<23) hour++;
  208.                                                 else hour=0;
  209.                                         }
  210.                                         while(!K2);           //等待按鍵釋放
  211.                                 }
  212.                                           
  213.                                 if(K3==0)
  214.                                 {
  215.                                         delay(10);                                         
  216.                                     if(K3==0)        
  217.                                           {
  218.                                                 if(hour> 0) hour--;
  219.                                                 else hour=23;
  220.                                     }
  221.                                         while(!K3);         
  222.                                 }
  223.                       } break;
  224.                                              
  225.                           case 2:                  //模式2——調(diào)分
  226.                           {                                 
  227.                                 if(K2==0)
  228.                                 {
  229.                                         delay(10);               
  230.                                         if(K2==0)      
  231.                                         {                                
  232.                                                 if(minute<59) minute++;
  233.                                                 else minute=0;
  234.                                         }
  235.                                         while(!K2);
  236.                                 }
  237.                                           
  238.                                 if(K3==0)
  239.                                 {
  240.                                         delay(10);                                
  241.                                         if(K3==0)         
  242.                                           {
  243.                                                 if(minute>0) minute--;
  244.                                                 else minute=59;
  245.                                     }
  246.                                         while(!K3);
  247.                             }
  248.                         } break;
  249.                                     
  250.                                  case 3:                  //模式3——鬧鐘調(diào)時
  251.                                   {                                          
  252.                                         if(K2==0)
  253.                                                 {
  254.                                                         delay(10);                        
  255.                                                 if(K2==0)      
  256.                                                                 {           
  257.                                                                    if(hour1<23)
  258.                                                            hour1++;
  259.                                                                    else hour1=0;
  260.                                                                 }
  261.                                                         while(!K2);         
  262.                                             }
  263.                                           
  264.                                          if(K3==0)
  265.                                                 {
  266.                                                         delay(10);                        
  267.                                                         if(K3==0)         
  268.                                                       { if(hour1>0)
  269.                                                      hour1--;
  270.                                                                   else hour1=23;
  271.                                                 }
  272.                                                         while(!K3);
  273.                                                  }
  274.                                   }         break;
  275.                                          
  276.                                   case 4:                  //模式4——鬧鐘調(diào)分  
  277.                                    {         
  278.                                          if(K2==0)
  279.                                                 {
  280.                                                         delay(10);                                         
  281.                                                 if(K2==0)      
  282.                                                             {           
  283.                                                                   if(minute1<59)
  284.                                                           minute1++;
  285.                                                                   else minute1=0;
  286.                                                                 }
  287.                                                 while(!K2);
  288.                                                 }
  289.                                 
  290.                                         if(K3==0)
  291.                                                 {
  292.                                                         delay(10);                //延時去抖                        
  293.                                                     if(K3==0)          //減鍵按下
  294.                                                       { if(minute1>0)
  295.                                                      minute1--;
  296.                                                                   else minute1=59;
  297.                                                 }
  298.                                                 while(!K3);                 
  299.                                         }
  300.                                         }  break;
  301.                 }
  302.         }                                 
  303. }         


  304. void main()
  305. {
  306.         display_led();
  307.           init();
  308.     while(1)
  309.     {
  310.      key_prc();
  311.          display();
  312.         }        
  313. }   
復(fù)制代碼


評分

參與人數(shù) 2黑幣 +55 收起 理由
龍騰四海 + 5 很給力!
admin + 50 共享資料的積分獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:91888 發(fā)表于 2015-11-12 22:17 | 顯示全部樓層
第一個回帖么?
回復(fù)

使用道具 舉報(bào)

ID:92497 發(fā)表于 2015-11-13 08:28 | 顯示全部樓層
先頂再說
回復(fù)

使用道具 舉報(bào)

ID:92497 發(fā)表于 2015-11-13 08:35 | 顯示全部樓層
好像定義數(shù)組的時候加 code 可以不占內(nèi)存,如 “unsigned char led[12]={};”可以這樣 “unsigned char  code led[12]={};”
回復(fù)

使用道具 舉報(bào)

ID:95438 發(fā)表于 2015-11-23 14:35 | 顯示全部樓層
試試看
回復(fù)

使用道具 舉報(bào)

ID:97497 發(fā)表于 2015-11-28 21:42 | 顯示全部樓層
不能顯示日期,要是加一下日期就好了
回復(fù)

使用道具 舉報(bào)

ID:97771 發(fā)表于 2015-12-1 21:18 | 顯示全部樓層
剛好想做一個
回復(fù)

使用道具 舉報(bào)

ID:98731 發(fā)表于 2015-12-7 20:42 | 顯示全部樓層
頂一個再說。
回復(fù)

使用道具 舉報(bào)

ID:100091 發(fā)表于 2015-12-24 09:00 | 顯示全部樓層
可以可以
回復(fù)

使用道具 舉報(bào)

ID:100266 發(fā)表于 2015-12-24 09:12 | 顯示全部樓層
仿真圖打不開啊
回復(fù)

使用道具 舉報(bào)

ID:95809 發(fā)表于 2015-12-24 13:40 | 顯示全部樓層
資料不錯,挺簡潔的,不像一些加了一堆外圍電路的設(shè)計(jì)
回復(fù)

使用道具 舉報(bào)

ID:113764 發(fā)表于 2016-4-16 16:13 | 顯示全部樓層
樓主的仿真圖沒問題,可以打開的
回復(fù)

使用道具 舉報(bào)

ID:115321 發(fā)表于 2016-4-21 21:04 | 顯示全部樓層
這個看著很可以啊!感謝
回復(fù)

使用道具 舉報(bào)

ID:99130 發(fā)表于 2016-4-23 12:33 | 顯示全部樓層
仿真打不開
回復(fù)

使用道具 舉報(bào)

ID:99130 發(fā)表于 2016-4-23 12:34 | 顯示全部樓層
郭263337 發(fā)表于 2016-4-16 16:13
樓主的仿真圖沒問題,可以打開的

怎么打開
回復(fù)

使用道具 舉報(bào)

ID:110624 發(fā)表于 2016-4-23 15:35 | 顯示全部樓層
PCB文件用哪款軟件能打開?用Altium Designer的話怎么才能打開?
回復(fù)

使用道具 舉報(bào)

ID:85227 發(fā)表于 2016-5-8 19:46 | 顯示全部樓層
怎么沒看到PCB圖啊
回復(fù)

使用道具 舉報(bào)

ID:106900 發(fā)表于 2016-5-10 14:31 | 顯示全部樓層
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:29369 發(fā)表于 2016-5-11 15:26 | 顯示全部樓層
求資料啊!
回復(fù)

使用道具 舉報(bào)

ID:127522 發(fā)表于 2016-6-21 10:27 | 顯示全部樓層
頂一個
回復(fù)

使用道具 舉報(bào)

ID:128212 發(fā)表于 2016-6-26 21:11 | 顯示全部樓層
不錯,挺好用
回復(fù)

使用道具 舉報(bào)

ID:128208 發(fā)表于 2016-6-26 21:20 | 顯示全部樓層
頂一個
回復(fù)

使用道具 舉報(bào)

ID:128271 發(fā)表于 2016-6-28 21:57 | 顯示全部樓層
做一個試試
回復(fù)

使用道具 舉報(bào)

ID:140489 發(fā)表于 2016-9-26 13:44 | 顯示全部樓層
看看看先
回復(fù)

使用道具 舉報(bào)

ID:59525 發(fā)表于 2016-10-1 16:23 | 顯示全部樓層
看看樓主的好東西
回復(fù)

使用道具 舉報(bào)

ID:192309 發(fā)表于 2017-4-22 13:17 | 顯示全部樓層
很給力!!!
回復(fù)

使用道具 舉報(bào)

ID:194844 發(fā)表于 2017-5-4 20:26 | 顯示全部樓層

資料不錯,挺簡潔的
回復(fù)

使用道具 舉報(bào)

ID:191450 發(fā)表于 2017-5-5 08:29 | 顯示全部樓層
好像定義數(shù)組的時候加 code 可以不占內(nèi)存
回復(fù)

使用道具 舉報(bào)

ID:250385 發(fā)表于 2017-11-17 13:25 | 顯示全部樓層
實(shí)用,給力!!!
回復(fù)

使用道具 舉報(bào)

ID:264006 發(fā)表于 2018-1-3 10:55 | 顯示全部樓層
pcb圖打不開啊
回復(fù)

使用道具 舉報(bào)

ID:355175 發(fā)表于 2018-6-21 10:29 | 顯示全部樓層
pcb圖打不開啊
回復(fù)

使用道具 舉報(bào)

ID:783064 發(fā)表于 2020-6-18 12:09 | 顯示全部樓層
proteus能打開嗎
回復(fù)

使用道具 舉報(bào)

ID:783064 發(fā)表于 2020-6-18 12:23 | 顯示全部樓層
用proteus能打開嗎
回復(fù)

使用道具 舉報(bào)

ID:969833 發(fā)表于 2023-5-14 15:00 | 顯示全部樓層

需要用Proteus7.8版本才能打開
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av日日操| 天天av网 | 亚洲视频在线一区 | 色视频一区二区 | 国产精品不卡一区 | 欧美一级淫片免费视频黄 | 91精品国产91久久久 | 欧美成年人视频在线观看 | 九九九久久国产免费 | 在线一区观看 | 久久天天躁狠狠躁夜夜躁2014 | 中文字幕 国产精品 | 国产日韩精品一区 | 欧美国产精品一区二区三区 | 久久久久久久一区二区 | 中文字幕在线中文 | 久久久久一区 | 久久久国产精品入口麻豆 | 国产精品成人国产乱 | 国产成人精品一区二区三区网站观看 | 久久精品国产99国产精品 | 羞羞免费网站 | 亚洲一区二区三区视频免费观看 | 亚洲精品黄色 | 日本精品国产 | 羞羞的视频免费观看 | 羞羞在线视频 | 黄色av大片 | 自拍偷拍第一页 | 日韩中文字幕免费在线观看 | 亚洲第一福利视频 | 国产日韩欧美中文字幕 | 九九亚洲 | 欧美日韩亚洲一区 | 亚洲视频在线免费 | 91精品国产91久久综合桃花 | 国产一区二区影院 | av久久| 精品欧美一区二区在线观看视频 | 在线观看中文字幕dvd播放 | 久久精品久久久 |