IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ESP8266直连1602实现桌面时钟 -> 正文阅读

[嵌入式]ESP8266直连1602实现桌面时钟

用ESP8266 node MCU开发板和1602A的LCD屏,参考网上教程做了个桌面时钟。没有什么技术含量,主要是为了积累通过MCU驱动屏幕显示的经验,方便以后做功能更多更具实用性的东西。
先上个最终的结果图:
在这里插入图片描述

焊点那个鸟样一言难尽,我真实水平不这样

硬件部分

  1. ESP8266 node MCU开发板
  2. 1602A LCD 显示屏
  3. 10K 电位器(或者用电阻代替,有教程上说5K的电阻比较合适)
  4. 面包板和杜邦线

因为我没有I2C的转接板,所以用8266与1602A直接连的,这种方式就需要占用更多的MCU IO口,连线看上去也就比较乱。下面先给出node MCU开发板的引脚图和1602A的引脚图,方便大家对各个引脚的功能有个大致了解:

node MCU 引脚图在这里插入图片描述
1602引脚说明

在这里插入图片描述

node MCU 和 1602引脚连接关系(按引脚标识)
MCU1602
D1D4
D2D5
D3D6
D4D7
D5E
D6RS
GNDVSS、RW、K
VINVDD、A
GNDV0

这个连接关系基本是参考网上的方法来的,结果证明也是可行的。需要说明一下的就是,上面这个连接关系图是按照引脚标识写的,如果按引脚序号来说,LCD的1、5、16引脚需要接开发板的GND,LCD的2,15引脚需要接开发板的VIN,看清楚就行。

最后有一个特别要注意的地方就是1602的V0引脚,也就是第3个引脚,不能悬空,这个是调整对比度的引脚,如果不连接或者连接后调整不好,会导致内容在屏幕上看不到,这个坑曾让我误以为是别的引脚接的不对。这个引脚我没查到具体怎么接,我是用一个10K的电位器,开发板的GND(或者是D2引脚)接电位器的输入,电位器的输出接这个1602的V0,然后调整电位器,直到屏幕能清晰展示。

ESP8266 固件程序

固件程序是直接用的别人的代码,只做了小小改动。程序是基于Arduino的,用的也是Arduino 官方IDE,如果没有配置过ESP8266的开发环境,那还需要先配置好node MCU 的开发板环境,然后安装好用到的函数库。怎么配环境和安装函数库这里就不说了,网上的教程也很多。

功能也很简单,就是利用ESP8266的WI-FI功能,连接好Wi-Fi后,请求NTP服务器获取网络时间,然后在屏幕上显示出来。

直接给出全部代码:

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <NTPClient.h>               
#include <TimeLib.h>                 
#include <LiquidCrystal.h>
  
LiquidCrystal lcd(D6, D5, D1, D2, D3, D4); 

char* ssid = "your-wifi-name";  //wifi 名称
char* password = "your-wifi-pwd";   //wifi 密码

WiFiUDP ntpUDP;
//设置NTPClient
#define NTP_OFFSET   60 * 60 * 8  // 时区偏移量
#define NTP_ADDRESS  "ntp1.aliyun.com"  // NTP服务器


NTPClient timeClient(ntpUDP,  NTP_ADDRESS, NTP_OFFSET);

char Time[ ] = "TIME:00:00:00";
char Date[ ] = "DATE:00/00/2000";
byte last_second, second_, minute_, hour_, day_, month_;
int year_;

 

void setup() {

  Serial.begin(115200);
  lcd.begin(16, 2);                 // Initialize 16x2 LCD Display
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(Time);
  lcd.setCursor(0, 1);
  lcd.print(Date);

  WiFi.begin(ssid, password);
  Serial.print("Connecting.");

  while ( WiFi.status() != WL_CONNECTED ) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("connected");
  timeClient.begin();
}
 

void loop() {

  timeClient.update();
  unsigned long unix_epoch = timeClient.getEpochTime();    // Get Unix epoch time from the NTP server

  second_ = second(unix_epoch);
  if (last_second != second_) {
 

    minute_ = minute(unix_epoch);
    hour_   = hour(unix_epoch);
    day_    = day(unix_epoch);
    month_  = month(unix_epoch);
    year_   = year(unix_epoch);

 

    Time[12] = second_ % 10 + 48;
    Time[11] = second_ / 10 + 48;
    Time[9]  = minute_ % 10 + 48;
    Time[8]  = minute_ / 10 + 48;
    Time[6]  = hour_   % 10 + 48;
    Time[5]  = hour_   / 10 + 48;

 

    Date[5]  = day_   / 10 + 48;
    Date[6]  = day_   % 10 + 48;
    Date[8]  = month_  / 10 + 48;
    Date[9]  = month_  % 10 + 48;
    Date[13] = (year_   / 10) % 10 + 48;
    Date[14] = year_   % 10 % 10 + 48;

    Serial.println(Time);
    Serial.println(Date);

    lcd.setCursor(0, 0);
    lcd.print(Time);
    lcd.setCursor(0, 1);
    lcd.print(Date);
    last_second = second_;

  }
  delay(500);
}

按照上述方法连接好,然后把程序编译好后下载到开发板中,上电,调整电位器,就能看到时间显示在屏幕上了。

总结

以上主要是对调试的过程做了个总结,原理性的东西比如引脚为什么要这么接、代码为什么要这么写,还需要自己再去理解和查阅资料。后续计划换TFT屏幕做更美观更具实用性的桌面信息牌。


春未老,风细柳斜斜

我的微信公众号

名称:工程师小凤
微信号:theyfaded
我有丰富的.NET、C++、Python开发经验,现在从事方向为物联网,同时一直在学习和实践Web前端开发!一起来交流进步吧!
在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-06-14 22:50:26  更:2022-06-14 22:51:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 7:50:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计