
AIDA64 POS to LCD2004
简介
用于AIDA64 POS协议解析、LCD显示
简介:用于AIDA64 POS协议解析、LCD显示开源协议
:Public Domain
描述
基于LGT8F328P和nulllab库完成,需安装CH340驱动。
LGT8F328P请参考:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.2a8c2e8dPWzUh1&id=669708441980&_u=213vf0ba76a
nulllab库请参考:https://github.com/nulllaborg/arduino_nulllab
Bootloader请使用Nullable Mango Uno板的,16M外部晶振。
带有10pinUSB接口,可以直接插到电脑主板USB2.0排针上。
以下是我的arduino程序,可根据自己设置的实际情况进行修改。
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
//全局变量
String inputString = "";
bool stringComplete = false;
char fristchar;
String nowdate;
String nowtime;
String CPU_freq = "";
String CPU_temp = "";
String CPU_usage = "";
String CPU_power = "";
String GPU_freq = "";
String GPU_temp = "";
String GPU_usage = "";
String GPU_power = "";
String MEM_usage = "";
String MEM_power = "";
String MB_temp = "";
String GM_usage = "";
String SSD1_usage = "";
String SSD1_act = "";
String SSD1_temp = "";
String SSD2_usage = "";
String SSD2_act = "";
String SSD2_temp = "";
String HDD1_usage = "";
String HDD1_act = "";
String HDD1_temp = "";
void setup() {
Serial.begin(9600);
inputString.reserve(100);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" AIDA64 POS V1.00");
lcd.setCursor(0,2);
lcd.print(" Made by Zhang.LQ");
lcd.setCursor(0,3);
lcd.print(" 2022.12");
pinMode(13,OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
if (stringComplete) {
readserialdata(inputString);
inputString = "";
stringComplete = false;
display1602();
}
delay(250);
digitalWrite(LED_BUILTIN, LOW);
delay(250);
}
void readserialdata(String inputString) {
fristchar=inputString[0];
switch (fristchar){
case 'A':
CPU_freq=inputString.substring(2,7);
CPU_temp=inputString.substring(8,13);
CPU_usage=inputString.substring(14,19);
CPU_power=inputString.substring(22,27);
SSD1_usage=inputString.substring(28,33);
SSD1_act=inputString.substring(34,39);
break;
case 'B':
GPU_freq=inputString.substring(2,7);
GPU_temp=inputString.substring(8,13);
GPU_usage=inputString.substring(14,19);
GPU_power=inputString.substring(22,27);
SSD2_usage=inputString.substring(28,33);
HDD1_act=inputString.substring(34,39);
break;
case 'C':
MEM_usage=inputString.substring(2,7);
MEM_power=inputString.substring(8,13);
MB_temp=inputString.substring(14,19);
GM_usage=inputString.substring(22,27);
HDD1_usage=inputString.substring(28,33);
SSD2_act=inputString.substring(34,39);
break;
case 'D':
nowdate=inputString.substring(2,13);
nowtime=inputString.substring(14,19);
SSD1_temp=inputString.substring(22,27);
SSD2_temp=inputString.substring(28,33);
HDD1_temp=inputString.substring(34,39);
break;
}
}
void serialEvent() {
int j=0;
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
j++;
if (j>=40) {
stringComplete = true;
}
}
}
void display1602() {
lcd.clear();
switch (fristchar){
case 'A':
lcd.setCursor(0,0);lcd.print("CPU freq: ");lcd.setCursor(11,0);lcd.print(CPU_freq);lcd.setCursor(17,0);lcd.print("Mhz");
lcd.setCursor(0,1);lcd.print(" temp: ");lcd.setCursor(11,1);lcd.print(CPU_temp);lcd.setCursor(19,1);lcd.print("C");
lcd.setCursor(0,2);lcd.print(" usage: ");lcd.setCursor(11,2);lcd.print(CPU_usage);lcd.setCursor(19,2);lcd.print("%");
lcd.setCursor(0,3);lcd.print(" power: ");lcd.setCursor(11,3);lcd.print(CPU_power);lcd.setCursor(19,3);lcd.print("W");
break;
case 'B':
lcd.setCursor(0,0);lcd.print("GPU freq: ");lcd.setCursor(11,0);lcd.print(GPU_freq);lcd.setCursor(17,0);lcd.print("Mhz");
lcd.setCursor(0,1);lcd.print(" temp: ");lcd.setCursor(11,1);lcd.print(GPU_temp);lcd.setCursor(19,1);lcd.print("C");
lcd.setCursor(0,2);lcd.print(" usage: ");lcd.setCursor(11,2);lcd.print(GPU_usage);lcd.setCursor(19,2);lcd.print("%");
lcd.setCursor(0,3);lcd.print(" power: ");lcd.setCursor(11,3);lcd.print(GPU_power);lcd.setCursor(19,3);lcd.print("W");
break;
case 'C':
lcd.setCursor(0,0);lcd.print("MEM usage: ");lcd.setCursor(11,0);lcd.print(MEM_usage);lcd.setCursor(19,0);lcd.print("%");
lcd.setCursor(0,1);lcd.print(" power: ");lcd.setCursor(11,1);lcd.print(MEM_power);lcd.setCursor(19,1);lcd.print("W");
lcd.setCursor(0,2);lcd.print("GM usage: ");lcd.setCursor(11,2);lcd.print(GM_usage);lcd.setCursor(19,2);lcd.print("%");
lcd.setCursor(0,3);lcd.print("MB temp: ");lcd.setCursor(11,3);lcd.print(MB_temp);lcd.setCursor(19,3);lcd.print("C");
break;
case 'D':
lcd.setCursor(2,0);lcd.print(nowdate); lcd.setCursor(13,0);lcd.print(nowtime);
lcd.setCursor(0,1);lcd.print("SSD1:");
lcd.setCursor(6,1);lcd.print(SSD1_usage);lcd.setCursor(8,1);lcd.print("%");
lcd.setCursor(11,1);lcd.print(SSD1_act);lcd.setCursor(13,1);lcd.print("%");
lcd.setCursor(16,1);lcd.print(SSD1_temp);lcd.setCursor(18,1);lcd.print("C");
lcd.setCursor(0,2);lcd.print("SSD2:");
lcd.setCursor(6,2);lcd.print(SSD2_usage);lcd.setCursor(8,2);lcd.print("%");
lcd.setCursor(11,2);lcd.print(SSD2_act);lcd.setCursor(13,2);lcd.print("%");
lcd.setCursor(16,2);lcd.print(SSD2_temp);lcd.setCursor(18,2);lcd.print("C");
lcd.setCursor(0,3);lcd.print("HDD1:");
lcd.setCursor(6,3);lcd.print(HDD1_usage);lcd.setCursor(8,3);lcd.print("%");
lcd.setCursor(11,3);lcd.print(HDD1_act);lcd.setCursor(13,3);lcd.print("%");
lcd.setCursor(16,3);lcd.print(HDD1_temp);lcd.setCursor(18,3);lcd.print("C");
}
}
我的AIDA64设置:




显示效果:




板上将D5和D6引出,可以利用软串口库,接串口屏。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程

评论