<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> Arduino >> 瀏覽文章

        arduino+w5100獲取網絡時間采用12864液晶顯示

        作者:佚名   來源:互聯網   點擊數:  更新時間:2014年05月16日   【字體:

        通過學習arduino利用官方庫文件做個一個網絡時間:

        采用硬件  單片機:arduino uno
                        網絡模塊:w5100
                        液晶顯示屏:12864     
        接線順序
        1. PIN1 = GND
        2. PIN2 = 5V
        3. RS(CS) = 8;
        4. RW(SID)= 9;
        5. EN(CLK) = 3;
        6. PIN15 PSB = GND;


        7.  
        網絡模塊直接插到arduino uno上就可以
        程序代碼如下:
        #include "LCD12864RSPI.h"
        #include         
        #include
        #include
        #define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
        LCD12864RSPI LCDA(8,9,3);   
        int second,minute,hour; 
        byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
        unsigned int localPort = 8888;     
        IPAddress timeServer(132, 163, 4, 101); 
        const int NTP_PACKET_SIZE= 48; 
        byte packetBuffer[ NTP_PACKET_SIZE]; 
        EthernetUDP Udp;
        unsigned char xitong[]={
          0xCF, 0xB5,
          0xCD, 0xB3,
          0xB3, 0xF5,
          0xCA, 0xBC,
          0xBB, 0xAF
             };                    //系統初始化
        unsigned char shijian[]={
          0xB1, 0xB1,
          0xBE, 0xA9,
          0xCA, 0xB1,
          0xBC, 0xE4
             };                    //北京時間
        void setup() 
                  {  
                  kaiji();
                      delay(3000);
                            Serial.begin(9600);
                             while (!Serial) {
                              ;
                            }
                            if (Ethernet.begin(mac) == 0) {
                              Serial.println("Failed to configure Ethernet using DHCP");
                              for(;;)
                                ;
                            }
                    Udp.begin(localPort);
                  }
         
        void loop()
        {
          sendNTPpacket(timeServer); 
          delay(1000);  
          if ( Udp.parsePacket() ) {  
          
            Udp.read(packetBuffer,NTP_PACKET_SIZE);  
         
            unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
            unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);  
         
            unsigned long secsSince1900 = highWord << 16 | lowWord;  
            Serial.print("Seconds since Jan 1 1900 = " );
            Serial.println(secsSince1900);               
         
          
            Serial.print("Unix time = ");
         
            const unsigned long seventyYears = 2208988800UL;     
         
            unsigned long epoch = secsSince1900 - seventyYears;  
         
            Serial.println(epoch);      
            
            Serial.print("beijing time is "); 
        if((epoch % 86400L) / 3600+8>=24) 
                              {
                              Serial.print((epoch % 86400L) / 3600+8-24);
                              }
        if((epoch % 86400L) / 3600+8<24)
                              {                   
                              Serial.print((epoch % 86400L) / 3600+8); 
                             hour=(epoch % 86400L) / 3600+8;
                              }
            Serial.print(':');  
            if ( ((epoch % 3600) / 60) < 10 ) {
                               Serial.print('0');
                               }
            Serial.print((epoch  % 3600) / 60); 
            minute=(epoch  % 3600) / 60;
            
            Serial.print(':'); 
            if ( (epoch % 60) < 10 )
                                  {
                                    Serial.print('0');
                                  }
            Serial.println(epoch `); 
            second=epoch `;
          }
         shijianx();
         
        }
         
         
        unsigned long sendNTPpacket(IPAddress& address)
                      {
                      
                              memset(packetBuffer, 0, NTP_PACKET_SIZE); 
                            
                              packetBuffer[0] = 0b11100011;   
                              packetBuffer[1] = 0;     
                              packetBuffer[2] = 6;     
                              packetBuffer[3] = 0xEC;  
                             
                              packetBuffer[12]  = 49; 
                              packetBuffer[13]  = 0x4E;
                              packetBuffer[14]  = 49;
                              packetBuffer[15]  = 52;
                                    
                              Udp.beginPacket(address, 123); 
                              Udp.write(packetBuffer,NTP_PACKET_SIZE);
                              Udp.endPacket(); 
                      }
        void kaiji()
                  {
                      LCDA.clear();//清屏
                      LCDA.setCursor(1,0);
                      LCDA.chinese(xitong,AR_SIZE(xitong));
                      LCDA.print("......");
                  }
        void shijianx()
                  {
                       LCDA.clear();//清屏
                       LCDA.setCursor(1,0);
                       LCDA.chinese(shijian,AR_SIZE(shijian));
                       LCDA.print(":");
                       LCDA.setCursor(2,3);
                       LCDA.print(hour);
                       LCDA.print(":");
                       LCDA.print(minute);
                       LCDA.print(":");
                       LCDA.print(second);
                  }
        作品圖片:

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮