当前位置: 首页 > news >正文

嵌入式入门学习——8基于Protues仿真Arduino+SSD1306液晶显示数字时钟

0 系列文章入口

嵌入式入门学习——0快速入门,Let‘s Do It!

SSD1306

1 Protues查找SSD1306器件并放置在画布,画好电气连接(这里VCC和GND画反了,后面仿真出错我才看见,要是现实硬件估计就烧毁了,嵌入式烧板子可太正常了,不过这种低级错误还是要避免的),不知道怎么操作请看本系列教程往期文章
2、3 查找SSD1306驱动库并安装
在这里插入图片描述
4 按照以下路径打开示例代码:File》Examples》ssd 1306》demos》ssd1306_demo
在这里插入图片描述
5点击编译
6编译成功
在这里插入图片描述
注意不要简单的把例程代码复制出来,因其还需要sova.cpp、sova.h文件,可以整个工程另存到桌面
7 这是另存到桌面的工程,看不到Protues需要的可执行文件
8 通过Everything搜索工程名称
9可见我们需要的hex或者elf可执行文件,没有Everything的如果是默认安装应该在这个路径下:C:\Users\0\AppData\Local\Temp\arduino\sketches,在这个文件夹下用windows自带的工具搜工程名
建议还是装个Eveything,电脑文件检索最好用的工具
在这里插入图片描述
10 装载固件,运行看一下效果,Arduino的优势显现出来了,例程完全没有修改就跑出了很好的效果。如果用的是其他主控如ESP8266之类的只需要在IDE选择不同的板子编译并注意硬件连接即可。
请添加图片描述

时钟功能

1 首先看看有没有库
2 搜索RTC,其实我也没怎么开发过Arduino(主业是STM32和DSP,大家一起学吧)
3 看看这个好像可以因为UNO基于的是AVR主控(英文阅读能力要有的哦)
在这里插入图片描述
看一下示例代码,把两个例程简单糅合一下,效果就出来了
请添加图片描述
贴代码

#include "ssd1306.h"
#include "nano_gfx.h"
#include "sova.h"
#include <AVR_RTC.h>
void setup()
{setup_RTC_interrupt();tm CurrTimeDate;          // set up an array for the RTC info.// <year yyyy> <month mm Jan=0> <date dd> <day d Sun=0> <hour hh> <minute mm> <second ss>CurrTimeDate.tm_year = (uint8_t)(   2016 - 1900 );CurrTimeDate.tm_mon = (uint8_t)     0;CurrTimeDate.tm_mday = (uint8_t)    12;CurrTimeDate.tm_wday = (uint8_t)    2;CurrTimeDate.tm_hour = (uint8_t)    17;CurrTimeDate.tm_min = (uint8_t)     16;CurrTimeDate.tm_sec = (uint8_t)     0;set_system_time( mktime( (tm*)&CurrTimeDate));/* Select the font to use with menu and all font functions */ssd1306_setFixedFont(ssd1306xled_font6x8);ssd1306_128x64_i2c_init();ssd1306_clearScreen();
}void loop()
{time_t currentTick;       // set up a location for the current time stamp since the time((time_t *)&currentTick);ssd1306_printFixed(0,  8, ctime( (time_t *)&currentTick), STYLE_NORMAL);
}

结语

Arduino优势显现,这么少的代码实现了比较复杂的功能,话说做出这个效果我还没注意到这里的I2C是软件模拟的还是硬件直接驱动的,不管了Arduino管什么底层呢,能用就行了

http://www.lryc.cn/news/464524.html

相关文章:

  • 盘点现代浏览器的各种神奇能力,功能令人惊讶
  • 人工智能停滞:人工智能投资与人工智能采用之间的差距
  • 高效容器化技术(3)---docker镜像仓库
  • 使用docker搭建lnmp运行WordPress
  • 【设计模式】深入理解Python中的桥接模式(Bridge Pattern)
  • YOLOv11改进策略【卷积层】| SAConv 可切换的空洞卷积 二次创新C3k2
  • Javaweb基础-axios
  • 智能EDA小白从0开始 —— DAY20 OrCAD
  • C# WebApi 接口测试工具:WebApiTestClient应用技术详解
  • Qt_ymode自己实现
  • 5.3章节python中字典:字典创建、元素访问、相关操作
  • ECCV2024 Tracking 汇总
  • C语言知识点
  • ICMP协议以及ARP欺骗攻击
  • qt5.12.12插件机制无法加载插件问题
  • 机器学习面试笔试知识点-线性回归、逻辑回归(Logistics Regression)和支持向量机(SVM)
  • SpringBoot民宿预订系统设计与实现
  • linux环境下C程序的编译过程以及makefile的简单使用
  • 【从零开始的LeetCode-算法】945. 使数组唯一的最小增量
  • Java程序设计:spring boot(2)
  • 服务器运维监控平台
  • css中 global 和 deep(两个样式穿透) 区别
  • 【星闪技术】WS63E模块的WiFi客户端测试
  • Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
  • 操作系统 和 初识进程
  • QT--Qlabel学习、获取文本和设置文本、文本对齐方式、文本换行、显示图片
  • 深度学习:终身学习(Life-Long Learning)详解
  • 前端UI框架
  • 最佳副屏串流解决方案:如何低成本打造电脑拓展副屏?
  • SQL Injection | SQL 注入概述