




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