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

正文內(nèi)容

基于dsp微控制器定時(shí)器設(shè)計(jì)(文件)

2025-07-10 18:37 上一頁面

下一頁面
 

【正文】 PIE模塊原理圖一般來說,在程序執(zhí)行過程中,某一個(gè)外設(shè)產(chǎn)生了一個(gè)中斷事件,那么在這個(gè)外設(shè)的某個(gè)寄存器中與該中斷事件相關(guān)的中斷標(biāo)志位(IF= Interrupt Flag)被置為1。PIE模塊的8個(gè)外設(shè)中斷和外部引腳中斷復(fù)用一個(gè)CPU中斷,這些中斷被分為12組,即一組中的中斷復(fù)用一個(gè)CPU中斷。如果PIEACKx位被清除,則PIE會(huì)向CPU發(fā)送中斷請(qǐng)求,如果PIEACKx位是1,則PIE將一直等待到該位被清除才向CPU發(fā)送中斷請(qǐng)求。相應(yīng)的中斷服務(wù)程序沒有被執(zhí)行,直到CPU中斷使能寄存器(IER)或調(diào)試中斷寄存器(DBGIER)和全局中斷屏蔽位(INTM)被使能后才能執(zhí)行。 數(shù)碼管顯示電路 本系統(tǒng)的數(shù)碼管顯示電路主要由SPI、74HC164和4位共陽數(shù)碼管組成三部分組成。由于74HC164有兩個(gè)輸入端A和B,而本系統(tǒng)只用到了一個(gè)輸入,所以把這兩個(gè)輸入端都接上SPI的主出從入線,74HC164的時(shí)鐘信號(hào)端自然是接SPI的SCLK線,因?yàn)橥ㄐ胚^程中的時(shí)鐘信號(hào)始終是由主機(jī)提供的,而74HC164只是從機(jī)。數(shù)碼管通過動(dòng)態(tài)掃描的方式進(jìn)行輪流點(diǎn)亮。典型的應(yīng)用包括擴(kuò)展 I/O,還可以通過移動(dòng)寄存器,顯示驅(qū)動(dòng)器、模擬轉(zhuǎn)換器等器件所做的外設(shè)擴(kuò)展。SPI以主從方式進(jìn)行工作,這種模式的通信系統(tǒng)中通常有一個(gè)主設(shè)備和多個(gè)從設(shè)備。同樣的,當(dāng)S2的片選信號(hào)CS為低電平時(shí),S2被選中,M1通過MOSI引腳發(fā)送數(shù)據(jù),S2通過MOSI引腳接收數(shù)據(jù),或者s2通過MISO引腳發(fā)送數(shù)據(jù),而M1通過MISO引腳接收數(shù)據(jù)。這也是SCK時(shí)鐘信號(hào)存在的原因,傳輸時(shí),由SCK提供時(shí)鐘脈沖,MOSI和MISO引腳則是基于此脈沖完成數(shù)據(jù)的發(fā)送或者接收。因此,在一個(gè)基于SPI的系統(tǒng)中,必須至少有一個(gè)主控設(shè)備,其向整個(gè)SPI系統(tǒng)提供時(shí)鐘信號(hào),系統(tǒng)內(nèi)所有的設(shè)備都基于這個(gè)時(shí)鐘脈沖進(jìn)行數(shù)據(jù)的接收或者發(fā)送,所以SPI是同步串行通信接口。2)有兩種工作模式可以選擇:主工作模式和從工作模式。5)能選擇的4種脈沖時(shí)鐘配置方案.6)接收和發(fā)送可以同步操作,也就是說可以實(shí)現(xiàn)全雙工通信。值得注意的是,SPI所有的控制寄存器都是8位,當(dāng)寄存器被訪問時(shí),數(shù)據(jù)位于低8位,而高8位為0,因此把數(shù)據(jù)寫人SPI這6個(gè)控制寄存器的高8位是無效的。SPI工作控制寄存器SPICTL的MASTER/SLAVE位決定了SPI工作于何種模式,當(dāng)MASTER/SLAVE=1時(shí),SPI工作于主機(jī)模式,而當(dāng)MASTER/SLAVE=0時(shí),SPI工作于從機(jī)模式。本定時(shí)器系統(tǒng)使用的是主控制器模式,在主控制器模式下,SPI通過SPICLK引腳為整個(gè)串行通信網(wǎng)絡(luò)提供串行時(shí)鐘。與此同時(shí),接受的數(shù)據(jù)通過SPISOMI引腳移入SPIDAT的最低有效位(LSB)。波特率的設(shè)置 SPI通過對(duì)寄存器SPIIBRR的配置,可以實(shí)現(xiàn)125種不同的波特率,計(jì)算公式如下: 當(dāng)SPIBRR = 0、2時(shí):SPIBaudRate=LSPCLK/4 (21) 當(dāng)SPIBRR = 3127時(shí):SPIBaudRate=LSPCLK/(SPIBRR+1) (22)式(21)和式(22)中的LSPCLK為DSP的低速外設(shè)時(shí)鐘頻率。當(dāng)時(shí)鐘極性被置位時(shí),SPICLK的高電平比低電平多一個(gè)系統(tǒng)時(shí)鐘周期。兩個(gè)輸入端或者連接在一起,或者把不用的輸入端接高電平,一定不要懸空,所以在本系統(tǒng)中,本設(shè)計(jì)將兩個(gè)輸入端A和B連接在一起都接在SPI的輸出口上。按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽極數(shù)碼管是將所有發(fā)光二極管的陽極接在一起作為公共端COM,當(dāng)公共端接高電平時(shí),某一段陰極上的電平為“0”時(shí),該段點(diǎn)亮,電平為“1”時(shí),該段熄滅。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡單,顯示亮度高,缺點(diǎn)是占用I/O端口多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要58=40根I/O端口來驅(qū)動(dòng),實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。本文所用的的是共陽數(shù)碼管動(dòng)態(tài)顯示,如上文所示,4位數(shù)碼管的8個(gè)段選位統(tǒng)一接到74HC164數(shù)據(jù)輸出端,而4個(gè)位選端則通過三極管放大電路接到了DSP芯片上不同的4個(gè)GPIO接口上。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。具體的識(shí)別及編程方法如下所述。抖動(dòng)時(shí)間的長短由按鍵的機(jī)械特性決定,一般為5ms~10ms。為確保CPU對(duì)鍵的一次閉合僅作一次處理,必須去除鍵抖動(dòng)。硬件消抖法就是在按鍵中附加去抖動(dòng)電路,從根上消除抖動(dòng)產(chǎn)生的可能性。一般來說,鍵按下的時(shí)間與操作者的按鍵動(dòng)作有關(guān),約為十分之幾到幾秒不等。 LED顯示電路在定時(shí)結(jié)束后LED要不停地閃亮,提醒用戶定時(shí)結(jié)束。 ,在上電開始的時(shí)候就需要對(duì)F28335進(jìn)行系統(tǒng)初始化,以提供正常運(yùn)行的基本條件,例如分配時(shí)鐘信號(hào),這是通過系統(tǒng)初始化函數(shù)來實(shí)現(xiàn)的。 。 SPI的初始化由于本系統(tǒng)中用到了SPI,所以要對(duì)相關(guān)的SPI寄存器進(jìn)行初始化。這三個(gè)函數(shù)分別是對(duì)SPI的接口初始化,對(duì)SPI的功能初始化和對(duì)SPI的fifo模塊進(jìn)行初始化。 //SPISIMOA = 1。SPI_init()為對(duì)SPI控制寄存器進(jìn)行初始化的函數(shù)。 =0x007F。第二次配置SPICCR寄存器,使SPI準(zhǔn)發(fā)送或接受下一個(gè)字。 定時(shí)器、數(shù)碼管,按鍵及其他外設(shè)的初始化 定時(shí)器的初始化定時(shí)器的初始化只需調(diào)用系統(tǒng)函數(shù)InitCpuTimers()。 以數(shù)碼管的GPIO0為例,其初始化程序?yàn)椋?= 0。 四行語句分別表示使能GPIO的內(nèi)部上拉電阻;將引腳的輸出鎖存為高電平;引腳設(shè)置為通用I/O口;引腳設(shè)置為輸出口。 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]。wakeint_isr。 該函數(shù)有三個(gè)參數(shù),第一個(gè)參數(shù)是一個(gè)指向結(jié)構(gòu)體的指針,為這個(gè)參數(shù)賦值為amp。至此,定時(shí)器設(shè)置完畢。如上文所示,定時(shí)器0和看門狗的中斷分別位于PIE(1,7)和 PIE(1,8),故需要把PIE中的這兩個(gè)位置1。程序如下 = 0x002c。相關(guān)程序如下:if(Second!=00){ Second。 Minute。} = PIEACK_GROUP1。} 函數(shù)SPI_xmit即為將通信數(shù)據(jù)寫入輸出緩沖寄存器進(jìn)行發(fā)送。本系統(tǒng)的最大定時(shí)時(shí)間即為99分59秒。}void Minute_Trans(Uint16 data){ Minute_Bit[1]=data/10。 DisData_Bit[1] = Second_Bit[1]。為了通過鍵盤控制定時(shí)器,本系統(tǒng)設(shè)置了矩陣鍵盤。然后通過依次使四個(gè)列的輸出變?yōu)楦唠娖剑茨膫€(gè)列變?yōu)楦唠娖綍r(shí),行輸入又變?yōu)楦唠娖侥前存I的位置就在哪個(gè)列,這樣一來,按鍵的位置就被確定了。按鍵去抖的過程是:在有鍵按下時(shí),程序雖然檢測到有鍵按下但是并不立即對(duì)其做出響應(yīng),而是進(jìn)行延時(shí),當(dāng)延時(shí)5~10毫秒后,再次檢測,若此時(shí)按鍵仍為按下狀態(tài),則視為有按鍵按下,程序才會(huì)對(duì)按鍵進(jìn)行響應(yīng)執(zhí)行響應(yīng)的功能。 KX_Tim[1]=0。 } }}由程序可知,對(duì)按鍵的某行進(jìn)行識(shí)別時(shí),會(huì)判斷行的輸入是否為低電平,如果為低,還要進(jìn)行延時(shí),當(dāng)數(shù)組KX_Tim中的值大于3000時(shí)才會(huì)判定有鍵按下從而確定按鍵所屬的行。先將第一列的輸出變?yōu)楦唠娖?,然后讀取a行的輸入,若不為高電平則說明按鍵不在這一列,以此類推將剩下三列也進(jìn)行如下操作,若將第b列變?yōu)楦唠娖胶?,a行的輸入也變?yōu)楦撸驼f明按鍵在b行。 KX_On) { Set_KY(x)。 Key = Keys[KX_On1][KY_On1]。 if(Key!=15amp。 if(i==1) {i=3。} else {DisData_Bit[j]=0。如果鍵值為0~9,則為數(shù)字鍵,用來更改定時(shí)的時(shí)間,其數(shù)值會(huì)賦給DisData數(shù)組并推出計(jì)時(shí)初值重新計(jì)時(shí)。圖38 倒計(jì)時(shí)效果圖圖39 暫停定時(shí)效果圖圖310 定時(shí)結(jié)束報(bào)警效果圖如果重新設(shè)置時(shí)間時(shí)只輸入了分鐘位,而沒有輸入秒,則程序會(huì)自動(dòng)將秒設(shè)置為零。則系統(tǒng)會(huì)自動(dòng)將秒重置為60。 Minute_Trans(Minute)。Loop++) //分別顯示四位 { scan()。 } Key_Bit[0]=10。 i=3。Loop++) //分別顯示四位 { scan()。 } Minute=DisData_Bit[3]*10+DisData_Bit[2]。通過DSP和數(shù)碼管,矩陣鍵盤的結(jié)合,實(shí)現(xiàn)了定時(shí)功能,并且能夠通過數(shù)碼管實(shí)時(shí)顯示定時(shí)時(shí)間,還可以通過鍵盤對(duì)定時(shí)器進(jìn)行開啟,暫停,更改時(shí)間的控制。于此同時(shí),我也知道了,知識(shí)不應(yīng)該僅僅停留在書本上,而是應(yīng)該腳踏實(shí)地,努力實(shí)踐,只有這樣,我們才能真正的掌握理論知識(shí)并讓其為我所用,解決實(shí)際問題。后來我退而求其次,先學(xué)習(xí)簡單的51單片機(jī)中的相關(guān)內(nèi)容,再通過類比的方式,學(xué)習(xí)DSP中的相關(guān)功能,總算是有了進(jìn)展,完成了畢業(yè)設(shè)計(jì)。四年的求學(xué)生涯在師長、親友的大力支持下,走得辛苦卻也收獲滿囊,在論文即將付梓之際,思緒萬千,心情久久不能平靜。本篇論文實(shí)在xxx老師的悉心指導(dǎo)下完成的。在此,謹(jǐn)向?qū)焫xx老師致以崇高的敬意和衷心的感謝!。給我提供了大量數(shù)據(jù)資料和建議,告訴我應(yīng)該注意的細(xì)節(jié)問題,細(xì)心的給我指出錯(cuò)誤。老師們兢兢業(yè)業(yè),治學(xué)嚴(yán)謹(jǐn),學(xué)識(shí)淵博,思想深邃,傾其所有為我們答疑解惑。這些對(duì)我以后的學(xué)習(xí)和工作都是大有裨益的。由于以前從來沒有接觸過DSP控制器,所以這次的畢設(shè)就要自學(xué)相關(guān)知識(shí)。這次的畢業(yè)設(shè)計(jì)歷時(shí)四個(gè)月,在這四個(gè)月里,我收獲頗豐。 if(Second59) { Second=59。 //選擇要掃描的數(shù)碼管位SPI_xmit(msg[Key_Bit[Loop]])。 //定時(shí)器關(guān)閉 for(Loop=0。 Key_Bit[2]=10。 //選擇要掃描的數(shù)碼管位 SPI_xmit(msg[DisData_Bit[Loop]])。 for(Loop=0。相關(guān)程序如下:if(Fun==15) { = 0x4001。此時(shí)若用戶按下“開始”,則用戶會(huì)從30分00秒處開始定時(shí),其秒位就是系統(tǒng)自動(dòng)設(shè)置的。若按下“開始”鍵(鍵值15),則開啟定時(shí)器,開始定時(shí),同時(shí)SPI會(huì)將時(shí)間數(shù)據(jù)傳送給數(shù)碼管進(jìn)行時(shí)間顯示,在數(shù)碼管上可以看到定時(shí)的時(shí)間一秒一秒的減少。 }}如程序所示,當(dāng)檢測出按鍵后,還要判別按下的按鍵的鍵值從而程序做出不同的響應(yīng)。j4。Key!=16) { Key_Bit[i] = Key。} KY_On = 0。 KX_AllStatus()。 if(!KX_Status[KX_On] amp。只有當(dāng)按鍵按下后,按鍵的行被確定后,列掃描函數(shù)才中的語句才會(huì)被執(zhí)行,如果按鍵的行位置都沒有被確定,也就是數(shù)按鍵的行標(biāo)KX_On仍然為零,那么即使運(yùn)行列掃描函數(shù),其中的語句也不會(huì)被執(zhí)行,即此時(shí)函數(shù)什么功能
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1