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

正文內(nèi)容

基于msp430單片機(jī)的學(xué)習(xí)型遙控器設(shè)計(jì)畢業(yè)論文(編輯修改稿)

2025-07-24 17:55 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 ,直接執(zhí)行 C 語言完整的一句語句。 Run to Cursor 運(yùn)行到光標(biāo)所在位置停下。 Go 運(yùn)行。 break 暫停。 Stop the current debug session 終止調(diào)試。 Toggle Breakpoint 建立或者取消光標(biāo)所在位置的斷點(diǎn)。 MSP430定時(shí)器的應(yīng)用 MSP430系列單片機(jī)的定時(shí)器相當(dāng)豐富。有基本定時(shí)器BT、定時(shí)器TA、定時(shí)器TB、看門狗定時(shí)器WDT等。其中看門狗主要用于程序的完善性控制等方面;基本定時(shí)器除了可以用于定時(shí)之外,還可以用于液晶顯示的時(shí)序控制;TA、TB基本相同,而且功能復(fù)雜,這里將簡(jiǎn)單介紹。 看門狗定時(shí)器看門狗的目的在于阻止程序跑飛,其原理在于:看門狗定時(shí)器設(shè)置一定時(shí)間,比如250毫秒,這個(gè)時(shí)間是所有用戶程序一定能在此時(shí)間內(nèi)執(zhí)行完該程序的一個(gè)時(shí)間,設(shè)置好這個(gè)定時(shí)時(shí)間之后,所有用戶程序就必須在這個(gè)設(shè)定的時(shí)間內(nèi)將看門狗計(jì)數(shù)器的值清零,使計(jì)數(shù)器重新技術(shù),如果CPU執(zhí)行程序正確,則看門狗計(jì)數(shù)器始終能在規(guī)定的時(shí)間內(nèi)被用戶程序清零而時(shí)鐘不能計(jì)數(shù)到250毫秒,而當(dāng)CPU執(zhí)行程序跑飛(PC值指向用戶程序以外),看門狗計(jì)數(shù)器得不到用戶程序清零,能計(jì)數(shù)到250毫秒,發(fā)出溢出,導(dǎo)致CPU復(fù)位,這樣CPU又重新運(yùn)行用戶程序。所以使用看門狗時(shí),用戶軟件必須周期性地在WDTCTL的CNTCL位寫“1”,使得看門狗計(jì)數(shù)器復(fù)位以防止其超過設(shè)定的定時(shí)時(shí)間。 基本定時(shí)器BT是MSP430X3XX、MSP430F4XX系列器件中的模塊。它也是一個(gè)定時(shí)器,它通常向其它外圍模塊提供低頻控制信號(hào)。BT可以是兩個(gè)8位定時(shí)器也可以是一個(gè)16位定時(shí)器,它有兩個(gè)計(jì)數(shù)單元(BTCNTBTCNT2)與一個(gè)控制單元(BTCTL)。通過控制寄存器BTCTL的設(shè)置,用戶可以方便地使用BT。 定時(shí)器ATA、TB基本相同,這里將詳細(xì)講解定時(shí)器A。定時(shí)器A是MSP430所有系列都有的模塊,是一個(gè)用途非常廣泛的通用16位定時(shí)/計(jì)數(shù)器。它有一下一些特點(diǎn):16位計(jì)數(shù)器,四種工作模式;多種可選的計(jì)數(shù)器時(shí)鐘源;多個(gè)具有可配置輸入端的捕獲/比較寄存器;有8種輸出模式的多個(gè)可配置的輸出單元;Timer_A可支持同時(shí)進(jìn)行的多種時(shí)序控制、多個(gè)捕獲/比較功能、多種輸出波形(PWM),也可以是幾種功能的組合。每個(gè)捕獲/比較寄存器可以以硬件方式支持實(shí)現(xiàn)串行通訊。Timer_A具有中斷能力。中斷可由計(jì)數(shù)器溢出引起,也可來自具有捕獲或比較功能的捕獲/比較寄存器。每個(gè)捕獲/比較模塊可獨(dú)立編程,由捕獲或比較外部信號(hào)以產(chǎn)生中斷,外部信號(hào)可以是上升沿,也可以是下降沿,也可都是。在不同的MSP430器件中,Timer_A模塊中的捕獲/比較器的數(shù)量不一樣,比如在MSP430F435中Timer_A模塊含有3個(gè)捕獲/比較器(簡(jiǎn)稱CCR),因此也經(jīng)常稱Timer_A3,表示該模塊含有3個(gè)CCR。如圖37,是Timer_A的結(jié)構(gòu)原理圖,圖中,可以將Timer_A分解成幾個(gè)部分:計(jì)數(shù)器部分、捕獲/比較寄存器、輸出單元。其中計(jì)數(shù)器部分完成時(shí)鐘源的選擇、分頻、模式控制、計(jì)數(shù)等功能。捕獲/比較器用于捕獲事件發(fā)生的時(shí)間或產(chǎn)生時(shí)間間隔。輸出模塊用于產(chǎn)生用戶需要的輸出信號(hào)。定時(shí)器A的寄存器中TACTL為最主要的控制寄存器,它決定TA的輸入時(shí)鐘信號(hào)、TA的工作模式、TA的開啟與停止、中斷的申請(qǐng)等工作。TACTL寄存器為16位寄存器,必須使用字指令對(duì)其訪問。該寄存器在POR信號(hào)后全部復(fù)位,但在PUC信號(hào)后不受影響。圖37 定時(shí)器A的結(jié)構(gòu)下面將以設(shè)計(jì)一段時(shí)間的定時(shí)為例講述各種定時(shí)器如何初始化。⒈BT的初始化:(假設(shè)允許中斷) IE2 |= BTIE。 //Enable BT interrupt BTCTL = BTSSEL+BTIP2+BTIP1+BTIP0。 _EINT()。 //Enable interrupts⒉WDT的初始化:(假設(shè)允許中斷) WDTCTL = WDT_MDLY_32。 IE1 |= WDTIE。 _EINT()。⒊TA的初始化:(假設(shè)允許中斷) TACTL = TASSEL1 + TAC。 CCTL0 = CCIE。 CCR0 = 50000。 TACTL |= MC1。 _EINT()。 MSP430與鍵盤接口電路實(shí)驗(yàn) 在單片機(jī)應(yīng)用中,鍵盤是人機(jī)對(duì)話的輸入設(shè)備,借助鍵盤可向系設(shè)置參數(shù),發(fā)出控制指令等。在課題設(shè)計(jì)中,采用了44鍵盤,在這個(gè)小節(jié)中,將從硬件和軟件介紹一下MSP430單片機(jī)的鍵盤設(shè)計(jì)。 鍵盤程序的一般書寫方法鍵盤是由若干上述的獨(dú)立按鍵按一定的規(guī)則組合而成的。也就是說,鍵盤的基本元素是按鍵,那么消除按鍵的抖動(dòng)是必須的。同時(shí),鍵盤是由若干按鍵構(gòu)成的,那么判斷是哪一個(gè)按下則需要通過判鍵得到鍵值。得到鍵值之后,還有一件事情就是等待按下的按鍵松開(注意:如果系統(tǒng)中使用了看門狗,則在這里要不斷地清空看門狗,因?yàn)榧偃缡褂谜唛L(zhǎng)時(shí)間按著鍵,則看門狗超時(shí)、系統(tǒng)復(fù)位)。綜合起來,一般的鍵盤程序有如下3個(gè)步驟:消除按鍵抖動(dòng)(如果使用硬件,則可忽略);判斷是哪個(gè)按鍵按下,識(shí)別鍵碼;等待按鍵松開。在鍵盤中又分為獨(dú)立式鍵盤和行列掃描式鍵盤,在課題中,采用了44鍵盤,屬于行列掃描式鍵盤,在這里,介紹一下行列掃描式鍵盤。 矩陣鍵盤原理分析行列掃描式鍵盤又叫矩陣鍵盤,矩陣鍵盤電路主要是對(duì)MSP430單片機(jī)的一般I/O口來進(jìn)行擴(kuò)展設(shè)計(jì)。矩陣鍵盤由行線和列線組成。矩陣鍵盤通過掃描來實(shí)現(xiàn)捕獲鍵盤的輸入。所謂掃描就是單片機(jī)不斷地對(duì)行線一次設(shè)置低電平,然后檢查列線的輸入狀態(tài),從而確定鍵盤是否有輸入。如圖38,為鍵盤的電路設(shè)計(jì)圖。圖38 鍵盤電路在圖38中,、。、。列線為輸入口,行線為輸出口。,所以在沒有任何鍵被按下時(shí),所有列線上都為高電平。當(dāng)往相應(yīng)的行線上輸出低電平,如果鍵盤上某個(gè)鍵被按下時(shí),則某個(gè)列線就為低電平,單片機(jī)讀取該列線的狀態(tài)就可以判斷某個(gè)被按下,這就是鍵盤的掃描原理。由于MSP430單片機(jī)的P1口具有中斷功能,因此在軟件設(shè)計(jì)時(shí),可以采用一般I/O口來實(shí)現(xiàn)鍵盤輸入,也可以利用P1口的中斷功能來實(shí)現(xiàn)鍵盤輸入。 一般I/0口方式的程序設(shè)計(jì)根據(jù)上面的原理分析,軟件主要是基于掃描實(shí)現(xiàn)的。軟件通過設(shè)置行線上的輸出,讀取列線上的狀態(tài)來獲取鍵盤的輸入值,整個(gè)程序處于鍵盤的掃描狀態(tài)。在實(shí)際的應(yīng)用中,有時(shí)候按鍵的抖動(dòng)可能引起誤判,所以在程序設(shè)計(jì)時(shí)必須考慮消除抖動(dòng)。如圖39所示為程序流程圖。圖39 一般I/O方式程序設(shè)計(jì)流程圖由圖39可以看出,整個(gè)程序包括端口初始化、鍵盤掃描、抖動(dòng)消除和鍵盤識(shí)別等幾個(gè)部分,下面具體分析鍵盤掃描程序。鍵盤掃描程序主要是等待按鍵的按下,如果有按鍵按下,則進(jìn)行按鍵輸入分析,在進(jìn)行鍵盤掃描的時(shí)候,為了簡(jiǎn)單起見,在等待鍵盤輸入的時(shí)候采取的是死循環(huán)等待方式,在實(shí)際中可以采用其它靈活的方式,具體情況根據(jù)系統(tǒng)的需求來確定,下面為具體的程序。int KeyScan(void){ int nP10,nP11,nP12,nP13。 int nRes = 0。 for(。) { //讀取各個(gè)管腳的狀態(tài) nP10 = P1IN amp。 BIT0。 nP11 = (P1IN amp。 BIT1) 1。 nP12 = (P1IN amp。 BIT2) 2。 nP13 = (P1IN amp。 BIT3) 3。 //是否有鍵被按下 if(nP10 == 0 || nP11 == 0 || nP12 == 0 || nP13 == 0) { break;//有鍵被按下 } } Delay()。//延時(shí)一點(diǎn)時(shí)間,消除抖動(dòng) //讀取各個(gè)管腳的狀態(tài) nP10 = P1IN amp。 BIT0。 nP11 = (P1IN amp。 BIT1) 1。 nP12 = (P1IN amp。 BIT2) 2。 nP13 = (P1IN amp。 BIT3) 3。 //是否有鍵被按下 if(nP10 == 0 || nP11 == 0 || nP12 == 0 || nP13 == 0) { //有鍵被按下,進(jìn)行鍵盤輸入分析 nRes = KeyProcess()。 } else return 1。 //沒有輸入,為干擾 return nRes。}其中,Delay()為延時(shí)程序,用于消除抖動(dòng),具體程序如下:void Delay(){ int i。 for(i=100。i0。i)。 //延時(shí)一點(diǎn)時(shí)間即可} 中斷功能方式的程序設(shè)計(jì)由于MSP430單片機(jī)的P1口有中斷功能,因此可以采用中斷的方式進(jìn)行軟件設(shè)計(jì),采用中斷方式實(shí)現(xiàn)的軟件不需要掃描處理。另外,在端口的初始化時(shí)也有所不同,下面是端口初始化的具體程序。void Init_Port(void){ //將P1口的所有的管腳在初始化的時(shí)候設(shè)置為輸入方式 P1DIR = 0。 //將P1口所有的管腳設(shè)置為一般I/O口 P1SEL = 0。 //、 P1DIR |= BIT4。 P1DIR |= BIT5。 P1DIR |= BIT6。 P1DIR |= BIT7。 P1OUT = 0x00。 //先輸出低電平 P1IE = 0。 //將中斷寄存器清零 P1IES = 0。 P1IFG =0。 //打開管腳的中斷功能 //對(duì)應(yīng)的管腳由高到低電平跳變是相應(yīng)的標(biāo)志置位 P1IE |= BIT0。 P1IES |= BIT0。 P1IE |= BIT1。 P1IES |= BIT1。 P1IE |= BIT2。 P1IES |= BIT2。 P1IE |= BIT3。 P1IES |= BIT3。 _EINT()。//打開中斷 return。}上面的程序中增加了中斷設(shè)置,并設(shè)置成低電平觸發(fā)中斷方式。由于使用中斷功能,因此必須打開全局中斷使能位。上面的“_EINT();”就是打開全局中斷功能使能位。鍵盤的輸入處理可以在P1口的中斷服務(wù)程序中進(jìn)行處理。下面為中斷服務(wù)程序。//處理來自端口1的中斷interrupt [PORT1_VECTOR] void PORT_ISR(void){ Delay()。 //延時(shí)消抖 KeyProcess()。 if(P1IFG amp。 BIT0) { P1IFG amp。= ~(BIT0)。 //清除中斷標(biāo)志位 } if(P1IFG amp。 BIT1) { P1IFG amp。= ~(BIT1)。 //清除中斷標(biāo)志位 } if(P1IFG amp。 BIT2) { P1IFG amp。= ~(BIT2)。 //清除中斷標(biāo)志位 } if(P1IFG amp。 BIT3) { P1IFG amp。= ~(BIT3)。 //清除中斷標(biāo)志位 } } MSP430與1602液晶顯示接口電路實(shí)驗(yàn) LCD1602的基本特征◆單5V電源電壓,低功耗、長(zhǎng)壽命、高可靠性◆內(nèi)置192種字符(160個(gè)57點(diǎn)陣字符和32個(gè)510點(diǎn)陣字符)◆具有64個(gè)字節(jié)的自定義字符RAM,可自定義8個(gè)58點(diǎn)陣字符或四個(gè)511點(diǎn)陣字符◆顯示方式:STN、半透、正顯◆驅(qū)動(dòng)方式:1/16DUTY,1/5BIAS◆視角方向:6點(diǎn)◆背光方式:底部LED◆通訊方式:4位或8位并口可選◆標(biāo)準(zhǔn)的接口特性,適配MC51和M6800系列MPU的操作時(shí)序。 LCD1602的引腳定義表31 LCD1602的引腳定義管腳號(hào)符號(hào)功能1Vss電源地(GND)2Vdd電源電壓(+5V)3V0LCD驅(qū)動(dòng)電壓(可調(diào))4RS寄存器選擇輸入端,RS=0,當(dāng)MPU進(jìn)行寫模塊操作,指向指令寄存器,當(dāng)MPU進(jìn)行讀模塊操作,指向地址計(jì)數(shù)器;RS=1,無論進(jìn)行讀操作或?qū)懖僮?,均指向?shù)據(jù)寄存器;5R/W讀寫控制輸入端,輸入MPU選擇讀/寫模塊操作信號(hào):R/W=0,讀操作;R/W=1,寫操作。6E使能信號(hào)輸入端,輸入MPU讀/寫操作的使能信號(hào),讀操作時(shí),高電平有效,寫操作時(shí),下降沿有效。7~14DB0~DB7數(shù)據(jù)輸入輸出口15A背光的正端(+5V)16K背光的負(fù)端(0V) LCD1602的操作時(shí)序⒈寫操作時(shí)序如圖310所示。圖310 1602寫操作時(shí)序 寫指令:輸入:RS=L,R/W=L,D0~D7=指令碼,E=高脈沖 輸出:無 寫數(shù)據(jù):輸入:RS=H,R/W=L,D0~D7=數(shù)據(jù),E=高脈沖 輸出:無⒉讀操作時(shí)序如圖311所示。圖311 1602讀操作時(shí)序 讀狀態(tài):輸入:RS=L,R/W=H,E=H 輸出:D0~D7=狀態(tài)字 讀數(shù)據(jù):輸入:RS=H,R/W=H,E=H 輸出:D0~D7=數(shù)據(jù) LCD1602硬件電路設(shè)計(jì)如圖312所示,為MSP430與LCD1602的接口電路圖,連接電路比較簡(jiǎn)單,使用P4口作為數(shù)據(jù)傳輸接口,、控制接口。 圖312 液晶硬件連接圖 LCD1602控制說明⒈狀態(tài)字說明 STA0~STA6=D0~D7 當(dāng)前數(shù)據(jù)地址指針的數(shù)值 STA7 讀寫操作使能(1:禁止,0:允許)⒉顯示模式設(shè)置 指令碼:0x38 功能:設(shè)置162顯示,57點(diǎn)陣,8位數(shù)據(jù)接口⒊顯示開/關(guān)及光標(biāo)設(shè)置 指令碼:00001DCB(8位二進(jìn)制碼) D=1 開顯示;D=0 關(guān)顯示;C=1 顯示光標(biāo);C=0 不顯示光標(biāo) B=1 光標(biāo)閃爍;B=0 光標(biāo)不
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1