




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課 程 設(shè) 計(jì) 說(shuō) 明 書(shū)題目: 基于STM32的四路搶答器 學(xué) 院: 年級(jí)專業(yè): 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 摘要在各種智力競(jìng)賽場(chǎng)合,搶答器是必不可少的最公正的用具。在我們各種競(jìng)賽中我們也經(jīng)常能看到有搶答的環(huán)節(jié),某些舉辦方采用讓選手通過(guò)舉答題板的方法判斷選手的答題權(quán),這在某種程度上會(huì)因?yàn)橹鞒秩说闹饔^誤斷造成比賽的不公平性,而搶答器的應(yīng)用就能避免這種弊端。今天隨著科技的不斷進(jìn)步搶答器的制作也更加追求精益求精,人們擺脫了耗費(fèi)很多元件僅來(lái)實(shí)現(xiàn)用指示燈和一些電路來(lái)實(shí)現(xiàn)簡(jiǎn)單的搶答功能,使第一個(gè)搶答的參賽者的編號(hào)能通過(guò)指示燈顯示出來(lái),避免不合理的現(xiàn)象發(fā)生。但這種電路不易于擴(kuò)展,而且當(dāng)有更高要求時(shí)就
2、無(wú)法實(shí)現(xiàn),例如參賽人數(shù)的增加。隨著數(shù)字電路的發(fā)展,數(shù)字搶答器誕生了,它易于擴(kuò)展,可靠性好,集成度高,而且費(fèi)用低,功能更加多樣,是一種高效能的產(chǎn)品。而如今在市場(chǎng)上銷售的搶答器大多采用可編程邏輯元器件,或利用單片機(jī)技術(shù)進(jìn)行設(shè)計(jì)。本文實(shí)現(xiàn)了一個(gè)基于嵌入式STM32單片機(jī)的4路搶答器系統(tǒng)設(shè)計(jì),本系統(tǒng)設(shè)計(jì)主要分為硬件設(shè)備和軟件控制兩大部分。外部硬件使用STM32單片機(jī)作為控制中心,用4個(gè)按鍵作為搶答輸入,搶答開(kāi)始后,搶答成功者的LED燈標(biāo)識(shí)為紅色閃爍,并且顯示各搶答輸入的時(shí)間。關(guān)鍵詞:智能搶答器,STM32,按鍵輸入,數(shù)碼管顯示目錄摘要2目錄3第1章 緒論51.1 課題研究的相關(guān)背景51.2 選題的目的
3、和意義51.3 課題研究的內(nèi)容51.4 國(guó)內(nèi)外研究現(xiàn)狀61.5 搶答器目前存在的主要問(wèn)題6第2章 搶答器的系統(tǒng)概述72.1 系統(tǒng)的主要功能72.2 搶答器的工作流程72.3 STM32的功能及簡(jiǎn)介72.4 搶答器的優(yōu)點(diǎn)及組成102.5 本章小結(jié)11第3章 系統(tǒng)的硬件設(shè)計(jì)與開(kāi)發(fā)113.1 系統(tǒng)硬件總體設(shè)計(jì)113.2 STM32 最小系統(tǒng)133.4 時(shí)鐘頻率電路的設(shè)計(jì)143.5 復(fù)位電路的設(shè)計(jì)153.6 數(shù)碼管顯示163.7 鍵盤(pán)電路的設(shè)計(jì)173.8 LED電路183.9 本章小結(jié)19第4章 系統(tǒng)的軟件設(shè)計(jì)與開(kāi)發(fā)194.4 主要程序分析214.5 本章小結(jié)30第5章 總結(jié)與展望315.1 總結(jié)31
4、5.2 展望32致 謝33參 考 文 獻(xiàn)34第1章 緒論1.1 課題研究的相關(guān)背景搶答器是一種應(yīng)用非常廣泛的設(shè)備,在各種競(jìng)賽、搶答場(chǎng)合中,它能迅速、客觀地分辨出最先獲得發(fā)言權(quán)的選手。早期的搶答器只由幾個(gè)三極管、可控硅、發(fā)光管等組成,能通過(guò)發(fā)光管的指示辯認(rèn)出選手號(hào)碼?,F(xiàn)在大多數(shù)搶答器均使用單片機(jī)和數(shù)字集成電路,并增加了許多新功能,如選手號(hào)碼顯示、搶按前或搶按后的計(jì)時(shí)、選手得分顯示等功能。本系統(tǒng)設(shè)計(jì)主要分為硬件設(shè)備和軟件控制兩大部分。外部硬件使用STM32單片機(jī)作為控制中心,用4個(gè)按鍵作為搶答輸入,搶答開(kāi)始后,搶答成功者的LED燈標(biāo)識(shí)為紅色閃爍,并且顯示各搶答輸入的時(shí)間。1.2 選題的目的和意義通
5、過(guò)這次設(shè)計(jì),掌握STM32單片機(jī)的原理,了解簡(jiǎn)單多功能搶答器組成原理,初步掌握多功能搶答器的調(diào)整及測(cè)試方法,提高動(dòng)手能力和排除故障的能力。同時(shí)通過(guò)本課題設(shè)計(jì)與仿真進(jìn)行調(diào)試,提高自己的動(dòng)手能力,鞏固已學(xué)的理論知識(shí),建立單片機(jī)理論和實(shí)踐的結(jié)合,了解多功能搶答器各單元電路之間的關(guān)系及相互影響,從而能正確設(shè)計(jì)、應(yīng)用各個(gè)單元電路。1.3 課題研究的內(nèi)容本系統(tǒng)采用模塊化設(shè)計(jì)智能搶答器,在搶答比賽中廣泛應(yīng)用,各組分別有一個(gè)搶答按鈕。搶答開(kāi)始后,搶答成功者的LED燈標(biāo)識(shí)為紅色閃爍,并且顯示各搶答輸入的時(shí)間。在通過(guò)研究并在設(shè)計(jì)驗(yàn)證后發(fā)現(xiàn),采用單片機(jī)技術(shù)設(shè)計(jì)的搶答器與目前常用的搶答器相比,首先,電路連接簡(jiǎn)單,因?yàn)?/p>
6、大多數(shù)功能單元都通過(guò)程序設(shè)計(jì)在單片機(jī)內(nèi)部,第二,工作性能可靠,抗干擾能力優(yōu)于目前搶答器。所以本研究是一個(gè)實(shí)用的工程設(shè)計(jì),具有創(chuàng)新性。1.4 國(guó)內(nèi)外研究現(xiàn)狀搶答器作為一種電子產(chǎn)品,早已廣泛應(yīng)用于各種智力和知識(shí)競(jìng)賽場(chǎng)合,但目前所使用的搶答器有的電路較復(fù)雜不便于制作,可靠性低,實(shí)現(xiàn)起來(lái)很困難;有的則用一些專用的集成塊,而專用集成塊的購(gòu)買(mǎi)又很困難。為適應(yīng)高校等多代表隊(duì)單位活動(dòng)的需要而設(shè)計(jì)一個(gè)多功能搶答器,這種搶答器具有電路簡(jiǎn)單,元件普通,易于購(gòu)買(mǎi)等優(yōu)點(diǎn),很好地解決了制作者制作困難和難于購(gòu)買(mǎi)的問(wèn)題。在國(guó)內(nèi)外已經(jīng)開(kāi)始了普遍的應(yīng)用。1.5 搶答器目前存在的主要問(wèn)題隨著改革開(kāi)放事業(yè)的不斷深入,促使人們學(xué)科學(xué)、
7、學(xué)技術(shù)、學(xué)知識(shí)的手段多種多樣,搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識(shí)競(jìng)賽場(chǎng)合。但搶答器的使用頻率校低,且有的要么制作復(fù)雜,要么可靠性低,減少興致。作為一個(gè)單位若專購(gòu)一臺(tái)搶答器雖然在經(jīng)濟(jì)上可以承受,但每年使用的次數(shù)極少,往往因長(zhǎng)期存放使(電子器件的)搶答器損壞,再購(gòu)置的麻煩和及時(shí)性就會(huì)影響活動(dòng)的開(kāi)展。而且目前多數(shù)搶答器存在3個(gè)不足之處:第一,現(xiàn)場(chǎng)線路連接復(fù)雜。因?yàn)槊總€(gè)選手位于搶答現(xiàn)場(chǎng)的不同位置,每個(gè)選手與控制臺(tái)之間要有長(zhǎng)長(zhǎng)的連接線。選手越多,連接線就越多、越亂,這些連接線不僅影響了現(xiàn)場(chǎng)的美觀,而且降低了搶答器的可靠性,增加了安裝的難度,甚至影響了現(xiàn)場(chǎng)人員的走動(dòng)。第二,電路復(fù)雜。因?yàn)閱纹瑱C(jī)
8、只完成號(hào)碼處理、計(jì)時(shí)、數(shù)據(jù)運(yùn)算等功能,其它功能如選手號(hào)碼的識(shí)別、譯碼、計(jì)分顯示等仍只能通過(guò)數(shù)字集成電路完成。采用單片機(jī)掃描技術(shù)識(shí)別選手搶按號(hào)碼時(shí),電路的延遲時(shí)間較大。第三,選手搶按成功,但出現(xiàn)沒(méi)有搶答被記錄的問(wèn)題。第2章 搶答器的系統(tǒng)概述2.1 系統(tǒng)的主要功能本系統(tǒng)是借用單片機(jī)采用模塊化設(shè)計(jì)的4路搶答器,包括4路搶答按紐、計(jì)時(shí)顯示、搶答成功標(biāo)識(shí),各種相關(guān)顯示調(diào)控功能等本系統(tǒng)采用模塊化設(shè)計(jì)的四路搶答器,在搶答比賽中廣泛應(yīng)用,各組分別有一個(gè)搶答按鈕。一共有4個(gè)按鍵輸入,分別對(duì)應(yīng)4路選手的搶答按鍵。單片機(jī)是整個(gè)搶答器的核心,內(nèi)部電路設(shè)計(jì)用匯編語(yǔ)言編寫(xiě)。它完成了時(shí)間參數(shù)的設(shè)定,搶按號(hào)碼的譯碼,保存;顯
9、示;輸出,搶按及答題倒計(jì)時(shí)功能等。本設(shè)計(jì)中,有四個(gè)共陽(yáng)的數(shù)碼管,四個(gè)數(shù)碼管。主持人按下復(fù)位鍵(RESET)后開(kāi)始搶答。搶答成功者的LED燈標(biāo)識(shí)為紅色閃爍,并且顯示各搶答輸入的時(shí)間。2.2 搶答器的工作流程搶答器的基本工作原理:在搶答后,按鍵產(chǎn)生的下降沿,被中斷的LINE線捕捉,從而實(shí)現(xiàn)進(jìn)入中斷服務(wù)函數(shù),進(jìn)行LED閃爍,以及實(shí)現(xiàn)相應(yīng)數(shù)碼管的計(jì)時(shí)顯示工作,進(jìn)而標(biāo)識(shí)識(shí)別出搶答成功者的標(biāo)號(hào),進(jìn)行相應(yīng)的回答。2.3 STM32的功能及簡(jiǎn)介現(xiàn)階段,市場(chǎng)上低端產(chǎn)品處理器以8位單片機(jī)為主,例如廣為人知的C51系列,而高端則是以32位單片機(jī)為主,例如基于ARM Cortex-M3內(nèi)核的STM32系列,是專門(mén)為要
10、求高性能、低功耗、低成本的嵌入式系統(tǒng)設(shè)計(jì)的芯片。本系統(tǒng)是使用STM32單片機(jī),采用模塊化設(shè)計(jì)的4路搶答器,包括4路搶答按紐、計(jì)時(shí)顯示、各種相關(guān)顯示調(diào)控功能等。采用STM32F103VET6的100管腳的單片機(jī),連接四路按鍵,四路LED,以及要顯示四個(gè)獨(dú)立的數(shù)碼管,故需要比較多的I/O口.使用外部中斷包含16個(gè)的邊沿檢測(cè)器,用于產(chǎn)生中斷,每個(gè)中斷線都可以獨(dú)立地配置它的觸發(fā)事件(上升沿或下降沿或雙邊沿),并能夠單獨(dú)地被屏蔽;有一個(gè)掛起寄存器維持所有中斷請(qǐng)求的狀態(tài)。EXTI可以檢測(cè)到脈沖寬度小于內(nèi)部APB2的時(shí)鐘周期。多達(dá)112個(gè)通用I/O口連接到16個(gè)外部中斷線,滿足系統(tǒng)功能的需要。從性能、價(jià)格、
11、實(shí)際需要,STM32F103VET6較之8位8051單片機(jī)等,更為符合設(shè)計(jì)要求。圖2.4 STM32單片機(jī)的內(nèi)部結(jié)構(gòu)圖ARM Cortex-M3處理器是新一代的32位處理器,是一個(gè)高性能、低成本的開(kāi)發(fā)平臺(tái),適用于微控制器、工業(yè)控制系統(tǒng)以及無(wú)線網(wǎng)絡(luò)傳感器等應(yīng)用場(chǎng)合。其特點(diǎn)為:1. 性能豐富成本低。專門(mén)針對(duì)微控制處理器應(yīng)用特點(diǎn)而開(kāi)發(fā)的32位MCU,具有高性能、低成本、易應(yīng)用等特點(diǎn)。2. 低功耗。把睡眠模式與狀態(tài)保留功能結(jié)合在一起,確保Cortex-M3處理器既可提供低能耗,又不影響很高的運(yùn)行性能。3. 可配置性強(qiáng)。Cortex-M3處理器的NVIC功能提高了設(shè)計(jì)的可配置性,提供了多達(dá)240個(gè)具有單
12、獨(dú)優(yōu)先級(jí)、動(dòng)態(tài)重設(shè)優(yōu)先級(jí)功能和集成系統(tǒng)時(shí)鐘的系統(tǒng)中斷。4. 豐富的鏈接。功能和性能兼顧的良好組合,使基于Cortex-M3的設(shè)備可以有效處理多個(gè)I/O通道和協(xié)議標(biāo)準(zhǔn)。STM32系列處理器先進(jìn)的內(nèi)部結(jié)構(gòu):1.哈佛結(jié)構(gòu)。使其在處理器整數(shù)性能測(cè)試上有著出色的表現(xiàn),可以達(dá)1.25DMIPS/MHz,而功耗僅為0.19mW/MHz。2.Thumb-2指令集以16位的代碼密度帶來(lái)了32位的性能。3.內(nèi)置了快速的中斷控制器,提供了優(yōu)越的實(shí)時(shí)特性,中斷的延遲時(shí)間降到只需6個(gè)CPU周期,從低功率模式喚醒的時(shí)間也只需6個(gè)CPU周期。4.單周期懲罰指令和硬件除法指令。STM32在嵌入式系統(tǒng)應(yīng)用領(lǐng)域有著無(wú)可比擬的優(yōu)勢(shì)
13、,本系統(tǒng)應(yīng)用的STM32F103ZET6的增強(qiáng)型系列單片機(jī)的功能也十分強(qiáng)大。詳細(xì)介紹如下:1.內(nèi)核:(ARM 32位的Cortex-M3 CPU)最高72MHz工作頻率,在存儲(chǔ)器的0等待周期訪問(wèn)時(shí)可達(dá)1.25DMips/MHz;單周期乘法和硬件除法。2.存儲(chǔ)器:從256K至512K字節(jié)的閃存程序存儲(chǔ)器;高達(dá)64K字節(jié)的SRAM;帶4個(gè)片選的靜態(tài)存儲(chǔ)器控制器、支持CF卡、SRAM、PSRAM、NOR和NAND存儲(chǔ)器;并行LCD接口,兼容8080/6800模式。3.時(shí)鐘、復(fù)位和電源管理:2.03.6V供電和I/O引腳;上電/斷電復(fù)位(POR/PDR)、可編程點(diǎn)壓監(jiān)測(cè)器(PVD)
14、; 416MHz晶體振蕩器;內(nèi)嵌經(jīng)出廠調(diào)校的8MHz的RC振蕩器;內(nèi)嵌帶校準(zhǔn)的40kHz的RC振蕩器;帶校準(zhǔn)功能的32kHz RTC振蕩器。4.低功耗:睡眠、停機(jī)和待機(jī)模式;VBAT為RTC和后備寄存器供電。5.3個(gè)12位模數(shù)轉(zhuǎn)換器,1s轉(zhuǎn)換時(shí)間(多達(dá)21個(gè)輸入通道):轉(zhuǎn)換范圍:0至3.6V;三倍采樣和保持功能;溫度傳感器6.2通道12位D/A轉(zhuǎn)換器7.DMA(12通道DMA控制器):支持的外設(shè):定時(shí)器、ADC、DAC、SDIO、I2S、SPI、I2C和USART。8.調(diào)試模式:串行單線調(diào)試(SWD)和JTAG接口;Cortex-M3內(nèi)嵌跟蹤模塊(ETM)。9.多達(dá)112個(gè)快速I(mǎi)/O端口:51
15、/80/112個(gè)多功能雙向I/O口,所有I/O口可以映像到16個(gè)外部中斷;幾乎所有端口均可容忍5V信號(hào)。10.多達(dá)11個(gè)定時(shí)器:多達(dá)4個(gè)16位定時(shí)器,內(nèi)個(gè)定時(shí)器有多達(dá)4個(gè)用于輸入捕獲/輸出比較/PWM或脈沖計(jì)數(shù)的通道和增量編碼器輸入;2個(gè)16位位帶死區(qū)控制和急剎車(chē),用于電機(jī)控制的PWM高級(jí)控制定時(shí)器;2個(gè)看門(mén)狗定時(shí)器(獨(dú)立和窗口型的);系統(tǒng)時(shí)間定時(shí)器;24位自減型計(jì)數(shù)器;2個(gè)16位基本定時(shí)器用于驅(qū)動(dòng)DAC。11.多達(dá)13個(gè)通信接口:多達(dá)2個(gè)I2C接口(支持SM-Bus/PM-Bus);多達(dá)5個(gè)USART接口(支持ISO7816,LIN,Ir-DA接口和調(diào)制解調(diào)控制);多達(dá)3個(gè)SPI接口(18M
16、位/秒),2個(gè)可復(fù)用為I2S接口;CAN接口(2.0B主動(dòng));USB2.0全速接口;SDIO接口。12.CRC計(jì)算單元,96位的芯片唯一代碼13.ECOPACK®封裝2.4 搶答器的優(yōu)點(diǎn)及組成在知識(shí)比賽中,特別是做搶答題目的時(shí)候,在搶答過(guò)程中,為了知道哪一組或哪一位選手先答題,必須要設(shè)計(jì)一個(gè)系統(tǒng)來(lái)完成這個(gè)任務(wù)。如果在搶答中,靠視覺(jué)是很難判斷出哪組先答題。利用單片機(jī)系統(tǒng)來(lái)設(shè)計(jì)搶答器,使以上問(wèn)題得以解決,即使兩組的搶答時(shí)間相差幾微秒,也可分辨出哪組優(yōu)先答題。本文主要介紹了單片機(jī)搶答器設(shè)計(jì)及工作原理,以及它的實(shí)際用途。系統(tǒng)工作原理本系統(tǒng)采用STM32單片機(jī)作為核心??刂葡到y(tǒng)的四個(gè)模塊分別為
17、:存儲(chǔ)模塊、顯示模塊、計(jì)時(shí)模塊、搶答開(kāi)關(guān)模塊。該搶答器系統(tǒng)通過(guò)四個(gè)個(gè)按鍵輸入搶答信號(hào);利用存儲(chǔ)程序來(lái)完成軟件的設(shè)計(jì);利用四個(gè)4位七段共陽(yáng)數(shù)碼管來(lái)完成顯示功能。工作時(shí),用按鍵通過(guò)開(kāi)關(guān)電路輸入各路的搶答信號(hào),經(jīng)單片機(jī)的處理,輸出控制信號(hào),控制四個(gè)七段數(shù)碼管和喇叭工作。在數(shù)碼管上顯示哪一組先答題,從而實(shí)現(xiàn)整個(gè)搶答過(guò)程。2.5 本章小結(jié)本章主要講述了搶答器的工作原理和本設(shè)計(jì)系統(tǒng)的工作流程。在說(shuō)明工作原理的過(guò)程中,突出了電路的組成單元以及這些單元如何實(shí)現(xiàn)搶答功能;在說(shuō)明系統(tǒng)的流程時(shí),結(jié)合本設(shè)計(jì)的內(nèi)容,指出了參數(shù)設(shè)置的方法和意義。搶答正常流程的實(shí)現(xiàn),同時(shí)也說(shuō)明了搶答器的優(yōu)點(diǎn)和STM32的功能及簡(jiǎn)介。第3章
18、 系統(tǒng)的硬件設(shè)計(jì)與開(kāi)發(fā)3.1 系統(tǒng)硬件總體設(shè)計(jì)本章主要內(nèi)容是系統(tǒng)的硬件電路的實(shí)現(xiàn),即現(xiàn)場(chǎng)檢測(cè)設(shè)備的硬件電路設(shè)計(jì),四路按鍵作為輸入信號(hào)傳給STM32單片機(jī),STM32作為主控制芯片,四盞LED作為輸出,搶答成功者的LED燈紅色閃爍,四個(gè)獨(dú)立數(shù)碼管,分別顯示各自的搶答時(shí)間,電源模塊采用的12V的開(kāi)關(guān)電源,再通過(guò)穩(wěn)壓芯片轉(zhuǎn)換為所需5V和3.3V電源輸出。還需要USB轉(zhuǎn)串口電路,JTAG調(diào)試電路,晶振、BOOT等外圍電路。 STM32單片機(jī)4位七段數(shù)碼管顯示LED顯示=4路搶答按鍵輸入 復(fù)位 電源晶振JTAG圖3.1 系統(tǒng)主要功能模塊3.2 STM32 最小系統(tǒng)采用STM32F103VET6最小系統(tǒng),
19、100引腳,512閃存,32位CPU,最高72Mhz工作頻率,完全可滿足本系統(tǒng)設(shè)計(jì)的需要。3.3 JTAG電路JTAG(Joint Test Action Group,即聯(lián)合測(cè)試行動(dòng)小組)是一種國(guó)際標(biāo)準(zhǔn)的測(cè)試協(xié)議,主要應(yīng)用于芯片的內(nèi)部測(cè)試,現(xiàn)在主流的DSP、FPGA芯片等都支持JTAG協(xié)議。標(biāo)準(zhǔn)的接口是4線制的,包括:TMS、TCK、TDI、TDO,分別代表模式選擇、時(shí)鐘設(shè)置、數(shù)據(jù)輸入和數(shù)據(jù)輸出。JTAG的基本原理是在器件內(nèi)部定義一個(gè)TAP(Test Access Port,即測(cè)試訪問(wèn)口)然后通過(guò)專門(mén)的調(diào)試工具對(duì)芯片內(nèi)部的節(jié)點(diǎn)進(jìn)行測(cè)試。 圖3.3 STM32 的JTAG 調(diào)試接口電路3.4 時(shí)
20、鐘頻率電路的設(shè)計(jì)單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作。在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。時(shí)鐘電路如圖5所示。 圖3.4 外部振蕩源電路一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容 C1,C2的作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。C1,C2的典型值為30PF。單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí)鐘信號(hào)的周期稱為時(shí)鐘周期。其大小是時(shí)鐘
21、信號(hào)頻率的倒數(shù),常用fosc表示。圖中時(shí)鐘頻率為12MHz,即fosc=12MHz,則機(jī)器周期為1µs.3.5 復(fù)位電路的設(shè)計(jì)單片機(jī)的第9腳RST為硬件復(fù)位端,只要將該端持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,復(fù)位后單片機(jī)的各狀態(tài)都恢復(fù)到初始化狀態(tài),其電路圖如圖6所示:圖3.5復(fù)位電路圖6中由復(fù)位鍵以及電解電容C3、電阻R2構(gòu)成按鍵及上電復(fù)位電路。由于單片機(jī)是高電平復(fù)位,所以當(dāng)復(fù)位鍵按下的時(shí)候,單片機(jī)的9腳RESET管腳將處于高電平,此時(shí)單片機(jī)就處于復(fù)位狀態(tài)。當(dāng)上電后,由于電容的緩慢充電,單片機(jī)的9腳電壓會(huì)逐步由高向低轉(zhuǎn)化,經(jīng)過(guò)一段時(shí)間后,單片機(jī)的9腳處于穩(wěn)定的低電平狀態(tài),此時(shí)單片機(jī)上
22、電就復(fù)位完畢,系統(tǒng)程序從0000H開(kāi)始執(zhí)行。值得注意的是,在設(shè)計(jì)當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位這兩種功能,由上面的硬件復(fù)位后的各狀態(tài)可知寄存器及存儲(chǔ)器的值都恢復(fù)到了初始值,而前面的功能介紹中提到了倒計(jì)時(shí)時(shí)間的記憶功能,該功能的實(shí)現(xiàn)的前提條件就是不能對(duì)單片機(jī)進(jìn)行硬件復(fù)位,所以設(shè)定了軟件復(fù)位功能。軟件復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過(guò)一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程序執(zhí)行的起始地址。3.6 數(shù)碼管顯示顯示功能與硬件關(guān)系極大,當(dāng)硬件固定后,如何在不引起操作者誤解的前提下提供盡可能豐富的信息,全靠軟件來(lái)解決。在這里我們使用的是四個(gè)獨(dú)立七段數(shù)碼管顯示,通常在顯示上我們采用的方法一般包括兩種:一種是
23、靜態(tài)顯示,一種是動(dòng)態(tài)顯示。其中靜態(tài)顯示的特點(diǎn)是顯示穩(wěn)定不閃爍,程序編寫(xiě)簡(jiǎn)單,但占用端口資源多;動(dòng)態(tài)顯示的特點(diǎn)是顯示穩(wěn)定性沒(méi)靜態(tài)好,程序編寫(xiě)復(fù)雜,但是相對(duì)靜態(tài)顯示而言占用端口資源少。在本設(shè)計(jì)中根據(jù)實(shí)際情況采用的是動(dòng)態(tài)顯示方法。圖3.6 共陰極數(shù)碼管圖2.6中數(shù)碼管采用的是4個(gè)七段共陽(yáng)數(shù)碼管,其中選手A數(shù)碼管連接PB0-PB6口,選手B連接PB7-PB13,選手C連接PC7-PC13,選手D連接PC0-PC6口。3.7 鍵盤(pán)電路的設(shè)計(jì)鍵盤(pán)是人與單片機(jī)打交道的主要設(shè)備。關(guān)于鍵盤(pán)硬件電路的設(shè)計(jì)方法也可以在文獻(xiàn)和書(shū)籍中找到,配合各種不同的硬件電路,這些書(shū)籍中一般也會(huì)提供相應(yīng)的鍵盤(pán)程序,在單片機(jī)應(yīng)用中鍵盤(pán)
24、用得最多的形式是獨(dú)立鍵盤(pán)和矩陣鍵盤(pán)。它們都有各自的特點(diǎn),其中獨(dú)立鍵盤(pán)的硬件電路簡(jiǎn)單,而且在程序設(shè)計(jì)上也不復(fù)雜,一般都用在對(duì)硬件電路要求不高的簡(jiǎn)單電路中;矩陣鍵盤(pán)與獨(dú)立鍵盤(pán)有很大區(qū)別,首先在硬件電路上它要比獨(dú)立鍵盤(pán)復(fù)雜很多,而且在程序算法上要比它煩瑣,而且在觸點(diǎn)抖動(dòng)按鍵同與斷過(guò)程中可能會(huì)出現(xiàn)判斷錯(cuò)誤。應(yīng)該采用軟件去抖方法,即延時(shí)重復(fù)掃描法,延時(shí)法的原理為:在檢測(cè)到有按鍵被按下時(shí),執(zhí)行一個(gè)10ms左右(具體時(shí)間應(yīng)該視所使用的按鍵進(jìn)行調(diào)整)的延時(shí)程序,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)的電平,若仍保持閉合狀態(tài)電平,則確認(rèn)該鍵處于閉合狀態(tài);同理,在檢測(cè)到該鍵釋放后,也應(yīng)該采用相同的步驟進(jìn)行確認(rèn),從而消除
25、去抖的影響。在本文設(shè)計(jì)中采用了獨(dú)立鍵盤(pán)的方式,本設(shè)計(jì)中有4個(gè)搶答按鍵輸入,如圖3.7所示。圖3.7 搶答按鍵在圖3.7中4個(gè)搶答按鍵分別接入單片機(jī)的PA0-PA3端口,單片機(jī)通過(guò)讀寫(xiě)PA0-PA7的值來(lái)判斷當(dāng)前輸入的是4個(gè)搶答按鍵中的哪一個(gè),從而觸發(fā)斷,完成搶答成功者LED顯示及搶答時(shí)間顯示。3.8 LED電路各類LED發(fā)展非常迅速,已經(jīng)成為各種照明標(biāo)識(shí)常用的顯示元件,本系統(tǒng)采用IO口直接連接的LED驅(qū)動(dòng)電路,如下圖3.8。在圖308中4盞LED燈分別接入單片機(jī)的PA4-PA7端口,單片機(jī)通過(guò)寫(xiě)0寫(xiě)1,進(jìn)而控制LED的亮滅與否。3.9 本章小結(jié)本章詳細(xì)講述了以STM32為核心元件的搶答器的硬件
26、電路具體設(shè)計(jì)過(guò)程,分析了具體電路。在設(shè)計(jì)過(guò)程中,實(shí)現(xiàn)搶答功能的是通過(guò)編寫(xiě)程序的方法集成在STM32內(nèi)部。接著將程序下載到硬件電路中,配合周邊的時(shí)鐘電路,復(fù)位電路等,制作出符合設(shè)計(jì)要求的搶答器。第4章 系統(tǒng)的軟件設(shè)計(jì)與開(kāi)發(fā)4.1 系統(tǒng)總體設(shè)計(jì)本系統(tǒng)的軟件設(shè)計(jì)采用模塊化編程,由LED顯示,按鍵輸入,數(shù)碼管,主函數(shù)構(gòu)成,使用中斷,在按鍵輸入后,下降沿檢測(cè),進(jìn)而進(jìn)入中斷函數(shù),完成數(shù)碼管,LED的顯示。程序編譯環(huán)境為KEIL u-Vision5,主控制器采用ARM cortex-M3內(nèi)核的STM32,調(diào)試工具為J-Link的JTAG仿真器,便于在線調(diào)試。4.2 STM32開(kāi)發(fā)調(diào)試環(huán)境介紹基于ARM co
27、rtex-M3內(nèi)核的STM32微處理器得到越來(lái)越廣泛的應(yīng)用,所以開(kāi)發(fā)工具也分為好多種,當(dāng)下最流行的STM32的開(kāi)發(fā)工具為KEIL MDK和IAR EWARM,兩種工具各有千秋,作下簡(jiǎn)要介紹。KEIL MDK作為一個(gè)套件,包含了全套的軟件模塊,其中就包括KEIL公司的IDE環(huán)境“KEIL u-Vision”,KEIL u-Vision5是它的第五個(gè)版本。而本文所使用的RVMDK全稱是REAL VIEW MDK,是KEIL公司專門(mén)用于嵌入式開(kāi)發(fā)所使用的軟件,REAL VIEW MDK集成了包括 u-Vision5 的開(kāi)發(fā)環(huán)境與REAL VIEW編譯器.另外一種開(kāi)發(fā)工具IAREWARM,全稱IAR
28、Embedded Workbench for ARM,是ISR System公司為ARM芯片開(kāi)發(fā)的一個(gè)集成環(huán)境,IAR EWARM中包含了一個(gè)全軟件的模擬程序,使得用戶甚至不需要任何硬件的支持就可以模擬各種ARM內(nèi)核、中斷甚至外部設(shè)備,使用方便且便于操作,尤其適用于內(nèi)核的移植。調(diào)試工具J-Link是SEGGER公司為支持仿真內(nèi)核芯片推出的一款JTAG仿真器,適用于KEIL、IAR EWARM、REAL VIEW等多種集成開(kāi)發(fā)環(huán)境,特別適合開(kāi)發(fā)基于ARM的嵌入式系統(tǒng)。4.3 程序流程圖在本設(shè)計(jì)中包括了以下主要的程序:主程序,LED,數(shù)碼管,按鍵,中斷服務(wù)函數(shù),主流程圖如4.3所示:圖4.3 程序
29、設(shè)計(jì)流程圖4.4 主要程序分析4.4.1主程序分析#include "main.h"int main(void) LED_GPIO_Config(); KEY_Config(); DIGITRON_GPIO_Config(); TimeCount(); NVIC_Config();while (1) 程序分析:進(jìn)入主函數(shù)后,進(jìn)行LED配置,按鍵配置,數(shù)碼管配置,顯示函數(shù),以及中斷配置,隨后進(jìn)入while死循環(huán),等待中斷響應(yīng)。4.4.2 LED函數(shù)分析 #include "led.h" void LED_GPIO_Config(void) /*定義一個(gè) G
30、PIO_InitTypeDef 類型的結(jié)構(gòu)體*/ GPIO_InitTypeDef GPIO_InitStructure; /*選擇要控制的 GPIOA 引腳*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6; /*設(shè)置引腳模式為通用推挽輸出*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /*設(shè)置引腳速率為 50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /
31、*調(diào)用庫(kù)函數(shù),初始化 GPIOA*/ GPIO_Init(GPIOA, &GPIO_InitStructure); /* 關(guān)閉所有 led 燈 */ GPIO_SetBits(GPIOA, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6); 程序分析:進(jìn)入LED_GPIO_Config后,完成LED相關(guān)引腳配置。4.4.3 按鍵配置函數(shù)#include "key.h"void KEY_Config(void)/GPIO配置EXTI_InitTypeDef EXTI_InitStructure;GPIO_InitTy
32、peDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure);/EXTI配置GPIO_EXTILineConfig(GPIO_P
33、ortSourceGPIOA,GPIO_PinSource0 | GPIO_PinSource1 | GPIO_PinSource2 | GPIO_PinSource3 );/中斷源EXTI_InitStructure.EXTI_Line=EXTI_Line0 | EXTI_Line1 | EXTI_Line2 | EXTI_Line3 ;/中斷線路EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;/外部觸發(fā)EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;/下降沿EXTI_Init
34、Structure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);程序分析:完成KEY相關(guān)引腳配置,并設(shè)置相應(yīng)的中斷線,中斷模式,觸發(fā)方式,使能EXTI的配置。4.4.4 NVIC配置#include "nvic.h"void NVIC_Config(void) /ÉùÃ÷NVIC½á¹¹ÌåNVIC_InitTypeDef NVIC_InitStructure;/設(shè)置中斷0NVIC_PriorityGrou
35、pConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;/設(shè)置中斷1NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;NVIC_InitStruc
36、ture.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;/設(shè)置中斷2NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NV
37、IC_InitStructure.NVIC_IRQChannelSubPriority = 3;/設(shè)置中斷3NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;NVIC_Init(&NVIC_InitStructure); 程序分析:在NV
38、IC中,分別完成相應(yīng)的中斷1,2,3,4中斷分組,搶占優(yōu)先級(jí),響應(yīng)優(yōu)先級(jí)的配置,由于是均等條件的搶答,故搶占及響應(yīng)優(yōu)先級(jí)均為同一等級(jí)。4.4.5 DIGITRON函數(shù) #include "digitron.h"u8 table= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,;/共陽(yáng)極 0-9int FlagA=1,FlagB=1,FlagC=1,FlagD=1;u16 TIME=500;void delayms(u16 time); /延時(shí)1msvoid TimeCount(void);/計(jì)時(shí) void DIGITRO
39、N_GPIO_Config(void) /*定義一個(gè) GPIO_InitTypeDef 類型的結(jié)構(gòu)體*/ GPIO_InitTypeDef GPIO_InitStructure; /*開(kāi)啟 GPIOA 的外設(shè)時(shí)鐘*/ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE); /*選擇要控制的 GPIOB 引腳*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; /*設(shè)置引腳模式為通用推挽輸出*/ GPIO_InitStructure.GPIO_Mode =
40、GPIO_Mode_Out_PP; /*設(shè)置引腳速率為 50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*調(diào)用庫(kù)函數(shù),初始化 GPIOA*/ GPIO_Init(GPIOB, &GPIO_InitStructure); void TimeCount()u8 i=0,j=0,m=0,n=0;/選手Afor (;i<10;i+)GPIO_ResetBits(GPIOB,GPIO_Pin_All);switch (i)case 0: GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_
41、1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5);delayms(TIME); break;/0case 1: GPIO_SetBits(GPIOB,GPIO_Pin_1 | GPIO_Pin_2);delayms(TIME); break;/1case 2: GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_6);delayms(TIME); break;/2case 3: GPIO_SetBits(GPIOB,GPIO_P
42、in_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_6);delayms(TIME); break;/3case 4: GPIO_SetBits(GPIOB,GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_5 | GPIO_Pin_6 );delayms(TIME); break;/4case 5: GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_5 | GPIO_Pin_6);delayms(TIME); break;/5
43、60; case 6: GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6);delayms(TIME); break;/6 case 7: GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);delayms(TIME);break;/7 case 8: GPIO_SetBits(GPIOB,GPIO_Pin_0 | G
44、PIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5| GPIO_Pin_6);delayms(TIME); break;/8 case 9: GPIO_SetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_5 | GPIO_Pin_6);delayms(TIME); break;/9 if(FlagA = 1)break;void delayms(u16 time) /延時(shí)1msu16 i=0;while(time-)i=12000;while(i-);程序分析:在數(shù)碼管函數(shù)中,采用switch-case語(yǔ)句進(jìn)行數(shù)碼管從0-9的顯示,每個(gè)數(shù)字顯示500ms,在響應(yīng)中斷后,跳出for循環(huán),從而實(shí)現(xiàn)搶答時(shí)間的顯示。4.4.6 中斷服務(wù)函數(shù)void EXTI0_IRQHandler(void) if (EXTI_GetITStatus(EXTI_Line0) != RESET) for(;i<=repeat;i+)LED1(ON);Delay(100);LED1(OFF);Delay(100);FlagA=1; EXT
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)音樂(lè)教學(xué):校園植物主題歌曲創(chuàng)作與演唱指導(dǎo)論文
- 運(yùn)動(dòng)損傷知識(shí)普及對(duì)學(xué)生身體素質(zhì)的促進(jìn)論文
- 藝術(shù)插花室管理制度
- 花茶廠員工管理制度
- 茶葉審評(píng)室管理制度
- 陶瓷特價(jià)磚管理制度
- 財(cái)務(wù)會(huì)計(jì)課題申報(bào)書(shū):《高職院校財(cái)務(wù)會(huì)計(jì)教學(xué)瓶頸與對(duì)策》課題申報(bào)材料
- 課題申報(bào)書(shū):新質(zhì)生產(chǎn)力驅(qū)動(dòng)下職業(yè)教育專業(yè)結(jié)構(gòu)優(yōu)化與轉(zhuǎn)型升級(jí)探索
- 建筑工程技術(shù)施工員專業(yè)介紹
- 大班社會(huì)收獲果實(shí)少兒英語(yǔ)幼兒教育教育專區(qū)
- TB10092-2017 鐵路橋涵混凝土結(jié)構(gòu)設(shè)計(jì)規(guī)范
- 《腦室內(nèi)出血》課件
- 長(zhǎng)城招聘的心理測(cè)評(píng)答案
- 中小學(xué)食堂工作從業(yè)人員安全培訓(xùn)會(huì)議記錄(40學(xué)時(shí)全)
- 酒店保潔服務(wù)投標(biāo)方案(完整技術(shù)標(biāo))
- 中山市公安局三鄉(xiāng)分局輔警招聘考試題庫(kù)2023
- 穴位埋線療法療法
- 裝飾裝修工程售后服務(wù)具體措施
- 16J607-建筑節(jié)能門(mén)窗
- 小學(xué)二年級(jí)數(shù)學(xué)下冊(cè)無(wú)紙化測(cè)試題
- 原材料安全庫(kù)存管理制度
評(píng)論
0/150
提交評(píng)論