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

正文內容

基于dsp微控制器定時器設計(參考版)

2024-09-02 12:04本頁面
  

【正文】 Loop++) 。 //定時器關閉 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。 第 32 頁 Minute_Trans(Minute)。 相關程序如下: if(Fun==15) { = 0x4001。則系統(tǒng)會自動將秒重置為 60。此時若用戶按下“開始”,則用戶會從 30 分 00 秒處開始定時,其 秒位 就是 系統(tǒng)自動設置的 。 圖 38 倒計時效果圖 第 30 頁 圖 39 暫停定時效果圖 圖 310 定時結束報警效果圖 如果重新 設置時間時只輸入了分鐘位 ,而沒有輸入秒, 則程序會自動將秒設置為零 。若按下 “開始”鍵(鍵值 15),則開啟定時器,開始定時,同時 SPI 會將時間數(shù)據(jù)傳送給數(shù)碼管進行時間顯示,在數(shù)碼管上可以看到定時的時間一秒一秒的減少。如果鍵值為 0~9,則為數(shù)字鍵,用來更改定時的時間,其數(shù)值會賦給 DisData 數(shù)組并推出計時 初值重新計時。 } } 如程序所示,當檢測出按鍵后,還要判別按下的按鍵的鍵值從而程序做出不同的響應。} 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)楦唠娖剑缓笞x取 a 行的輸入,若不為高電平則說明按鍵不在這一列,以此類推將剩下三列也進行如下操作,若將第 b 列變?yōu)楦唠娖胶螅?a 行的輸入也變?yōu)楦撸驼f明按鍵在 b 行。只有當按鍵按下后,按鍵的行被確定后,列掃描函數(shù)才中的語句才會被執(zhí)行,如果按鍵的行位置都沒有被確定,也就是數(shù)按鍵的行標 KX_On 仍然為零,那么即使運行列掃描函數(shù),其中的語 句也不會被執(zhí)行,即此時函數(shù)什么功能也不執(zhí)行。 } } } 由程序可知,對按鍵的某行進行識別時,會判斷行的輸入是否為低電平,如果為低,還要進行延時,當數(shù)組 KX_Tim 中的值大于 3000 時才會判定有鍵按下從而確定按鍵所屬的行。 KX_Tim[3]=0。 KX_Tim[1]=0。 if(KX_Status[x] == 0) { KX_Tim[x]++。 按鍵去抖的過程是:在有鍵按下時,程序雖然檢測到有鍵按下但是并不立即對其做出響應,而是進行延時,當延時 5~10 毫秒后,再次檢測,若此時按鍵仍為按下狀態(tài),則視為有按鍵按下,程序才會對按鍵進行響應執(zhí)行響應的功能。假設第 a 行 b 列的按鍵按下,那么第 a 行的輸入就變?yōu)榈碗娖剑f明按鍵在第 a行。然后通過依次使四個列的輸出變?yōu)楦唠娖剑茨膫€列變?yōu)楦唠娖綍r,行輸入又變?yōu)楦唠娖侥前存I的位置就在哪個列,這樣一來,按鍵的位置就被確定了。 按鍵識別 的大致流程是:硬件電路四個列是輸出,默認是低電平,四個行是輸入,默認是高電平。 矩陣鍵盤程序設計 為了通過鍵盤控制定時器,本系統(tǒng)設置了矩陣鍵盤。 } 先通過除法和取余運算將分鐘和秒的個位 與十位分開,放置于數(shù)組中;再將這四位數(shù)字存入一個具有四個元素的一維數(shù)組 DisData_Bit 中,在 DSP 與74HC164 進行通信時均是通過這個數(shù)組選取數(shù)碼管需要的段碼從而進行通信的。 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。具體的實現(xiàn)方法和程序如下: void Second_Trans(Uint16 data) { Second_Bit[1]=data/10。本系統(tǒng)的最大定時時間即為 99分 59 秒。隨著程序的運行,定時器所剩的的時間逐漸減少,四個數(shù)碼管上的數(shù)字就會顯示出這種狀態(tài)。 } 函數(shù) SPI_xmit 即為將通信數(shù)據(jù)寫入輸出緩沖寄存器進行發(fā)送。 通信功能的實現(xiàn) 由硬件部分所述, SPI 通信的數(shù)據(jù)傳輸是在主機 DSP 微控制器和從機74HC164 的移位寄存器之間實現(xiàn)的,在對 SPI 進行了初始化并設置好極性和相位之后,主機和從機之間的通信是隨著 SPI 的時鐘信號自動進行的,軟件部分只需要將需要進行通信的數(shù)據(jù)寫入主機的寫入串行輸出緩沖寄存器( SPITXBUF)即可 [14][15]。 } = PIEACK_GROUP1。amp。 Minute。amp。相關程序如下: if(Second!=00) { Second。如上文所述,程序組配置定時器 0 的定時周期為 1 秒,也就是說每隔 1 秒定時器 0 就會產(chǎn)生一個中斷,主程序就 會 響應這個中斷從而進入定時器 0的中斷服務子程序執(zhí)行相應的語句。程序如下 = 0x002c。打開總中斷語句如下 EINT。 cpu 的總中斷 INTM。 = 1。如上文所示,定時器 0 和看門狗的中斷分別位于 PIE(1,7)和 PIE(1,8),故需要把 PIE 中的這兩個位置 1。 向 TCR 寄存器的 4 位 TSS 寫 1 即為開啟定時器 開中斷 cpu 的中斷使能位,因為看門狗和定時器 0 的中斷都通過 INT1 傳輸給 cpu,故需要將 IER 的第 0 位置 1 ,程序如下 IER |= M_INT1。至此,定時器設置完畢。第二個參數(shù)是設定使用的硬件 DSP 芯片的主頻的,單位是 MHz,本系統(tǒng)使用的是主頻為 150MHz 的 TMS320F28335 芯片,所以此處寫 150。 該函數(shù)有三個參數(shù),第一個參數(shù)是一個指向結構體的指針,為這個參數(shù)賦值為 amp。相關程序如下: ConfigCpuTimer(amp。wakeint_isr。cpu_timer0_isr。 cpu 中斷及其 PIE 的設置 1.首先關閉 cpu 中斷、初始化 PIE、初始化中斷向量表 PieVectTable 并且清除 cpu 中斷標志 (IFR)位和 cpu 中斷使能( IER)位; 2.然后將定時器子程序和看門狗子程序的地址寫入 PIE 中斷向量表 ,應向PIE 中斷向量表的如下兩個地址寫入中斷子函數(shù)的地址 [10][13]。 第 22 頁 = 0。 四行語句分別表示使能 GPIO 的內部上拉電阻;將引腳的輸出鎖存為高電平;引腳設置為通用 I/O 口;引腳設置為輸出口。 = 0。 以數(shù)碼管的 GPIO0 為例,其初始化程序為: = 0。 其他外設的初始化 如前文所述, 按鍵矩陣和數(shù)碼管等外設要通過 DSP 的 GPIO 接口與 DSP 進行連接,所以要對相應的 GPIO 接口進行初始化。 定時器、數(shù)碼管,按鍵及其他外設的初始化 定時器的初始化 定時器的初始化只需調用系統(tǒng)函數(shù) InitCpuTimers()。 SPI_fifo_init()是用 來配置 SPI的 fifo 模塊的,由于本系統(tǒng)中沒有使用 SPI 的 fifo 模式,故關閉 fifo 功能,相應的語句為 : =0xA040。第二次配置 SPICCR 寄存器,使SPI 準發(fā)送或接受下一個字。 = 1。 =0x007F。 圖 31 SPI 配置控制寄存器情況圖 上圖是配置控制寄存器各位的情況圖 圖 32 SPI 工作配置寄存器情況圖 上圖是工作配置寄存器各位的情況圖 圖 33 SPI 波特率寄存器情況圖 上圖是波特率寄存器的情況圖 圖 34 SPI 優(yōu)先權 寄存器情況圖 上圖是優(yōu)先權寄存器的各位情況圖 以下是初始化函數(shù)的主要部分 =0x004F。 SPI_init()為對 SPI 控制寄存器進行初始化的函數(shù)。 //SPICLKA 第 20 頁 = 1。 //SPISIMOA = 1。前文提到, DSP 的SPI 模塊采用的是四線制,即主機與從機采用四根線進行通信( SPISOMI、SPICLK、 SPISTE 和 SPISIMO)。這三個函數(shù)分別是對 SPI的接口初始化,對 SPI 的功能初始化和對 SPI 的 fifo 模塊進行初始化。SPI_init()。 SPI 的初始化 由于本系統(tǒng)中用到了 SPI,所以要對相關的 SPI 寄存器進行初始化。 0 的計數(shù)周期(即每隔多久產(chǎn)生一個中斷從而進入中斷服務子程序)、開啟計時器和看門狗。 DSP 的中斷及 PIE 進行設置。這個函數(shù)對 PLL 鎖相環(huán),看門狗(默認為關閉), SPI 等外設的時鐘都進行了初始化。 F28335 能夠工作,在上電開始的時候就需要對 F28335 進行系統(tǒng)初始化,以提供正常運行的基本條件,例如分配時鐘信號,這是通過系統(tǒng)初始化函數(shù)來實現(xiàn)的。 圖 212 LED 顯示系統(tǒng)電路圖 第 19 頁 3 定時器軟件的設計 主函數(shù)程序設計 在程序執(zhí)行之前,首先需要對 DSP 芯片的各個部分進行初始化,如系統(tǒng)時鐘, CPU 中斷,中斷向量表等。 LED 顯示電路 在定時結束后 LED 要不停地閃亮,提醒用戶定時結束。軟件消抖發(fā)就是即檢測出鍵閉合后執(zhí)行一個延時程序, 5ms~ 10ms 的延時,讓前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認為真正有鍵按下。一般來說,鍵按下的時間與操作者的按鍵動作有關,約為十分之幾到幾秒不等。當按鈕開關按下時 Q 端輸出低電平,當開關松開時 Q 端恢復高電平,即輸出一個負脈沖,以此消除抖動,這種方法適合在鍵數(shù)較少時可用硬件方法消除鍵抖動。硬件消抖法就是在按鍵中附加去抖動電路,從根上消除抖動產(chǎn)生的可能性。 按鍵的消抖分為軟件消抖和硬件消抖兩種。為確保 CPU 對鍵的一次閉合僅作一次處理,必須去除鍵抖動。按鍵穩(wěn)定閉合時間的長短則是由操作人員的按鍵動作決定的,一般為零點幾秒至數(shù)秒。抖動時間的長短由按鍵的機械特性決定,一般為 5ms~ 10ms。 按鍵接口的消抖 通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。具體的識別及編程方法如下所述。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。在矩陣式 鍵盤 中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。 第 16 頁 按鍵 控制電路 矩陣鍵盤的概述 矩陣鍵盤是 微控制器 外部設備中所使用的排布類似于矩陣的鍵盤組 。 本文所用的的是共陽數(shù)碼管動態(tài)顯示,如上文所示, 4 位數(shù)碼管的 8 個段選位統(tǒng)一接到 74HC164 數(shù)據(jù)輸出端,而 4 個位選端則通過三極管放大電路接到了DSP 芯片上不同的 4 個 GPIO 接口上。通過分時輪流控制各個數(shù)碼管的的 COM 端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅動。靜態(tài)驅動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用 I/O 端口多,如驅動 5 個數(shù)碼管靜態(tài)顯示則需 要 5 8= 40 根 I/O 端口來驅動,實際應用時必須增加譯碼驅動器進行驅動,增加了硬件電路的復雜性。 圖 29 共陽數(shù)碼管連接原理圖 表 22 共陽數(shù)碼管段碼表 字型 DP G F E D C B A 段碼 0 1 1 0 0 0 0 0 0 C0H 1 1 1 1 1 1 0 0 1 F9H 2 1 0 1 0 0 1 0 0 A4H 3 1 0 1 1 0 0 0 0 B0H 第 15 頁 4 1 0 0 1 1 0 0 1 99H 5 1 0 0 1 0 0 1 0 92H 6 1 0 0 0 0 0 1 0 82H 7 1 1 1 1 1 0 0 0 F8H 8 1 0 0 0 0 0 0 0 90H 9 1 0 0 1 0 0 0 0 90H 1)靜態(tài)顯示驅動 靜態(tài)驅動也稱直流驅動。 共陽極數(shù)碼管是將所有發(fā)光二極管的陽極接在一起作為公共端 COM,當公共端接高電平時,某一段陰極上的電平為“ 0”時,該段點亮,電平為“ 1”時,該段熄滅。 共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極 (COM)的數(shù)碼管,其 在應用時應將公共極 COM 接到地線 GND 上,當某一字段發(fā)光二極管的陽極為高電平時,相應字段就點亮; 當某一字
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1