站内搜索
发作品签到
专业版

AIDA64 POS to LCD2004

工程标签

812
0
0
0

简介

用于AIDA64 POS协议解析、LCD显示

简介:用于AIDA64 POS协议解析、LCD显示

开源协议

Public Domain

创建时间:2022-12-09 16:48:51更新时间:2023-01-04 09:38:27

描述

基于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

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航