基于Arduino和AIDA64的lcd1602显示电脑状态

本文介绍如何使用Arduino和AIDA64软件,通过LCD1602显示屏实时展示电脑的CPU温度、GPU温度和内存使用率等信息。硬件包括UNO板、带IIC的LCD1602屏幕,通过特定的串口通信和软件设置实现数据传输。在AIDA64中配置LCD设置,并通过解码接收到的数据帧获取所需信息。虽然代码存在一些小问题,如无法显示温度的符号,但提供了良好的基础进行进一步优化。
摘要由CSDN通过智能技术生成

基于Arduino和AIDA64的lcd1602显示电脑状态

前言

  大家都知道AIDA64可以用作副屏来显示电脑的一些参数如CPU温度、GPU温度什么的,但是身边没有副屏怎么办,这时我看到了B站UP主 会飞的阿卡林的一个视频(av77823747),用数码管来显示。这是个好办法但是为什么不用lcd来显示呢,自带背光看得更清楚,而且能显示的东西更多,需要四条数码管来显示的lcd只需要一块。所以我就想到了做一个基于arduino和AIDA64的lcd1602屏。

硬件

在这里插入图片描述
1、UNO板
在这里插入图片描述
2、带IIC的lcd1602
3、杜邦线若干
4、数据线(串口通信、烧写程序,一般uno都自带)

硬件连接

在这里插入图片描述
GND 接 GND
VCC 接 5V
SDA 接 A4
SCL 接 A5
左边LCD右边UNO
Uno板连电脑我就不说了是个人都会

软件

1、 AIDA64(下面称为AD64)不用说必备我用的是Extreme版的;
预先步骤:打开AD64左上角文件——设置——LCD
在这里插入图片描述
就这样不选启用POS VFD支持,然后选择lcd项目
在这里插入图片描述
像我这样就是设置好了分别是CPU温度、内存使用率、GPU温度、主音量,可以自定义,然后应用。
2、 虚拟串口软件(如果是想二次开发必备,用成品忽略);
3、 串口调试软件(同上)。

数据分析

用串口调试软件读数据(一开始就做了CPU和GPU的温度)
在这里插入图片描述
可以看到这是ad64发来的数据帧(16进制)
在这里插入图片描述
字符串
通过上面两张图不难发现43为起始位(C)20(空格)## 标题47(G),43和47后面都跟了7位。所以我们只要提取出开头一个字符再取7位就是我们要的。

代码

直接上代码

#include "16HEX.h"
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4); 

char frame1[8] = {
   }; //用于存储AIDA64从串口发来的信息  CPU XX-C  cup温度
char frame2[8] = {
   }; //用于存储AIDA64从串口发来的信息  CPU XX-C  gpu温度
char frame3[8] = {
   }; //用于存储AIDA64从串口发来的信息  Mem XX%   内存使用率
char frame4[8]
要在Arduino Uno板上让LCD1602显示时间,你需要使用一个实时时钟模块(RTC),比如常见的DS3231模块,它能够保持精确的时间,即使Arduino断电后也能继续计时。以下是实现该功能的基本步骤: 1. 连接RTC模块和LCD1602Arduino Uno板。通常,你需要连接如下: - RTC模块的VCC引脚连接到Arduino的5V输出; - RTC模块的GND引脚连接到Arduino的GND; - RTC模块的SDA和SCL引脚分别连接到Arduino的A4(SDA)和A5(SCL)。 对于LCD1602: - VSS连接到GND; - RW连接到GND(只写模式); - E连接到另一个数字引脚; - D4-D7分别连接到Arduino的数字引脚(如果是4位数据模式,只需连接D4-D7); - A(背光)连接到5V; - K(背光)连接到GND。 2. 下载并安装RTC模块和LCD1602Arduino库文件。对于DS3231 RTC模块,常用的库是"RTClib.h";对于LCD1602,常用的库是"LiquidCrystal.h"。 3. 编写代码来初始化RTC模块和LCD1602,并定期读取时间然后显示在LCD上。以下是一个简化的代码示例: ```cpp #include <Wire.h> #include <RTClib.h> #include <LiquidCrystal.h> RTC_DS3231 rtc; // 定义RTC对象 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // 定义LCD对象并初始化引脚 void setup() { if (!rtc.begin()) { lcd.print("Couldn't find RTC"); while (1); } if (rtc.lostPower()) { rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // 如果RTC丢失电源,重新设置时间 } lcd.begin(16, 2); // 设置LCD的列和行 } void loop() { DateTime now = rtc.now(); // 读取当前时间 lcd.clear(); lcd.setCursor(0, 0); lcd.print(now.hour(), DEC); lcd.print(':'); lcd.print(now.minute(), DEC); lcd.print(':'); lcd.print(now.second(), DEC); delay(1000); // 更新时间间隔为1秒 } ``` 在这段代码中,首先包含了必要的库文件,并初始化了RTC模块和LCD1602。在`setup()`函数中检查RTC模块是否正常工作,并且如果RTC模块丢失了电源,则使用编译时间对其进行重新设置。在`loop()`函数中,我们定期读取时间并显示在LCD上。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值