




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
8個共陰極的數(shù)碼管,動態(tài)顯示0-7ORG0000HMOVR0,#00H;給R0賦值0MOVDPTR,#TAB;把TAB表的首地址給DPTRMOVR4,#0FEH;;給R4賦值0FEMOVA,R4;;A為0FE也就是11111110PUSHACC;;將A入棧DLO:MOVA,R0MOVCA,@A+DPTR;;查TAB表MOVP0,A;把查的值給數(shù)碼管的8個段POPACC;將之前的A出棧MOVP1,A;將A的值給P1也就是給P111111110是那個為0的管亮LCALLQF;調(diào)用取反子程序PUSHACC;將A入棧INCR0;R0值加1LCALLDELAY;調(diào)用延時程序CJNER0,#08H,DLO;判斷是否查完一便表沒查完再跳到DLOMOVR4,#0FEH;查完了重新給A賦值MOVA,R4PUSHACC;再將A入棧MOVR0,#00H;給R0清0SJMPDLO;跳到DLO再顯示DELAY:MOVR1,#18LP1:MOVR2,#200LP2:MOVR3,#126DJNZR3,$DJNZR2,LP2DJNZR1,LP1RETTAB:DB3fH,06H,5bH,4fH,66H,6dH,7dh,07hQF:RLA;左移RETEND0-99的顯示Org0LjmpmainOrg0100hMain:MOVR0,#00H;給R0賦值0MOVDPTR,#TAB;MOVR3,#0;;給R3賦值0M1:MOVR4,#0;;給R4賦值0GW:MOVR2,#10YS:MOVA,R4;;A為0MOVCA,@A+DPTRMOVP0,A;顯示個位的數(shù)據(jù)CLRP1.1LCALLDLMOVP0,#0SETBP1.1MOVA,R3MOVCA,@A+DPTRMOVP0,A;顯示十位的數(shù)據(jù)CLRP1.0LCALLDLMOVP0,#0SETBP1.0DJNZR2,YSINCR4CJNER4,#10,GWINCR3CJNER3,#10,M1SJMPMAINDL:MOVR7,#10D1:MOVR6,#200D2:DJNZR6,d2DJNZR7,d1RETTAB:DB3fH,06H,05bH,4fH,66H,6dH,7dH,07H,7fH,6fHa_bitequ20h;數(shù)碼管個位數(shù)存放內(nèi)存位置b_bitequ21h;數(shù)碼管十位數(shù)存放內(nèi)存位置tempequ22h;計數(shù)器數(shù)值存放內(nèi)存位置org0star:movtemp,#0;初始化計數(shù)器,從0開始stlop:acalldisplay;調(diào)用顯示子程序inctemp;對計數(shù)器加1mova,tempcjnea,#100,next;判斷計數(shù)器是否滿100?movtemp,#0;滿100就清零重新開始next:ljmpstlop;不滿就循環(huán)執(zhí)行;顯示子程序display:mova,temp;將temp中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制movb,#10;10進(jìn)制/10=10進(jìn)制divabmovb_bit,a;十位在amova_bit,b;個位在bmovdptr,#numtab;指定查表啟始地址movr0,#4dpl1:movr1,#250;dplop:mova,a_bit;取個位數(shù)MOVCA,@A+DPTR;查個位數(shù)的7段代碼movp0,a;送出個位的7段代碼clrp1.7;開個位顯示acalld1ms;顯示162微秒setbp1.7;關(guān)閉個位顯示,防止鬼影mova,b_bit;取十位數(shù)MOVCA,@A+DPTR;查十位數(shù)的7段代碼movp0,a;送出十位的7段代碼clrp1.6;開十位顯示acalld1ms;顯示162微秒setbp1.6;關(guān)閉十位顯示,防止鬼影djnzr1,dplop;循環(huán)執(zhí)行250次djnzr0,dpl1;循環(huán)執(zhí)行250X4=1000次Ret;2+2X80=162微秒,延時按12MHZ計算D1MS:MOVR7,#80DJNZR7,$RET共陰數(shù)碼管的顯示代碼numtab:DB3fH,06H,05bH,4fH,66H,6dH,7dH,07H,7fH,6fH鍵盤接口
鍵盤是單片機應(yīng)用系統(tǒng)中使用最廣泛的一種數(shù)據(jù)輸入設(shè)備。鍵盤是一組按鍵的組合。鍵通常是一種常開型按鈕開關(guān),常態(tài)下鍵的兩個觸點處于斷開狀態(tài),按下鍵時它們才閉合(短路)。第三章電子時鐘設(shè)計
非編碼鍵盤按組成結(jié)構(gòu)又可分為獨立式鍵盤和矩陣式鍵盤。獨立式鍵盤的工作過程與矩陣式鍵盤類似,無論是硬件結(jié)構(gòu)還是軟件設(shè)計都比較簡單,。
通常,按鍵按照接口原理鍵盤有編碼和非編碼兩種。編碼鍵盤通過硬件電路產(chǎn)生被按按鍵的鍵碼和一個選通脈沖。選通脈沖可作為CPU的中斷請求信號。這種鍵盤使用方便,所需程序簡單,但硬件電路復(fù)雜,常不被單片機采用。按鍵按照結(jié)構(gòu)原理可分為兩類,一類是觸點式開關(guān)按鍵,如機械式開關(guān)、導(dǎo)電橡膠式開關(guān)等;另一類是無觸點開關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。前者造價低,后者壽命長。目前,微機系統(tǒng)中最常見的是觸點式開關(guān)按鍵。一個完善的鍵盤控制程序應(yīng)具備以下功能:(1)檢測有無按鍵按下,并采取硬件或軟件措施,消除鍵盤按鍵機械觸點抖動的影響。(2)有可靠的邏輯處理辦法。每次只處理一個按鍵,其間對任何按鍵的操作對系統(tǒng)不產(chǎn)生影響,且無論一次按鍵時間有多長,系統(tǒng)僅執(zhí)行一次按鍵功能程序。(3)準(zhǔn)確輸出按鍵值(或鍵號),以滿足跳轉(zhuǎn)指令要求。S1S4S3S2P1.4P1.5P1.6P1.789S52+5V圖3.1獨立式鍵盤接口特點:每個按鍵占用一條I/O線,當(dāng)按鍵數(shù)量較多時,I/O口利用率不高,但程序編制簡單。適用于所需按鍵較少的場合。特點:電路連接復(fù)雜,但提高了I/O口利用率,軟件編程較復(fù)雜。適用于需使用大量按鍵的場合。89s52P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V圖3.2
矩陣式鍵盤接口獨立式按鍵的軟件結(jié)構(gòu)獨立式按鍵軟件常采用查詢式結(jié)構(gòu)。先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認(rèn)該I/O口線所對應(yīng)的按鍵已按下,然后,再轉(zhuǎn)向該鍵的功能處理程序。矩陣式鍵盤的結(jié)構(gòu)及原理矩陣式鍵盤由行線和列線組成,按鍵位于行、列線的交叉點上,其結(jié)構(gòu)如下圖所示。由圖可知,一個4×4的行、列結(jié)構(gòu)可以構(gòu)成一個含有16個按鍵的鍵盤,顯然,在按鍵數(shù)量較多時,矩陣式鍵盤較之獨立式按鍵鍵盤要節(jié)省很多I/O口。矩陣式鍵盤中,行、列線分別連接到按鍵開關(guān)的兩端,行線通過上拉電阻接到+5V上。當(dāng)無鍵按下時,行線處于高電平狀態(tài);當(dāng)有鍵按下時,行、列線將導(dǎo)通,此時,行線電平將由與此行線相連的列線電平?jīng)Q定。這是識別按鍵是否按下的關(guān)鍵。然而,矩陣鍵盤中的行線、列線和多個鍵相連,各按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,因此,必須將行線、列線信號配合起來作適當(dāng)處理,才能確定閉合鍵的位置。K99K10AK15FP10P11P12P13P14P15P16P17EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10VCC40GND20U189S52P10P11P12P13P14P15P16P17K00K11K22K33K55K66K77K88K44K11BK12CK13DK14E掃描法和線反轉(zhuǎn)法89s52P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V圖3.3
矩陣式鍵盤接口
0 1 2 3 ee de be 7e
4 5 6 7 ed dd bd 7d
8 9 A B eb db bb 7b
C D E F e7 d7 b7 77鍵盤控制流程
單片機對矩陣式鍵盤接口處理的一般過程如圖所示。鍵掃描消抖求鍵碼等待釋放鍵掃描消除抖動有鍵按下?鍵掃描確有鍵按下?求鍵值按鍵處理鍵釋放?YYYNN等待鍵釋放N開始返回按鍵處理圖3.4
鍵盤處理流程框圖1.鍵掃描
鍵掃描就是要判斷有無鍵按下,當(dāng)掃描到有鍵按下時再進(jìn)行下一步處理,否則退出鍵盤處理程序。獨立式鍵盤掃描只需讀取IO口狀態(tài),而矩陣式鍵盤描通常有兩種實現(xiàn)方法:逐行掃描法和線反轉(zhuǎn)法。(1)逐行掃描法。依次從第一至最末行線上發(fā)出低電平信號,如果該行線所連接的鍵沒有按下的話,則列線所接的端口得到的是全“1”信號,如果有鍵按下的話,則得到非全“1”信號。
89C51P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V01111111101111101101111111101111設(shè)第2行第4列鍵按下行線輸出列線輸入01111111101111101101111111101111
(2)線反轉(zhuǎn)法。線反轉(zhuǎn)法也是識別閉合鍵的一種常用方法,該法比行掃描速度快,但在硬件上要求行線與列線外接上拉電阻。先將行線作為輸出線,列線作為輸入線,行線輸出全“0”信號,讀入列線的值,那么在閉合鍵所在的列線上的值必為0;然后從列線輸出全“0”信號,再讀取行線的輸入值,閉合鍵所在的行線值必為0。這樣,當(dāng)一個鍵被按下時,必定可讀到一對唯一的行列值。再由這一對行列值可以求出閉合鍵所在的位置。0000111000001011
89C51P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V設(shè)第2行第4列鍵按下列值:1110行值:1011
由于按鍵按下時的機械動作,在按鍵被按下或松開的瞬間,其輸出電壓會產(chǎn)生波動,稱為鍵的抖動。鍵按下前沿抖動后沿抖動
2.消抖
為確保每按一次鍵單片機只進(jìn)行一次處理,使鍵盤可靠地工作,必須消除按鍵抖動。消抖方法有硬件消抖和軟件延時兩種。
圖3.5鍵閉合及斷開時的抖動+5V&&QQ
(1)硬件消抖法:就是在鍵盤中附加去抖動電路,從根上消除抖動產(chǎn)生的可能性。右圖所示電路實際上是由R-S觸發(fā)器構(gòu)成的單脈沖電路。當(dāng)按鈕開關(guān)按下時Q端輸出低電平,當(dāng)開關(guān)松開時Q端恢復(fù)高電平,即輸出一個負(fù)脈沖,以此消除抖動。圖3.6硬件去抖動電路
(2)軟件消抖法:鍵按下的時間與操作者的按鍵動作有關(guān),約為十分之幾到幾秒不等。而鍵抖動時間與按鍵的機械特性有關(guān),一般為5~10ms不等。軟件消抖法即是采用延時(一般延時10~20ms)的方法,以避開按鍵的抖動,即在按鍵已穩(wěn)定地閉合或斷開時才讀出其狀態(tài)。100ms10ms10ms鍵抖動時間
圖3.7軟件消抖法延時區(qū)間示意圖3.計算鍵碼
鍵碼是每個按鍵的標(biāo)識。被按鍵確定下來之后,接下來的工作是計算閉合鍵的鍵碼,然后才能根據(jù)鍵碼進(jìn)行對應(yīng)的操作。
為編程方便,鍵碼通常都是以鍵的排列順序安排,按照從左到右、從上向下的順序編排。鍵碼可根據(jù)行號列號以查表求得,也可通過計算得到。我們將結(jié)合實例加以介紹。4.等待釋放
等待釋放是為了保證鍵的一次閉合僅進(jìn)行一次處理。求得鍵碼后,然后通過不斷進(jìn)行鍵掃描,如有鍵按下,則繼續(xù)掃描,否則認(rèn)為鍵已釋放。5.按鍵處理
根據(jù)系統(tǒng)功能要求,利用單片機控制完成特定操作。鍵盤接口的控制方式
在單片機的運行過程中,何時進(jìn)行鍵盤掃描和處理,可有下列三種情況:1.查詢方式:單片機通過調(diào)用鍵盤掃描子程序,查詢有無鍵按下。2.定時掃描方式:每隔一定時間執(zhí)行一次鍵盤掃描子程序。3.中斷方式:每當(dāng)有鍵閉合時才向CPU發(fā)出中斷請求,中斷服務(wù)時進(jìn)行鍵盤掃描和處理。開關(guān)輸入的連接方法
當(dāng)需要使用的開關(guān)數(shù)量較少時,一般直接使用獨立式按鍵輸入,每個開關(guān)占用一個端口,其優(yōu)點是編程簡單,缺點是占用端口資源多。當(dāng)需要的開關(guān)數(shù)量較多,CPU端口不夠用時,使用矩陣式輸入,其優(yōu)點是占用端口資源少,缺點是編程比較復(fù)雜。本任務(wù)中使用獨立式按鍵輸入方法。圖3-8所示為一個獨立式按鍵輸入的常用連接方法,當(dāng)按鍵按下時CPU端口為“0”,當(dāng)按鍵松開時CPU端口為“1”。通過程序讀取端口狀態(tài)就能知道開關(guān)的狀態(tài)。硬件知識1、硬件電路原理圖圖3-8獨立式按鍵輸入端口在上拉電阻的作用下保持為高電平按鍵按下端口為低電平狀態(tài),輸入邏輯“0”輸入邏輯“1”2、模擬開關(guān)燈參考程序如下:ORG0000HL1: JBP3.2,L2 ;如果P3.2的狀態(tài)為1(1號鍵未按),則跳轉(zhuǎn)到L2CLRP0.0 ;1號鍵按下,P0.0清0,輸出低電平,LED發(fā)光SJMPL1L2: JBP3.3,L1 ;如果P3.3的狀態(tài)為1(2號鍵未按),則跳轉(zhuǎn)到L1SETBP0.0 ;2號鍵按下,P0.0置1,輸出高電平,LED熄滅SJMPL1END按下1號鍵時,P3.2=0,程序從L1順序執(zhí)行,P0.0被清0,輸出低電平,LED發(fā)光,1號鍵未按下,程序跳轉(zhuǎn)到L2,檢測2號鍵,即P3.3的狀態(tài),如果P3.3的狀態(tài)為1(2號鍵未按),則跳轉(zhuǎn)到L1,完成一個循環(huán);如果P3.3的狀態(tài)為0(2號鍵被按下),程序從L2順序執(zhí)行,P0.0置1,輸出高電平,LED熄滅。最后執(zhí)行SJMPL1,回到開始處繼續(xù)執(zhí)行。3、按鍵控制任意LED燈點亮參考程序如下:ORG0000H ;定位偽指令,指定下一條指令的地址,第一條指令必須放在0000HL1:MOVA,P3 ;把P3口的狀態(tài)讀入累加器A中RLA ;A中的內(nèi)容循環(huán)左移RLAMOVP0,A ;把A中的數(shù)據(jù)送到P0口,控制P0口輸出電平,控制LED亮滅 SJMPL1 ;返回L1,循環(huán)執(zhí)行程序END ;結(jié)束偽指令在以上的這段程序中,加了兩條RLA指令,實現(xiàn)了兩次左移,這樣P3.2、P3.3、P3.4、P3.5分別控制P0.4、P0.5、P0.6、P0.7引腳連接的LED燈。由于P0口的排列順序問題,在實驗板上看起來燈是右移了。1、模擬開關(guān)量,按下1號鍵時(P3.2=0)八盞LED發(fā)光,按下2號鍵(P3.3=0)LED熄滅。實驗五答案org0l1:jbp3.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于圖像處理的低能耗環(huán)境監(jiān)測系統(tǒng)-洞察闡釋
- 社會語言的數(shù)字化存證研究-洞察闡釋
- 工業(yè)自動化設(shè)備廠房倉庫租賃協(xié)議
- 公共停車場車庫使用權(quán)出售協(xié)議
- 電動叉車工聘用合同協(xié)議書
- 智能共享車輛無償使用合作協(xié)議
- 豌豆莢生態(tài)圈構(gòu)建-洞察闡釋
- 車輛保養(yǎng)與配件供應(yīng)一體化合作協(xié)議
- 車庫與房屋租賃及物業(yè)管理服務(wù)合同范本
- 電商平臺品牌入駐合作協(xié)議
- 異丁烯安全技術(shù)說明書MSDS
- 2023年山西建設(shè)投資集團(tuán)有限公司招聘筆試題庫及答案解析
- 鐵皮石斛的抗氧化、保濕功效研究和應(yīng)用現(xiàn)狀
- GB/Z 18620.4-2008圓柱齒輪檢驗實施規(guī)范第4部分:表面結(jié)構(gòu)和輪齒接觸斑點的檢驗
- GB/T 97.1-2002平墊圈A級
- 泊 秦 淮唐 杜牧
- GB/T 1871.1-1995磷礦石和磷精礦中五氧化二磷含量的測定磷鉬酸喹啉重量法和容量法
- GB/T 1725-2007色漆、清漆和塑料不揮發(fā)物含量的測定
- 公路工程工作總結(jié)范文
- 初中物理杠桿滑輪課件
- 課件:第七章 社會工作項目結(jié)項(《社會工作項目策劃與評估》課程)
評論
0/150
提交評論