|
|
雖然網(wǎng)上有很多關(guān)于使用AIDA64發(fā)送串口到單片機(jī)的教程,但是很多都不完整,我就細(xì)說(shuō)一下實(shí)現(xiàn)的過(guò)程,主要使用到的工具USB轉(zhuǎn)串口模塊,屏幕數(shù)碼管什么都行能顯示數(shù)字的都可以,單片機(jī)。
f32cd274fc19cd52333aae06fcfa631.jpg (5.41 MB, 下載次數(shù): 65)
下載附件
2020-5-20 09:03 上傳
上位機(jī)軟件就不用多說(shuō)了aide64。我們先說(shuō)說(shuō)aide64的配置。
EDST0R8A]{I152M7Y(K@`XN.png (112.65 KB, 下載次數(shù): 69)
下載附件
2020-5-20 09:06 上傳
點(diǎn)擊設(shè)置。然后插入usb轉(zhuǎn)串口工具在設(shè)備管理器查看是COM幾我的是COM
NNG]QY%$NV6BL975W2TXZ}I.png (48.17 KB, 下載次數(shù): 73)
下載附件
2020-5-20 09:11 上傳
,然后如圖設(shè)置
InkedYPI{_`N6280AVJ3KZ96@`DN_LI.jpg (775.33 KB, 下載次數(shù): 59)
下載附件
2020-5-20 09:12 上傳
,設(shè)置好以后這個(gè)默認(rèn)的波特率就是9600,起始位為1位,這個(gè)是關(guān)于通信的所以很重要,然后配置需要顯示的內(nèi)容
1589937294(1).jpg (48.59 KB, 下載次數(shù): 60)
下載附件
2020-5-20 09:15 上傳
我第一的內(nèi)容是CPU的使用率,第二個(gè)是CPU的溫度,第3個(gè)是內(nèi)存的使用率,
X]V85]RH)DF51heiKFQ9$LSYGI.png (28.8 KB, 下載次數(shù): 57)
下載附件
2020-5-20 09:17 上傳
其中我CPU使用率這里的開(kāi)始字母為S結(jié)束的字母為E這是用來(lái)給單片機(jī)判斷這個(gè)是什么數(shù)據(jù),比如說(shuō)CPU使用率為100%串口收到的數(shù)據(jù)就是為['S'][' ']['1']['0']['0']['E']第一個(gè)數(shù)據(jù)為'S'第6個(gè)數(shù)據(jù)為'E',如果CPU使用率為1%那么收到的數(shù)據(jù)為['S'][' ']['1']['E']這里必須注意這里只會(huì)收到4個(gè)數(shù)據(jù)所以我們只需要判斷開(kāi)始是否為'S' 和'E'就知道數(shù)據(jù)是CPU使用率還是溫度之類的而判斷'E'的位置就能知道CPU使用率為1位還是2位還是3位,注意這里所有的數(shù)據(jù)都是ASCII碼所以收到的是字符的S空字符字符的1字符的E。把這些讀到的數(shù)據(jù)都用單片機(jī)顯示出來(lái)即可。因?yàn)轫?xiàng)目文件就不分享了因?yàn)椴皇浅S玫膯纹瑱C(jī)。主函數(shù)可以分享一下
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()初始化函數(shù),調(diào)用函數(shù)有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]);
}
/******************************內(nèi)存*******************************************/
if((gMer[0] == 0x4d) && (gMer[5] == 0x6d)) //3位內(nèi)存
{
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位內(nèi)存
{
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位內(nèi)存
{
OLED_ShowChar(32,4,' ');
OLED_ShowChar(48,4,' ');
OLED_ShowChar(64,4,gMer[2]);
}
}
}
}
void Timer0_ISR() interrupt 1
{
T0_INT_FLAG_CLR;//清除Timer0中斷標(biāo)志
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中斷標(biāo)志
if(RI0 == 1)
{
UART0_STATE = 0x17;//清除接收中斷標(biāo)志位
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;//清除發(fā)送中斷標(biāo)志位
}
}
|
-
-
main.rar
2020-5-20 09:32 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
1.19 KB, 下載次數(shù): 16, 下載積分: 黑幣 -5
有積分可以下載一下但是估計(jì)參考意義不大因?yàn)樵砩厦嬉呀?jīng)說(shuō)的很清楚了
評(píng)分
-
查看全部評(píng)分
|