這是串口屏的代碼,
#include "sys.h"
#include "hmi.h"
/************************************************************************
說明:本函數庫為陶晶池串口屏數據發送指令庫,包含以下函數
1.數值發送函數:void HMI_SendNum(USART_TypeDef* USARTx,u8 *data,u8 len,u16 Num,u8 len2)
USART_TypeDef* USARTx: 選擇串口輸出,注意必須先初始化、使能該串口
u16 *data:上位機上數字位相應的改變數值代碼,如"n0.val="、"n1.val="
u8 len:*data代碼的長度。如"n0.val="長度為7。
u16 Num:需要串口輸出顯示的數值,注意開頭0不顯示,輸出數字0開頭會報錯
u8 len2:需要顯示的數值的位數 注意不能大于上位機上設定的位數
2.字符串發送函數:void HMI_SendText(USART_TypeDef* USARTx,u8 *data,u8 len,u8 *text,u8 len2)
USART_TypeDef* USARTx: 選擇串口輸出,注意必須先初始化、使能該串口
u16 *data:上位機上文本位相應的改變數值代碼,如"t0.txt="、"t1.txt="
u8 len:*data代碼的長度。如"t0.txt="長度為7。
u8 *text:需要串口輸出顯示的文本
u8 len2:需要顯示的文本的長度,英文一個字符一字節、漢字一個字兩個字節
注意取的值可以比文本長度大,但不能大于上位機上設定的長度
*************************************************************************/
//10的乘方函數,用于判斷位數
u32 HMI_Pow(u8 n)
{
u32 result=1;
while(n--)result*=10;
return result;
}
//數值發送函數
//USART_TypeDef* USARTx: 選擇串口輸出,注意必須先初始化、使能串口
//u16 *data:上位機上數字位相應的改變數值代碼
//u8 len:*data代碼的長度。
//u16 Num:需要顯示的數值,注意開頭0不顯示
//u8 len2:需要顯示的數值的位數
void HMI_SendNum(USART_TypeDef* USARTx,u8 *data,u8 len,u16 Num,u8 len2)
{
u8 t;
for(t=0;t<len;t++)
{
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,data[t]);
}
for(t=0;t<len2;t++)
{
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,'0'+(Num/HMI_Pow(len2-t-1))%10);
}
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,0XFF);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,0XFF);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,0XFF);
}
//字符串發送函數:HMI_SendText(USART_TypeDef* USARTx,u8 *data,u8 len,u8 *text,u8 len2)
// USART_TypeDef* USARTx: 選擇串口輸出,注意必須先初始化、使能該串口
// u16 *data:上位機上文本位相應的改變數值代碼,如"t0.txt="、"t1.txt="
// u8 len:*data代碼的長度。如"t0.txt="長度為7。
// u8 *text:需要串口輸出顯示的文本
// u8 len2:需要顯示的文本的長度,英文一個字符一字節、漢字一個字兩個字節
void HMI_SendText(USART_TypeDef* USARTx,u8 *data,u8 len,u8 *text,u8 len2)
{
u8 t;
for(t=0;t<len;t++)
{
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,data[t]);
}
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,0X22);
for(t=0;t<len2;t++)
{
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,text[t]);
}
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,0X22);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,0XFF);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,0XFF);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,0XFF);
}
|