版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢業(yè)論文(設(shè)計(jì))論文題目:二次儀表頻率計(jì)設(shè)計(jì)學(xué)生:存永學(xué) 號(hào):1008020205所在院系:電氣信息工程學(xué)院專業(yè)名稱:自動(dòng)化屆 次:2014 屆指導(dǎo)教師:苗磊目 錄前言21.總體方案設(shè)計(jì)21.1 系統(tǒng)方案實(shí)現(xiàn)框圖21.2軟硬件開發(fā)環(huán)境和工具32.硬件電路設(shè)計(jì)32.1 單片機(jī)模塊設(shè)計(jì)42.2 信號(hào)輸入電路62.3 人機(jī)界面設(shè)計(jì)73.系統(tǒng)軟件設(shè)計(jì)93.1 系統(tǒng)軟件實(shí)現(xiàn)框圖93.2頻率信號(hào)采集和測(cè)量程序設(shè)計(jì)103.3 人機(jī)界面程序設(shè)計(jì)134.系統(tǒng)測(cè)試154.1 軟硬件調(diào)試154.2 調(diào)試總結(jié)175.總結(jié)17參考文獻(xiàn):1825 / 28二次儀表頻率計(jì)設(shè)計(jì)學(xué)生:存永(指導(dǎo)老師:苗磊)(師學(xué)院電氣信息工程
2、學(xué)院)摘要:本課題是基于stm32單片機(jī)設(shè)計(jì)的一個(gè)二次儀表頻率計(jì)。通常,在工業(yè)生產(chǎn)中,各種現(xiàn)場(chǎng)信號(hào)如壓力、溫度、流量等都是通過相應(yīng)壓力變送器、溫度變送器、流量變送器傳送出來,即特定傳感器把物理量變?yōu)閷?duì)應(yīng)的200-800HZ的頻率信號(hào)。二次儀表頻率計(jì)用來檢測(cè)其對(duì)應(yīng)頻率,并將其轉(zhuǎn)換為對(duì)應(yīng)的實(shí)際物理量顯示出來。關(guān)鍵字: stm32;二次儀表;頻率計(jì);傳感器;實(shí)際物理量;頻率信號(hào)Design Of Secondary Instrument Frequency MeterStudent: Fan Cunyong (Guidance Teacher: Miao Lei)(College of Electr
3、ical and Information Engineering ,Huainan Normal University)Abstract:This study designed a secondary instrument frequency meter based on the STM32 MCU (Micro Controller Unit).Generally, in the industrial production ,many spot signals like pressure and temperature and flux are send out by homologous
4、pressure transmitter and temperature transmitter and flux transmitter respectively. All in all, the physical quantity is transfered by specific sensor into a frequency signal rated from 200HZ to 1000HZ.Secondary instrument frequency meter is used to detect the corresponding frequency and transfer it
5、 into corresponding physical quantity ,then display it.Keywords: stm32, secondary instrument, frequency meter, sensor, actual physical quantity, frequency signal前 言通常工業(yè)生產(chǎn)中,各種現(xiàn)場(chǎng)物理量如壓力、溫度、流量等都是通過相應(yīng)壓力變送器、溫度變送器、流量變送器傳送出來的。這些變送器是把物理量轉(zhuǎn)變成對(duì)應(yīng)的200Hz-800Hz的頻率信號(hào),為了準(zhǔn)確讀出這些物理量的值,就需要通過頻率計(jì)準(zhǔn)確無誤的測(cè)量出變送頻率并換算成實(shí)際的物理數(shù)值。無論是
6、在科技研究中還是在實(shí)際應(yīng)用中,毫無疑問,頻率測(cè)量的作用都顯得尤為重要。但傳統(tǒng)的頻率計(jì)通常采用組合電路和時(shí)序電路等大量的硬件電路構(gòu)成,不僅產(chǎn)品體積較大,運(yùn)行速度慢,而且測(cè)量低頻信號(hào)時(shí)不宜直接使用。與傳統(tǒng)的測(cè)量方式相比,運(yùn)用單片機(jī)頻率計(jì)有著體積更小,運(yùn)算速度更快,測(cè)量圍更寬的優(yōu)點(diǎn),而且電路簡(jiǎn)單,開發(fā)周期和成本都降低。在傳統(tǒng)的頻率計(jì)中有許多功能是依靠硬件來實(shí)現(xiàn)的,而采用單片機(jī)測(cè)量頻率之后,有許多以前需要用硬件才能實(shí)現(xiàn)的功能現(xiàn)在僅僅依靠軟件編程就能實(shí)現(xiàn),而且不同的軟件編程能夠?qū)崿F(xiàn)不同的功能,因此使得制作成本大大降低?;趯?shí)際應(yīng)用需求和當(dāng)前技術(shù)發(fā)展,本文設(shè)計(jì)出以STM32單片機(jī)為測(cè)量和控制核心的頻率計(jì)方
7、案。該設(shè)計(jì)能夠檢測(cè)出200Hz-800Hz的頻率信號(hào),并能根據(jù)現(xiàn)場(chǎng)需要換算成與一次儀表一樣的物理數(shù)值,具有頻率顯示、按鍵設(shè)置、LED狀態(tài)顯示功能。1.總體方案設(shè)計(jì)1.1 系統(tǒng)方案實(shí)現(xiàn)框圖本系統(tǒng)的方案框圖如圖1所示,包括信號(hào)輸入端的濾波整形電路、STM32單片機(jī)部分和人機(jī)交互部分。圖1 系統(tǒng)方案圖為了去除包括工頻干擾在的其他低頻干擾,在信號(hào)輸入端設(shè)計(jì)了高通濾波器,濾除200Hz以下的低頻干擾。信號(hào)整形電路能將輸入的三角波、正弦波、鋸齒波整形為單片機(jī)可以識(shí)別的矩形波。STM32單片機(jī)通過輸入捕獲/比較功能捕獲到脈沖信號(hào),運(yùn)算處理后得到脈沖頻率,在LCD128128上顯示。通過按鍵設(shè)置頻率和溫度、濕
8、度等物理量的關(guān)系,就能現(xiàn)場(chǎng)得到一次儀表一樣的物理數(shù)值。此外,電源部分提供系統(tǒng)需要的5V和3.3V電壓,下載接口用來下載程序和在線仿真,LED指示燈用來指示系統(tǒng)運(yùn)行狀態(tài)。1.2軟硬件開發(fā)環(huán)境和工具設(shè)計(jì)工具分為:硬件設(shè)計(jì)工具、軟件設(shè)計(jì)工具。硬件電路原理圖和PCB的繪制使用的是Altium Designer winter 09;軟件開發(fā)工具是KeilMDK V4.1。Altium Designer 是從Protel發(fā)展過來的,是將原理圖編輯、電路仿真、PCB設(shè)計(jì),F(xiàn)PGA設(shè)計(jì)以與打印等功能結(jié)合在一起的集成開發(fā)環(huán)境。Keil MDK,也稱MDK-ARM,Realview MDK、I-MDK、uVisi
9、on4 等。MDK-ARM軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設(shè)備提供了一個(gè)完整的開發(fā)環(huán)境。2.硬件電路設(shè)計(jì)硬件電路設(shè)計(jì)部分包括STM32單片機(jī)模塊設(shè)計(jì)、信號(hào)輸入電路設(shè)計(jì)和人機(jī)界面設(shè)計(jì),如圖2所示。圖2硬件電路圖2.1 單片機(jī)主板模塊設(shè)計(jì)在考慮硬件資源、開發(fā)容易程度和成本之后,本設(shè)計(jì)選用意法半導(dǎo)體的STM32F103RCT6,STM32系列是專為高性能、低成本和低功耗的嵌入式應(yīng)用而設(shè)計(jì)的ARM Cotex-M3核。STM32片上擁有ADC、DAC、TIM、FSMC、USART、DMA、USB、以太網(wǎng)等眾多資源,而且自帶底層庫函數(shù),極縮短了開發(fā)周期。
10、2.1.1 STM32最小系統(tǒng) 本設(shè)計(jì)主要利用STM32的GPIO、USART、輸入捕獲和定時(shí)器功能,因此考慮功能和成本選用QFP64封裝的STM32F103RCT6。STM32F103RCT6部具有256K FLASH和48K RAM,并且具有豐富的片上資源,包括IIC、SPI、UART、SDIO和三路ADC。單片機(jī)最小系統(tǒng)包括主控MCU、復(fù)位電路、時(shí)鐘電路和程序下載仿真接口,該部分設(shè)計(jì)如圖3所示。STM32F103RCT6采用3.3V供電,為了去除電源噪聲干擾,在每個(gè)電源引腳接了去耦電容,并且將模擬地和數(shù)字地分開,在單點(diǎn)處用0歐電阻或電感連接。STM32有多個(gè)時(shí)鐘可以選擇,HIS振蕩器時(shí)鐘
11、、HSE振蕩器時(shí)鐘和PLL時(shí)鐘可以用來驅(qū)動(dòng)系統(tǒng)時(shí)鐘,LSI 振蕩器和LSE外部低速時(shí)鐘可以用來驅(qū)動(dòng)看門狗或RTC。由于沒有使用RTC功能,本設(shè)計(jì)只接了8M外部高速時(shí)鐘,并聯(lián)20pf的電容幫助起振。圖3 STM32主控電路圖STM32的RST引腳是低電平復(fù)位,該部分由電容、電阻和按鍵構(gòu)成上電復(fù)位和按鍵復(fù)位電路。如圖3所示。2.1.2 電源部分本系統(tǒng)需要3.3V和5V兩種電壓供電。5V用來給單電源運(yùn)放、電壓比較器LM393供電,以與LCD12864液晶的背光供電。為了達(dá)到低功耗,STM32采用低電壓3.3V供電。所以3.3V用來給單片機(jī)供電和LED供電。為了獲得3.3V電壓,需要對(duì)輸入的5V直流電
12、進(jìn)行穩(wěn)壓,這里采用LM1117-3.3V芯片。穩(wěn)壓電路如圖4所示。LM1117是一個(gè)低壓差電壓調(diào)節(jié)器,具有較寬的電壓輸入和800mA的電流輸出。另外,為了直觀顯示3.3V電壓狀態(tài),本設(shè)計(jì)在輸出端加了發(fā)光二極管指示燈,當(dāng)有3.3V電壓輸出時(shí),發(fā)光二極管點(diǎn)亮。圖4 電源穩(wěn)壓電路2.1.3下載仿真電路STM32可以用串口下載,可以用JTAG和SWD方式進(jìn)行仿真調(diào)試。JTAG是國際標(biāo)準(zhǔn)測(cè)試協(xié)議,主要用于芯片部測(cè)試。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。許多器件都用它來仿真調(diào)試,STM32當(dāng)然也不例外。但是考慮到引腳使用和下載速度問題,本設(shè)
13、計(jì)采用SWD模式。SWD模式在高速模式下比JTAG更可靠,基本使用JTAG仿真模式的情況下都可以直接使用SWD模式的。當(dāng)電路板子空間有限或者單片機(jī)引腳欠缺的情況下,SWD是最好的選擇,這里只使用到SWDATA和SWCLK兩個(gè)IO端口,加上電源和地即可進(jìn)行下載和仿真。設(shè)計(jì)電路如圖5所示。圖5 SWD下載仿真電路2.2 信號(hào)輸入電路為了獲得單片機(jī)能夠識(shí)別的脈沖信號(hào),必須對(duì)輸入的信號(hào)進(jìn)行濾波整形。本設(shè)計(jì)在信號(hào)輸入端加入高通濾波電路和信號(hào)整形電路。 2.2.1 高通濾波電路濾波電路選用二階有源高通濾波器。有源濾波電路相對(duì)于無源濾波電路,具有較高的開環(huán)電壓增益和輸入阻抗、較低的輸出阻抗和很好的自適應(yīng)能力
14、。 二階濾波器相對(duì)于一階濾波器而言,具有更好的濾波效果。為了獲得單片機(jī)能夠識(shí)別的脈沖信號(hào),必須對(duì)輸入的信號(hào)進(jìn)行濾波整形。本設(shè)計(jì)在信號(hào)輸入端加入高通濾波電路和信號(hào)整形電路。本設(shè)計(jì)的二階有源高通濾波器能濾除低于200Hz的低頻干擾,濾除諸如50Hz的工頻等干擾頻率。濾波電路如圖6所示。運(yùn)算放大器選用LM358芯片。LM358可雙電源也可單電源供電,具有寬電壓、高增益、低功耗和部頻率補(bǔ)償?shù)忍攸c(diǎn),完全滿足設(shè)計(jì)要求。圖6高通濾波電路2.2.2 信號(hào)波形整形高通濾波電路輸出的是頻率信號(hào)的正電壓部分,為了獲得單片機(jī)能夠是別的脈沖信號(hào)就必須對(duì)其整形。整形電路可以選用施密特觸發(fā)器或者比較器,當(dāng)電壓高于某一閾值事
15、輸出高電壓,低于某一閾值時(shí)輸出低電壓,從而將頻率信號(hào)整形為脈沖信號(hào)。本設(shè)計(jì)選用LM393比較器,通過改變電位器的阻值調(diào)整比較器的正向端閾值電壓,在反相端輸入頻率信號(hào)時(shí),輸出端獲得輸出脈沖。此外,為了防止電壓過高燒壞單片機(jī),在輸出端加了一個(gè)3.3V的穩(wěn)壓二極管。電路如圖7所示圖7 比較整形電路2.3 人機(jī)界面設(shè)計(jì)為了給用戶提供一個(gè)有好的人接界面,將測(cè)量結(jié)果直觀的顯示出來,并能通過按鍵設(shè)置一些參數(shù),本系統(tǒng)設(shè)計(jì)了LCD1602液晶顯示、按鍵操作和LED狀態(tài)指示燈。2.3.1 LCD128x128液晶顯示器人機(jī)界面的顯示使用LCD128x128,可以顯示128x128點(diǎn)陣單色或4灰度級(jí)的圖片,可以顯示
16、英文、數(shù)字、符號(hào)或64個(gè)16x16的漢字。該液晶采用3.3V供電,采用6800總線驅(qū)動(dòng)。由于不需要顯示很多的漢字,本設(shè)計(jì)沒有選用帶有字庫的液晶,而是使用軟件生成需要的字庫添加到代碼里。LCD128128控制端口為數(shù)據(jù)命令選擇端口(RS)、片選端口(CS)、讀端口(RD)、寫端口(WR),以與八位數(shù)據(jù)端口(D0-D7)。2.3.2 按鍵和狀態(tài)指示燈當(dāng)采集到頻率信號(hào)時(shí),為了轉(zhuǎn)換成一次儀表的物理量,需要用戶手動(dòng)輸入物理量與頻率之間的線性關(guān)系數(shù)據(jù),所以加入按鍵功能。按鍵設(shè)計(jì)四個(gè),分別定義為功能鍵、增大建、減小鍵和確認(rèn)鍵。功能鍵用來切換主菜單功能,增大鍵和減小鍵用來調(diào)整參數(shù)大小。參數(shù)設(shè)定好之后按確認(rèn)鍵確
17、認(rèn)數(shù)據(jù),完成數(shù)據(jù)輸入。由于STM32的GPIO端口的輸入可以位置為上拉輸入、下拉輸入和浮空輸入模式,因此外部電路就省去了上拉電阻,只需要軟件配置為輸入上拉模式即可。按鍵的一個(gè)端口接地,另一端口接到單片機(jī)IO口,當(dāng)檢測(cè)到IO端口被拉低時(shí),即認(rèn)為有按鍵被按下。按鍵電路圖如圖8所示。圖8 按鍵輸入電路圖LED狀態(tài)指示燈用以指示系統(tǒng)運(yùn)行狀態(tài)和輸入頻率大小。當(dāng)系統(tǒng)正常運(yùn)行時(shí),LED1每隔一秒閃爍一次,用以指示系統(tǒng)運(yùn)行正常。LED2用來間接地指示輸入頻率大小,當(dāng)STM32捕獲到輸入脈沖時(shí)翻轉(zhuǎn)LED指示燈,頻率越高,閃爍越快,反之頻率越低,閃爍越慢。LED指示燈在一般的產(chǎn)品設(shè)計(jì)中都有很重要的作用。本系統(tǒng)設(shè)計(jì)
18、了兩個(gè)狀態(tài)指示燈,指示燈電路如圖9所示。LED是電流驅(qū)動(dòng)器件,電流的大小決定LED的亮度,為了避免大電流燒壞LED指示燈,加了1K歐的電阻限流。圖9 LED狀態(tài)指示燈電路3.系統(tǒng)軟件設(shè)計(jì)3.1 系統(tǒng)軟件實(shí)現(xiàn)框圖軟件部分分為主函數(shù)程序和中斷函數(shù)程序。當(dāng)系統(tǒng)電源開啟的時(shí)候,單片機(jī)先進(jìn)行初始化工作,配置時(shí)鐘頻率為72MHz,配置用到的GPIO端口,設(shè)置中斷優(yōu)先級(jí);配置定時(shí)器、輸入捕獲模式;初始化LCD12864、LED、按鍵等外設(shè)。在循環(huán)中更新顯示、讀取鍵值。當(dāng)定時(shí)時(shí)間到的時(shí)候進(jìn)入中斷函數(shù)。在進(jìn)入中斷函數(shù)中,首先清除中斷標(biāo)志,讀取捕獲的脈沖計(jì)數(shù)值,算出信號(hào)頻率。然后清除技術(shù)寄存器的值,開啟定時(shí)器后退
19、出中斷函數(shù),進(jìn)入主函數(shù),進(jìn)行新一輪的循環(huán)。主程序和中斷程序的流程圖如圖10所示圖10 主程序和中斷程序流程圖當(dāng)采集到頻率信號(hào)時(shí),為了轉(zhuǎn)換成一次儀表的物理量,需要用戶手動(dòng)輸入物理量與頻率之間的線性關(guān)系數(shù)據(jù),所以加入按鍵功能。按鍵設(shè)計(jì)四個(gè),分別定義為功能鍵、增大建、減小鍵和確認(rèn)鍵。功能鍵用來切換主菜單功能,增大鍵和減小鍵用來調(diào)整參數(shù)大小。參數(shù)設(shè)定好之后按確認(rèn)鍵確認(rèn)數(shù)據(jù),完成數(shù)據(jù)輸入。按鍵初始化之后需要再循環(huán)里不斷地檢測(cè),當(dāng)檢測(cè)到按鍵輸入引腳拉低時(shí),即有按鍵按下,然后延時(shí)20毫秒進(jìn)行按鍵“消抖”,因?yàn)槭謩?dòng)操作會(huì)有抖動(dòng),如不進(jìn)行消抖操作,那么短時(shí)間會(huì)判斷出有多次按鍵操作。延時(shí)之后,按鍵輸入狀態(tài)穩(wěn)定,此
20、時(shí)若仍然檢測(cè)到按鍵按下,則確定是按鍵操作,然后判斷鍵值,根據(jù)鍵值做出相應(yīng)的處理。按鍵操作流程圖如圖11所示。圖11 按鍵操作流程圖3.2頻率信號(hào)采集和測(cè)量程序設(shè)計(jì)STM32需要對(duì)系統(tǒng)時(shí)鐘、模塊時(shí)鐘和特定寄存器進(jìn)行配置才能正常工作。該部分包括STM32系統(tǒng)初始化、輸入捕獲定時(shí)器配置和頻率計(jì)算。3.2.1 STM32系統(tǒng)配置和初始化本系統(tǒng)程序采用Keil uVision4進(jìn)行編寫、編譯和調(diào)試仿真。使用STM32標(biāo)準(zhǔn)外設(shè)庫函數(shù)StdPeriph_Lib_V3.5進(jìn)行開發(fā),從而不必關(guān)心底層寄存器的配置,減少了工作量,縮短了開發(fā)周期。STM32外部接8MHz晶振,通過部PLL可以讓系統(tǒng)頻率達(dá)到72MHz
21、。STM32時(shí)鐘包括AHB高速系統(tǒng)時(shí)鐘總線、APB2高速外設(shè)時(shí)鐘總線和APB1低速外設(shè)時(shí)鐘總線。調(diào)用SystemInit(),配置AHB和APB2時(shí)鐘為72MHz,APB1時(shí)鐘為36MHz。另外用到的端口和外設(shè)也要對(duì)其時(shí)鐘進(jìn)行配置。SystemInit();RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);RCC_APB2Peri
22、phClockCmd(RCC_APB2Periph_GPIOD, ENABLE);3.2.2 STM32輸入捕獲和定時(shí)器STM32輸入捕獲的原理是當(dāng)選定的輸入引腳發(fā)生選定的脈沖觸發(fā)沿(上升沿或下降沿)的時(shí)候,該時(shí)刻定時(shí)器的計(jì)數(shù)值TIMx_CNT會(huì)被保存,同時(shí)也會(huì)產(chǎn)生捕獲中斷。本設(shè)計(jì)的思想是用定時(shí)器計(jì)時(shí),輸入捕獲進(jìn)行計(jì)數(shù),所以需要配置定時(shí)器和輸入捕獲模式。定時(shí)需用普通定時(shí)器TIM2,首先對(duì)TIM2的時(shí)鐘進(jìn)行配置,由于TIM2部是接在APB1的時(shí)鐘總線上,因此調(diào)用庫函數(shù)配置定時(shí)器時(shí)鐘如下:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);為了每
23、秒鐘讀取一次捕獲脈沖計(jì)數(shù)值,需要配置裝載寄存器,并且開啟定時(shí)中斷,當(dāng)定時(shí)時(shí)間到的時(shí)候進(jìn)入中斷函數(shù)進(jìn)行處理。具體的配置如下:TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Period = 10000 - 1; TIM_TimeBaseStructure.TIM_Prescaler = 7200 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode
24、_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_ITConfig(TIM2,TIM_IT_Update, ENABLE);TIM_Cmd(TIM2, ENABLE); STM32是搶占式核,允許中斷嵌套,每個(gè)中斷擁有一個(gè)優(yōu)先級(jí),高優(yōu)先級(jí)的中斷可以打斷低優(yōu)先級(jí)的中斷。當(dāng)優(yōu)先級(jí)一樣時(shí),根據(jù)中斷向量表中默認(rèn)的排列順序進(jìn)行中斷響應(yīng)。所以STM32開啟定時(shí)器需要對(duì)中斷向量表進(jìn)行配置。NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGr
25、oup_0);NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);配置好中斷向量表,必須給中斷一個(gè)入口函數(shù),當(dāng)中斷到來的時(shí)候可以找到這個(gè)函數(shù),進(jìn)行相應(yīng)的處理。下面的就是TIM2的中斷入口函數(shù):void TIM2_IRQHandler() /判斷增計(jì)數(shù)中斷標(biāo)志位置位if (TIM_GetITSt
26、atus(TIM2, TIM_IT_Update) != RESET) /清除中斷標(biāo)志TIM_ClearITPendingBit(TIM2, TIM_IT_Update); /進(jìn)行相應(yīng)的算法處理輸入捕獲模式用以捕捉脈沖信號(hào)進(jìn)行計(jì)數(shù)。本系統(tǒng)選擇TIM4的Channal2通道(PB.8)作為脈沖輸入引腳。這里需要開啟TIM3時(shí)鐘和GPIOA時(shí)鐘:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);PB.8作為脈沖捕獲引腳需要配置為浮空輸入模式
27、:GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB, &GPIO_InitStructure);對(duì)輸入捕獲模式的配置主要包括輸入通道、上升沿捕獲方式、捕獲預(yù)分頻和輸入腳是否濾波等,這里開啟捕獲中斷進(jìn)行計(jì)數(shù),數(shù)據(jù)處理放在定時(shí)中斷中。TIM3輸入捕獲模式詳細(xì)的配置如下:TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; TIM_ICInitStructure.TIM_ICPol
28、arity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;TIM_ICInitStructure.TIM_ICFilter = 0x00;TIM_PWMIConfig(TIM4, &TIM_ICInitStructure);TIM_SelectInputTrigger(TIM4, TIM_TS_TI2FP2);TIM_SelectSlaveMode(TI
29、M4, TIM_SlaveMode_Reset); TIM_SelectMasterSlaveMode(TIM4, TIM_MasterSlaveMode_Enable);TIM_Cmd(TIM4, ENABLE);TIM_ITConfig(TIM4, TIM_IT_CC2, ENABLE);定時(shí)器TIM2一秒的定時(shí)時(shí)間到的時(shí)候會(huì)進(jìn)入定時(shí)中斷函數(shù),在這里首先關(guān)閉定時(shí)器,讀取輸入捕獲計(jì)數(shù)值就可以得到頻率了。將脈沖計(jì)數(shù)器清零后重新開啟定時(shí)器之后退出定時(shí)中斷。3.3 人機(jī)界面程序設(shè)計(jì)人機(jī)交互界面程序設(shè)計(jì)包括LCD128x128程序設(shè)計(jì)、LED狀態(tài)指示燈設(shè)計(jì)和按鍵輸入程序設(shè)計(jì)。3.3.1 LCD128
30、x128顯示LCD128x128程序包括液晶初始化函數(shù)、寫命令函數(shù)、寫數(shù)據(jù)函數(shù)、清屏函數(shù)、以與漢字和字符的顯示。初始化需要配置控制端口和數(shù)據(jù)端口,并嚴(yán)格遵守寫入數(shù)據(jù)和寫入命令時(shí)序。時(shí)序圖如圖12所示。圖12 LCD128x128寫入時(shí)序圖 初始化和讀寫函數(shù)只需要遵守時(shí)序并且發(fā)送正確的命令字即可。本部分程序主要是實(shí)現(xiàn)漢字和字符的顯示。由于液晶不帶字庫,需要程序里添加字庫。這里采用字庫生成軟件PCtoLCD2002生成C格式字庫數(shù)據(jù),如下所示:其中Stru_GB16結(jié)構(gòu)體定義為:typedef struct uint8 Index2;uint8 Msk32;Stru_GB16;這樣每次檢索結(jié)構(gòu)體中
31、的Index成員,如果是對(duì)應(yīng)的漢字則將成員數(shù)組Msk的數(shù)據(jù)顯示出來。本部分實(shí)現(xiàn)的接口函數(shù)如下:void GUI_DispString(uint8 Row, uint8 Col, uint8 *str);void GUI_DispUnString(uint8 Row, uint8 Col, uint8 *str);void GUI_DispHZ(uint8 Row, uint8 Col ,uint8 *PStr);void GUI_DispUnHZ(uint8 Row, uint8 Col ,uint8 *PStr);3.3.2 按鍵和指示燈按鍵由于輸入端口沒有上拉電阻,需要配置部上拉輸入。GP
32、IO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;當(dāng)檢測(cè)輸入電壓為低時(shí)則認(rèn)為按鍵被按下。由于操作按鍵的時(shí)候存在抖動(dòng),所以需要軟件“消抖”,消抖可以用狀態(tài)機(jī)消抖也可以簡(jiǎn)單地延時(shí)消抖。本設(shè)計(jì)為了采用延時(shí)策略,當(dāng)檢測(cè)到按鍵輸入引腳為低電平時(shí),延時(shí)30ms再次讀取,如果仍然是低電平則確認(rèn)按鍵被按下。單片機(jī)讀取IO電平狀態(tài)的函數(shù)為:GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1); /讀取PA.1腳電平四分別按鍵設(shè)置為功能鍵、增大間、減小鍵和確認(rèn)鍵。考慮到頻率計(jì)獲取頻率之后需要現(xiàn)場(chǎng)轉(zhuǎn)化成與一次儀表一樣的物理值,這就需要用戶輸入?yún)?shù)進(jìn)行標(biāo)定
33、。例如用戶設(shè)定頻率是200Hz的時(shí)候溫度是20,頻率800Hz的時(shí)候是60,那么頻率計(jì)會(huì)根據(jù)線性轉(zhuǎn)換公式y(tǒng)=ax+b計(jì)算出a、b值。當(dāng)有頻率輸入時(shí)自動(dòng)顯示轉(zhuǎn)換后的物理數(shù)值。換算方程式如下:phyval = (Frequency-200)*(phytemp2-phytemp1)/(800-200)+phytemp1;用戶根據(jù)功能鍵選擇操作菜單,功能鍵第一次按下修改頻率為200Hz對(duì)應(yīng)的物理值,第二次按下修改頻率為800Hz對(duì)應(yīng)的物理值,此時(shí)用增大建、減小鍵移動(dòng)選項(xiàng)和更改參數(shù)值,設(shè)置好參數(shù)按確定鍵確定輸入。LED指示燈操作簡(jiǎn)單,輸出IO電平為低電平即可點(diǎn)亮。在主函數(shù)中翻轉(zhuǎn)LED1指示燈來指示系統(tǒng)運(yùn)
34、行狀態(tài)。在輸入捕獲中斷里翻轉(zhuǎn)LED2指示燈來指示頻率的大小。if(i = 0)GPIO_SetBits(LED_Port,LED_Pin); /關(guān)閉LEDelseGPIO_ResetBits(LED_Port,LED_Pin); /點(diǎn)亮LEDif(+i=2)i=0;4.實(shí)物測(cè)試4.1 軟硬件調(diào)試測(cè)試部分分為硬件測(cè)試和軟件測(cè)試。整體測(cè)試連接圖如圖13所示。圖13 頻率計(jì)硬件測(cè)試連接圖本系統(tǒng)需要3.3V和5V兩種電壓供電。5V用來給單電源運(yùn)放、電壓比較器LM393供電,以與LCD12864液晶的背光供電。為了達(dá)到低功耗,STM32采用低電壓3.3V供電。所以3.3V用來給單片機(jī)供電和LED供電。為
35、了獲得3.3V電壓,需要對(duì)輸入的5V直流電進(jìn)行穩(wěn)壓,這里采用LM1117-3.3V芯片。硬件電路測(cè)試電源模塊3.3V穩(wěn)壓正常輸出;晶振起振,單片機(jī)能正常操作;SWD仿真正常,而且下載速度很快;LCD128x128顯示正常,按鍵和LED操作正常;當(dāng)信號(hào)輸入端加入正弦波、三角波等波形時(shí),高通濾波器成功濾除低頻干擾,濾波效果較好;LM393比較整形電路的輸出端是很理想的脈沖信號(hào);信號(hào)輸入和按鍵部分電路實(shí)物圖如圖14所示。圖14 信號(hào)輸入和按鍵部分測(cè)試實(shí)物圖軟件分模塊進(jìn)行測(cè)試。經(jīng)在線仿真和實(shí)際測(cè)量,定時(shí)器一秒鐘定時(shí)準(zhǔn)確,每秒進(jìn)一次中斷進(jìn)行一次數(shù)據(jù)處理;給單片機(jī)端口加入理想的脈沖,測(cè)試出輸入捕獲計(jì)數(shù)準(zhǔn)確
36、,捕捉靈敏可靠;頻率計(jì)算準(zhǔn)確性,按鍵輸入配置參數(shù)后計(jì)算的物理數(shù)值和一次設(shè)備一樣,誤差很小。按鍵參數(shù)輸入界面如圖15所示。圖15按鍵輸入頻率和物理量的對(duì)應(yīng)關(guān)系界面各模塊測(cè)試沒有問題之后進(jìn)行系統(tǒng)調(diào)試,在現(xiàn)場(chǎng)對(duì)多種周期信號(hào)源進(jìn)行測(cè)量,輸入線性參數(shù)轉(zhuǎn)換成的物理值與一次儀表相比較,測(cè)量其精度和穩(wěn)定性。經(jīng)多次現(xiàn)場(chǎng)測(cè)試表明,本頻率計(jì)可以去除200Hz以下的頻率干擾,在200Hz到800Hz區(qū)間有很高的測(cè)量精度,測(cè)量換算的物理值和一次儀表采集的值誤差很小。測(cè)量結(jié)果如圖16所示。圖16測(cè)量結(jié)果顯示4.2 調(diào)試總結(jié)通過軟硬件的測(cè)試,各項(xiàng)功能達(dá)到設(shè)計(jì)要求,經(jīng)過長時(shí)間的測(cè)試和現(xiàn)場(chǎng)應(yīng)用,該頻率計(jì)運(yùn)行穩(wěn)定,準(zhǔn)確可靠,可以
37、實(shí)際應(yīng)用和生產(chǎn)。5.總結(jié)與傳統(tǒng)的測(cè)量方式相比,運(yùn)用了單片機(jī)頻率計(jì)有著體積更小,運(yùn)算速度更快,測(cè)量圍更寬的優(yōu)點(diǎn),而且電路簡(jiǎn)單,開發(fā)周期和成本都降低。本系統(tǒng)就是采用強(qiáng)大的基于ARM Cotex-M3核的STM32單片機(jī)設(shè)計(jì)出一套頻率計(jì)。該頻率計(jì)能夠檢測(cè)出200Hz-800Hz的頻率信號(hào),并能根據(jù)現(xiàn)場(chǎng)需要換算成與一次儀表一樣的物理數(shù)值,具有頻率顯示、按鍵設(shè)置和LED狀態(tài)顯示。經(jīng)過長時(shí)間的測(cè)試和現(xiàn)場(chǎng)應(yīng)用,該頻率計(jì)運(yùn)行穩(wěn)定,準(zhǔn)確可靠,可以實(shí)際應(yīng)用和生產(chǎn)。雖然本系統(tǒng)運(yùn)行可靠穩(wěn)定,但由于本人時(shí)間和精力有限,仍然有很多可以改進(jìn)和完善的地方。本設(shè)計(jì)只是致力于獲取200Hz-800Hz的頻率的準(zhǔn)確性,在頻率測(cè)量方
38、面還可以有更寬的測(cè)量圍。頻率測(cè)量的方法很多,為了獲得更高的準(zhǔn)確性,也可以嘗試其他測(cè)量方法。這些都是可以在以后的工作中進(jìn)行改進(jìn)和完善的地方。參考文獻(xiàn):1譚浩強(qiáng).C語言程序設(shè)計(jì)M.清華大學(xué).1999:109-131.2程佩青.數(shù)字信號(hào)處理教程M.清華大學(xué).1999:10-21.3曾平.電路設(shè)計(jì)基礎(chǔ)M.高等教育.2003:100-110.4于海生.計(jì)算機(jī)控制技術(shù)M.機(jī)械工業(yè).2003:11-19.5同法.單片機(jī)外圍接口電路M.航空航天大學(xué).2003:95-129.6先成.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)M.航空航天大學(xué).1999:210-216.7王世英,有聲.給數(shù)字頻率計(jì)增加功能J.電子技術(shù).1980年11期.
39、8肖洪兵.跟我學(xué)用單片機(jī)M.航空航天大學(xué).2002.8.9何立民.單片機(jī)高級(jí)教程 第1版M.航空航天大學(xué).2001.10茂欣.自制2.4GHz數(shù)字頻率計(jì)N.電子報(bào).2003年.11廣第.單片機(jī)基礎(chǔ) 第1版M.航空航天大學(xué).1999.12徐惠民,安德寧.單片微型計(jì)算機(jī)原理接口與應(yīng)用 第1版M.郵電大學(xué).1996. 13 夏繼強(qiáng).單片機(jī)實(shí)驗(yàn)與實(shí)踐教程M.航空航天大學(xué),2001.14 志旺.STM32嵌入式微控制器原理,應(yīng)用技術(shù).電子工業(yè),2012.15何立民.單片機(jī)應(yīng)用技術(shù)大全.:航空航天大學(xué),1994.16杜鐵軍,群流行單片機(jī)應(yīng)用子程序與應(yīng)用實(shí)例:電子科技大學(xué),2002.17邱光源等.電路基礎(chǔ)M
40、.高等教育 1998.附錄主程序:#include "stm32f10x.h"#include "SysTickDelay.h"#include "UART.h"#include "TIM.h"#include <stdio.h>static void System_Init(void);static void RCC_Configuration(void);static void NVIC_Configuration(void);static void GPIO_Configuration(void)
41、;extern uint32_t Frequency;extern uint8_t Flag_GetFrequency;/* 功能:main* 參數(shù):NULL* 返回:NULL* 備注:主函數(shù)*/int main(void) System_Init();SysTick_Init();TIMx_Init();UART_Init(9600);LCD_Init();LCD_DispStr(0,0,"LCD_Test.");while(1)if(Flag_GetFrequency)Flag_GetFrequency = 0;printf("Frequency:%dn&qu
42、ot;,Frequency);else printf("Frequency:%dn",0);delay_ms(500);/* 功能:System_Init* 參數(shù):NULL* 返回:NULL* 備注:系統(tǒng)初始化*/static void System_Init(void)RCC_Configuration();NVIC_Configuration();GPIO_Configuration();/* 功能:RCC_Configuration* 參數(shù):NULL* 返回:NULL* 備注:時(shí)鐘初始化*/static void RCC_Configuration(void)Syst
43、emInit();RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);RCC_APB2PeriphClockCmd(RCC_
44、APB2Periph_USART1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);/* 功能:GPIO_Configuration* 參數(shù):NULL* 返回:NULL* 備注:端口初始化*/static void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;/* Configure USART Tx as alternate function push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin
45、_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);/* 功能:NVIC_Configuration* 參數(shù):NULL* 返回:NULL* 備注:中斷向量表初始化*/static void NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure;/* Configure the NVIC Preemp
46、tion Priority Bits */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);/設(shè)置優(yōu)先級(jí)分組:先占優(yōu)先級(jí)0位,從優(yōu)先級(jí)4位/設(shè)置向量表的位置和偏移#ifdef VECT_TAB_RAM /* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); /向量表位于RAM#else /* VECT_TAB_FLASH */* Set the Vector Table base location at 0x
47、08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); /向量表位于FLASH#endif/* Enable the TIM3 global Interrupt */NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 車間員工試用期工作總結(jié)范文
- 初中教師工作總結(jié)例文
- 2025材料采購委托合同
- DB45T 2680-2023 金桔軟糖加工技術(shù)規(guī)程
- DB45T 2643-2023 營造林綜合核查技術(shù)規(guī)程
- 初中英語教師教育教學(xué)工作總結(jié)
- DB45T 2604-2022 參皇雞種雞生態(tài)養(yǎng)殖技術(shù)規(guī)范
- 郵政培訓(xùn)心得體會(huì)10篇
- 投資合作意向書四篇
- 小學(xué)澆花作文
- 新產(chǎn)品開發(fā)市場(chǎng)風(fēng)險(xiǎn)評(píng)估與防范措施可行性研究報(bào)告
- 玩轉(zhuǎn)計(jì)算機(jī)網(wǎng)絡(luò)-計(jì)算機(jī)網(wǎng)絡(luò)原理智慧樹知到課后章節(jié)答案2023年下青島大學(xué)
- 犯罪現(xiàn)場(chǎng)勘察題庫(348道)
- 竣工財(cái)務(wù)決算審計(jì)工作方案
- 貴陽市云巖區(qū)2023-2024學(xué)年數(shù)學(xué)三年級(jí)第一學(xué)期期末綜合測(cè)試試題含答案
- Stevens-Johnson綜合征及中毒性表皮壞死松解癥課件
- 學(xué)前兒童健康教育與活動(dòng)指導(dǎo)(第2版)高職PPT完整全套教學(xué)課件
- 理論力學(xué)-上海交通大學(xué)中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- 風(fēng)景背后的地貌學(xué)-華中師范大學(xué)中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- 消防聯(lián)動(dòng)測(cè)試記錄表
- 【教師必備】部編版四年級(jí)語文上冊(cè)第二單元【集體備課】
評(píng)論
0/150
提交評(píng)論