在顯示屏上顯示的數字的方法

在現實屏上顯示的數字的時候經常需要對數據進行分解,得到數據
的每一位再依次顯示,方法有很多種,下面介紹經常用到的3種方法

第一種方法:不斷的利用取整運算與取餘運算得到每一位
void displaynum1(int Num)
{
	u8 a,b,c,d;
	d=Num/1000;
	a=(Num%1000)/100;
	b=(Num%100)/10;
	c=Num%10;
}
優點:理解起來簡單
缺點:寫起來很麻煩,同時只能顯示固定位數的數字

第二種方法:使用共同語句循環操作
void displaynum2(int Num)
{
	u8 s[5];
	u8 i=0;
aa:
	s[i] = Num%10;
	i++;
	Num=Num/10;
	if(Num!=0)
	{
		goto aa;
	}
	return col;
}
優點:無論位數是多少都能顯示,當然需要調整S數組的大小。
缺點:存在數組中的數字是逆序的,顯示的時候需要根據具體數
字做出調整,調整方法:使用循環裏面的i來進行逆序顯示

第三種方法:使用格式打印函數將數據打印到輸出流或者某個數組
當中,當做字符串來進行顯示。
void displaynum3(int Num)
{
	u8 *p;
	p = (u8 *)malloc(sizeof(char) * 10);
	sprintf(p,"%d",Num);
	//顯示字符串
	free(p);
}
優點:理解簡單,操作方便
缺點:引入stdio.h頭文件,佔用更多的內存空間

擴展:sprintf的使用,舉個例子是用在USART HMI屏幕上發送命令的函數
char send_txt(char *control,char symbol,float num)
{
	char *p;
	int i = 0;
	p = (char *)malloc(sizeof(char) * 50);
	i  = sprintf(p,"%s",control);
	i += sprintf(p+i,"%c",'\"');
	i += sprintf(p+i,"%c",symbol);
	i += sprintf(p+i,"%3.2f",num);
	i += sprintf(p+i,"%c",'\"');
	Send_string(p);
	send_end();
	free(p);
	return 1;//printf success return 1
}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章