




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
#五路智能搶答器摘要隨著電子技術的飛速發展,基于嵌入式的控制系統已廣泛應用于工業、農業、電力、電子、智能樓宇等行業,微型計算機作為嵌入式控制系統的主體與核心,代替了傳統的控制系統的常規電子線路。同時樓宇智能化的發展與成熟,也為基于嵌入式的控制系統的普及與應用奠定了堅實的基礎。電子智能搶答在搶答過程中,為了知道哪一組或哪一位選手先答題,必須要設計一個系統來完成這個任務。如果在搶答中,靠視覺是很難判斷出哪組先答題。利用嵌入式系統來設計搶答器,使以上問題得以解決,即使兩組的搶答時間相差幾微秒,也可分辨出哪組優先答題。由于ARM7的開發板的按鍵只有六個,為了現象比較清晰的觀察和操作的易于控制,搶答組數在五組以內任意使用,本系統設計為模塊形式采用ARM7的2138開發板與PC機的鏈接來實現的,系統工作原理本系統采用ARM7的2138開發板模塊作為核心。控制系統的五個模塊分別為:顯示模塊、顯示驅動模塊、定時器模塊、搶答開關按鍵模塊、蜂鳴器輸出模塊。關鍵詞:按鍵;顯示;驅動;搶答;定時一、設計任務與要求:1)設計一個容納5組參賽隊的智能式的搶答器,每組設置一搶答按鈕供搶答者使用。2)設置一個系統清除和搶答控制開關按鈕S,該開關由主持人控制。3)搶答器具有鎖存與顯示功能。選手按動按鈕,鎖存相應的編號,并在LED數碼管上顯示號碼,同時亮相應號的流水燈。其他選手無法搶答。優先搶答選手的編號一直保持到主持人將系統清除為止。4)搶答器具有定時搶答功能。當主持人啟動〃開始〃鍵后,定時器進行計時,定時30秒。5)參賽選手在設定的時間內進行搶答,搶答有效,定時器停止工作,流水燈輸出且音樂輸出“康定情歌”歌曲,顯示器上顯示選手的號碼,并保持到主持人將系統清除為止,音樂輸出完后主持人才能按復位鍵開始重新一輪的搶答。、實訓目的本次實訓使用LPC2131的SPI接口作為主機向74HC595發送數據,數據內容由7段數碼管顯示,再加上GPIO輸入實驗的按鍵輸入檢測,由自己編程實現程序檢測按鍵狀態時,控制蜂鳴器蜂鳴和對應號的流水燈來,(即表示此號隊搶答到),進而進入定時狀態搶答,用定時器0實現30s定時,查詢標志位等待定時時間到達,表示此一輪搶答完畢,音樂輸出,而后按鍵復位開始新一輪的搶答。如此不斷的循環下去,實現了智能搶答的效果。在本次實驗中,參賽選手由按鍵1?5表示,主持人按鍵由按鍵6表示即復位和開始按鍵。通過本次的實驗,能使自己了解并掌握定時器查詢方式和中斷的用法和SPI的7段數碼管顯示用法,還有就是更熟練地應用GPIO口,以設計生活中實用的搶答來培養自己的思維和加強自己的系統設計能力。三、實驗儀器1、裝有ADS1.2及EasyJTAG仿真器的電腦一臺2、ARM7開發板一塊四、實驗原理(一)、GPIO的相關原理4.1.1概述LPC2131具有多達47個通用I/O口(GPIO,GeneralPurposeI/Oporteh分別為P0[31:0],Pl[31:16],其中,P叮4未用,P0.31僅為輸出口a由于口線與其它功能復用,因而需要進行相關的世腳連接模塊(MNSELO、PINSELUPINSEL2)選擇連接GPIO,然后通i±IODIR進行輸入/輸出屬性設置后才能操作.當世腳選擇GMO功能時,有3個寄存器用于控制GPIO的艸用,IOSET.IOCLR和IOPIN.IOSET用于口線置而IOCLR則用于口線清零,IOPEST則反映當前IO口的狀態,讀回IOSET則反映當前IO口謨毎狀態。4.1.2特性單個位的方向控制*單獨控制輸出的置位和淸零:所有I/O口在復位后默認為輸入“
4-1.3管腳描述GPlOff腳描述見表41aW4.1GPIO描述管腳名稱類型描述P0.0-P031P1.16-P1.31輸人■輸出通用I/O口.實際可用的GPIO數量取決于可選功能的使用"P0.31為僅輯出口.管腳連接設置將相應管腳的FINSELn位設置為00即選擇GPIO功能;大部分世腳笑位后默認為GPIO,4.1.4、GPIO——蜂鳴器控制圖乩石醴鳴器控制電路如果跳線JP11選擇蜂鳴器,當P0.7輸出低電平,蜂鳴器蜂鳴,當P0.7輸出高電平時,蜂鳴器停止蜂鳴。實驗利用P0.7的輸出功能,控制蜂鳴器,程序設置PINSEL0使P0.7鏈接GPIO,并通過IO0DIR將其設置輸出狀態,然后通過IO0CLR和IOOSET清零和置位P0.7口,控制蜂鳴器。4.1.5、GPIO輸出——單路LED控制EaSyARM2131JF發板上有£個獨立的LED,分別由£(GPIO口控制,現在便用其中一路進行實驗,便用的電路如圖4一10所示°彳VDD33彳VDD33(£4.10單路LED電路麗當跳線JP12連接LED1時,PL18采用灌電流方式驅動LEDh當PLlg輸出低電平時,LED1點克,當P1.18輸出髙電平時,LED1熄滅°實驗程序首先設置管腳鏈接GPIO,接著設置P1.18口為輸出模式,然后通過IO1CLR和IO1SET控制盤.18,驅動LED1的亮滅。4.1.6、GPIO輸出——多路LED控制
EasyARM2131開發板上的E路LED(LEDE?LED1)分別可選擇Pl[25:l筍進行控制,電路如圖4.12所示亠VDUJ.JLED1K5470LED3R7470LED5R1347QLED*LED1K5470LED3R7470LED5R1347QLED*R1547QLEDl1Pl.IS3LED2~~TPl.196LED37P1PQ9lira珂P1J112LED5HPl.2715LEM16Pl.23IELED?HP1J421TEDE~~IT円衛予24嚴2卷、Bl借0B4右;、的2PL1SPS5Pl.19P4EPIJJSJIMS11P121IM414Pl22IMO17Pl23P3620P1J4P3223PI25P2gLED?Rlfi470-囲4J28路LED控制電路當跳線JP12全部選擇LED8?LED1后,P1.25?P1.18分別控制這8路LED,就可以進行流水燈實驗。(二)、SPI接口相關原理4.2.1、概述LPC2131具有一個硬件SPI(SPLSerialPeriptieralInterface>接口,它是一個同步、全雙工串行接口,最大數據位速率為時鐘速率的1用,可以配置為主機或若從機匚在同一總線上可以有案個主機或者從機,但同一時刻只能有一個主機和一個從機能夠進行通信,在一欽數據傳輸過程中,主機向從機發送一字節數據,從機也向主機返回一字節數據°SPI可應用于*串行存儲器,如DataFlash、三線EEPROM等;串行外設,如ADC、DAC,LCD控制器、CAN控制器、傳感器等*外部協處理器。4.2.2、特性兩個完全獨立的SPI控制器星遵循串行外設接口〔SPI)規范弋同步、串行、全雙工通信*組合的SPJ主機和從機:最大數據位速率為輸入時鐘速率的1/、管腳描述
管腳名稱SPI管胸類型功能描述P0.4SCK0I/O串行時鐘用于同歩SPI標口間數按儒輸的時鐘信號。該時鐘總是由主機驅動井且從機接收-時抻可編程為高有效或低有效"它只在數據傳輸時才被滋活,其它任何時候都處于非濫活狀態或三蠱=P0.5MISOOI主入從出血o信號是一牛單向的信號.它將數抵從從機件輸到主機"當器件為從機時,審行數搏從該端口輸出;當黠件為主機時,串行數搏從該端口輸入-當從機投有械選擇時,將該信號驅動為畠阻態.P0.6MOSIOLO主出從入MO刃信號是一個單向的信號,它將數攥從主機傳輸到從機"當器件為主機時.串行數抵從該端口輸出;當器件為從機時,串行數抵從該端口輸入。P0.7SSELOI/O從機選擇SPI從機班擇信號是一個低有效信號,用于指示披選擇卷與數抿儒輸的從機。每個從機都有各自特定的從機選擇輸入信號-在數抿處理之前,SSEL必顱曲低電平并在整個處理過程中惺持低電平.如果在數抿傳輸中SEEL信號變為高電平.傳輸將披中止=這種情況下,從機返回到空閑狀態井將任何接收對的數按丟棄-對于這樣的異常沒有其它的指示°該信號不直接由主機驅劫.可通過軟件詫用一個通用I/O口來驅動。注:配畫為SH主機WLPC2131聽須選擇一牛合適的管膵用作SSEL功鏈井使其碟持高電平,只有述樣,器件才能真正執行主機的功能.424、結構SPI'I'llfwp日總注MOSIJnMOSI_outMISOinSPSPI'I'llfwp日總注MOSIJnMOSI_outMISOinSP樹*器接口圖A丄了SPI方框圖4.2.5、SPI基本操作LPC2131的£PI是一個同步、全雙工串行接口,毘大數據位速率為輸入時鐘速率的1/岳可以設置為主機或從機工作方式°在一次數據持輸中,主機總是向從機發送一字節數抵,同時從機也總是向主機發送一字節數據』相關寄存器功能框圖如圖4.5g
?4.58SPI的寄存器功能框圖如圖斗陰£PI模武控制由SPCR寄存設置,包括設置為主/從機,SPI的時鐘極性,時鐘相位等*而SPI時鐘由是由PCLK通過£PC€R分頻后得到,SPCCR的值必須設置為大于等于8的偶數值,否則結果不可預測;對SPUR進行寫操作時,即可將數據發送到:SPI總線上,而對SPDRj進行讀操作則讀出最近一次接收到的SPI傳送的數據:SPSR為SPI狀態寄存器,用于指示SPI總線上的各種狀態,讀取該寄存器時所有狀態位清零;當SPIEfSPCR寄存器的曲位}置位,SPIF(SiPSR寄存器的d7位)或MODFfSPSR寄存器的d4位)置位時,SPINT中斷標志置位,若己設置VIC允許SPI中斷,則會產生:SPI中斷,通過對SPINT寫入1淸除中斷標志"如前所述*SPI時鐘值讓算如2溯寸鐘=互生SPCCR其中.SPCCR的值必須為大于&的偶數°4.2.6、SPI——7段數碼顯示穿驗■(吏用LPC2131的:SPI接[】作為主機向74HC595K送數據*數據內容市7段數碼管顯示,冋時£刃主機接收74HC595的移位輸出數據.叩接收回前一個顯爾數據。穿驗硬件連接如圖4.61所示"a.IX3161BS9苗gpc7OHR34-R4147DsS15F\望~2MO?1更a.IX3161BS9苗gpc7OHR34-R4147DsS15F\望~2MO?1更ILP0.-5弓10斗14罠13612竄KD711IKi/gMLSOOIDP:i.511IPIOK口A2C2A3C3A4U2PO.LVKrSID5P12SP舛gpg/Lscsa11P3.5MISOC-班B2B3田74HC595圖461SPI接口控制74HC595璉件連接圖圖中已經將故高位輸出目QH)連接到LPC2131的SPI接I】的MISOO>叮用來讀回74HC刃亍移位輸出的數據°了段數碼管(有小數點的是g段數碼管)真值表的由來。EasyARM2131發扳上使用的數碼管是8段共陽數碼管,低電平點亮,其示意原理圖和段的定法如圖4一百3所示"d?h"圖4.63了段數碼管各段左義和示童原理圖(三)定時器0相關原理4.3.1、概述LPC2131具有2亍32位可編程定時/計數器,均具有4路捕獲、4比較路匹配井輸出電路a定時器對外設時鐘5脅周期進行計數.可選擇產生中斷或根據4個匹配寄存器的設定.在到達指建的定時值時執行其它動作(輸出高/低電平、翻轉或者無動作人它還包括4個捕獲輸入.用于在輸入信號發生跳變時捕獲定時器值,井可選擇產主中斷。可用于對內部事件進行計數的間隔定時器,或者通過捕獲輸入實現脈寬調制,亦可作為自由運行的定時器。定時器0和定時器1除了外設基地址以外,其它都相同。4.3.2、特性帶可編程32位預分頻器的32位定時器/計數器;具有多達4路32位的捕獲通逍一當輸入信號跳變時可取得定時器的瞬時值*也可選擇使捕獲事件產生中斷:4個史位匹配寄存器;一匹配時定時器繼續工柞,可選擇產生中斷*一匹配時停止定時器,可選擇產生中斷*一匹配時復位定時器,可選擇產生中斷.?多達4牛對應于匹配寄存器的外部輸出.具有下列特性:一匹配時設置為低電平,一匹配時設置為高電平;—匹配時翻轉;—匹配時無動作*4.3.3、結構捕獲帚存器0捕軼樹存矗1捕茁崔#器ZSSS5S§匹配寄V器3匹配擰制寄右■耦蚪部匹配寄右器屮斷崔住黑拎制捕獲帚存器0捕軼樹存矗1捕茁崔#器ZSSS5S§匹配寄V器3匹配擰制寄右■耦蚪部匹配寄右器屮斷崔住黑拎制5£預分煩寄社岸MAT[3:0]中斷CAP[3:0]匹K.^*±匹B>:豆住預分瓢中數器maxvalaHi企擰制奇右器癥時耦I十感器宦時格擰制寄心幕4.3.4、功能框圖圖4.86基本定時器的寄存器功能錘圖如圖4.86t32位定時器TC的計數頻率由嚴fJt經過PR進行分頻控制得到,而定時器的啟動/停止、計數復位由丁/制.當有捕獲事件或者比較匹配事件發生時.IR會設置相關中斷標志(因為不是定時器浴出而產生中斷,所以圖上用虛踐連接),若已打開中斷允許(VIC).則會產生中斷°當然,預分頻控制器PR只是控制分頻數,而其對應的分頻計數器是PC.但用戶無須操作PC寄存器.4.3.5、定時器查詢用定時器0實現0上秒定時,査詢標志位等待定時時間到達,對蜂鳴器進行控制*讓蜂鳴器毎秒鐘響一次“程序在TOMRO中設定定時常數■在TOMCR中設置定時器0匹配后復位TC并產生中斷標志,接下來程序査詢等特中斷標志置位°若定時時間到,先淸除Timed)中斷標志,然后取反BEEP控制口的輸出狀態,流程圖如圖491所示*程序如程序淸單421所示。(四)脈寬調制相關原理4.4.1、概述LPC2131的脈寬調制器(PWM,PulseWidthModulator)建立在標準定時器0/1之上。應用可在PWM和匹配功能當中進行選擇。PWM基于標準的定時器模塊井具有其所有特性。不過LPC2131只將其PWM功能輸出到管腳。定時器對外設時鐘胡I)進疔計數,可選擇產生中斷或基于7個匹配寄存器,在到達指定的定時值時執行其它動作(設置為高/低電平、翻轉或者無動作)。它還包括4個捕獲輸入.用于在輸入信號發生跳變時捕獲定時器值,并可選擇在事件發生時產生中斷”PWM功能是一個附加特性,建立在匹配寄存器事件基礎之上.可獨立控制上升沿和下降沿的位置,這樣使PWM可以應用于更多的領域.例如.多相位電機控制通常需要3個非重疊的PWM輸出,而這3牛輸出的脈寬和位置需要獨立進行控制*兩個匹配寄存器可用控制單邊沿PWM輸出°PWMM艮0控制FWM周期率,另一個匹配寄存器(PWMMR1?PWMMRG控制PWM邊沿的位置。每個額外的單邊沿PWM輸出只需要一個匹配寄存器,因為所有PWM輸出的重復率速率是相同的°多牛單邊沿控制PWM輸出在毎個PWM周期的開始,當PWMMRO發主匹配時,都有一個上升沿*弓乍匹配寄存器共同控制一個雙邊沿PWM輸出*PWMMRO控制PWM周期速率,其它匹配寄存器控制(PWMMR1-PWMMR6)兩個PWM邊沿位置°每牛額外的雙邊沿PWM輸出只需要兩個匹配寄存器,因為所有PWM輸出的重復率速率是相同的a使用雙邊沿控制PWM輸出時,指定的匹配寄存器控制輸出的上升和下降沿.這樣就產生了正脈沖《當上升沿先于下降沿時〉和負脈沖(:當下降沿先于上升沿時人4.4.2、特性?7個匹配寄存器,可實現百個單邊沿控制或3個雙邊沿控制PWM輸出*或這兩種類型的混合輸出*一連續操作,可選擇在匹配時產生中斷:一匹配時停止定時器*可選擇產生中斷;一匹配時復位定時器,可選擇產生中斷。?每令匹配寄存器對應一個外部輸出,具有下列特性*一匹配時設置為低電平;一匹配時設置為髙電平*—匹配時翻轉;一匹配時無動作。?支持單邊沿控制和?/或雙邊沿控制的PWM輸出"單邊沿控制PWM輸出在每個咼期開始時總是為高電平,除非輸出保持恒定低電平。雙邊沿控制PWM輸出可在一個周期內的任何位置產生邊沿*這樣可同時產生正和負脈沖”?脈沖周期和寬度可以是枉何的定時器計數值口這樣可實現靈活的分辨率和重員速率的設定*所有PWM輸出都以相同的重復率發生。?雙邊沿控制的PWM輸出可編程為正脈沖或負脈沖*?匹配寄存器更新與脈沖輸出同步T防止產主錯誤的脈沖“軟件必須在新的匹配值生效之前將它們釋放。?如果不使能PWM模式.可作為一個標準定時器*?帶可編程32位預分頻器的32位定時器/計數器”?當輸入信號跳變時4個捕獲寄存器可取得定時器的瞬時值,也可選擇使捕獲事件產生中斷*4.4.3、管腳描述管腳名稱管腳方向管腳描述PWM1輸出PWMiffl道1輸出PO.OPWM2輸出PWMiffl道2輸出P0.7PWM3輸出PWMiffl道m輸出P0.1PWM4輸出PWMia道斗輸出P0.8PWM5輸出PWMiffl道5輸出P0.21PWMfi輸出PWMiffl道(5輸出P094.4.4、結構匹配寄存器右匹配寄存器0匹配翡存器1取濯百砰髀1轉我皎罷;匹配寄存器2匹配寄存器3樣濯寄砰辭3齋我供肚匹配常存器心廿農硏耳黠4石我忙能匹配寄存器5癢濯寄砰黯自F我供肚癢聶寄砰辭峙石我仗能鎖"性陀寄?療器匹配控制寄存器中斷寄存器控制中斷匹配劉停止匹配時夏位匹配0匹配D匹配2匹配3musmMSELSmux卜匹It戈定時器計盟器mMSELe:0I。子匹配寄存器右匹配寄存器0匹配翡存器1取濯百砰髀1轉我皎罷;匹配寄存器2匹配寄存器3樣濯寄砰辭3齋我供肚匹配常存器心廿農硏耳黠4石我忙能匹配寄存器5癢濯寄砰黯自F我供肚癢聶寄砰辭峙石我仗能鎖"性陀寄?療器匹配控制寄存器中斷寄存器控制中斷匹配劉停止匹配時夏位匹配0匹配D匹配2匹配3musmMSELSmux卜匹It戈定時器計盟器mMSELe:0I。子PWM5十PWMENA5CEnmux|-上QrenfPWM14-P/;MENA1FWMSEL2SQren》PWM2&PWMENA2PWMSEL33Qren-*FMW壬PWMENA3mMSEL4+PWM4<-FWMENA4匹S:4mux:》PW1M?PWMENA6RENTCI預分頻計數器定吋器控制寄W廖預労頻寄存廖PWM^制富看翠PWMSEL2..6if16更位MAXVALTPWMENA1..6f4.4.5、基本操作LPC2131微控制器的PWM功能是建立在標準的定時器之上,它同樣具有32位定時器及預分頻控制電路,7個匹配寄存器,可實現(5個單邊PWM或3個雙邊PWM輸出,也可以采用這兩種類型的混合輸出。具有匹配中斷、匹配PWMTC復、匹配PWMTC停止功能,如果不使能PWM模式,可作為一個標準的定時器°PWM的基本寄存器功能框圖如圖4.103,34.103PWM的基本寄存器功能框團如圖4.103,32位定時器PWMTC的計數頻率由輕處經過PWMPR進行分頻控制得到,而定時器的啟動/停止、計數復位由PWMTCR控制,當有比較匹配事件發生時,PWMIR會設置相關中斷標志(因為不是定時器進出而產生中斷,所以上圖采用虛線連接),若已打開中斷允許(VIC)則會產生中斷°當然,預分頻控制器PWMPR只是控制分頻數,而其對應的分頻計數器是PWMPC,但用戶不需要操作PWMPC寄存器°PWM基本操柞方法:連接PWM功能營腳輸出,即設置PINSEL0>PINSEL1;設置PWM定時器的時鐘分頻值(PWMPR.),得到所要的定時器時鐘*?設置比較匹配控制(PWMMCR),并設置相應比較值(PWMMRje);設置PWM輸出方式并允許PWM輸出(PWMPCR)及鎖存使能控制(PWMLERh設置PWMTCRr啟動定時器,使能PWM;?運行過程中要更改比較值時,更茂之后要設置鎖存使能°使用雙邊沿PWM輸出時,建議使用PWM2、PWM4,PWM6;使用單邊PWM輸出時在PWM周期開始時為高電平.匹配后為低電平,使用PWMMR0作為PWM周期控制,PWMMRx柞為占空比控制亠4.4.6、PWM音樂輸出通過改變PWMMR0的值,可以改變PWM輸出的頻率。實驗設定PWM輸出單邊沿PWM方波,控制蜂鳴器BEEP發聲,改變PWM的頻率,蜂鳴器發出不同頻率的聲音,甚至可以播放音樂。
進tTPWM音樂輸出實驗,需要了解一些簡譜和頻率的關系,在RUKic-h中可以得到部分信息,若想了解更多的信息,請參考相關書籍。文件musich^出了常用簡譜和頻率的對應關系,如程序淸單4刖所示,流程圖見圖4.106oGEj音樂曲譜丟和節拍
各有在于一數組中PD7音樂曲譜丟和節拍
各有在于一數組中PWM初始fb時鐘并頻、匹配時基位TC.允許F*WM2輸出、設萱占空比、啟動PWM圖4.106PWIVI音樂輸出實驗流程囲五、實驗程序/、!?《、!?《、!?《、!?《、!?《、!?《、!?《彳”、*1j/不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不(「mvnQrir(c)****************************************************GuangzouZLG-MCUDevelopment**Co.,LTD.
graduateschool****FileInfo**Filename:main.c**LastmodifiedDate:2004-09-16**LastVersion:1.0**Descriptions:Themain()functionexampletemplate******Createdby:**Createddate:**Createdby:**Createddate:**Version:**Descriptions:**1.0Theoriginalversion****Modifiedby:Chenxibing**Modifieddate:2005-01-14**Version:**Descriptions:SPI實驗,74HC595驅動7段數碼管。**#include"config.h"#include"music.h"#defineBEEP1<<15//P0.12控制蜂鳴器#defineHC595_CS(1<<29)//P0.29口為74HC595的片選constuint32LEDS8=(0xFF<<18);constuint32LED1=(1<<18);constuint32LED2=(1<<19);constuint32LED3=(1<<20);constuint32LED4=(1<<21);constuint32LED5=(1<<22);constuint32LED6=(1<<23);constuint32KEY1=1vv16;constuint32KEY2=1vv17;constuint32KEY3=1vv18;constuint32KEY4=1<<19;constuint32KEY5=1<<20;constuint32KEY6=1<<21;uint32i;uint8rcv_data;constuint32HCMM[]={_MI,_SO,_LA,_LA,_SO,_LA,_MI,_RE,_MI,_SO,_LA,_LA,_SO,_LA,_MI,_MI,_SO,_LA,_LA,_SO,_LA,_MI,_RE,_SO,_MI,_RE,_MI,_RE,_DO,_RE,_LA,_1LA,_RE,_SO,_MI,_RE,_DO,_1LA,_SO,_MI,_RE,_MI,_RE,_DO,_RE,_LA,_1LA,_RE,_SO,_MI,_RE,_DO,_1LA,_SO,_MI,_RE,_MI,_RE,_DO,_RE,_LA,};constuint32HCMM_L[]={8,_&&16,一16,_8d,16,_4,8,_&&16,一16,_8,4,8,_&&16,一16,_8d,16,_4,4,_4,16,16,,16.,16,&一_4,4,_8d,&4,一16,_16,8d,4,_4,16,16,,16.,16,&一_4,4,_8d,&4,一16,_16,8d,_4,_4,_16,_16,_16,_16,_&_4,};**函數名稱:DelayNS()**函數功能:長軟件延時**入口參數:dly延時參數,值越大,延時越久**出口參數:無voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--)for(i=0;iv50000;i++);}voidDelay(uint32dly){uint32i;for(;dly>0;dly--)
for(i=0;iv0x7ffff;i++);}voiddingshi(){/*定時器0初始化*/=0;=0;=0x03;T0TCT0PRT0MCR標志for(i=0;iv0x7ffff;i++);}voiddingshi(){/*定時器0初始化*/=0;=0;=0x03;T0TCT0PRT0MCR標志*/T0MR0T0TCR=Fpclk*5;=0x01;T0IR=0x01;while((T0IR&0x01)==0);TOIR=0x01;**/*定時器設置為0*/時鐘不分頻*//*設置T0MR0匹配后復位T0TC,并產生中斷/*5秒鐘定時/*啟動定時器/*等待定時時間到*/*/*/函數名稱:函數功能:入口參數:出口參數:voidMSPI_Init(void){PINSEL0=0x00005500;//設置管腳連接SPI******MSPI_Init()初始化SPI接口,設置為主機。無無//設置SPI時鐘分頻//CPHA=0,數據在SCK的第一個時鐘沿PINSEL2=PINSEL2&(?//設置SPI時鐘分頻//CPHA=0,數據在SCK的第一個時鐘沿SPCR=(0<<3)I采樣(1<<4)|(1<<5)|(0<<6)|(0<<7);//CPOL=1,SCK為低有效(1<<4)|(1<<5)|(0<<6)|(0<<7);//MSTR=1,SPI處于主模式//LSBF=0,SPI數據傳輸MSB(位7)在先//SPIE=0,SPI中斷被禁止**函數名稱:MSPI_SendData()
**函數功能:向SPI總線發送數據。**入口參數:data待發送的數據**出口參數:返回值為讀取的數據uint8MSPI_SendData(uint8data){IOCLR=HC595_CS;//片選74HC595SPI_SPDR=data;while(0==(SPI_SPSR&0x80));//等待SPIF置位,即等待數據發送完畢IOSET=HC595_CS;return(SPI_SPDR);//全部熄滅后,再全部點亮//全部熄滅后,再全部點亮//依次逐個點亮//依次逐個疊加//依次逐個遞減//兩個靠攏后分開0x00,0xFF,0x01,0x02,0x04,0x0&0x10,0x20,0x40,0x80,0x01,0x03,0x07,0x0F,0xlF,0x3F,0x7F,0xFF,0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81,0x81,0xC3,0xE7,0xFF,0xFF,0xE7,0xC3,0x81};//從兩邊疊加后遞減/*此表為LED0?F以及L、P的字模*/uint8constDISP_TAB[6]={//0123450xC0,0xF9,0xA4,0xB0,0x99,0x92};music(){PINSEL0=0x02vv14;for(i=0;i<40;i++){PWMMR0=Fpclk/HCMM[i];//設置輸出頻率PWMLER=0x05;//更新匹配值后,必須鎖存IO1SET=~((LED_TBL[i])<<18);IO1CLR=((LED_TBL[i])<<18);Delay(HCMM_L[i]);}PINSEL0=0x00005500;}**函數名稱:main()**函數功能:使用硬件SPI,74HC595驅動控制7段數碼管顯示。**先顯示0?F的字模,然后顯示LPC2131字樣。intmain(void){uint8i,k;PINSEL0=0x00005500;連接PINSEL1=0x00000000;PINSEL0=0x02vv14;IO0DIR=BEEPIHC595_CS;PINSEL2=PINSEL2&(~0x08);IO1DIR=LEDS8;出MSPI_Init();IO1SET=LEDS8;IO0SET=BEEP;PWMPR=0x00;PWMMCR=0x02;PWMTCPWMPCR=0x0400;PWMMR0=Fpclk/500;PWMMR2=PWMMR0/2;PWMLER=0x05;PWMTCR=0x02;PWMTCR=0x09;MSPI_Init();//設置SPI管腳//設置SPI管腳//P1[25:16]連接GPIO//設置LED1控制口為輸//不分頻,計數頻率為Fpclk//設置PWMMR0匹配時復位//允許PWM2輸出,單邊PWM//50%占空比//PWM0和PWM2匹配鎖存//復位PWMTC〃啟動PWM輸出//初始化SPI接口{if((IO0PIN&KEY6)==0)rcv_data=MSPI_SendData(DISP_TAB[0]);〃發送顯示數據IO1CLR=LED6;DelayNS(20);IO1SET=LED6;DelayNS(20);if((IO0PIN&KEY1)==0){rcv_data=MSPI_SendData(DISP_TAB[1]);//發送顯示數據IO1CLR=LED1;〃LED1點亮DelayNS(20);IO1SET=LED1;〃LED1熄滅dingshi();〃進入定時程序while(((IOOPIN&KEY6)!=0)&((TOIR&0x01)==0))/1當按鍵6未按下且定時時間到music();}〃進入音樂輸出程序elseif((IO0PIN&KEY2)==0)//按鍵二按下{rcv_data=MSPI_SendData(DISP_TAB[2]);//發送顯示數據數碼顯示2I01CLR=LED2;//LED2點亮DelayNS(20);〃延時IO1SET=LED2;//LED2熄滅dingshi();//進入定時程序while(((IO0PIN&KEY6)!=0)&((T0IR&0x01)==0))當按鍵6未按下且定時時間到music();}//進入音樂輸出程序elseif((IO0PIN&KEY3)==0)//按鍵三按下{rcv_data=MSPI_SendData(DISP_TAB[3]);//發送顯示數據數碼顯示3IO1CLR=LED3;//LED3點亮DelayNS(20);〃延時IO1SET=LED3;//LED2熄滅dingshi();//進入定時程序while(((IO0PIN&KEY6)!=0)&((T0IR&0x01)==0))當按鍵6未按下且定時時間到music();}//進入音樂輸出程序elseif((IO0PIN&KEY4)==0)//按鍵四按下{rcv_data=MSPI_SendData(DISP_TAB[4]);//發送顯示數據數碼顯示4IO1CLR=LED4;//LED4點亮DelayNS(20);〃延時IO1SET=LED4;//LED4熄滅dingshi();//進入定時程序while(((IO0PIN&KEY6)!=0)&((T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 帕金森居家護理實務指南
- 輻照機構質量協議書
- 輔導機構加盟協議書
- 車輛使用調度協議書
- 代理批發或銷售協議書
- Brand KPIs for shoes Johnston Murphy in the United States-外文版培訓課件(2025.2)
- 超市加盟合同協議書
- 青蟹買賣合同協議書
- kva箱變技術協議書
- 農村房基地轉讓協議書
- 2023年陜西中考副題
- 速凍食品生產許可證審查細則
- 2023年清華大學考博英語真題及答案詳解
- 超長混凝土結構無縫(跳倉法)施工技術課件
- 心肺復蘇中國專家共識解讀
- 風電場工作安全培訓課件
- 初中生入團申請書500字(通用9篇)
- 道路工程施工水泥混凝土路面施工課件
- 胸腔鏡下肺大泡切除術課件
- 6.3 心理課堂-職業生涯規劃實踐課(生涯幻游-體驗自己十年后一天的生活)
- 廣西壯族自治區桂林市各縣區鄉鎮行政村村莊村名明細及行政區劃劃分代碼居民村民委員會
評論
0/150
提交評論