找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4596|回复: 10
打印 上一主题 下一主题
收起左侧

用ESP8266控制自动联网对时的VFD时钟程序

  [复制链接]
跳转到指定楼层
楼主
VFD显示的时钟。用ESP8266控制,自动联网WiFi对时。显示效果如图:

直接上代码:
//用ESP8266控制自动联网对时的VFD时钟
//VFD型号:VFD-8-MD-06INKM

  1. #include <NTPClient.h>
  2. #include <ESP8266WiFi.h>
  3. #include <WiFiUdp.h>
  4. #include <time.h>
  5. #include <SPI.h>

  6. #define VFD_MOSI 13
  7. #define VFD_CLK  14
  8. #define VFD_CS   15
  9. #define VFD_RST  16

  10. #define VFD_DIMMING_UP   5     //亮度+
  11. #define VFD_DIMMING_DOWN 4     //亮度-

  12. //修改成需要连接的WiFi
  13. const char *ssid     = "WiFi名称";
  14. const char *password = "WiFi密码";

  15. static char VFD_Dimming = 0x8f;  //VFD默认亮度

  16. WiFiUDP ntpUDP;
  17. NTPClient timeClient(ntpUDP, "time1.aliyun.com", 28800, 60000);
  18. /*
  19. 参数说明:
  20. 1. udp            : 创建的UDP连接
  21. 2. poolServerName : 服务器地址, 默认: time.nist.gov
  22. 3. timeOffset     : 时区, 默认0, 单位秒, 北京在第8时区 3600*8
  23. 4. milliseconds   : 刷新时间间隔, 毫秒
  24. */

  25. void VFD_DISP(char data[8]){
  26.   for(uint8_t i=0; i<8; i++){
  27.     digitalWrite(VFD_CS, LOW);
  28.     SPI.transfer(0x20+i);      //定位
  29.     SPI.transfer(data[i]);     //显示的数据
  30.     digitalWrite(VFD_CS, HIGH);
  31.   }
  32.   digitalWrite(VFD_CS, LOW);
  33.   SPI.transfer(0xe8);          //开显示
  34.   digitalWrite(VFD_CS, HIGH);
  35. }

  36. void VFD_SetDimming(char dimming){
  37.   digitalWrite(VFD_CS, LOW);
  38.   SPI.transfer(0xe4);
  39.   SPI.transfer(dimming);
  40.   digitalWrite(VFD_CS, HIGH);
  41. }

  42. void setup() {

  43.   SPI.begin();

  44.   pinMode(VFD_RST, OUTPUT);
  45.   pinMode(VFD_CS, OUTPUT);
  46.   pinMode(VFD_DIMMING_UP, INPUT);
  47.   pinMode(VFD_DIMMING_DOWN, INPUT);

  48.   //复位VFD   
  49.   digitalWrite(VFD_RST, LOW);
  50.   delay(500);
  51.   digitalWrite(VFD_RST, HIGH);
  52.   //选通VFD
  53.   digitalWrite(VFD_CS, HIGH);
  54.   //设置SPI参数  
  55.   SPI.setBitOrder(LSBFIRST);    //LSB(SPI数据格式,低位在前)
  56.   SPI.setClockDivider(SPI_CLOCK_DIV64);    //SPI时钟,2~128,(实测:64->250KHz, 128->125KHz)
  57.   SPI.setDataMode(SPI_MODE3);    //SPI模式,0~3,
  58.   /*
  59.     0:空闲时时钟信号CLK为低电平,第1个边沿开始采样;
  60.     1:空闲时时钟信号CLK为低电平,第2个边沿开始采样;
  61.     2:空闲时时钟信号CLK为高电平,第1个边沿开始采样;
  62.     3:空闲时时钟信号CLK为高电平,第2个边沿开始采样;
  63.    */

  64.   //初始化VFD
  65.   //显示设置位数
  66.   digitalWrite(VFD_CS, LOW);
  67.   SPI.transfer(0xe0);
  68.   SPI.transfer(0x07);   //(8位)
  69.   digitalWrite(VFD_CS, HIGH);
  70.   VFD_SetDimming(VFD_Dimming);
  71.   char s[8] = {0x0d,'W','i','F','i','.','.','.'};
  72.   WiFi.mode(WIFI_STA);
  73.   WiFi.begin(ssid, password);
  74.   while ( WiFi.status() != WL_CONNECTED ) {
  75.     VFD_DISP(s);
  76.     delay (500);
  77.   }
  78.   timeClient.begin();
  79.   delay(1000);
  80. }

  81. void loop() {

  82.   timeClient.update();
  83.   time_t t = timeClient.getEpochTime();  //获得时间戳
  84.   struct tm *p = gmtime(&t);
  85.   char sDate[16], sTime[16];
  86.   //strftime(sDate, 16,  "%Y-%m-%d", p);
  87.   strftime(sTime, 16,  "%H:%M:%S", p);
  88.   VFD_DISP(sTime);
  89.   delay(500);

  90.   //调整VFD亮度
  91.   while(digitalRead(VFD_DIMMING_UP) == LOW){
  92.     if(VFD_Dimming < 0xf0){
  93.       VFD_Dimming++;
  94.       VFD_SetDimming(VFD_Dimming);
  95.       char s[8] = {0x08,'D','i','m','m','i','n','g'};
  96.       VFD_DISP(s);
  97.     }
  98.     delay(50);
  99.   }
  100.   while(digitalRead(VFD_DIMMING_DOWN) == LOW){
  101.     if(VFD_Dimming > 0x01){
  102.       VFD_Dimming--;
  103.       VFD_SetDimming(VFD_Dimming);
  104.       char s[8] = {0x09,'D','i','m','m','i','n','g'};
  105.       VFD_DISP(s);
  106.     }
  107.     delay(50);
  108.   }
  109. }
复制代码



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:995832 发表于 2021-12-22 19:59 | 只看该作者
很好,就是没有电路图
回复

使用道具 举报

板凳
ID:83345 发表于 2022-1-7 16:55 | 只看该作者
电路图在这里
#define VFD_MOSI 13
#define VFD_CLK  14
#define VFD_CS   15
#define VFD_RST  16
回复

使用道具 举报

地板
ID:471632 发表于 2022-3-9 10:23 | 只看该作者
很不错,就是型号,图片更多点更好了,怎么驱动,在哪里买,淘宝上有裸屏,还需什么驱动
回复

使用道具 举报

5#
ID:168911 发表于 2022-9-9 22:17 | 只看该作者
tigerzq 发表于 2022-3-9 10:23
很不错,就是型号,图片更多点更好了,怎么驱动,在哪里买,淘宝上有裸屏,还需什么驱动

不是做广告,我在咸鱼上买过,一样的型号,8位5x7点,3.3v供电,内置驱动芯片和变压器,
回复

使用道具 举报

6#
ID:230742 发表于 2022-9-29 16:53 | 只看该作者
我也问过。买屏的说我可能点不亮。我不会。哈哈。
回复

使用道具 举报

7#
ID:168911 发表于 2023-4-5 10:57 | 只看该作者
我把楼主的配网改成了ap配网,添加了年月日,显示个几秒,然后显示时间 ,比这个写死网络的方便,谁便拿到哪里都能用,
回复

使用道具 举报

8#
ID:1088882 发表于 2024-2-20 10:56 | 只看该作者
老当益壮 发表于 2023-4-5 10:57
我把楼主的配网改成了ap配网,添加了年月日,显示个几秒,然后显示时间 ,比这个写死网络的方便,谁便拿到 ...

您好,能否分享代码学习学习,谢谢!!!
回复

使用道具 举报

9#
ID:1088882 发表于 2024-2-20 11:09 | 只看该作者
老当益壮 发表于 2023-4-5 10:57
我把楼主的配网改成了ap配网,添加了年月日,显示个几秒,然后显示时间 ,比这个写死网络的方便,谁便拿到 ...

您好,能否分享代码学习学习,谢谢!
回复

使用道具 举报

10#
ID:65237 发表于 2024-2-27 09:05 | 只看该作者
老当益壮 发表于 2023-4-5 10:57
我把楼主的配网改成了ap配网,添加了年月日,显示个几秒,然后显示时间 ,比这个写死网络的方便,谁便拿到 ...

让我们分享一下你的代码
回复

使用道具 举报

11#
ID:1088882 发表于 2024-3-24 16:51 | 只看该作者
老当益壮 发表于 2023-4-5 10:57
我把楼主的配网改成了ap配网,添加了年月日,显示个几秒,然后显示时间 ,比这个写死网络的方便,谁便拿到 ...

您好,能否分享代码学习学习,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表