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

正文內(nèi)容

三位倒計(jì)時(shí)器pic單片機(jī)課程設(shè)計(jì)(含全部匯編程序清單)-wenkub

2022-09-07 17:23:57 本頁(yè)面
 

【正文】 需判斷 KEFLAG 的第幾位為 1,就可判斷該鍵入的數(shù)字在數(shù)碼管的哪一個(gè)位上顯示。判斷鍵 2 GOTO JIAN2 。判 斷鍵 0 GOTO JIAN0 。再判斷一次是否鍵入 ANDWF PORTC,W SUBLW 0F0H BTFSC STATUS,Z RETURN 。屏蔽低四位 SUBLW 0F0H BTFSC STATUS,Z 。 三位倒計(jì)時(shí)器 8 鍵盤(pán)掃描子程序 鍵盤(pán)連接有 4 個(gè)輸入端和 4 個(gè)輸出端,輸入端連在 RC 低四位,輸出端連在 RC 高四位,先讓低四位賦值低電平,若有鍵按下,高四位必有低電平出現(xiàn),之后繼續(xù)判斷具體哪個(gè)鍵被按下。 圖 18 程序模塊 主程序 鍵盤(pán)掃描模塊 鍵盤(pán)顯示模塊 TMR0 定時(shí)模塊 動(dòng)態(tài)顯示模塊 倒計(jì)時(shí)結(jié)束提示模塊 附加功能模塊 三位倒計(jì)時(shí)器 7 第二章 軟件設(shè)計(jì) 基于硬件工作的軟件部分的編寫(xiě)是通過(guò)匯編語(yǔ)言實(shí)現(xiàn)的。 圖 13 LED及蜂鳴器電路連接圖 單片機(jī)主電路設(shè)計(jì) 本次設(shè)計(jì)采用的單片機(jī)為 PIC16F887,其功能強(qiáng)大,應(yīng)用靈活。習(xí)慣上,我們將段選接入RD 的 8 個(gè)端口, 4 個(gè)位選接入 RB 的 1 到 4 位。 矩陣鍵盤(pán) 電路設(shè)計(jì) 一般鍵盤(pán)控制有 4* 5*5 等類(lèi)型方式,考慮到功能所需和單片機(jī)引腳的限制,我們采用 4*4 矩陣鍵盤(pán)。 當(dāng)?shù)褂?jì)時(shí)到 0 時(shí),小燈立即閃爍,同時(shí)蜂鳴器鳴叫,小燈閃爍 3 次以后,倒計(jì)時(shí)器恢復(fù)初始狀態(tài),無(wú)需復(fù)位可以重新使用。 設(shè)計(jì)要求 根據(jù)以上設(shè)計(jì)內(nèi)容的介紹 及我們的設(shè)計(jì)目的 , 總結(jié)出以下的設(shè)計(jì)要求: 夠?qū)崿F(xiàn) 255 以?xún)?nèi)數(shù) 的倒計(jì)時(shí); ,報(bào)警提示; 三位倒計(jì)時(shí)器 2 ; ; “開(kāi)始”、“暫?!薄ⅰ袄^續(xù)”、“加一”、“減一”、“復(fù)位”等功能鍵; 。 另外,倒計(jì)時(shí)器在生活中應(yīng)用廣泛,因此它的功能靈活性和精度的要求就更加顯得重要 。目前倒計(jì)時(shí)器的發(fā)展已經(jīng)相當(dāng)先進(jìn),我做這次設(shè)計(jì)的主要目的是想 更進(jìn)一步了解基本電路的設(shè)計(jì)流程, 以 提高自己的設(shè)計(jì)理念 , 使自己的動(dòng)手動(dòng)腦能力有更進(jìn)一步提高。通過(guò)解決 現(xiàn)實(shí)生活中的 問(wèn)題,鞏固和加深 單片機(jī) 課程中所學(xué)的理論知識(shí)和實(shí)驗(yàn)?zāi)芰?,加深?duì)單片機(jī)軟硬 件 知識(shí)的理解, 以 獲得初步的應(yīng)用經(jīng)驗(yàn),為以后從事生產(chǎn)和科研工作打下一定的基礎(chǔ)。 通過(guò)此 次練習(xí),我為自己設(shè)下了很多要求,力求此倒計(jì)時(shí)器的功能完美性和精度精細(xì)性,以加深自己對(duì)電子產(chǎn)品設(shè)計(jì)的認(rèn)知。 功能設(shè)計(jì) 為實(shí)現(xiàn)使用的靈活性和計(jì)數(shù)的精準(zhǔn)性,我們采用 TMR0 定時(shí)器計(jì)時(shí),功能鍵包括計(jì)時(shí)開(kāi)始、暫停、繼續(xù)、加一、減一和復(fù)位。 按鍵過(guò)程中為確保使用人員知道鍵是否按下,按下時(shí)蜂鳴器應(yīng)該響起以示提醒。該鍵盤(pán)有 4 個(gè)輸入端, 4 個(gè)輸出端,我們習(xí)慣于把它連接在單片機(jī)的 RC 端口。 圖 12 數(shù)碼管設(shè)計(jì)電路圖 三位倒計(jì)時(shí)器 4 LED 及蜂鳴器電路設(shè)計(jì) 蜂鳴器的設(shè)計(jì)就簡(jiǎn)單許多,只需將其一端接入高電平,另一端接入單片機(jī),為保證其正常工作,接入 100 歐姆的電阻。在使用它進(jìn)行工作的前提是對(duì)其基本的引腳進(jìn)行分配,這里我們只考慮 VCC 和 GND 以及晶振的接入,晶振選擇 4MHz 的晶振。由以上分析可知,該部分大致包括鍵盤(pán)掃描,鍵盤(pán)顯示, TMR0 定時(shí)器,動(dòng)態(tài)顯示,結(jié)束提示和其他功能模塊等六大部分 ,其中每大部分又包括不等的若干小部分,下面通過(guò)總體到 局部 的過(guò)程介紹它的工作原理。以 RC0 為 0 為例,若令 RC0=0,即判斷第一行是否有鍵按下,依次判斷高四位是否為低電平,若為低電平,則該鍵被按下,轉(zhuǎn)入相應(yīng)功能子程序 。判斷高四位是否為全 1 RETURN 。虛假輸入,返回 BCF PORTB,5 。是,跳至鍵 0 功能子程序 BTFSS PORTC,5 。是,跳至鍵 2 功能子程序 BTFSS PORTC,7 。同時(shí),鍵入的位數(shù)不同會(huì)調(diào)用不同的鍵盤(pán)顯示子程序,我們?cè)O(shè)計(jì)的三位倒計(jì)時(shí)器有三個(gè)鍵盤(pán)顯示子程序,當(dāng)按下一個(gè)數(shù)時(shí),調(diào)用 XIANSHI1,為靜態(tài)顯示;當(dāng)按下第二個(gè)數(shù)時(shí),數(shù)碼管動(dòng)態(tài)掃描,顯示兩位數(shù),就需要調(diào)用 XIANSHI2,同理按下 3 位數(shù)調(diào)用 3 位顯示子程序 XIANSHI3。釋放 MOVLW 00H 。BIAN 帶 0 顯示碼返回 RLF KEYFLAG,1 。NUM8 帶 1 返回 CALL CHABIAO 。因此這里需要簡(jiǎn)要的介紹一下鍵盤(pán)顯示子程 。 圖 23 選擇第幾個(gè)顯示子程序 三位倒計(jì)時(shí)器 11 顯示 2 子程序和顯示 3 子程序與顯示 1 子程序相似,只是送入兩個(gè)數(shù)進(jìn)行動(dòng)態(tài)掃描 。個(gè)位位選打開(kāi) MOVF BIAN,W 。個(gè)位位選關(guān)閉 BCF PORTB,2 。位選關(guān)閉 。否,調(diào)用加十 1 子程序 MOVF NUM9,W 。NUM9 加十 ADDWF NUM9,F DECF NUM5,F 。是,返回 一位轉(zhuǎn)多位十進(jìn)制子程序 由鍵盤(pán)顯示子程序我們發(fā)現(xiàn)其后多出一個(gè)多個(gè)一位數(shù)轉(zhuǎn)化為一個(gè)多位數(shù)的轉(zhuǎn)化子程序,它的作用是,在鍵入之后將該多位數(shù)送入倒計(jì)時(shí)顯示子程序開(kāi)始倒計(jì)時(shí),這是由倒計(jì)時(shí)顯示子程序決定的,只要送入任意一個(gè)三位數(shù),它都能夠?qū)崿F(xiàn)準(zhǔn)確的顯 示。 圖 24 多位數(shù)轉(zhuǎn)化流程圖 程序: 。不為 0,調(diào)用加百子程序 MOVLW 00H 。組成的數(shù)放入顯示變量 NUMB RETURN 。判斷是否為 0 GOTO JIABAI 。NUM10 加 10 ADDWF NUM10,F DECF NUM6,F 。是,返回 TMR0 中斷服務(wù)子程序 為實(shí)現(xiàn)精準(zhǔn)定時(shí),我們采用 TMR0 定時(shí)器,它能夠?qū)崿F(xiàn)精確到微秒的計(jì)時(shí)。基于此原理,我們寫(xiě)出程序如下: ORG 0x004 。 save off contents of STATUS register BCF INTCON,T0IF 。是,計(jì)數(shù)變量減 1 MOVLW .20 。 restore preisr STATUS register contents swapf w_temp,f swapf w_temp,w 。分頻比為 1: 256 MOVWF OPTION_REG 三位倒計(jì)時(shí)器 15 倒計(jì)時(shí)顯示子程序 基本的輸入及輔助程序準(zhǔn)備完畢,接下來(lái)是主體的顯示程序。 圖 25 分解流程圖 當(dāng)送入的數(shù)值被分解之后,調(diào)用 3 位數(shù)碼管顯示子程序,實(shí)現(xiàn) 3 位數(shù)的動(dòng)態(tài)掃描,當(dāng)計(jì)時(shí)器計(jì)時(shí)時(shí)間到 1 秒之后,變量值減 1,分解子程序分解,送入顯示,數(shù)碼管顯示三位數(shù)減 1,實(shí)現(xiàn)了 1 秒倒計(jì)時(shí)功能。控制定時(shí)器的中斷開(kāi)關(guān)是本節(jié)的關(guān)鍵。T0 使能關(guān)閉,計(jì)數(shù)停止 RETURN 。其程序如下: 。E 鍵,用于計(jì)數(shù)減一 JIANE CALL SFANG 。 。鍵盤(pán)次數(shù)判斷恢復(fù)初始值 MOVWF KEYFLAG CLRF NUM9 。 LIGHT BCF INTCON,5 。中間變量的初始化 CLRF NUM10 GOTO LOOP 。這里采用大循環(huán)的方式,不停地對(duì)程序進(jìn)行掃描,當(dāng)掃描到某一部分發(fā)現(xiàn)需要調(diào)用或跳轉(zhuǎn)時(shí)會(huì)相應(yīng)的調(diào)用或跳轉(zhuǎn)至其他子程序。因?yàn)槊刻齑蟛糠謺r(shí)間都用在設(shè)計(jì)上,而我們對(duì)單片機(jī)的設(shè)計(jì)還不夠熟練,總是花上大量的時(shí)間弄明白一個(gè)小小的問(wèn)題,有時(shí)一個(gè)錯(cuò)誤會(huì)耽誤上半天而無(wú)法發(fā)現(xiàn),所以,當(dāng)我們?nèi)〉靡稽c(diǎn)點(diǎn)進(jìn)步之后才會(huì)發(fā)現(xiàn)已經(jīng)過(guò)去了很長(zhǎng)的時(shí)間。第二個(gè)問(wèn)題是編程過(guò)程中經(jīng)常出現(xiàn)理想思維,以為自己的思路能夠走通但是調(diào)試之后才發(fā)現(xiàn)無(wú)法實(shí)現(xiàn),經(jīng)過(guò)無(wú)數(shù)遍的理順之后才發(fā)現(xiàn)有些地方是明顯的錯(cuò)誤,有時(shí)是語(yǔ)言的使用錯(cuò)誤,有時(shí)是思路的局限,然而經(jīng)過(guò)不斷的發(fā)現(xiàn)問(wèn)題、解決問(wèn)題我們的程序逐漸完善。不僅復(fù)習(xí)了課本上所學(xué)的內(nèi)容,還把理論付諸于實(shí)踐,并使我們切身的體會(huì)到理論用于實(shí)踐時(shí)會(huì)出現(xiàn)的各種問(wèn)題,通過(guò)解決這些問(wèn)題,我們處理實(shí)際問(wèn)題的能力有了很大的提高。 這次課程設(shè)計(jì)提高了我們解決實(shí)際問(wèn)題的能力,為我們積累了寶貴的實(shí)踐經(jīng)驗(yàn)。 但是該計(jì)時(shí)器局限于 255 秒以?xún)?nèi)的的計(jì)時(shí),計(jì)時(shí)長(zhǎng)度有限制;而且體積較大,線(xiàn)路較為復(fù)雜,不適合攜帶。 list directive to define processor include 。_PWRTE_ONamp。 variable used for context saving status_temp EQU 0x72 。********************************************************************** ORG 0x000 。 interrupt vector location movwf w_temp 。清 TMR0 溢出標(biāo)志位 DECFSZ COUNTER 。循環(huán)數(shù)賦初值 20 MOVWF COUNTER RT MOVLW 3DH 。 restore preisr STATUS register contents swapf w_temp,f swapf w_temp,w 。 remaining code goes here 三位倒計(jì)時(shí)器 26 BSF STATUS,RP1 。進(jìn)入體 1 CLRF TRISD 。RD 低四位輸入,高四位輸出 MOVWF TRISC MOVLW 08H 。 。RE 關(guān)閉 MOVWF PORTE CLRF NUM5 。調(diào)用分解子程序 CALL DISPLAY 。是,調(diào)用為 0 提示及恢復(fù)子程序 GOTO LOOP6 。調(diào)用小燈閃爍子程序 MOVLW 01H 。分解子程序,多位數(shù)的分解 CALC MOVF NUMB,W 。變量 SHANG 送如 W 寄存器 CALL DIV10 。顯示子程序 DISPLAY MOVF GE,W 。個(gè)位位選打開(kāi) CALL DELAY 。送入段選 BCF PORTB,2 。百位數(shù)查表 MOVWF PORTD 。位選關(guān)閉 RETURN 。YUSHU 減 10 INCF SHANG,F 。是, SHANG 減 1 ADDWF YUSHU,W 。是否第一次鍵入 三位倒計(jì)時(shí)器 30 CALL XIANSHI1 。是否第三次鍵入 CALL XIANSHI3 。返回大循環(huán) 。鍵盤(pán)顯示 1 子程序 XIANSHI1 BCF PORTB,1 。關(guān)閉位選 MOVF NUM8,W 。鍵盤(pán)顯示 2 子程序,用于 2 位數(shù)的鍵入顯示 XIANSHI2 BCF PORTB,1 。延時(shí) BSF PORTB,1 。延時(shí) BSF PORTB,2 。十位是否為 0 SUBWF NUM5,F 三位倒計(jì)時(shí)器 32 BTFSS STATUS,Z CALL JIASHI1 。加十 1 子程序 JIASHI1 MOVLW .10 。否,繼續(xù)加十 RETURN 。送入個(gè)位段選 MOVWF PORTD CALL DELAY 。送入十位段選 MOVWF PORTD CALL DELAY 。送入百位段選 MOVWF PORTD 三位倒計(jì)時(shí)器 33 CALL DELAY 。將 NUM8 復(fù)制到 MUM7 MOVWF NUM7 MOVLW 00H 。不為 0,調(diào)用加十 2 子程序 MOVF NUM10,W 。NUM10 加 100 ADDWF NUM10,F DECF NUM11,F 。為 0,返回 。是否為 0 GOTO JIASHI2 。RC 口低四位輸出低電平 MOVWF PORTC MOVLW 0F0H ANDWF PORTC,W 。否,有可能有鍵輸入,延時(shí) 20 毫秒 CALL DELAY10MS MOVLW 0F0H 。逐行判斷哪個(gè)鍵輸入,首先 RC0=0 MOVWF PORTC BTFSS PORTC,4 。是,跳至鍵 1 功能子程序 BTFSS PORTC,6 。是,跳至鍵 3 功能子程序 MOVLW 0FDH 。判斷鍵 5 GOTO JIAN5 。判斷鍵 7 GOTO JIAN
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1