加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

STM32學習記錄-如何屏幕畫取折線圖(函數(shù)代碼)

06/13 08:58
1620
服務支持:
技術交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術大咖們分享疑惑和經驗、收獲成長和認同、領取優(yōu)惠和紅包等。

虛擬商品不可退

當前內容為數(shù)字版權作品,購買后不支持退換且無法轉移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關方案
  • 方案介紹
  • 相關文件
  • 推薦器件
  • 相關推薦
  • 電子產業(yè)圖譜
申請入駐 產業(yè)圖譜

實驗效果圖

本次實驗運用到的函數(shù)

因為大家運用到的屏幕可能不同,所以這里我只貼了功能函數(shù),大家可以根據(jù)具體的修改

畫直線的函數(shù)

/**
* @brief ?在 ILI9341 顯示器上使用 Bresenham 算法畫線段
* @param ?usX1 :在特定掃描方向下線段的一個端點X坐標
* @param ?usY1 :在特定掃描方向下線段的一個端點Y坐標
* @param ?usX2 :在特定掃描方向下線段的另一個端點X坐標
* @param ?usY2 :在特定掃描方向下線段的另一個端點Y坐標
* @note 可使用LCD_SetBackColor、LCD_SetTextColor、LCD_SetColors函數(shù)設置顏色
* @retval 無
*/
void ILI9341_DrawLine ( uint16_t usX1, uint16_t usY1, uint16_t usX2, uint16_t usY2 );

局部清屏函數(shù)

/**
* @brief ?對ILI9341顯示器的某一窗口以某種顏色進行清屏
* @param ?usX :在特定掃描方向下窗口的起點X坐標
* @param ?usY :在特定掃描方向下窗口的起點Y坐標
* @param ?usWidth :窗口的寬度
* @param ?usHeight :窗口的高度
* @note 可使用LCD_SetBackColor、LCD_SetTextColor、LCD_SetColors函數(shù)設置顏色
* @retval 無
*/
void ILI9341_Clear ( uint16_t usX, uint16_t usY, uint16_t usWidth, uint16_t usHeight )

如何畫

第一步

首先是X軸和Y軸,先確定屏幕的字模方向,在屏幕中畫出X與Y軸

第二步

建立一個數(shù)值來儲存數(shù)據(jù)

這個數(shù)組會保存數(shù)據(jù)的起始坐標與結束坐標,實現(xiàn)畫出一條連接的直線

#define NUM 8

typedef struct 
{
  uint16_t start_x;   //按鍵的x起始坐標  
  uint16_t start_y;   //按鍵的y起始坐標
  uint16_t end_x;     //按鍵的x結束坐標 
  uint16_t end_y;     //按鍵的y結束坐標
  uint32_t num;      //數(shù)值

}XL_Num;

第三步

實現(xiàn)數(shù)據(jù)的保存,以及實現(xiàn)坐標的自動演算保證與上一個點連接,這里有個判斷是不是第一個數(shù)據(jù)點,如何是的化就是從起始點來,如果不是就直接按照方位遞增(這里我是保存到flash里面之后再從里面拿數(shù)據(jù),可以省去這一步)

/*圖像結構體數(shù)組*/
XL_Num Num[NUM];

void draw_X_Y(u8 i){
	
	u8 j;
	//生成數(shù)據(jù)保存到flash
	InternalFlash(0X00 ,RandNum());
	if(i>0){
				
	   Num[i].start_x = Num[i-1].end_x;
			Num[i].start_y = Num[i-1].end_y ;
			Num[i].end_x = 30+i*30;
			Num[i].end_y = 210-Read_flash(0X00);
			//讀取flash數(shù)據(jù)
			Num[i].num = Read_flash(0X00) ;
	

	}else{
	   Num[i].start_x = 30;
			Num[i].start_y = 205;
			Num[i].end_x = 30;
			Num[i].end_y = 210-Read_flash(0X00);
			//讀取flash數(shù)據(jù)
			Num[i].num = Read_flash(0X00) ;	
	
	
	}

}

RandNum()函數(shù)是產生隨機數(shù)據(jù)的一個功能函數(shù)

int b;
 /**
  * @brief  生成隨機數(shù)據(jù)
  * @param  None
  * @retval int a=m+rand()%(n-m+1);
  */
int RandNum(void){
	int a;
	
	b = 0+rand()%1500;
	printf("隨機產生1個[50,150)范圍內隨機數(shù):nn");
	srand(b);   //用時間作種子
	b++;
	if(b>100)
		b=0;
	//srand(time(0));
	a = 50+rand()%100;
	printf("隨機數(shù)為:%d",a);
	return a;
	   
}	

第四步

只是主要程序,因為數(shù)組大小是8,所以當保存了第八數(shù)一個圖就會自動清除之后又進行一個循環(huán)的顯示

while ( 1 )
	{
		delay_ms(10);
		time++;
		if(time == 10){
			
			draw_X_Y(i);
			
			//ILI9341_Clear(40,0,LCD_X_LENGTH,190);	
			i++;
			time=0;
			xl_avge=0;
			xl_avge= (Num[0].num+Num[1].num+Num[2].num+Num[3].num+Num[4].num+Num[5].num+Num[6].num+Num[7].num)/8 ;
			if(i>7){
				i=0;
				ILI9341_Clear(33,0,LCD_X_LENGTH,190);
				//xl_avge= (Num[0].num+Num[1].num+Num[2].num+Num[3].num+Num[4].num+Num[5].num+Num[6].num+Num[7].num)/8 ;
				for(q=0;q<i;q++){	
				ILI9341_DrawLine(Num[q].start_x,Num[q].start_y,Num[q].end_x,Num[q].end_y)	;
				sprintf((char*)str,"%d",Num[q].num);	
				ILI9341_DispString_EN(Num[q].end_x,Num[q].end_y,str);
			
			}		
			}
			for(q=0;q<i;q++){	
			ILI9341_DrawLine(Num[q].start_x,Num[q].start_y,Num[q].end_x,Num[q].end_y)	;
			sprintf((char*)str,"%d",Num[q].num);	
			ILI9341_DispString_EN(Num[q].end_x,Num[q].end_y,str);
			
			}
			if(xl_avge<100){
				sprintf((char*)string,"heart- rate: %d",xl_avge);
			}else{
				sprintf((char*)string,"heart rate: %d",xl_avge);
			}
		  
	
	
			ILI9341_DispString_EN(60,210,string);	

					
		}
			
		
		
		//觸摸檢測函數(shù),本函數(shù)至少10ms調用一次
		//	XPT2046_TouchEvenHandler();
	}

聯(lián)系方式 微信號:13648103287

  • 聯(lián)系方式.docx

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
ATXMEGA32A4U-MH 1 Microchip Technology Inc IC MCU 8BIT 32KB FLASH 44VQFN
$3.4 查看
ATXMEGA128A1U-AUR 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, PQFP100, TQFP-100
$73.57 查看
ATSAMA5D31A-CU 1 Atmel Corporation RISC Microprocessor, 32-Bit, 536MHz, CMOS, PBGA324, 15 X 15 MM, 1.40 MM HEIGHT, 0.80 MM PITCH, GREEN, MO-275KAAE-1, LFBGA-324

ECAD模型

下載ECAD模型
$22.61 查看

相關推薦

電子產業(yè)圖譜

方案定制,程序設計方案、單片機程序設計與講解、APP定制開發(fā)。本公眾號致力于向讀者傳遞關于程序設計和開發(fā)的相關知識,并分享一些關于軟件開發(fā)的最佳實踐。如果您有什么問題或建議,請隨時聯(lián)系我們。我們將竭誠為您服務