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