专注电子技术学习与研究
当前位置:单片机教程网 >> 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);
          }
作品图片:

关闭窗口

相关文章