久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8862|回復: 3
收起左側

AIDA64+單片機串口發送實時顯示電腦CPU使用率溫度和內存占用 附源程序

  [復制鏈接]
ID:404263 發表于 2020-5-20 09:20 | 顯示全部樓層 |閱讀模式
雖然網上有很多關于使用AIDA64發送串口到單片機的教程,但是很多都不完整,我就細說一下實現的過程,主要使用到的工具USB轉串口模塊,屏幕數碼管什么都行能顯示數字的都可以,單片機。 f32cd274fc19cd52333aae06fcfa631.jpg 上位機軟件就不用多說了aide64。我們先說說aide64的配置。 EDST0R8A]{I152M7Y(K@`XN.png 點擊設置。然后插入usb轉串口工具在設備管理器查看是COM幾我的是COM NNG]QY%$NV6BL975W2TXZ}I.png ,然后如圖設置 InkedYPI{_`N6280AVJ3KZ96@`DN_LI.jpg ,設置好以后這個默認的波特率就是9600,起始位為1位,這個是關于通信的所以很重要,然后配置需要顯示的內容 1589937294(1).jpg 我第一的內容是CPU的使用率,第二個是CPU的溫度,第3個是內存的使用率, X]V85]RH)DF51heiKFQ9$LSYGI.png 其中我CPU使用率這里的開始字母為S結束的字母為E這是用來給單片機判斷這個是什么數據,比如說CPU使用率為100%串口收到的數據就是為['S'][' ']['1']['0']['0']['E']第一個數據為'S'第6個數據為'E',如果CPU使用率為1%那么收到的數據為['S'][' ']['1']['E']這里必須注意這里只會收到4個數據所以我們只需要判斷開始是否為'S' 和'E'就知道數據是CPU使用率還是溫度之類的而判斷'E'的位置就能知道CPU使用率為1位還是2位還是3位,注意這里所有的數據都是ASCII碼所以收到的是字符的S空字符字符的1字符的E。把這些讀到的數據都用單片機顯示出來即可。因為項目文件就不分享了因為不是常用的單片機。主函數可以分享一下



unsigned int g1sCount = 0;bit g1sFlag = 0;
//unsigned char Text1[4] = "CPU:\n";
//unsigned char Text2[5] = "TEMP:";
unsigned char gUseTest[6];
unsigned char gUse[6];
unsigned char gTempTest[6];
unsigned char gTemp[6];


unsigned char gMerTest[7];
unsigned char gMer[7];
void main(void)
{
        //MCU_Init()初始化函數,調用函數有WDT_Init()、Default_Set_IO()、
        //Trace_Mode_Init()、Init_IO()、Function_Init()。
        MCU_Init();
        OLED_Init();
        OLED_ShowString(0,0,"CPU:");
        OLED_ShowString(80,0,"%");
        
        OLED_ShowString(0,2,"TEMP:");
        OLED_ShowString(96,2,"C");


        OLED_ShowString(0,4,"MER:");
        OLED_ShowString(80,4,"%");
        while(1)
        {
                //清看門狗。
                WDT_CTRL = 7;
                if(g1sFlag)
                {
                        g1sFlag = 0;
/**************************使用率****************************************/
                        if((gUse[0] == 0x53) && (gUse[5] == 0x45))       //3位使用率
                        {
                                OLED_ShowChar(32,0,gUse[2]);
                                OLED_ShowChar(48,0,gUse[3]);
                                OLED_ShowChar(64,0,gUse[4]);
                        }
                        else if((gUse[0] == 0x53) && (gUse[4] == 0x45))       //2位使用率
                        {
                                OLED_ShowChar(32,0,' ');
                                OLED_ShowChar(48,0,gUse[2]);
                                OLED_ShowChar(64,0,gUse[3]);
                        }
                        else if((gUse[0] == 0x53) && (gUse[3] == 0x45))       //1位使用率
                        {
                                OLED_ShowChar(32,0,' ');
                                OLED_ShowChar(48,0,' ');
                                OLED_ShowChar(64,0,gUse[2]);
                        }
/******************************溫度*******************************************/                        
                        if((gTemp[0] == 0x73) && (gTemp[5] == 0x65))       //3位溫度
                        {
                                OLED_ShowChar(48,2,gTemp[2]);
                                OLED_ShowChar(64,2,gTemp[3]);
                                OLED_ShowChar(80,2,gTemp[4]);
                        }
                        else if((gTemp[0] == 0x73) && (gTemp[4] == 0x65))       //2位溫度
                        {
                                OLED_ShowChar(48,2,' ');
                                OLED_ShowChar(64,2,gTemp[2]);
                                OLED_ShowChar(80,2,gTemp[3]);
                        }
                        else if((gTemp[0] == 0x73) && (gTemp[3] == 0x65))       //1位溫度
                        {
                                OLED_ShowChar(48,2,' ');
                                OLED_ShowChar(64,2,' ');
                                OLED_ShowChar(80,2,gTemp[2]);
                        }
/******************************內存*******************************************/                        
                        if((gMer[0] == 0x4d) && (gMer[5] == 0x6d))       //3位內存
                        {
                                OLED_ShowChar(32,4,gMer[2]);
                                OLED_ShowChar(48,4,gMer[3]);
                                OLED_ShowChar(64,4,gMer[4]);
                        }
                        else if((gMer[0] == 0x4d) && (gMer[4] == 0x6d))       //2位內存
                        {
                                OLED_ShowChar(32,4,' ');
                                OLED_ShowChar(48,4,gMer[2]);
                                OLED_ShowChar(64,4,gMer[3]);
                        }
                        else if((gMer[0] == 0x4d) && (gMer[3] == 0x6d))       //1位內存
                        {
                                OLED_ShowChar(32,4,' ');
                                OLED_ShowChar(48,4,' ');
                                OLED_ShowChar(64,4,gMer[2]);
                        }
                }


               
        }                        
}


void Timer0_ISR() interrupt 1
{
        T0_INT_FLAG_CLR;//清除Timer0中斷標志
        if(++g1sCount >= 32)
        {
                g1sCount = 0;
                g1sFlag = 1;
        }
}
unsigned char gUseFlag = 0;
unsigned char gUseConnt = 0;
unsigned char gTempFlag = 0;
unsigned char gTempConnt = 0;
unsigned char gMerFlag = 0;
unsigned char gMerConnt = 0;
void UART0_ISR() interrupt 16
{   
        unsigned char temp;        
        UART0_INT_FLAG_CLR;//清除UART0中斷標志        


        if(RI0 == 1)
        {
                UART0_STATE = 0x17;//清除接收中斷標志位
                temp = UART0_BUF;
                if(temp == 0x53)
                {
                        gUseFlag = 1;
                        gUseConnt = 0;
                        gUseTest[0] = 0;
                        gUseTest[1] = 0;
                        gUseTest[2] = 0;
                        gUseTest[3] = 0;
                        gUseTest[4] = 0;
                        gUseTest[5] = 0;
                }
                if(gUseFlag == 1)
                {
                        gUseTest[gUseConnt] = temp;
                        gUseConnt++;
                        if(temp == 0x45)
                        {
                                gUseFlag = 0;
                                gUse[0] = gUseTest[0];
                                gUse[1] = gUseTest[1];
                                gUse[2] = gUseTest[2];
                                gUse[3] = gUseTest[3];
                                gUse[4] = gUseTest[4];
                                gUse[5] = gUseTest[5];
                        }
                }
               
                if(temp == 0x73)
                {
                        gTempFlag = 1;
                        gTempConnt = 0;
                        gTempTest[0] = 0;
                        gTempTest[1] = 0;
                        gTempTest[2] = 0;
                        gTempTest[3] = 0;
                        gTempTest[4] = 0;
                        gTempTest[5] = 0;
                }
                if(gTempFlag == 1)
                {
                        gTempTest[gTempConnt] = temp;
                        gTempConnt++;
                        if(temp == 0x65)
                        {
                                gTempFlag = 0;
                                gTemp[0] = gTempTest[0];
                                gTemp[1] = gTempTest[1];
                                gTemp[2] = gTempTest[2];
                                gTemp[3] = gTempTest[3];
                                gTemp[4] = gTempTest[4];
                                gTemp[5] = gTempTest[5];
                        }
                }
               
               
                if(temp == 0x4d)
                {
                        gMerFlag = 1;
                        gMerConnt = 0;
                        gMerTest[0] = 0;
                        gMerTest[1] = 0;
                        gMerTest[2] = 0;
                        gMerTest[3] = 0;
                        gMerTest[4] = 0;
                        gMerTest[5] = 0;
                        gMerTest[6] = 0;
                }
                if(gMerFlag == 1)
                {
                        gMerTest[gMerConnt] = temp;
                        gMerConnt++;
                        if(temp == 0x6d)
                        {
                                gMerFlag = 0;
                                gMer[0] = gMerTest[0];
                                gMer[1] = gMerTest[1];
                                gMer[2] = gMerTest[2];
                                gMer[3] = gMerTest[3];
                                gMer[4] = gMerTest[4];
                                gMer[5] = gMerTest[5];
                                gMer[6] = gMerTest[6];
                        }
                }
        }


        if(TI0 == 1)
        {
                UART0_STATE = 0x0F;//清除發送中斷標志位
        }   
        
        
}

main.rar

1.19 KB, 下載次數: 16, 下載積分: 黑幣 -5

有積分可以下載一下但是估計參考意義不大因為原理上面已經說的很清楚了

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:328014 發表于 2020-5-20 16:22 | 顯示全部樓層
很好的東東  這個有什么應用場景嗎?
回復

使用道具 舉報

ID:404263 發表于 2020-5-20 17:09 | 顯示全部樓層
51hei團團 發表于 2020-5-20 16:22
很好的東東  這個有什么應用場景嗎?

其實也沒什么實際用途主要是看之前有人做了但是教程大部分不詳細,我做一個補充而已
回復

使用道具 舉報

ID:902208 發表于 2021-4-8 00:29 | 顯示全部樓層
您好,有些問題想請教下,上位機一樣的設置,用的stm32,但是數據無法傳輸,能加下您好友嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产区一区二区三区 | 亚洲国产欧美精品 | 免费黄色录像视频 | 一级欧美一级日韩片免费观看 | 欧美精品久久久久 | 免费一级网站 | 国产99久久 | 黄色毛片黄色毛片 | 日韩在线免费看 | 亚洲精品乱码久久久久久按摩观 | 91久操网 | 91短视频网址 | 91视频网址| aaa一区 | 一区在线播放 | 国产精品毛片av | 国产福利精品一区 | 视频在线h | 日日爱夜夜操 | av天天看| 黑人一级黄色大片 | 精品综合久久 | 欧美电影免费观看 | 中文字幕av网 | 国产成人免费视频网站高清观看视频 | 欧美在线 | 国产日韩欧美电影 | 亚洲成人自拍 | 国产三级| 欧美一级视频免费看 | 97caoporn国产免费人人 | 日本一区二区电影 | 亚洲欧洲日本国产 | 91正在播放 | 成人免费观看男女羞羞视频 | 免费一区 | 中文字幕高清免费日韩视频在线 | 国产毛片久久久 | 国产日韩免费视频 | av黄在线观看| 日本一区二区三区免费观看 |