《嵌入式實驗與實踐教程-基于STM32與Proteus》課件-第六章_第1頁
《嵌入式實驗與實踐教程-基于STM32與Proteus》課件-第六章_第2頁
《嵌入式實驗與實踐教程-基于STM32與Proteus》課件-第六章_第3頁
《嵌入式實驗與實踐教程-基于STM32與Proteus》課件-第六章_第4頁
《嵌入式實驗與實踐教程-基于STM32與Proteus》課件-第六章_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Proteus仿真軟件1認(rèn)識MDK-ARM2調(diào)試STM323基礎(chǔ)實例4目錄Contents創(chuàng)新設(shè)計實例6綜合設(shè)計實例5創(chuàng)新設(shè)計實例PART066.1智能溫室控制系統(tǒng)應(yīng)用實例6.2GPS定位系統(tǒng)設(shè)計實例6.3簡易示波器設(shè)計實例6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例6.5“推箱子”游戲設(shè)計實例6.1智能溫室控制系統(tǒng)應(yīng)用實例1.實例要求利用STM32F103R6、環(huán)境溫濕度傳感器SHT11設(shè)計并制作一個溫室自動控制系統(tǒng)。要求具有如下功能:(1)LCD顯示溫濕度和設(shè)定的信息;(2)具有手動和自動功能;(3)加熱、降溫、加濕和開燥過程中具有LED指示。2.硬件電路本實例的硬件仿真電路如圖6-1(a)和圖6-1(b)所示圖6-1(a)智能溫室控制系統(tǒng)應(yīng)用實例的控制驅(qū)動電路仿真原理圖圖6-1(b)智能溫室控制系統(tǒng)應(yīng)用實例的MCU控制電路仿真原理圖U1(STM32F103R6)的PC3~PC12引腳連接到LCD1(LM016L)的D0~D7、RS、RW和E引腳,PA10~PA14引腳驅(qū)動5個LED發(fā)光二極管,SHT11的SCK和DATA引腳分別連接到U1(STM32F103R6)的PA1和PA0引腳,按鍵K1~K3連接到U1的PB2~PB4引腳,從U1(STM32F103R6)的PA6~PA9分別控制著加熱器、降溫電機(jī)、加濕電機(jī)和干燥電機(jī)。3.程序設(shè)計。根據(jù)實例要求,設(shè)計的程序如下:6.1智能溫室控制系統(tǒng)應(yīng)用實例4.實例總結(jié)本實例展示了STM32F103R6微控制器和SHT11溫濕度傳感器結(jié)合實現(xiàn)溫度、濕度的實時采集并顯示,并根據(jù)設(shè)定的要求具有自動控制相應(yīng)的電機(jī)動作完成相應(yīng)的功能。主要涉及的程序如下:(1)SHT11的IIC接口協(xié)議模擬和SHT11的溫濕度數(shù)據(jù)的讀?。唬?)Get_TH和TH_Set函數(shù)用于獲取溫濕度和設(shè)定溫濕度功能;(3)ModeNot5_handler函數(shù)用于手動模式;(4)Mode5handler函數(shù)用于自動模式,在自動模式下,系統(tǒng)會根據(jù)當(dāng)前的環(huán)境溫濕度情況進(jìn)行自動開啟不同的電機(jī)工作;(5)Main主程序的按鍵識別和處理。6.1智能溫室控制系統(tǒng)應(yīng)用實例6.2GPS定位系統(tǒng)設(shè)計實例1.實例要求利用STM32F103R6的串口連接到虛擬GPS軟件的串口上實現(xiàn)GPS定位信息的顯示。2.硬件電路硬件仿真電路如圖6-2所示。圖6-2GPS定位系統(tǒng)設(shè)計實例電路仿真原理圖U1(STM32F103R6)的PA3/RXD2、PA2/TXD2引腳連接到P1(COMPIM)虛擬串口端的RXD和TXD引腳,用于虛擬串口數(shù)據(jù)的發(fā)送和接收;U1(STM32F103R6)的PC0~9引腳連接到LCD1的D0~D7、RS、R/W、E引腳上。3.程序設(shè)計。根據(jù)實例要求,設(shè)計的程序如下:6.2GPS定位系統(tǒng)設(shè)計實例4.實例總結(jié)本實例展示了如何利用STM32F103R6的串口接收GPS的信息,并正確解碼在LCD上顯示。程序中涉及的主要內(nèi)容有:(1)STM32F103R6的USART2串口配置和串口中斷函數(shù)的編寫;(2)1602液晶顯示模塊的初始化和字符串顯示,其中LCD_Init()函數(shù)實現(xiàn)LCD初始化,LCD_Write_String()函數(shù)實現(xiàn)字符串的顯示;(3)GPS協(xié)議的確碼,這部分內(nèi)容由uartBufferDeal()函數(shù)實現(xiàn)。本實例要用到VSPD虛擬串口驅(qū)動和GPS模擬軟件。6.2GPS定位系統(tǒng)設(shè)計實例6.3簡易示波器設(shè)計實例1.實例要求利用STM32F103R6內(nèi)置的A/D轉(zhuǎn)換器、定時器等資源實現(xiàn)一個可以測量信號的波形,并通過128X64圖形點(diǎn)陣LCD模塊顯示,功能如下:(1)128X64圖形點(diǎn)陣LCD顯示信號的波形;(2)具有背景網(wǎng)格顯示;(3)橫坐標(biāo)的時間軸可在10us~10ms之間調(diào)節(jié);(4)縱坐標(biāo)的波形幅度可放大和縮?。?.硬件電路硬件仿真電路如圖6-3所示。圖6-3簡易示波器設(shè)計實例電路仿真原理圖U1(STM32F103R6)的GPIOC端口引腳PC0~PC7連接到128X64圖形點(diǎn)陣LCD模塊的數(shù)據(jù)引腳DB0~DB7,PB8~PB11分別驅(qū)動LCD的E、RS、CS1和CS2引腳。外部輸入的信號經(jīng)過C1耦合電容到U2(LM358)的正端輸入引腳,R1和R2構(gòu)成2.5V的參考電平也加到U3的正輸入端,經(jīng)過U2的跟隨輸出到U1的PA0/AIN0引腳上,實現(xiàn)模擬量的輸入。按鍵K1~K4分別連接到U1的PA9~PA12引腳上。3.程序設(shè)計。根據(jù)實例要求,設(shè)計的程序如下:6.3簡易示波器設(shè)計實例6.3簡易示波器設(shè)計實例4.實例總結(jié)本實例充分利用STM32F103R6的內(nèi)置12位A/D的快速采樣率實現(xiàn)波形的顯示。程序設(shè)計涉及主要內(nèi)容如下:(1)時間軸的掃描周期通過16位定時器TIM2實現(xiàn),其中XTimepos變量用于設(shè)定16位定時周期值。(2)通過TrigLevel變量來調(diào)節(jié)波形顯示的觸發(fā)點(diǎn),該值在0~4095之間變化。(3)在TIM2_IRQHandler中斷函數(shù)中采集指定的波形數(shù)據(jù)存儲到ADCBuffer緩沖區(qū)中,當(dāng)緩沖區(qū)存儲滿置UpdateFlag。(4)Main主程序根據(jù)UpdateFlag標(biāo)志來處理被顯示波形的幅度值數(shù)據(jù)在LCD顯示屏上顯示。(5)背景網(wǎng)格通過建立Grid二維數(shù)組實現(xiàn),在背景網(wǎng)格上顯示波形時,通過邏輯或的方式顯示對應(yīng)的像素點(diǎn)。6.3簡易示波器設(shè)計實例6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例1.實例要求利用STM32F103R6T6和電機(jī)驅(qū)動器件

L293D和IRF540MOS管設(shè)計驅(qū)動電路來驅(qū)動BLDC電機(jī)實現(xiàn)如下功能:(1)可調(diào)轉(zhuǎn)速。(2)可控轉(zhuǎn)換方向。(3)顯示轉(zhuǎn)速和目標(biāo)轉(zhuǎn)速。2.硬件電路硬件仿真電路如圖6-4(a)、6-4(b)和6-4(c)所示。BLDC的電機(jī)控制器的顯示和按鍵輸入、速度調(diào)節(jié)等控制電路如圖6-4(a)所示:圖6-4(a)基于UCOSII的BLDC電機(jī)控制器設(shè)計實例的MCU控制電路仿真原理圖在圖6-4(a)中,U1(STM32F103R6)的GPIOC端口引腳PC0~PC7分別連接到LCD1(LM016L)的D0~D7引腳,U1(STM32F103R6)的GPIOA端口引腳PA11~PA13分別連接到LCD1(LM016L)的RS、RW和E引腳,可調(diào)電阻RV1(1K)的可調(diào)端連接到U1(STM32F103R6)的PA3引腳。按鍵Start、Reserve和Forward分別連接到U1(STM32F103R6)的GPIOB端口PB5、PB6和PB7引腳。BLDC的電機(jī)控制器的電機(jī)驅(qū)動電路如圖6-4(b)所示:U1(STM32F103R6)的PA8/TIM1_CH1和PA7/TIM1_CH1N連接到U2(L293D)的IN1和IN2引腳,PA9/TIM1_CH2和PB0/TIM1_CH2N連接到U2(L293D)的IN3和IN4引腳,PA10/TIM1_CH3和PB1/TIM1_CH3N連接到U3(L293D)的IN1和IN2引腳。電阻R7~R10分別為下拉電阻,R12和R13為U3的IN1和IN2引腳的下拉電阻。圖6-4(b)基于UCOSII的BLDC電機(jī)控制器設(shè)計實例的電機(jī)驅(qū)動電路仿真原理圖6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例3.程序設(shè)計根據(jù)實例要求,設(shè)計的程序如下:LCD.H頭文件和LCD.C源文件(1)LCD.H頭文件LCD.H頭文件中實現(xiàn)驅(qū)動1602液晶引腳的宏定義和相關(guān)函數(shù)聲明。6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例(2)LCD.C源文件LCD.c源文件中,lcd_command_write()函數(shù)實現(xiàn)向LCD寫命令功能的驅(qū)動函數(shù),lcd_char_write()函數(shù)實現(xiàn)向LCD指令的位置顯示字符功能的驅(qū)動函數(shù),lcd_system_reset()函數(shù)實現(xiàn)LCD的上電初始化功能。具體的操作函數(shù)源程序如下:6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例gpio.c源文件實現(xiàn)對電路中應(yīng)用到的指定GPIO引腳進(jìn)行配置。配置程序如下:6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例tim.H頭文件和tim.C源文件(1)tim.H頭文件tim.H頭文件中實現(xiàn)了與TIM1和TIM2相關(guān)的宏定義和相關(guān)函數(shù)聲明。6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例(2)tim.C源文件tim.C源文件實現(xiàn)TIM1和TIM2的初始化以及與輸入捕獲及PWM輸出的相關(guān)引腳配置。MX_TIM1_Init()函數(shù)實現(xiàn)了TIM1的3通道的PWM輸出功能的配置,MX_TIM2_Init()函數(shù)實現(xiàn)了TIM2的3通道的輸入捕獲功能的配置。HAL_TIM_Base_MspInit()函數(shù)實現(xiàn)TIM2的外設(shè)時鐘使能,PB10/TIM2_CH3,PA15/TIM2_CH1和PB3/TIM2_CH2的引腳復(fù)用功能的配置以及TIM2的中斷使能。HAL_TIM_MspPostInit()函數(shù)實現(xiàn)TIM1的外設(shè)時鐘使能,PA7/TIM1_CH1N,PB0/TIM1_CH2N,PB1/TIM1_CH3N,PA8/TIM1_CH1,PA9/TIM1_CH2,PA10/TIM1_CH3的引腳復(fù)用功能的配置。BLDC_PHASE_CHANGE()函數(shù)是BLDC電機(jī)的驅(qū)動換相函數(shù)。BLDC_Start()函數(shù)和BLDC_Stop()函數(shù)通過直接操作TIM1和TIM2寄存器方式實現(xiàn)BLDC的啟動和停止操作。6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例adc.h頭文件和adc.c源文件(1)adc.h頭文件adc.h頭文件包含了外部變量的聲明和函數(shù)的聲明。(2)adc.c源文件adc.c源文件中,MX_ADC1_Init()函數(shù)實現(xiàn)ADC1外設(shè)的配置,主要包括工作模式、數(shù)據(jù)對齊方式、ADC的啟動轉(zhuǎn)換模式、通道數(shù)等參數(shù)的配置。HAL_ADC_MspInit()函數(shù)實現(xiàn)ADC1外設(shè)時鐘使能、PA3/ADC_IN3引腳的模擬輸入通道ADC_IN3的復(fù)用功能配置和GPIOA外設(shè)時鐘使能。6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例pid.h頭文件和pid.c源文件(1)pid.h頭文件pid.h頭文件的定義如下:(2)pid.c源文件pid.c源文件包含了常量的宏定義,PID結(jié)構(gòu)體的聲明,定義。Speed_PIDInit()函數(shù)為實現(xiàn)初始BLDC電機(jī)速度的PID初始值,Speed_PIDAdjust()函數(shù)實現(xiàn)BLDC電機(jī)速度的PID自動調(diào)節(jié),函數(shù)中只采用了P算法。6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例(1)main.h頭文件main.h頭文件包含了宏定義和函數(shù)聲明。(2)main.c源文件6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例本實例展示了在STM32F103R6微控制器上運(yùn)行UCOSII操作系統(tǒng)下的BLDC電機(jī)控制。在main.c程序中,設(shè)置好向量控制器的優(yōu)先級后,通過調(diào)用OSInit()函數(shù)完成UCOSII操作系統(tǒng)的初始化工作,通過OSTaskCreate()函數(shù)創(chuàng)建UCOSII操作系統(tǒng)下的任務(wù)。首先,創(chuàng)建一個start_task()任務(wù),接著STM32F103R6的底層硬件驅(qū)動的初始化工作,主要包括:硬件初始化由HAL_Init()函數(shù)完成,系統(tǒng)時鐘初始化由SystemClock_Config()函數(shù)完成,GPIO外設(shè)初始化由MX_GPIO_Init()函數(shù)完成,TIM1外設(shè)初始化由MX_TIM1_Init()函數(shù)完成,ADC1外設(shè)初始化由MX_ADC1_Init()函數(shù)完成,TIM2外設(shè)初始化由MX_TIM2_Init()函數(shù)完成,最后調(diào)用OSStart()函數(shù)啟動UCOSII操作系統(tǒng)工作。在start_task()函數(shù)的任務(wù)中完成對TIM1的三通道的PWM占空比的設(shè)定,并使能TIM2的三個通道的輸入捕獲功能的中斷,啟動六個通道的PWM信號互補(bǔ)輸出。接著初始化BLDC的相位、并通過調(diào)用Speed_PIDInit()函數(shù)完成PID的初始化值設(shè)定。同時開啟led0_task()的LED發(fā)光二極管指示任務(wù)和speed_adc_task()的實時檢測ADC輸入的控制BLDC速度設(shè)定的UCOSII操作系統(tǒng)下的任務(wù)。本實例的可調(diào)轉(zhuǎn)速通過可調(diào)電阻和STM32的ADC功能,實現(xiàn)500-4596范圍的速度調(diào)節(jié)。使用的是簡單的比例控制,并未使用復(fù)雜的PID控制。通過定時器1的PWM互補(bǔ)輸出六路PWM控制電機(jī)的轉(zhuǎn)動,驅(qū)動器使用L293D和IRF540MOS管。換向使用的是外部中斷,測速使用的是定時器2的三鹿輸入捕獲。正反轉(zhuǎn)使用的是外部中斷。使用ucosii進(jìn)入分功能多任務(wù)處理?;赨COSII的BLDC電機(jī)控制器設(shè)計實例的波形及仿真效果圖如圖6-4(c)所示:圖6-4(c)基于UCOSII的BLDC電機(jī)控制器設(shè)計實例的波形及仿真效果圖6.4基于UCOSII的BLDC電機(jī)控制器設(shè)計實例6.5“推箱子”游戲設(shè)計實例1.實例要求利用STM32F103R6微控制器、160X128圖形點(diǎn)陣LCD顯示屏和5個按鍵實現(xiàn)“推箱子”游戲。游戲具有9關(guān)。2.硬件電路硬件仿真電路如圖6-5所示。160X128圖形LCD顯示屏的數(shù)據(jù)引腳D0~D7、控制引腳C/D、CE、WR和RD分別連接到STM32F103R6的PC0~PC11引腳上,控制操作的上/下/左/右和OK鍵分別連接到PA9~PA13引腳上。圖6-5“推箱子”游戲設(shè)計實例的波形及仿真效果圖3.程序設(shè)計在程序設(shè)計前,需要完成以下兩件事情:(1)制作可以顯示16X16的人物、磚塊、箱子、目的、成功等圖標(biāo),將這些圖標(biāo)數(shù)據(jù)放置在Lattice[]

數(shù)組中,以便在程序運(yùn)行前裝載到LCD顯示緩存中。(2)需要將不同關(guān)卡下的人物、磚塊、箱子、目的、成功等圖標(biāo)所在點(diǎn)的位置信息存儲到一個LEVEL[][8][8]的三維數(shù)組中,以便程序根據(jù)進(jìn)入不同關(guān)卡時可以根據(jù)LEVEL數(shù)組中的信息繪制人物、磚塊、箱子、目的、成功所在點(diǎn)圖標(biāo)。在該數(shù)組中采用8X8點(diǎn)陣方式來表達(dá)不同圖標(biāo)的信息點(diǎn),其中定義顯示人物圖標(biāo)用數(shù)字“1”表示,磚塊用數(shù)字“2”表示,箱子用數(shù)字“3”表示,目標(biāo)用數(shù)字“4”表示,成功用數(shù)字“5”表示。程序設(shè)計主要包括的內(nèi)容如下:(1)160X128圖形LCD顯示屏的驅(qū)動程序設(shè)計,這部分內(nèi)容體現(xiàn)在LCD160X128.H頭文件和LCD160X128.C源文件中。在LCD160X128.H頭文件中主要有引腳配置的宏定義、T6963C控制器的指令集的宏定義以及相關(guān)函數(shù)的外部聲明,在LCD160X128.C源文件中實現(xiàn)了驅(qū)動T6963C控制器的讀寫操作時序的模擬的函數(shù)、指令集操作的函數(shù)和LCD初始化函數(shù)功能。(2)初始化顯示界面,等待按下OK鍵進(jìn)入第1關(guān)。(3)方向按鍵識別并執(zhí)行相關(guān)的操作,這部分內(nèi)容在Keyoard()函數(shù)中實現(xiàn)

。6.5“推箱子”游戲設(shè)計實例LCD160X128圖形LCD模塊驅(qū)動程序設(shè)計(1)LCD160X128.H頭文件LCD160X128.H頭文件包含主要內(nèi)容有:驅(qū)動PG160128A的引腳功能宏定義;T6963指令集宏定義;操作函數(shù)的聲明。6.5“推箱子”游戲設(shè)計實例(2)LCD160X128.C源文件在LCD160X128.C源文件中,涉及以下方面的內(nèi)容:與硬件相關(guān)的操作時序函數(shù)LCD_WriteCommand函數(shù)實現(xiàn)向PG160128A寫命令時序模擬函數(shù);LCD_ReadStatus函數(shù)實現(xiàn)從PG160128A讀取操作狀態(tài)信息時序模擬函數(shù);LCD_WriteData函數(shù)實現(xiàn)向PG160128A寫數(shù)據(jù)時序模擬函數(shù);LCD_ReadData函數(shù)實現(xiàn)從PG160128A讀數(shù)據(jù)時序模擬函數(shù)。與指令相關(guān)的功能操作函數(shù)lcd_enable函數(shù)實現(xiàn)STA0和STA1讀寫狀態(tài)信息判斷;atrd_enable函數(shù)實現(xiàn)STA2數(shù)據(jù)自動讀狀態(tài)判斷;atwr_enable函數(shù)實現(xiàn)STA3數(shù)據(jù)自動寫狀態(tài)判斷;write_cmd0函數(shù)實現(xiàn)向PG160128A寫入不帶參數(shù)的命令操作;write_cmd1函數(shù)實現(xiàn)向PG160128A寫入帶1個參數(shù)的命令操作;write_cmd2函數(shù)實現(xiàn)向PG160128A寫入帶2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論