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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7873|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)數(shù)碼管萬(wàn)年歷 顯示年月日小時(shí)分秒 proteus仿真及源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
一個(gè)能顯示顯示年月日小時(shí)分秒的51單片機(jī)做的萬(wàn)年歷proteus仿真
,下面是原理圖:


仿真工程文件及所有完整程序等資料下載地址:
http://www.zg4o1577.cn/bbs/dpj-56304-1.html

萬(wàn)年歷的單片機(jī)源程序:
  1. #include<reg51.h>
  2. #include<absacc.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. #define ture  1
  6. #define fault 0

  7. sbit SET=P1^7;

  8. void  delay(uchar  k) ;
  9. uchar monthday(uchar a,uchar b);
  10. void display()        ;

  11. uchar code dayofmonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
  12. uchar code scan[]={0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
  13.                     0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
  14.                                         0xf8,0xf9,0xfa,0xfb,0xfc,0xfd};
  15.                                         //掃描的譯碼信號(hào)
  16. uchar i;
  17. uchar code table[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0xA7,0xFF,0xEF,0xC0};
  18. uchar  buffer[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  19. uchar  shuju=0;
  20. uchar  state=0;
  21. uchar  qxiang;

  22. typedef  struct  
  23.          {
  24.                  uchar year[2];
  25.                  uchar month;
  26.                  uchar day;
  27.                  uchar week;
  28.                  }date;
  29. typedef  struct  
  30.         {
  31.             uchar hour;
  32.                 uchar minute;
  33.                 uchar second;
  34.                 }time;
  35. uchar  count=0;
  36. date today={{9,20},4,20,1};
  37. time now={11,8,10};
  38. void main()
  39. {
  40. TMOD=0x01;
  41. TL0=(65536-1000)%256;
  42. TH0=(65536-1000)/256;
  43. IE=0x82;          //EA=1;ET0=1總中斷允許和定時(shí)器中斷允許
  44. TCON=0x10;          //定時(shí)器啟動(dòng)計(jì)數(shù)
  45. while(1)
  46.     {
  47.          P1=0xff;

  48.          shuju=P1&0xff;
  49.          qxiang=shuju&0x80;
  50.                 switch(qxiang)
  51.             {
  52.                  case(0x80):switch(shuju)
  53.                               {
  54.                                  case(0xfe) :                           //秒調(diào)整
  55.                             {
  56.                                          EA=1;
  57.                                          EX0=1;           //IE=0x83;                        //EA=1;ET0=1;EX0=0總中斷允許,定時(shí)器中斷允許,外中斷允許
  58.                                          IT0=1;           //TCON=0x11;                        //TR0=1;IT0=1;定時(shí)器啟動(dòng),外中斷為負(fù)邊沿觸發(fā)
  59.                                  }break;
  60.                             case(0xfd)        :                         //分調(diào)整
  61.                             {
  62.                                          EA=1;
  63.                                          EX0=1;                  // IE=0x83;
  64.                                          IT0=1;                    //TCON=0x11;
  65.                                  }break;
  66.                             case(0xfb) :                        //時(shí)調(diào)整
  67.                             {
  68.                                         EA=1;
  69.                                          EX0=1;
  70.                                          IT0=1;
  71.                                        
  72.                                  }break;
  73.                  case(0xf7) :                           //星期調(diào)整
  74.                             {
  75.                                         EA=1;
  76.                                          EX0=1;
  77.                                          IT0=1;
  78.                               
  79.                                  }break;
  80.                  case(0xef) :                                        //日調(diào)整
  81.                              {
  82.                                         EA=1;
  83.                                          EX0=1;
  84.                                          IT0=1;
  85.                                 
  86.                                  }break;
  87.                  case(0xdf):                                 //月調(diào)整
  88.                              {
  89.                                         EA=1;
  90.                                          EX0=1;
  91.                                          IT0=1;
  92.                                 
  93.                                  }break;
  94.                  case(0xbf):                                        //年調(diào)整
  95.                             {
  96.                                         EA=1;
  97.                                          EX0=1;
  98.                                          IT0=1;
  99.                                        
  100.                                  }break;
  101.                              default:                                                 //時(shí)鐘正常計(jì)時(shí)
  102.                         {
  103.                                         EA=1;
  104.                                         TR0=1;
  105.                                         EX0=0;
  106.                                 
  107.                                         }break;
  108.                                 }break;
  109.                  case(0x00) :switch(shuju)
  110.                                              {
  111.                            case(0x7e):
  112.                         {
  113.                                         EA=1;
  114.                                          EX0=1;
  115.                                          IT0=1;
  116.                                        
  117.                                         }break;
  118.                    case(0x7d):
  119.                         {
  120.                                         EA=1;
  121.                                          EX0=1;
  122.                                          IT0=1;
  123.                                 
  124.                                         }break;
  125.                    case(0x7b):
  126.                         {
  127.                                         EA=1;
  128.                                          EX0=1;
  129.                                          IT0=1;
  130.                            
  131.                                         }break;
  132.                    case(0x77):
  133.                         {
  134.                                         EA=1;
  135.                                          EX0=1;
  136.                                          IT0=1;
  137.                                 
  138.                                         }break;
  139.                    case(0x6f):
  140.                         {
  141.                                         EA=1;
  142.                                          EX0=1;
  143.                                          IT0=1;
  144.                                        
  145.                                         }break;
  146.                    case(0x5f):
  147.                         {
  148.                                          EA=1;
  149.                                          EX0=1;
  150.                                          IT0=1;
  151.                                        
  152.                                         }break;
  153.                    case(0x3f):
  154.                         {
  155.                                         EA=1;
  156.                                          EX0=1;
  157.                                          IT0=1;
  158.                                        
  159.                                         }break;
  160.                    default:                                                 //時(shí)鐘正常計(jì)時(shí)
  161.                         {
  162.                                         EA=1;
  163.                                         TR0=1;
  164.                                         EX0=0;
  165.                                                 
  166.                                         }break;
  167.                             }break;      
  168.                 }
  169.         }
  170. }

  171. void inter0()  interrupt 0  using 0
  172.   {
  173.   uchar result,z;
  174.   result=shuju;
  175.                switch(qxiang)
  176.             {
  177.                  case(0x80):   switch(result)
  178.                                            {
  179.                                case(0xfe) :                                          // if(result==0xfe)                                   //秒調(diào)整        +
  180.                                  {
  181.                                    now.second++;
  182.                                    if(now.second>=60)
  183.                                       {
  184.                                             now.second=0;
  185.                                            }
  186.                                    display();
  187.                                   }break;
  188.    
  189.                          case(0xfd) :                             //if(result==0xfd)                                         //分調(diào)整  +
  190.                                  {
  191.                                     now.minute++;
  192.                                     if(now.minute>=60)
  193.                                      {
  194.                                            now.minute=0;
  195.                                           }
  196.                                      display();
  197.                                  }break;
  198.    
  199.                             case(0xfb) :                   //if(result==0xfb)                                   //時(shí)調(diào)整        +
  200.                                   {
  201.                                      now.hour++;
  202.                                      if(now.hour>=24)
  203.                                         {
  204.                                               now.hour=0;
  205.                                              }
  206.                                         display();
  207.                                   }break;

  208.                              case(0xf7)        :                  // if(result==0xf7)                       //星期調(diào)整 +
  209.                                       {                  
  210.                                          today.week++;
  211.                                           if(today.week>=8)
  212.                                               {
  213.                                                     today.week=1;
  214.                                                    }
  215.                                           display();
  216.                                       }break;

  217.                                   case(0xef) :                        //if(result==0xef)                                   //日期調(diào)整         +
  218.                                       {
  219.                                          today.day++;
  220.                                          z = monthday( today.year[1]  ,  today.year[0] );
  221.                                          if((z==1)&&(today.month==2))
  222.                                                                             {
  223.                                                                                   if(today.day>=30)
  224.                                                          today.day=1;
  225.                                                                                 }

  226.                                               else if (today.day>dayofmonth[today.month-1])
  227.                                                             today.day=1;
  228.                                            display();
  229.                                         }break;         
  230.            
  231.                                   case(0xdf) :                         //if(result==0xdf)                                        //月調(diào)整        +
  232.                
  233.                                             {
  234.                                                 today.month++;
  235.                                                    if(today.month>=13)
  236.                                                    {
  237.                                                          today.month=1;
  238.                                                         }
  239.                                                 display();
  240.                                                } break;
  241.    
  242.             
  243.                                        case(0xbf) :                                         //if(result==0xbf)                                          //年調(diào)整 +
  244.                                              {
  245.                                            today.year[0]=today.year[0]+1;
  246.                                                if(today.year[0]>=100)
  247.                                                    {
  248.                                                          today.year[0]=0;
  249.                                                          today.year[1]=today.year[1]+1;
  250.                                                          if(today.year[1]>=100)
  251.                                                             {
  252.                                                                    today.year[1]=0;
  253.                                                                  }
  254.                                                          }
  255.                                                  display();
  256.                                                }break;
  257.                                        default:                                                 //時(shí)鐘正常計(jì)時(shí)
  258.                                          {
  259.                                                                          EA=1;
  260.                                                          TR0=1;
  261.                                                          EX0=0;
  262.                                                                                                          
  263.                                                          }break;
  264.                                                  }break;
  265.                                        
  266.   case(0x00): switch(result)
  267.                         {
  268.                           case(0x7e):                                //if(result==0x7f)                                         //秒調(diào)整—
  269.                           {
  270.                                   if(now.second>0)
  271.                                   now.second=now.second-1;
  272.                                else  now.second=59;
  273.                                     display();
  274.                           }break;
  275.         
  276.   case(0x7d):                                                //if(result==0x7d)                                          //分調(diào)整—
  277.            {
  278.                    if(now.minute>0)
  279.                    now.minute=now.minute-1;
  280.                 else now.minute=59;
  281.                 display();
  282.            }  break;
  283.         
  284.   case(0x7b) :                                          //if(result==0x7b)                                          //  時(shí)調(diào)整-
  285.            
  286.            {
  287.                    if(now.hour>0)
  288.                    now.hour=now.hour-1;
  289.                 else now.hour=23 ;
  290.                 display();
  291.            }break;
  292.         
  293.         case(0x77) :                                         //if(result==0x77)                                         //         周調(diào)整—
  294.            {
  295.             if(today.week>1)
  296.                    today.week=today.week-1;
  297.                 else today.week=7;
  298.                 display();
  299.            }break;

  300.          
  301.         case(0x6f):                                                                   //if(result==0x6f)                                  //         日期調(diào)整—
  302.            {
  303.             z = monthday( today.year[1]  ,  today.year[0] );
  304.                    if((z==1)&&(today.month==2))
  305.                    {
  306.                    if(today.day>1)
  307.                       today.day=today.day-1;
  308.                         else today.day=29;
  309.                    }
  310.                 else {
  311.                           if(today.day>1)
  312.                              today.day=today.day-1;
  313.                           else today.day=dayofmonth[today.month-1];
  314.                       }
  315.                 display();
  316.            }break;

  317.          case(0x5f):                                                        //if(result==0x5f)                                        //        月調(diào)整—
  318.            {
  319.                    if(today.month>1)
  320.                    today.month=today.month-1;
  321.                 else today.month=12;
  322.                 display();
  323.            }break;
  324.          case(0x3f) :          // 年調(diào)整——
  325.            {
  326.                    if(today.year[0]>0)
  327.                    today.year[0]=today.year[0]-1;
  328.                 else
  329.                     {
  330.                          today.year[0]=99;
  331.                          today.year[1]=today.year[1]-1;
  332.                         }
  333.                 display();
  334.            }break;
  335.          default:                                                 //時(shí)鐘正常計(jì)時(shí)
  336.                         {
  337.                                     EA=1;
  338.                                         TR0=1;
  339.                                         EX0=0;        
  340.                                         }break;
  341.              }break;
  342.                 }
  343.         }

  344. void  timer0_int() interrupt 1 using 1
  345. {
  346. uchar c;
  347. TL0=(65536-1000)%256;                  //中斷時(shí)間是10ms
  348. TH0=(65536-1000)/256;
  349. TR0=1;
  350. count++;
  351. if(count==35)
  352.     {
  353.         count=0;
  354.         now.second=now.second+1;
  355.          if(now.second>=60)
  356.             {
  357.                 now.second=0;
  358.                 now.minute++;
  359.                 if(now.minute>=60)
  360.                    {
  361.                    now.minute=0;
  362.                    now.hour++;
  363.                    if(now.hour>=24)
  364.                       {
  365.                           now.hour=0;
  366.                           today.week++;
  367.                           today.day++;
  368.                           if(today.week>=8)
  369.                              {
  370.                                  today.week=1;
  371.                                  }
  372.                           c=monthday( today.year[1], today.year[0]);
  373.                           if((c==1)&&(today.month==2))
  374.                              {
  375.                                  if(today.day>=30)
  376.                                    {
  377.                                     today.day=1;
  378.                                         today.month++;
  379.                                    }
  380.                                  
  381.                                  }
  382.                           else if(today.day>=(dayofmonth[today.month-1]+1))
  383.                                   {
  384.                                           today.day=1;
  385.                                           today.month++;
  386.                            if(today.month>=13)
  387.                               {
  388.                                    today.month=1;
  389.                                    today.year[0]=today.year[0]+1;
  390.                                    if(today.year[0]>=100)
  391.                                       {
  392.                                           today.year[0]=0;
  393.                                           today.year[1]=today.year[1]+1;
  394.                                           if(today.year[1]>=100)
  395.                                              {
  396.                                                  today.year[1]=0;
  397.                                                  }
  398.                                           }
  399.                                   }
  400.                           }
  401.                    }
  402.                   }
  403.                 }
  404.         }
  405.     display();
  406. }
  407. void  delay(uchar  k)
  408.   {
  409.   uchar m,n;
  410.   for(m=0;m<=k;m++)
  411.    for(n=0;n<=40;n++);
  412.   }
  413.   //  計(jì)算年份程序
  414. uchar  monthday(uchar a,uchar b)
  415.   {
  416.    uchar x,y;
  417.    x=a*100+b;
  418.    if(x%4!=0)
  419.           y=0;
  420.    else if(x%100!=0)
  421.       y=1;
  422.    else if(x%400!=0)
  423.       y=0;
  424.    else y=1;
  425.    
  426. //if((x%4==0 && x%100!=0)|| (x%400==0))
  427. //   y=1;
  428. // else y=0;
  429.    return(y) ;
  430.   }        
  431. void display()
  432. {
  433.   buffer[0]=now.second%10;
  434.   buffer[1]=now.second/10;
  435.   buffer[2]=10;
  436.   buffer[3]=now.minute%10;
  437.   buffer[4]=now.minute/10;
  438.   buffer[5]=10;
  439.   buffer[6]=now.hour%10;
  440.   buffer[7]=now.hour/10;
  441.   buffer[8]=today.week%10;
  442.   buffer[9]=today.week/10;
  443.   buffer[10]=10;
  444.   buffer[11]=today.day%10;
  445.   buffer[12]=today.day/10;
  446.   buffer[13]=10;
  447.   buffer[14]=today.month%10;
  448.   buffer[15]=today.month/10;
  449.   buffer[16]=10;
  450.   buffer[17]=today.year[0]%10;
  451.   buffer[18]=today.year[0]/10;
  452.   buffer[19]=today.year[1]%10;
  453.   buffer[20]=today.year[1]/10;
  454.   buffer[21]=10;
  455.    for(i=0;i<=21;i++)
  456.     {
  457.         P0=table[buffer[i]];        
  458.         P2=scan[i];
  459.         delay(8);
  460.         P2=0xFF;
  461.         }
  462. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产综合精品一区二区三区 | 免费黄色网址视频 | 色欧美片视频在线观看 | 亚洲国产精品久久久 | 国产一区二区三区www | 国产一区二区av | 亚洲午夜精品在线观看 | 国产精品二区三区在线观看 | 羞羞网站在线观看 | 日本精品免费在线观看 | 亚洲精品在线视频 | 成年人免费看的视频 | 污视频在线免费观看 | 成人高清在线视频 | 欧美精品一区二区在线观看 | 日韩久久网 | 日本不卡高字幕在线2019 | 天堂成人国产精品一区 | 国产精品18久久久 | 雨宫琴音一区二区在线 | 麻豆成人在线视频 | 91精品国产色综合久久不卡98口 | 91久久久久久久久 | 久久精品综合 | 久久久久久亚洲精品 | 国产精品免费一区二区三区四区 | 国产成人精品一区二区三区四区 | 国产精品1区 | 精品二 | 午夜影院在线观看免费 | 日本超碰 | 亚洲人成人一区二区在线观看 | 国产精品激情 | 欧美在线a| 日韩av成人在线 | 99色综合| 久久久久久电影 | 亚洲欧美激情国产综合久久久 | 91久久久久久久久 | 精品二| 在线播放第一页 |