freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于dsp微控制器定時(shí)器設(shè)計(jì)(參考版)

2025-06-25 18:37本頁(yè)面
  

【正文】 在此,謹(jǐn)向?qū)焫xx老師致以崇高的敬意和衷心的感謝!。給我提供了大量數(shù)據(jù)資料和建議,告訴我應(yīng)該注意的細(xì)節(jié)問(wèn)題,細(xì)心的給我指出錯(cuò)誤。本篇論文實(shí)在xxx老師的悉心指導(dǎo)下完成的。老師們兢兢業(yè)業(yè),治學(xué)嚴(yán)謹(jǐn),學(xué)識(shí)淵博,思想深邃,傾其所有為我們答疑解惑。四年的求學(xué)生涯在師長(zhǎng)、親友的大力支持下,走得辛苦卻也收獲滿囊,在論文即將付梓之際,思緒萬(wàn)千,心情久久不能平靜。這些對(duì)我以后的學(xué)習(xí)和工作都是大有裨益的。后來(lái)我退而求其次,先學(xué)習(xí)簡(jiǎn)單的51單片機(jī)中的相關(guān)內(nèi)容,再通過(guò)類比的方式,學(xué)習(xí)DSP中的相關(guān)功能,總算是有了進(jìn)展,完成了畢業(yè)設(shè)計(jì)。由于以前從來(lái)沒(méi)有接觸過(guò)DSP控制器,所以這次的畢設(shè)就要自學(xué)相關(guān)知識(shí)。于此同時(shí),我也知道了,知識(shí)不應(yīng)該僅僅停留在書本上,而是應(yīng)該腳踏實(shí)地,努力實(shí)踐,只有這樣,我們才能真正的掌握理論知識(shí)并讓其為我所用,解決實(shí)際問(wèn)題。這次的畢業(yè)設(shè)計(jì)歷時(shí)四個(gè)月,在這四個(gè)月里,我收獲頗豐。通過(guò)DSP和數(shù)碼管,矩陣鍵盤的結(jié)合,實(shí)現(xiàn)了定時(shí)功能,并且能夠通過(guò)數(shù)碼管實(shí)時(shí)顯示定時(shí)時(shí)間,還可以通過(guò)鍵盤對(duì)定時(shí)器進(jìn)行開(kāi)啟,暫停,更改時(shí)間的控制。 if(Second59) { Second=59。 } Minute=DisData_Bit[3]*10+DisData_Bit[2]。 //選擇要掃描的數(shù)碼管位SPI_xmit(msg[Key_Bit[Loop]])。Loop++) //分別顯示四位 { scan()。 //定時(shí)器關(guān)閉 for(Loop=0。 i=3。 Key_Bit[2]=10。 } Key_Bit[0]=10。 //選擇要掃描的數(shù)碼管位 SPI_xmit(msg[DisData_Bit[Loop]])。Loop++) //分別顯示四位 { scan()。 for(Loop=0。 Minute_Trans(Minute)。相關(guān)程序如下:if(Fun==15) { = 0x4001。則系統(tǒng)會(huì)自動(dòng)將秒重置為60。此時(shí)若用戶按下“開(kāi)始”,則用戶會(huì)從30分00秒處開(kāi)始定時(shí),其秒位就是系統(tǒng)自動(dòng)設(shè)置的。圖38 倒計(jì)時(shí)效果圖圖39 暫停定時(shí)效果圖圖310 定時(shí)結(jié)束報(bào)警效果圖如果重新設(shè)置時(shí)間時(shí)只輸入了分鐘位,而沒(méi)有輸入秒,則程序會(huì)自動(dòng)將秒設(shè)置為零。若按下“開(kāi)始”鍵(鍵值15),則開(kāi)啟定時(shí)器,開(kāi)始定時(shí),同時(shí)SPI會(huì)將時(shí)間數(shù)據(jù)傳送給數(shù)碼管進(jìn)行時(shí)間顯示,在數(shù)碼管上可以看到定時(shí)的時(shí)間一秒一秒的減少。如果鍵值為0~9,則為數(shù)字鍵,用來(lái)更改定時(shí)的時(shí)間,其數(shù)值會(huì)賦給DisData數(shù)組并推出計(jì)時(shí)初值重新計(jì)時(shí)。 }}如程序所示,當(dāng)檢測(cè)出按鍵后,還要判別按下的按鍵的鍵值從而程序做出不同的響應(yīng)。} else {DisData_Bit[j]=0。j4。 if(i==1) {i=3。Key!=16) { Key_Bit[i] = Key。 if(Key!=15amp。} KY_On = 0。 Key = Keys[KX_On1][KY_On1]。 KX_AllStatus()。 KX_On) { Set_KY(x)。 if(!KX_Status[KX_On] amp。先將第一列的輸出變?yōu)楦唠娖?,然后讀取a行的輸入,若不為高電平則說(shuō)明按鍵不在這一列,以此類推將剩下三列也進(jìn)行如下操作,若將第b列變?yōu)楦唠娖胶螅琣行的輸入也變?yōu)楦?,就說(shuō)明按鍵在b行。只有當(dāng)按鍵按下后,按鍵的行被確定后,列掃描函數(shù)才中的語(yǔ)句才會(huì)被執(zhí)行,如果按鍵的行位置都沒(méi)有被確定,也就是數(shù)按鍵的行標(biāo)KX_On仍然為零,那么即使運(yùn)行列掃描函數(shù),其中的語(yǔ)句也不會(huì)被執(zhí)行,即此時(shí)函數(shù)什么功能也不執(zhí)行。 } }}由程序可知,對(duì)按鍵的某行進(jìn)行識(shí)別時(shí),會(huì)判斷行的輸入是否為低電平,如果為低,還要進(jìn)行延時(shí),當(dāng)數(shù)組KX_Tim中的值大于3000時(shí)才會(huì)判定有鍵按下從而確定按鍵所屬的行。 KX_Tim[3]=0。 KX_Tim[1]=0。 if(KX_Status[x] == 0) { KX_Tim[x]++。按鍵去抖的過(guò)程是:在有鍵按下時(shí),程序雖然檢測(cè)到有鍵按下但是并不立即對(duì)其做出響應(yīng),而是進(jìn)行延時(shí),當(dāng)延時(shí)5~10毫秒后,再次檢測(cè),若此時(shí)按鍵仍為按下?tīng)顟B(tài),則視為有按鍵按下,程序才會(huì)對(duì)按鍵進(jìn)行響應(yīng)執(zhí)行響應(yīng)的功能。假設(shè)第a行b列的按鍵按下,那么第a行的輸入就變?yōu)榈碗娖?,說(shuō)明按鍵在第a行。然后通過(guò)依次使四個(gè)列的輸出變?yōu)楦唠娖?,看哪個(gè)列變?yōu)楦唠娖綍r(shí),行輸入又變?yōu)楦唠娖侥前存I的位置就在哪個(gè)列,這樣一來(lái),按鍵的位置就被確定了。 按鍵識(shí)別的大致流程是:硬件電路四個(gè)列是輸出,默認(rèn)是低電平,四個(gè)行是輸入,默認(rèn)是高電平。為了通過(guò)鍵盤控制定時(shí)器,本系統(tǒng)設(shè)置了矩陣鍵盤。 } 先通過(guò)除法和取余運(yùn)算將分鐘和秒的個(gè)位與十位分開(kāi),放置于數(shù)組中;再將這四位數(shù)字存入一個(gè)具有四個(gè)元素的一維數(shù)組DisData_Bit中,在DSP與74HC164進(jìn)行通信時(shí)均是通過(guò)這個(gè)數(shù)組選取數(shù)碼管需要的段碼從而進(jìn)行通信的。 DisData_Bit[1] = Second_Bit[1]。}void DisData_Send(){ DisData_Bit[3] = Minute_Bit[1]。}void Minute_Trans(Uint16 data){ Minute_Bit[1]=data/10。具體的實(shí)現(xiàn)方法和程序如下:void Second_Trans(Uint16 data){ Second_Bit[1]=data/10。本系統(tǒng)的最大定時(shí)時(shí)間即為99分59秒。隨著程序的運(yùn)行,定時(shí)器所剩的的時(shí)間逐漸減少,四個(gè)數(shù)碼管上的數(shù)字就會(huì)顯示出這種狀態(tài)。} 函數(shù)SPI_xmit即為將通信數(shù)據(jù)寫入輸出緩沖寄存器進(jìn)行發(fā)送。由硬件部分所述,SPI通信的數(shù)據(jù)傳輸是在主機(jī)DSP微控制器和從機(jī)74HC164的移位寄存器之間實(shí)現(xiàn)的,在對(duì)SPI進(jìn)行了初始化并設(shè)置好極性和相位之后,主機(jī)和從機(jī)之間的通信是隨著SPI的時(shí)鐘信號(hào)自動(dòng)進(jìn)行的,軟件部分只需要將需要進(jìn)行通信的數(shù)據(jù)寫入主機(jī)的寫入串行輸出緩沖寄存器(SPITXBUF)即可[14][15]。} = PIEACK_GROUP1。amp。 Minute。amp。相關(guān)程序如下:if(Second!=00){ Second。如上文所述,程序組配置定時(shí)器0的定時(shí)周期為1秒,也就是說(shuō)每隔1秒定時(shí)器0就會(huì)產(chǎn)生一個(gè)中斷,主程序就會(huì)響應(yīng)這個(gè)中斷從而進(jìn)入定時(shí)器0的中斷服務(wù)子程序執(zhí)行相應(yīng)的語(yǔ)句。程序如下 = 0x002c。打開(kāi)總中斷語(yǔ)句如下EINT。 = 1。如上文所示,定時(shí)器0和看門狗的中斷分別位于PIE(1,7)和 PIE(1,8),故需要把PIE中的這兩個(gè)位置1。向TCR寄存器的4位TSS寫1即為開(kāi)啟定時(shí)器 開(kāi)中斷,因?yàn)榭撮T狗和定時(shí)器0的中斷都通過(guò)INT1傳輸給cpu,故需要將IER的第0位置1 ,程序如下IER |= M_INT1。至此,定時(shí)器設(shè)置完畢。第二個(gè)參數(shù)是設(shè)定使用的硬件DSP芯片的主頻的,單位是MHz,本系統(tǒng)使用的是主頻為150MHz的TMS320F28335芯片,所以此處寫150。 該函數(shù)有三個(gè)參數(shù),第一個(gè)參數(shù)是一個(gè)指向結(jié)構(gòu)體的指針,為這個(gè)參數(shù)賦值為amp。相關(guān)程序如下:ConfigCpuTimer(amp。wakeint_isr。cpu_timer0_isr。 cpu中斷及其PIE的設(shè)置1.首先關(guān)閉cpu中斷、初始化PIE、初始化中斷向量表PieVectTable并且清除cpu中斷標(biāo)志(IFR)位和cpu中斷使能(IER)位; 2.然后將定時(shí)器子程序和看門狗子程序的地址寫入PIE中斷向量表,應(yīng)向PIE中斷向量表的如下兩個(gè)地址寫入中斷子函數(shù)的地址[10][13]。 = 0。 四行語(yǔ)句分別表示使能GPIO的內(nèi)部上拉電阻;將引腳的輸出鎖存為高電平;引腳設(shè)置為通用I/O口;引腳設(shè)置為輸出口。 = 0。 以數(shù)碼管的GPIO0為例,其初始化程序?yàn)椋?= 0。 其他外設(shè)的初始化如前文所述,按鍵矩陣和數(shù)碼管等外設(shè)要通過(guò)DSP的GPIO接口與DSP進(jìn)行連接,所以要對(duì)相應(yīng)的GPIO接口進(jìn)行初始化。 定時(shí)器、數(shù)碼管,按鍵及其他外設(shè)的初始化 定時(shí)器的初始化定時(shí)器的初始化只需調(diào)用系統(tǒng)函數(shù)InitCpuTimers()。SPI_fifo_init()是用來(lái)配置SPI的fifo模塊的,由于本系統(tǒng)中沒(méi)有使用SPI的fifo模式,故關(guān)閉fifo功能,相應(yīng)的語(yǔ)句為:=0xA040。第二次配置SPICCR寄存器,使SPI準(zhǔn)發(fā)送或接受下一個(gè)字。 = 1。 =0x007F。圖31 SPI配置控制寄存器情況圖上圖是配置控制寄存器各位的情況圖圖32 SPI工作配置寄存器情況圖上圖是工作配置寄存器各位的情況圖圖33 SPI波特率寄存器情況圖上圖是波特率寄存器的情況圖圖34 SPI優(yōu)先權(quán)寄存器情況圖上圖是優(yōu)先權(quán)寄存器的各位情況圖以下是初始化函數(shù)的主要部分 =0x004F。SPI_init()為對(duì)SPI控制寄存器進(jìn)行初始化的函數(shù)。 //SPICLKA = 1。 //SPISIMOA = 1。前文提到,DSP的SPI模塊采用的是四線制,即主機(jī)與從機(jī)采用四根線進(jìn)行通信(SPISOMI、SPICLK、SPISTE和SPISIMO)。這三個(gè)函數(shù)分別是對(duì)SPI的接口初始化,對(duì)SPI的功能初始化和對(duì)SPI的fifo模塊進(jìn)行初始化。SPI_init()。 SPI的初始化由于本系統(tǒng)中用到了SPI,所以要對(duì)相關(guān)的SPI寄存器進(jìn)行初始化。 (即每隔多久產(chǎn)生一個(gè)中斷從而進(jìn)入中斷服務(wù)子程序)、開(kāi)啟計(jì)時(shí)器和看門狗。 。這個(gè)函數(shù)對(duì)PLL鎖相環(huán),看門狗(默認(rèn)為關(guān)閉),SPI等外設(shè)的時(shí)鐘都進(jìn)行了初始化。 ,在上電開(kāi)始的時(shí)候就需要對(duì)F28335進(jìn)行系統(tǒng)初始化,以提供正常運(yùn)行的基本條件,例如分配時(shí)鐘信號(hào),這是通過(guò)系統(tǒng)初始化函數(shù)來(lái)實(shí)現(xiàn)的。圖212 LED顯示系統(tǒng)電路圖 3 定時(shí)器軟件的設(shè)計(jì) 主函數(shù)程序設(shè)計(jì)在程序執(zhí)行之前,首先需要對(duì)DSP芯片的各個(gè)部分進(jìn)行初始化,如系統(tǒng)時(shí)鐘,CPU中斷,中斷向量表等。 LED顯示電路在定時(shí)結(jié)束后LED要不停地閃亮,提醒用戶定時(shí)結(jié)束。軟件消抖發(fā)就是即檢測(cè)出鍵閉合后執(zhí)行一個(gè)延時(shí)程序,5ms~10ms的延時(shí),讓前沿抖動(dòng)消失后再一次檢測(cè)鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下。一般來(lái)說(shuō),鍵按下的時(shí)間與操作者的按鍵動(dòng)作有關(guān),約為十分之幾到幾秒不等。當(dāng)按鈕開(kāi)關(guān)按下時(shí)Q端輸出低電平,當(dāng)開(kāi)關(guān)松開(kāi)時(shí)Q端恢復(fù)高電平,即輸出一個(gè)負(fù)脈沖,以此消除抖動(dòng),這種方法適合在鍵數(shù)較少時(shí)可用硬件方法消除鍵抖動(dòng)。硬件消抖法就是在按鍵中附加去抖動(dòng)電路,從根上消除抖動(dòng)產(chǎn)生的可能性。按鍵的消抖分為軟件消抖和硬件消抖兩種。為確保CPU對(duì)鍵的一次閉合僅作一次處理,必須去除鍵抖動(dòng)。按鍵穩(wěn)定閉合時(shí)間的長(zhǎng)短則是由操作人員的按鍵動(dòng)作決定的,一般為零點(diǎn)幾秒至數(shù)秒。抖動(dòng)時(shí)間的長(zhǎng)短由按鍵的機(jī)械特性決定,一般為5ms~10ms。 按鍵接口的消抖通常的按鍵所用開(kāi)關(guān)為機(jī)械彈性開(kāi)關(guān),當(dāng)機(jī)械觸點(diǎn)斷開(kāi)、閉合時(shí),由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)按鍵開(kāi)關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定地接通,在斷開(kāi)時(shí)也不
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1