国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十四屆省賽程序真題,真題分析與代碼講解

這篇具有很好參考價(jià)值的文章主要介紹了【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十四屆省賽程序真題,真題分析與代碼講解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十四屆省賽程序真題,真題分析與代碼講解

???【藍(lán)橋杯嵌入式】專題正在持續(xù)更新中,原理圖解析?,各模塊分析?以及歷年真題講解?都已更新完畢,歡迎大家前往訂閱本專題??

??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十屆省賽真題

??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十二屆省賽程序真題

??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十三屆省賽程序真題

??本系列專欄 - ??藍(lán)橋杯嵌入式_勾欄聽曲_0的博客

??歡迎大家 ??? ?點(diǎn)贊?? ?評(píng)論?? ?收藏??

??個(gè)人主頁 - ?勾欄聽曲_0的博客??

??希望本文能對(duì)你有所幫助,如有不足請(qǐng)指正,共同進(jìn)步吧??

??書咄咄,且休休,一丘一壑也風(fēng)流。??

目錄

題目

硬件框圖

功能要求

初始狀態(tài)說明

賽題分析

代碼實(shí)現(xiàn)


題目

硬件框圖

【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十四屆省賽程序真題,真題分析與代碼講解

功能要求

??功能概述

????????1)通過PA1引腳輸出頻率、占空比可調(diào)節(jié)的脈沖信號(hào)。

? ? ? ? 2)通過PA7引腳完成脈沖捕獲功能,測(cè)量輸入到該引腳的信號(hào)頻率。

????????3)通過微控制器的ADC 功能,檢測(cè)電位器R37上輸出的模擬電壓信號(hào)。

????????4)依試題要求,通過 LCD、LED完成數(shù)據(jù)顯示、報(bào)警指示等功能。

????????5)依試題要求,通過按鍵完成界面配置、參數(shù)設(shè)置等功能。

??性能要求

????????1)按鍵響應(yīng)時(shí)間:≤0.1秒。

????????2)指示燈動(dòng)作響應(yīng)時(shí)間:≤0.2秒。

??PWM輸出(PA1)

????????1)低頻模式:輸出信號(hào)頻率為4KHz。

????????2)高頻模式:輸出信號(hào)頻率為8KHz。

????????PA1輸出信號(hào)占空比可以通過電位器R37進(jìn)行調(diào)節(jié),關(guān)系如下圖所示

【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十四屆省賽程序真題,真題分析與代碼講解

????????當(dāng)模式切換時(shí),在保證占空比不變的前提下,頻率在5秒內(nèi)均勻的升高或降低到目標(biāo)頻率,要求頻率步進(jìn)值小于200Hz。

??頻率測(cè)量(PA7)

????????測(cè)量輸入到PA7引腳的信號(hào)頻率,并將其轉(zhuǎn)換為速度值,速度值(v)與頻率值(f)的對(duì)應(yīng)關(guān)系:

????????其中f 單位為Hz,R和K作為參數(shù),可以通過按鍵進(jìn)行調(diào)整,n取小數(shù)點(diǎn)后2位有效數(shù)字。

??顯示功能

????????1)數(shù)據(jù)界面

????????????????顯示要素包括界面名稱(DATA)、PWM輸出模式(M、實(shí)時(shí)占空比(P)、實(shí)時(shí)速度(V)。

【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十四屆省賽程序真題,真題分析與代碼講解

????????????????實(shí)時(shí)速度取小數(shù)點(diǎn)后1位有效數(shù)字。

????????????????輸出模式以“H”表示高頻模式、“L”表示低頻模式,模式切換未完成前,屏幕顯示的輸出模式保持不變。

????????2)參數(shù)界面

????????????????顯示要素包括界面名稱(PARA)、參數(shù)R和K的當(dāng)前值,R值和K值有效范圍1-10,整數(shù)。

【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十四屆省賽程序真題,真題分析與代碼講解

? ? ? ? 3)統(tǒng)計(jì)界面

????????????????顯示要素包括:界面名稱(RECD)、PWM輸出模式切換次數(shù)(N)、高頻和低頻模式下的速度最大值。

【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十四屆省賽程序真題,真題分析與代碼講解


????????????????MH:高頻模式最大速度,ML:低頻模式最大速度,顯示保留小數(shù)點(diǎn)后1位有效數(shù)字。

????????4) LCD通用顯示要求

????????????????顯示背景色(BackColor):黑色

? ? ? ????????? 顯示前景色(TextColor):白色

????????????????數(shù)據(jù)項(xiàng)與對(duì)應(yīng)的數(shù)據(jù)之間使用“=”間隔開。

????????????????請(qǐng)嚴(yán)格按照?qǐng)D示3、4、5要求設(shè)計(jì)各個(gè)信息項(xiàng)的名稱(區(qū)分字母大小寫)和行列位置。

??按鍵功能

????????1)B1:定義為“界面”按鍵,按下Bl按鍵可以往復(fù)切換數(shù)據(jù)、參數(shù)和記錄三個(gè)界面,切換模式如下圖所示。

【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十四屆省賽程序真題,真題分析與代碼講解

????????2)B2:定義為“選擇”按鍵。

????????????????在數(shù)據(jù)界面下,用于切換選擇低頻或高頻模式。按鍵按下后,5秒內(nèi)不可再次觸發(fā)切換功能。

? ? ? ????????? 在參數(shù)界面下,按下B2按鍵,切換選擇R或K參數(shù)。每次從數(shù)據(jù)界面進(jìn)入?yún)?shù)界面,默認(rèn)當(dāng)前可調(diào)整的參數(shù)為R參數(shù);從參數(shù)界面退出時(shí),新的R參數(shù)和K參數(shù)生效。

????????3)B3:定義為“加”按鍵。

????????????????在參數(shù)界面下,按下B3按鍵,當(dāng)前可調(diào)整的參數(shù)加1,參數(shù)調(diào)整模式:

… 1? 2? 3? 4? …? 10? 1? 2? 3? …

????????4)B4:定義為“減”按鍵。

????????????????在參數(shù)界面下,按下B4按鍵,當(dāng)前可調(diào)整的參數(shù)減1,參數(shù)調(diào)整模式:

… 2? 1? 10? 9? …? 2? 1? 10? 9? …

????????????????在數(shù)據(jù)界面下,長(zhǎng)按B4按鍵超過2秒后松開(長(zhǎng)按鍵),可以“鎖定”占空比調(diào)整功能,此時(shí)輸出信號(hào)占空比保持不變,不受R37電位器輸出電壓控制;處于“鎖定”狀態(tài)后,再次按下B4按鍵(短按鍵),實(shí)現(xiàn)“解鎖”功能,恢復(fù)R37電位器對(duì)輸出信號(hào)占空比的控制。

要求:

????????按鍵應(yīng)進(jìn)行有效的防抖處理,避免出現(xiàn)一次按鍵動(dòng)作觸發(fā)多次功能等情形。

????????按鍵動(dòng)作不應(yīng)影響數(shù)據(jù)采集過程和屏幕顯示效果。

????????有效區(qū)分長(zhǎng)、短按鍵功能,互不影響。

????????參數(shù)調(diào)整應(yīng)考慮邊界值,不出現(xiàn)無效參數(shù)。

????????當(dāng)前界面下無功能的按鍵按下,不觸發(fā)其它界面的功能。

??統(tǒng)計(jì)功能

????????1)低頻模式、高頻模式切換次數(shù)(N)。

? ? ? ? 2)高頻、低頻輸出模式下的最大速度分開統(tǒng)計(jì),保持時(shí)間不足2秒的速度值不納入統(tǒng)計(jì)。

??LED指示燈功能

????????1) LD1:處于數(shù)據(jù)界面,指示燈LD1點(diǎn)亮,否則熄滅。

????????2) LD2:低頻模式、高頻模式切換期間,指示燈LD2以0.1秒為間隔切換亮、滅狀態(tài),模式切換完成后熄滅。

????????3) LD3:占空比調(diào)整處于“鎖定”狀態(tài)時(shí),指示燈LD3點(diǎn)亮,否則熄滅。4)LD4-LD8指示燈始終處于熄滅狀態(tài)。

初始狀態(tài)說明

????????請(qǐng)嚴(yán)格按照下列要求設(shè)計(jì)作品上電后的初始狀態(tài):

????????1)參數(shù)R為1。

????????2)參數(shù)K為1。

????????3)切換次數(shù)N為0。

????????4)PWM輸出模式為低頻模式。

????????5)處于“解鎖”狀態(tài),R37電位器可以控制信號(hào)占空比。

????????6)處于數(shù)據(jù)顯示界面。

賽題分析

? ? ? ? 今年的賽題與最近幾屆又較大的不同,近幾屆都是老三樣(LED,按鍵,LCD)加串口再加一個(gè)模塊組成,而今年沒考串口,換成了脈沖捕獲,而PWM輸出也與以往有些不同,并不是簡(jiǎn)單的改一下頻率或占空比,而是要使用的輸出模擬電壓經(jīng)過一些換算來修改占空比,同時(shí)還有一共坑下面我們?cè)僦v解這個(gè)坑。還有就是會(huì)有更多細(xì)節(jié)上的要求,包括按鍵的長(zhǎng)按也是很久沒考過的點(diǎn)了。

? ? ? ? 簡(jiǎn)單看一下硬件框圖,得知考點(diǎn)主要有老三樣(LED,按鍵,LCD),加脈沖捕獲,模擬輸入,PWM輸出。

? ? ? ? 看一下功能概述,這里也許有些同學(xué)會(huì)有點(diǎn)混,因?yàn)槠匠?赡苁怯肞A7引腳做PWM輸出。但這次不一樣。PA1引腳才是做PWM輸出的,而PA7引腳是用來完成脈沖捕獲的。同時(shí)要檢測(cè)R37的模擬信號(hào)。

? ? ? ? 我們看到PWM模塊,PWM一共要求有兩種輸出模式,低頻與高頻,我們使用相關(guān)庫函數(shù)更改PA1引腳的自動(dòng)重裝載值即可。第二點(diǎn),PA1的PWM輸出占空比是由R37電位器的電壓決定的,看圖得知是一共分段函數(shù),R37的電壓在1V一下時(shí),占空比為10%,在3V以上時(shí),占空比為85%,中間部分就是線性增長(zhǎng)了。因?yàn)槭蔷€性的,所以解一個(gè)一元一次方程即可,解出來為:Y=37.5x-27.5(Y:占空比,單位%,X:R37通過ADC轉(zhuǎn)換的電壓。接下來大坑來啦,還要求我們?cè)诟哳l與低頻模式切換時(shí)占空比要保持不變,并且,并且啊,重點(diǎn)來啦,并且頻率的改變要在5秒內(nèi)均勻變化,并且頻率的每次變化不超過200Hz。

? ? ? ? 我們現(xiàn)在重點(diǎn)來講講這個(gè)是怎么坑的,要怎么解。首先解決頻率變化時(shí)保持占空比不變,這一點(diǎn)不算復(fù)雜,因?yàn)轭l率是通過改變自動(dòng)重裝載值來改變的,我們只需要獲取當(dāng)前PA1的自動(dòng)重裝載值然后乘上占空比的百分比,再將這個(gè)值代入改變占空比的函數(shù)即可。而這個(gè)頻率的均勻變化是怎么個(gè)均勻法呢。也許有些同學(xué)把這個(gè)均勻的概念直接加到用來修改頻率的自動(dòng)重裝載值上,嘿嘿,如果這樣,這個(gè)坑就被你踩實(shí)了。比如說,初始狀態(tài)是低頻,設(shè)置預(yù)分頻系數(shù)為“100”,自動(dòng)重裝載值為“200”,這樣的頻率就為4000Hz了,要像頻率升到8000Hz,那么自動(dòng)重裝載值就要降到“100”,但重點(diǎn)是均勻變化,這個(gè)均勻不是指200到100這個(gè)數(shù)值均勻變化,而是頻率均勻變化。所以應(yīng)該以頻率的變化來改變自動(dòng)重裝載值。

? ? ? ? 現(xiàn)在坑也說完了,我們開始正式說這個(gè)問題怎么解決。要求每次變化不大于200Hz,我們就讓它每次改變100Hz吧,假設(shè)頻率現(xiàn)在為4000Hz,要變?yōu)?000Hz,就要改變自動(dòng)重裝載值40次,又要求5秒內(nèi)完成變化,那就每0.1秒改變一次吧。第一次變化成4100Hz,那么自動(dòng)重裝載值就變成了80MHz/100(預(yù)分頻系數(shù))/4100取下整,所以每次改變自動(dòng)重裝載值,只需要先將存儲(chǔ)頻率的那個(gè)變量加100,然后代入上述的式子中就可以得到相應(yīng)的自動(dòng)重裝載值啦。然后用相關(guān)函數(shù)改變自動(dòng)重裝載值就可以啦。(記住上面說的,頻率變化的同時(shí),占空比也不能改變哦)我們來看一下這部分的代碼實(shí)現(xiàn):

if(flag_k2 == 1)		//按鍵2被按下的標(biāo)志,這一部分只在按鍵被按下后執(zhí)行一次
{
	flag_5s = 1;		//5s內(nèi)按鍵2不能進(jìn)行操作的定時(shí)器標(biāo)志,開啟這個(gè)定時(shí)器
	flag_k2 = 0;
	num ++;
	
	if(plv_pa1<200)		//plv_pa1:PA1的頻率,小于200,即按鍵按下前為低頻
	{
		flag_100 = 1;		//按鍵按下前為低頻的標(biāo)志
	}
	else if(plv_pa1 > 100)		//按鍵按下前為高頻
	{
		flag_200 = 1;		//按鍵按下前為高頻的標(biāo)志
	}
}

if(flag_5s > 0 && flag_5s <= 400)		//flag_5s:5秒的定時(shí),每10毫秒加一,加到500重置為0
																		//這一部分是0.1秒中斷執(zhí)行一次的計(jì)時(shí)器里面,所以0到400一共執(zhí)行40次,共耗時(shí)4秒。
{
	if(deng == 0)			//LED2循環(huán)閃爍的標(biāo)志
	{
		TurnOn_LED(2);
		deng++;
	}
	else
	{
		TurnOff_LED(2);
		deng = 0;
	}
	if(flag_100 == 1)						//如果是低頻
	{
		plv_pa1 = 8000/(--f48);		//這里將公式80Mhz/100(預(yù)分頻系數(shù))/頻率,簡(jiǎn)化了一下
	}
	if(flag_200 == 1)						//如果是高頻
	{
		plv_pa1 = 8000/(++f48);
	}

? ? ? ? 我們接著往下看,接下來的模塊是脈沖捕獲,脈沖捕獲雖然好幾年都沒考過了,但是實(shí)現(xiàn)起來不算太難,也因?yàn)榻鼛啄甓紱]考這個(gè)模塊,本系列專題中也沒有這個(gè)模塊的講解,如果有需要可在評(píng)論區(qū)留言,我再單獨(dú)出一篇文章這脈沖捕獲。然后這里也不是捕獲后直接輸出,還要經(jīng)過一個(gè)公式的計(jì)算然后輸出加速度,這里就不展開講啦,會(huì)在下面的代碼實(shí)現(xiàn)中具體講怎么寫的。

? ? ? ? 再往下就是LCD的顯示功能了,每個(gè)字母位于幾行幾列,每個(gè)參數(shù)保留幾位小數(shù)等細(xì)節(jié)注意一下就可以啦。需要特別注意的是數(shù)據(jù)界面中,“H”或“L”的變化要在頻率完全改變完后再改變。

? ? ? ? 按鍵比以往多了一個(gè)長(zhǎng)按,除此之外與往年形式都差不多了。

? ? ? ? 所謂統(tǒng)計(jì)功能就是記錄一下某些數(shù)值,也不用EEPROM來存儲(chǔ)。

? ? ? ? LED模塊就是常談的閃爍與亮滅了。

? ? ? ? 至此,題目就分析完畢,哪些是難點(diǎn)重點(diǎn)想必大家心中有所定見了,接下來我們就開始搓代碼吧。

代碼實(shí)現(xiàn)

? ? ? ? 個(gè)人代碼,僅供參考與討論,解題思路最重要??

? ? ? ? ??中斷模塊

? ? ? ? ? ? ? ? 使用的是TIM3,10毫秒中斷一次,里面實(shí)現(xiàn)了4個(gè)按鍵的單擊,一個(gè)按鍵的長(zhǎng)按,頻率的均勻變化,占空比的變化等。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance==TIM3)
	{
		key[0].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0);
		key[1].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1);
		key[2].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2);
		key[3].key_sta=HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0);
		
		for(int i = 0;i < 4; i++ )
		{
			switch (key[i].judge_sta)
			{
				case 0:
				{
					if(key[i].key_sta==0) 
					{
						key[i].judge_sta = 1;	//第一次判斷是否按下
						key[i].key_time = 0;
					}
				}
				break;
				case 1:
				{
					if(key[i].key_sta==0)	//進(jìn)入下一次定時(shí)器掃描,按鍵還是按下狀態(tài),那么就確認(rèn)為按下,以此來消抖
					{
						key[i].judge_sta = 2;
					}
					else
						key[i].judge_sta = 0;
				}
				break;
				case 2:
				{				
					if(key[i].key_sta==1) 		//判斷是否松手
					{
						if(key[i].key_time < 100)
						{
							key[i].key_flag = 1;
						}
						if(key[i].key_time > 100)				//一次掃描10毫秒,100次1000毫秒,就是判斷是否長(zhǎng)按超過1000毫秒
																						//松手后,才會(huì)執(zhí)行相應(yīng)反應(yīng)
						{
							key[i].long_flag = 1;
						}
						key[i].judge_sta = 0;		
						key[i].key_time = 0;
					}
					else
					{
						key[i].key_time++;
					}
				}
				break;
			}
		}
		
		
		if(a++ == 10)	//0.1s
		{
			a = 0;
			
			if(flag_k2 == 1)		//按鍵2被按下的標(biāo)志,這一部分只在按鍵被按下后執(zhí)行一次
			{
				flag_5s = 1;		//5s內(nèi)按鍵2不能進(jìn)行操作的定時(shí)器標(biāo)志,開啟這個(gè)定時(shí)器
				flag_k2 = 0;
				num ++;
				
				if(plv_pa1<200)		//plv_pa1:PA1的頻率,小于200,即按鍵按下前問低頻
				{
					flag_100 = 1;		//按鍵按下前為低頻的標(biāo)志
				}
				else if(plv_pa1 > 100)		//按鍵按下前為高頻
				{
					flag_200 = 1;		//按鍵按下前為高頻的標(biāo)志
				}
			}

			if(flag_5s > 0 && flag_5s <= 400)		//flag_5s:5秒的定時(shí),每10毫秒加一,加到500重置為0
																					//這一部分是0.1秒中斷執(zhí)行一次的計(jì)時(shí)器里面,所以0到400一共執(zhí)行40次,共耗時(shí)4秒。
			{
				if(deng == 0)			//LED2循環(huán)閃爍的標(biāo)志
				{
					TurnOn_LED(2);
					deng++;
				}
				else
				{
					TurnOff_LED(2);
					deng = 0;
				}
				if(flag_100 == 1)						//如果是低頻
				{
					plv_pa1 = 8000/(--f48);		//這里將公式80Mhz/100(預(yù)分頻系數(shù))/頻率,簡(jiǎn)化了一下
				}
				if(flag_200 == 1)						//如果是高頻
				{
					plv_pa1 = 8000/(++f48);
				}
				
				if(flag_5s > 402)                //5秒定時(shí)計(jì)數(shù)超過402
				{
					if(flag_100 == 1)
					{
						plv_pa1 = 200;
						flag_100 = 0;
					}
					if(flag_200 == 1)
					{
						plv_pa1 = 100;
						flag_200 = 0;
					}
				}
				__HAL_TIM_SetAutoreload(&htim2,plv_pa1);
				
			}
			
			pa7_duty = getADC(&hadc2);
			if(pa7_duty <= 1 && flag_s == 0)
			{
				__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,plv_pa1*0.1);	
				pa1 = 10;
			}
			else if(pa7_duty >= 3 && flag_s == 0)
			{
				__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,plv_pa1*0.85);
				pa1 = 85;
			}
			else if(flag_s == 0)
			{
				__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,plv_pa1*(0.375*pa7_duty-0.275));	
				pa1 = 37.5*pa7_duty-27.5;
			}
		}
		
		if(flag_5s >0)
		{
			flag_5s+=1;
			if(flag_5s > 500)
			{
				flag_5s = 0;
				TurnOff_LED(2);
			}
		}
		
	}
}

? ? ? ? ??脈沖捕獲

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)//捕獲計(jì)數(shù)器 頻率測(cè)量
{
	
	if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_1)//中斷消息來源 選擇直接輸入的通道
	{
		tim_val1= HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1);//獲取計(jì)數(shù)器1的值
		__HAL_TIM_SetCounter(htim,0);//計(jì)數(shù)器歸零
		frq = 1000000/tim_val1; //frq=時(shí)鐘(80m)/prescaler(80)/tim_val1
		HAL_TIM_IC_Start_IT(htim, TIM_CHANNEL_1);
	}
}

? ? ? ? ??按鍵模塊

void key_proc()
{
	if(key[0].key_flag == 1)
	{
		view++;
		if(view==3) view=0;
		if(view == 0)
		{
			TurnOn_LED(1);
			flag_r = 0;
		}
		else
		{
			TurnOff_LED(1);
		}
		LCD_Clear(Black);
		key[0].key_flag = 0;
	}
	if(key[1].key_flag == 1)
	{
		if(view == 0 && flag_k2 == 0)
		{
			flag_k2 = 1;
		}
		else if(view == 1)
		{
			flag_r++;
			if(flag_r == 2)
			{
				flag_r = 0;
			}
		}
		key[1].key_flag = 0;
	}
	if(key[2].key_flag == 1)
	{
		if(view == 1)
		{
			if(flag_r == 0)
			{
				R++;
				if(R == 11)
					R = 1;
			}
			else
			{
				K++;
				if(K == 11)
					K = 1;
			}
		}
		
		key[2].key_flag = 0;
	}
	if(key[3].key_flag == 1)
	{
		
		if(view == 1)
		{
			if(flag_r == 0)
			{
				R--;
				if(R == 0)
					R = 10;
			}
			else
			{
				K--;
				if(K == 0)
					K = 10;
			}
		}
		if(view == 0)
		{
			flag_s = 0;
			TurnOff_LED(3);
		}

		key[3].key_flag = 0;
	}
	if(key[3].long_flag == 1)
	{
		if(view ==0)
		{
			flag_s = 1;
			TurnOn_LED(3);
		}
		key[3].long_flag = 0;
	}
}

? ? ? ? ??LCD模塊

void disp_proc()
{
	Vs = frq*2*3.14*R/(100*K);
	if(plv_pa1 >= 200)
	{
		if(Vs > V_max)
		{
			V_max = Vs;
		}
	}
	else if(plv_pa1 < 105)
	{
		if(Vs > V_min)
		{
			V_min = Vs;
		}
	}
	
	if(view==0)
	{
		char text[30];
		sprintf(text,"        DATA   ");
		LCD_DisplayStringLine(Line1, (uint8_t *)text);
		if(plv_pa1 == 200)		//頻率完全改變完后改變M的值
		{
			sprintf(text,"     M=L      ");
			LCD_DisplayStringLine(Line3, (uint8_t *)text);
		}
		else if(plv_pa1 == 100)
		{
			sprintf(text,"     M=H      ");
			LCD_DisplayStringLine(Line3, (uint8_t *)text);
		}
		sprintf(text,"     p=%d%%  ",pa1);
		LCD_DisplayStringLine(Line4, (uint8_t *)text);
		sprintf(text,"     V=%.1f   ",Vs);
		LCD_DisplayStringLine(Line5, (uint8_t *)text);
	}
	else if(view==1)
	{
		//disp_clear();
		char text[30];
		sprintf(text,"        PARA    ");
		LCD_DisplayStringLine(Line1, (uint8_t *)text);
		sprintf(text,"     R=%d   ",R);
		LCD_DisplayStringLine(Line3, (uint8_t *)text);		
		sprintf(text,"     k=%d   ",K);
		LCD_DisplayStringLine(Line4, (uint8_t *)text);		
	}
	else if(view==2)
	{
		//disp_clear();
		char text[30];
		sprintf(text,"        RECD    ");
		LCD_DisplayStringLine(Line1, (uint8_t *)text);
		
		sprintf(text,"     n=%d      ",num);
		LCD_DisplayStringLine(Line3, (uint8_t *)text);
		sprintf(text,"     MH=%.1f        ",V_max);
		LCD_DisplayStringLine(Line4, (uint8_t *)text);
		sprintf(text,"     ML=%.1f        ",V_min);
		LCD_DisplayStringLine(Line5, (uint8_t *)text);
	}
}

????????希望本篇文章對(duì)你有所收獲,如有疑問或其他問題可在評(píng)論區(qū)留言??文章來源地址http://www.zghlxwxcb.cn/news/detail-413827.html

到了這里,關(guān)于【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十四屆省賽程序真題,真題分析與代碼講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【藍(lán)橋杯嵌入式】第十四屆藍(lán)橋杯嵌入式[模擬賽2]客觀題及詳細(xì)題解

    【藍(lán)橋杯嵌入式】第十四屆藍(lán)橋杯嵌入式[模擬賽2]客觀題及詳細(xì)題解

    解析 USART_CR1:控制寄存器1,其中的M位定義了數(shù)據(jù)字的長(zhǎng)度,由軟件對(duì)其設(shè)置和清零。 USART_CR2:控制寄存器2。 USART_BRR:波特率寄存器。 USART_DR:數(shù)據(jù)寄存器。 (如果現(xiàn)場(chǎng)不記得,可以查閱芯片手冊(cè)) 答案: A 解析 在STM32微控制器中,DMA可編程的數(shù)據(jù)傳送數(shù)目:最大為65535。(如果現(xiàn)場(chǎng)不

    2023年04月10日
    瀏覽(103)
  • 【藍(lán)橋杯嵌入式】第十四屆藍(lán)橋杯嵌入式[模擬賽1]程序設(shè)計(jì)試題及詳細(xì)題解

    【藍(lán)橋杯嵌入式】第十四屆藍(lán)橋杯嵌入式[模擬賽1]程序設(shè)計(jì)試題及詳細(xì)題解

    模擬賽1的題目中需要的準(zhǔn)備的知識(shí)點(diǎn)不多,其中只用到了 串口 、 LCD 、 LED 、 按鍵 、 定時(shí)器的PWM輸出 、以及 ADC 等幾個(gè)模塊,題目要求也簡(jiǎn)單詳細(xì)并且數(shù)量不多,非常適合入門比賽,以及整合自己比賽的模塊。 與模擬賽2相比,當(dāng)然是模擬賽2的試題比較難啦,雖然需要的模

    2023年04月13日
    瀏覽(718)
  • 【藍(lán)橋杯嵌入式】第十四屆藍(lán)橋杯嵌入式[模擬賽2]程序設(shè)計(jì)試題及詳細(xì)題解

    【藍(lán)橋杯嵌入式】第十四屆藍(lán)橋杯嵌入式[模擬賽2]程序設(shè)計(jì)試題及詳細(xì)題解

    這次的模擬賽試題模塊還是一些常見模塊: LCD 、 LED 、 按鍵 、 定時(shí)器 以及 串口 ,相對(duì)比較常規(guī),相比于真正的省賽也比較簡(jiǎn)單。但是它 適合剛剛學(xué)完各個(gè)模塊需要做真題的同學(xué) ,可以借此來鞏固自己之前所學(xué);對(duì)于已經(jīng)能夠掌握各個(gè)模塊的同學(xué)也是有幫助的,就是平臺(tái)

    2023年04月13日
    瀏覽(714)
  • 藍(lán)橋杯單片機(jī)第十四屆省賽題目和程序答案

    藍(lán)橋杯單片機(jī)第十四屆省賽題目和程序答案

    目錄 ?1、前言 ?2、題目 3、程序架構(gòu)? ? ?3.1 display.c ? ?3.2 ds1302.c ? ?3.3 iic.c ? ?3.4 onewire.c ? ?3.5 main.c 主函數(shù)文件 ? ?3.6 環(huán)境配置 4. 歷年藍(lán)橋杯單片機(jī)試題和答案 ? ? ? ?抽空復(fù)習(xí)了一下,拿下單片機(jī)省賽一等獎(jiǎng),在此分享一下最新的14屆省賽程序設(shè)計(jì)答案 ? ? ? ? ?模

    2024年02月06日
    瀏覽(817)
  • 藍(lán)橋杯第十四屆省賽完整題解 C/C++ B組

    藍(lán)橋杯第十四屆省賽完整題解 C/C++ B組

    沒有測(cè)評(píng),不知道對(duì)不對(duì),僅僅過樣例而已 本題總分:5 分 【問題描述】 小藍(lán)現(xiàn)在有一個(gè)長(zhǎng)度為 100 的數(shù)組,數(shù)組中的每個(gè)元素的值都在 0 到 9 的 范圍之內(nèi)。數(shù)組中的元素從左至右如下所示: 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9

    2023年04月13日
    瀏覽(95)
  • 藍(lán)橋杯2023年第十四屆省賽-飛機(jī)降落

    N 架飛機(jī)準(zhǔn)備降落到某個(gè)只有一條跑道的機(jī)場(chǎng)。其中第 i 架飛機(jī)在 Ti?時(shí)刻到達(dá)機(jī)場(chǎng)上空,到達(dá)時(shí)它的剩余油料還可以繼續(xù)盤旋 Di?個(gè)單位時(shí)間,即它最早 可以于 Ti?時(shí)刻開始降落,最晚可以于 Ti?+ Di?時(shí)刻開始降落。降落過程需要 Li個(gè)單位時(shí)間。 一架飛機(jī)降落完畢時(shí),另一架

    2024年02月15日
    瀏覽(101)
  • 【藍(lán)橋杯嵌入式】第十三屆藍(lán)橋杯嵌入式省賽客觀題以及詳細(xì)題解

    【藍(lán)橋杯嵌入式】第十三屆藍(lán)橋杯嵌入式省賽客觀題以及詳細(xì)題解

    題解: ??概念題。 MCO引腳,是單片機(jī)對(duì)外提供時(shí)鐘的引腳。 HSE,高速外部時(shí)鐘信號(hào),時(shí)鐘源由外部晶體/陶瓷諧振器與外部時(shí)鐘; HSI,高速的內(nèi)部時(shí)鐘,由內(nèi)部8MHz的RC振蕩器產(chǎn)生,可直接作為系統(tǒng)時(shí)鐘或在2分頻后作為PLL輸入; SYSCLK,是系統(tǒng)時(shí)鐘; HSE/2,對(duì)高速外部時(shí)鐘進(jìn)

    2023年04月16日
    瀏覽(787)
  • 【藍(lán)橋杯嵌入式】第十二屆藍(lán)橋杯嵌入式省賽客觀題及詳細(xì)題解

    【藍(lán)橋杯嵌入式】第十二屆藍(lán)橋杯嵌入式省賽客觀題及詳細(xì)題解

    解析: 波特率,指 每秒鐘傳輸碼元符號(hào)的個(gè)數(shù),對(duì)符號(hào)傳輸速率的一種度量,單位為1baud/s 。 由于串口只有高低電平之分,即1碼元等于1bit,即波特單位1baud和1bit等效,因此,此時(shí)的波特單位可以是位/秒。 答案: B 解析: 放大電路的開環(huán),是指未經(jīng)反饋通路形成的獨(dú)立放大電

    2023年04月17日
    瀏覽(88)
  • 藍(lán)橋杯嵌入式第十屆省賽真題

    藍(lán)橋杯嵌入式第十屆省賽真題

    總的來說這題考點(diǎn)特別的少,邏輯也比我之前發(fā)的12屆的停車計(jì)費(fèi)簡(jiǎn)單得多,還是一樣 代碼結(jié)尾自取。完全免費(fèi) 相對(duì)來說能從這題學(xué)到的。對(duì)我來說我覺得是 封裝一些“狀態(tài)”數(shù)組 。可以讓代碼的可讀性和復(fù)用性高很多。 思路其實(shí)很簡(jiǎn)單,就是切換界面和獲取adc的值,并和

    2023年04月22日
    瀏覽(102)
  • 藍(lán)橋杯2023年第十四屆省賽真題-平方差--題解

    時(shí)間限制: 3s?內(nèi)存限制: 320MB?提交: 2379 解決: 469 給定 L, R,問 L ≤ x ≤ R 中有多少個(gè)數(shù) x 滿足存在整數(shù) y,z 使得 x = y2?? z2。 輸入一行包含兩個(gè)整數(shù) L, R,用一個(gè)空格分隔。 輸出一行包含一個(gè)整數(shù)滿足題目給定條件的 x 的數(shù)量。 復(fù)制 復(fù)制 1 = 1^2?? 0^2 ; 3 = 2^2 ? 1^2 ; 4 =

    2024年02月07日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包