基于單片機的計算器——匯編_第1頁
基于單片機的計算器——匯編_第2頁
基于單片機的計算器——匯編_第3頁
基于單片機的計算器——匯編_第4頁
基于單片機的計算器——匯編_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、單片機綜合設計實訓 (論文)說明書題 目: 基于單片機的電子計算器 院 (系):專 業(yè):學生姓名:學 號:指導教師:年 01月 1日摘要當今社會,隨著人們物質(zhì)生活的不斷提高,電子產(chǎn)品已經(jīng)走進了家家戶戶,無論是生活或?qū)W習,還是娛樂和消遣幾乎樣樣都離不開電子產(chǎn)品,大型復雜的計算能力是人腦所不能勝任的,而且比較容易出錯。計算器作為一種快速通用的計算工具方便了用戶的使用。計算器可謂是我們最親密的電子伙伴之一。單片機由于其微小的體積和極低的成本,廣泛的應用于家用電器、工業(yè)控制等領域中。在工業(yè)生產(chǎn)中。單片微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片微型計算機簡稱單片機,特別適用于控制領

2、域,故又稱為微控制器。本系統(tǒng)就是充分利用了AT89S52芯片的I/O引腳。系統(tǒng)以采用MCS-51系列單片機Intel8051為中心器件來設計計算器控制器,以矩陣鍵盤輸入、八位數(shù)碼管顯示,實現(xiàn)了能根據(jù)實際輸入值計算并顯示的功能。關鍵詞:計算器 AT89S52 八位數(shù)碼管 矩陣鍵盤AbstractIn today's society, with people constantly improve the material life, the electronic prod

3、ucts have entered the each and every family, whether living or studying, or entertainment and recreation almost everything is inseparable from the electronic products, large a

4、nd complex computing capability is the human brain are not competent, but relatively easy to go wrong.Calculator as a rapid generic computational tool is convenient for u

5、sers to use.The calculator is our most intimate electronic partners.SCM because of its small size and low cost, widely used in household appliances, industrial control and

6、0;other areas.In industrial production.Single chip microcomputer, the microcomputer is an important branch, is full of vitality.Single chip micro computer referred to as SCM, is pa

7、rticularly applicable to the control field, it is also known as the micro controller.The system is to make full use of the AT89S52 chip I / O pins.System for

8、60;using MCS-51 MCU Intel8051 as the center device to design the computer controller, with the matrix keyboard input, the eight digital tube display, can be achieved acco

9、rding to the actual input value calculation and display functions.Key words: calculator AT89S52 digital tube eight matrix keyboard 目 錄1實訓設計內(nèi)容41.1 設計目的41.2 設計任務42 系統(tǒng)硬件設計42.1 芯片介紹4主控芯片AT89S52概述與介紹42.1.2 MAX232芯片介紹92.2

10、 硬件電路102.2.1 鍵盤接口電路102.2.2 7段LED數(shù)碼管102.2.3 程序下載接口112.2.4 單片機時鐘電路112.2.5 單片機復位電路123 軟件設計123.1 按鍵掃程序設計123.2 算法設計134 電路板制作過程135 作品調(diào)試14硬件調(diào)試145.2 程序調(diào)試14致謝16參考文獻:17附錄:181實訓設計內(nèi)容1.1 設計目的通過本次課題設計,應用單片機原理及應用等所學相關知識及查閱資料,完成簡易計算器的設計,以達到理論與實踐更好的結(jié)合、進一步提高綜合運用所學知識和設計的能力的目的。1.2 設計任務在本次實訓中,主要完成如下方面的設計任務:(1)基本部分:2.4*4

11、矩陣鍵盤輸入3.能實現(xiàn)整數(shù)的加、減、乘、除(2)發(fā)揮部分:2 系統(tǒng)硬件設計硬件系統(tǒng)是指構(gòu)成微機系統(tǒng)的實體和裝置,通常由運算器、控制器、存儲器、輸入接口電路和輸入設備、輸出接口電路和輸出設備等組成。單片機實質(zhì)上是一個硬件的芯片,在實際應用中,通常很難直接和被控對象進行電氣連接,必須外加各種擴展接口電路、外部設備、被控對象等硬件和軟件,才能構(gòu)成一個單片機應用系統(tǒng)。本設計選用以AT89S52單片機為主控單元,顯示部分采用7段LED動態(tài)顯示,按鍵部分采用4*4矩陣鍵盤。2.1 芯片介紹主控芯片AT89S52概述與介紹單片微型計算機是指集成在一個芯片上的微型計算機,也就是把組成微型計算機的各種功能部件,

12、包括CPU(Central Processing Unit)、隨機存取存儲器RAM(Random Access Memory)、只讀存儲器ROM(Read-only Memory)、基本輸入/輸出(Input/Output)接口電路、定時器/計數(shù)器等部件都制作在一塊集成芯片上,構(gòu)成一個完整的微型計算機,從而實現(xiàn)微型計算機的基本功能。單片機內(nèi)部基本結(jié)構(gòu)示意圖如圖所示:AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8k在系統(tǒng)可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常

13、規(guī)編程器。在單芯片上,有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止。AT89S52

14、引腳如圖:VCC :電源GND: 地P0口:P0口是一個雙功能的8位行I/O口,字節(jié)地址為80H,位地址為80H87H。P0口既可做輸入/輸出端口使用,又可作為地址/數(shù)據(jù)總線分時傳輸?shù)?位并行數(shù)據(jù)。其特點有如下: P0口是一個雙功能的端口:地址/數(shù)據(jù)分時復用口和通用I/O口。 具有高電平、低電平和高阻抗3鐘狀態(tài)的I/O口端口稱為雙向I/O端口。P0口作為地址/數(shù)據(jù)總線復用時,相當于一個真正的雙向I/O口。而用作通用I/O口時,由于引腳上需要外加上拉電阻,端口不存在高阻狀態(tài),此時P0口只是一個準雙向口。 為保證引腳上的信號能正確讀入,在讀入操作前應首先向特殊功能寄存器P0寫入FFH。 單片機復位

15、后,特殊功能寄存器P0的值為FFH。 一般情況下,如果P0口作為地址、數(shù)據(jù)復用口時,就不能再作通用I/O口使用。 P0口能驅(qū)動8個TTL負載。P1口:是單一功能的并行I/O口,字節(jié)地址為90H,位地址為90H97H。它只用作通用的數(shù)據(jù)輸入/輸出口。其具有如下特點: P1口由于有內(nèi)部上拉電阻,沒有高阻抗輸入狀態(tài),所以稱為準雙向口。作為輸出口時,不需要再在片外接上拉電阻。 P1口讀引腳輸入時,必須先向特殊功能寄存器P1寫入FFH。 P1口能驅(qū)動4個TTL負載。P2口:是一個雙向功能的8位并行I/O口,字節(jié)地址為A0H,位地址為A0HA7H。既可用作通用的輸入/輸出口,又可用作高8位地址總線。其有如

16、下特點:用作高8位地址輸出線應用時,與P0口輸出的低8位地址一起構(gòu)成16位的地址總線,可以尋址64KB地址空間。作為通用I/O口使用時,P2口為準雙向口,功能與P1一樣。 P2口能驅(qū)動4個TTL負載。P3口:是一個雙功能的8位并行I/O口,字節(jié)地址為B0H,位地址為BOHB7H。它的第一功能是通用輸入/輸出口,作為第二功能使用時,個引腳定義如表1:表1P3口特點如下:內(nèi)部有上拉電阻,不存在高阻抗輸入狀態(tài),是一個準雙向口。作第二功能的輸入/輸出或作通用輸入時,必須先向特殊功能寄存器P3寫入FFH。 P3口的某位不作為第二功能使用時,則自動處于通用輸入/輸出口功能,可作為通用輸入/輸出口使用。P3

17、口能驅(qū)動4個TTL負載。RST:復位輸入。晶振工作時,RST腳持續(xù)至少個機器周期高電平將使單片機復位??撮T狗計時完成后,RST腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復位高電平有效。ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8 位地址的輸出脈沖。在flash編程時,此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。如果需要,通過將地址為8EH的

18、SFR的第0位置 “1”,ALE操作將無效。這一位置 “1”,ALE 僅在執(zhí)行MOVX或MOV指令時有效。否則,ALE將被微弱拉高。這個ALE使能標志位(地址為8EH的SFR的第0位)的設置對微控制器處于外部執(zhí)行模式下無效。PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。當AT89S52從外部程序存儲器執(zhí)行外部代碼時,PSEN在每個機器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,PSEN將不被激活。EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應該接VCC。在flash編程期間,

19、EA也接收12伏VPP電壓。XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。XTAL2:振蕩器反相放大器的輸出端。中斷:51系列單片機有2個外部中斷源、2個定時/計數(shù)中斷源及一個串行口中斷源。這些中斷如圖:每個中斷源都可以通過置位或清除特殊寄存器IE中的相關中斷允許控制位分別使得中斷源有效或無效。IE還包括一個中斷允許總控制位EA,它能一次禁止所有中斷。IE寄存器功能如圖2.4所示:定時器:51系列單片機內(nèi)具有兩個16位的定時器/計數(shù)器(T/C),它可用于定時控制、延時、對外部事件計數(shù)和檢測等場合。本次試驗只用到定時功能,該功能也是通過計數(shù)來實現(xiàn)的,只不過此時的計數(shù)脈沖來自單片機芯片內(nèi)

20、部,是系統(tǒng)脈沖經(jīng)12分頻后送來的,由于一個機器周期等于12個震蕩脈沖周期,所以此時的T/C是每到一個機器周期就加1,計數(shù)頻率為振蕩器頻率的1/12。 MAX232芯片介紹MAX232引腳定義如圖2.5所示:DCD:載波檢測。主要用于Modem通知計算機其處于在線狀態(tài),即Modem檢測到撥號音,處于在線狀態(tài)。RXD:此引腳用于接收外部設備送來的數(shù)據(jù);在你使用Modem時,你會發(fā)現(xiàn)RXD指示燈在閃爍,說明RXD引腳上有數(shù)據(jù)進入。TXD:此引腳將計算機的數(shù)據(jù)發(fā)送給外部設備;在你使用Modem時,你會發(fā)現(xiàn)TXD指示燈在閃爍,說明計算機正在通過TXD引腳發(fā)送數(shù)據(jù)。DTR:數(shù)據(jù)終端就緒;當此引腳高電平時,

21、通知Modem可以進行數(shù)據(jù)傳輸,計算機已經(jīng)準備好。GND:信號地;DSR:數(shù)據(jù)設備就緒;此引腳高電平時,通知計算機Modem已經(jīng)準備好,可以進行數(shù)據(jù)通訊了。RTS:請求發(fā)送;此腳由計算機來控制,用以通知Modem馬上傳送數(shù)據(jù)至計算機;否則,Modem將收到的數(shù)據(jù)暫時放入緩沖區(qū)中。CTS:清除發(fā)送;此腳由Modem控制,用以通知計算機將欲傳的數(shù)據(jù)送至Modem。RI:Modem通知計算機有呼叫進來,是否接聽呼叫由計算機決定硬件電路鍵盤接口電路矩陣鍵盤采用四條I/O線作為行線,四條I/O線作為列線組成鍵盤,在行線和列線的每個交叉點上設置一個按鍵,這樣鍵盤上按鍵的數(shù)量就為4*4個。這樣行列式鍵盤結(jié)構(gòu)

22、能有效的提高單片機系統(tǒng)中I/O口的利用率。計算器的鍵盤布局如圖2.6所示:有16個鍵組成,在單片機中正好用一個P端口實現(xiàn)16個按鍵功能。圖 7段LED數(shù)碼管電路采用動態(tài)顯示,如圖所示,由兩個四位共陽極數(shù)碼管通過P0口、P2口與單片機分別相連,且數(shù)碼管a,b,c,d,e,f,g,dp分別依次與單片機的P0口相連,P0口做為段碼控制端,數(shù)碼管的1,2,3,4,5,6,7,8各引腳分別與單片機的相連,P2口做為數(shù)碼管的位控制端,動態(tài)顯示是每次數(shù)碼管只顯示一位,由于人的視覺停留是到秒之間,當數(shù)碼管依次點亮各個位時,使循環(huán)的頻率高于人的視覺停留時間,人們就認為數(shù)碼管是同時點亮的,就可以達到動態(tài)顯示的效果

23、。數(shù)碼管用的是兩個共陽極的四連體。S8550為PNP型三極管,發(fā)射極接VCC,集電極接數(shù)碼管公共端,基極通過電阻接單片機IO口,這里是P2口。低電平時導通。程序下載接口利用串行口芯片232燒錄入程序如圖2.8所示:單片機時鐘電路時鐘電路用于產(chǎn)生單片機工作所需要的時鐘信號,單片機本身就是一個復雜的同步時序電路,為了保證同步工作方式的實現(xiàn),電路應在唯一的時鐘信號控制下嚴格地按時序進行工作。在MCS-51芯片內(nèi)部有一個高增益反相放大器,其輸入端為芯片引腳X1,輸出端為引腳X2,在芯片的外部跨接晶體振蕩器和微調(diào)電容,形成反饋電路,就構(gòu)成了一個穩(wěn)定的自激振蕩器。此電路采用12MHz的石英晶體。電路如圖所

24、示:單片機復位電路復位是單片機的初始化操作,其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當由于程序運行出錯或操作錯誤是系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需要按復位鍵以重新啟動。RST引腳是單片機復位信號的輸入端,復位信號是高電平有效,其有效時間應持續(xù)24個振蕩周期(即2個機器周期)以上,若使用頻率為12MHz的晶振,則復位信號持續(xù)時間應超過4s才能完成復位操作。復位操作有上電自動復位和按鍵手動復位兩種方式。上電自動復位是通過外部復位電路的電容充電來實現(xiàn)的。按鍵電平復位是通過使復位端經(jīng)電阻與Vcc電源接通而實現(xiàn)的。在本設計中采用了按鍵

25、電平復位方式,3軟件設計主程序的設計詳見附錄三。 3.1 按鍵掃程序設計按鍵掃程序的過程為:開始時,先判斷是否有鍵閉合,無鍵閉合時,返回繼續(xù)判斷,有鍵閉合時,先去抖動,然后確定是否有鍵按下,若無鍵按下,則返回繼續(xù)判斷是否有鍵閉合,若有鍵按下,則判斷鍵號,然后釋放,若釋放按鍵完畢,則返回,若沒有釋放按鍵,則返回繼續(xù)釋放。其流程圖如圖3.1所示。YN開始有鍵閉合?去抖動再次判斷按鍵判斷鍵號釋放返回返回YNYN圖3.1算法設計計算的過程實際上就是對以下對象進行操作:用h1,h2,h3,h4分別存放數(shù)1、符號、數(shù)2、結(jié)果,剛開始輸入時是對h1進行操作,將輸入的數(shù)存入h1內(nèi),當按下一個”+”,用h2存放

26、”+”代表的值,再次輸入數(shù)字時就是對h3進行操作,最后按下等號就是將h1+h3的值賦給h4,并清空h1、h2、h3。4 電路板制作過程印制電路板是以一定尺寸的絕緣板為基材,以銅泊為導線,經(jīng)加工,用一層或若干層導電圖形,以及設計好的孔來實現(xiàn)元件間的電氣連接關系。PCB圖的制作是電路板制作過程復雜重要的一個過程。制作PCB圖時應該注意線的粗細,走向和孔的大小等等。線太細的話,在制作過程中容易引起斷線,孔太大容易滲錫,太小元件放不下,附銅在一般的高頻電路板中能夠減小誤差。腐蝕轉(zhuǎn)印PCB圖的打印鉆孔調(diào)試檢查焊接圖4.1 制作流程圖(1)PCB圖的打印:將原理圖,PCB圖和裝配圖一起打印(2)轉(zhuǎn)?。簩?/p>

27、轉(zhuǎn)印紙倒敷在銅板有銅的那一面,用轉(zhuǎn)印機轉(zhuǎn)印到銅板上,讓熱轉(zhuǎn)印紙上的電路線都印到銅板上。(3)腐蝕:熨燙好的銅板待冷卻后,熱轉(zhuǎn)印紙自動脫落,將印上電路圖的銅版放到有三氯化鐵的盆中腐蝕,剩下的部分就是一個完整的銅線電路圖。氯化鐵的濃度不需要很高可以加點熱水,這樣腐蝕的速度也會比較快。(4)鉆孔:鉆孔要注意孔的尺寸,是不是和要裝的器件相對應,如果器件要求的孔較大的話,應該換用較大的針頭。(5)焊接:焊接前要放置元件,從比較矮的器件到比較高的器件,器件越貼近電路板越好,這樣可以減小干擾。焊接的時候可油上一層松香,不僅有助焊接還可以防止銅層氧化,要注意不要接成短路,焊點不要太大,注意不要虛焊。(6)檢查

28、:檢查是否虛焊。管腳位置是否正確,特別是三極管要注意。(7)調(diào)試:接上電源,用萬用表、示波器檢測。5 作品調(diào)試硬件調(diào)試a. 把電路板焊好后,先通過檢查電路板表面檢查是否有漏焊、錯焊、接觸不良等b. 編寫檢測程序逐個點亮數(shù)碼管,檢查數(shù)碼顯示部分是否有硬件問題c編寫檢測程序檢測矩陣掃描是否有硬件問題5.2 程序調(diào)試重點就是這個部分,很多程序就是在調(diào)試過程中慢慢完善,先前所完成的程序部分只能算一個基本框架,當然,這一切是建立在硬件沒用問題的基礎上程序在進行調(diào)試時,可以像硬件一樣使用分模塊調(diào)試,這樣可以最迅捷的找出問題所在,不受其他模塊的影響總結(jié)這次單片機課程設計不僅鞏固了以前所學過的知識,而且學到了

29、很多在書本上沒有學到過的知識,掌握了一種系統(tǒng)的研究方法,可以進行一些簡單的編程。通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,從而提高自己的實際動手能力和獨立思考的能力。同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,例如對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。經(jīng)過兩周的努力,基本完成了單片機課設。這是一個磨練意志的過程。從課題的選擇開始,計算器的設計、硬件和軟件系統(tǒng)的設計、到最后的Proteus軟件仿真完成,這其中經(jīng)歷了很多困難,但是更重要的是在這個過程中我得到了很大的鍛煉。一方面通過C51單片機等一

30、些器件的設計讓我學習和掌握了單片機技術(shù)的基礎知識和技術(shù)要點,也使以前學的很多知識都得到了運用;另一方面在用Proteus軟件畫電路圖時,然后再轉(zhuǎn)換成一維的WORD中進行編輯,這個過程中讓我掌握了計算機輔助的設計技術(shù)。當然,這是一個需要不斷的嘗試,不斷的校核,不斷的修改,最后完成一個合理的設計的過程,需要的是細心和耐心。在很大程度上培養(yǎng)了我拼搏的工作精神,使我受益匪淺,更加明確了自己專業(yè)的方向。致謝本次的工作能夠得到順利的完成,首先要感謝的是學院能夠給我們這個展現(xiàn)自己的能力的機會,讓我們能夠從中學到一些東西。再者我想感謝在我做實訓設計中那些在身邊幫助我的每位同學,本來我對PROTEL,PROTU

31、ES,以及KEIL這三款軟件不是非常熟悉,是身邊的同學在關鍵時候給予我耐心的幫助,讓我現(xiàn)在對這些軟件更加熟悉,也使我在實訓設計中的制版和仿真能夠成功。最后要感謝的是我們的指導老師,是老師平日里的辛勤教導,教給我們相關知識,為我們的實訓成功打下了基礎??傊?,感謝每一位關心過我,幫助過我的人。滴水之恩,當涌泉相報。最后,再次感謝我的指導老師和同學們。參考文獻:1張毅剛、彭喜源、譚曉昀、曲春波著.MCS-51單片機應用設計.哈爾濱工業(yè)大學出版社,19972.3 朱定華著.單片機原理與接口技術(shù).電子工業(yè)出版社,2001.4 45 百度文庫附錄:1 電路原理圖2 PCB圖3 源程序ORG 0000H L

32、JMP START;動態(tài)顯示子程序DIR:MOV DPTR,#TAB MOV A,78H MOVC A,A+DPTR MOV P0,A SETB P2.7;1.仿真時是采用高電平點亮,但是由于硬件是8550PNP型三極管驅(qū)動,故而下載到板上必須改為CLR P2.7 ,一直改到P2.0 處 LCALL DELAY CLR P2.7 ;2.仿真時是采用低電平滅燈,但是由于硬件是8550PNP型三極管驅(qū)動,故而下載到板上必須改為SETB P2.7 ,一直改到P2.0 處 MOV A,79H MOVC A,A+DPTR MOV P0,A LCALL DELAYCLR P2.6 MOV A,7AH MO

33、VC A,A+DPTR MOV P0,A LCALL DELAYCLR P2.5 MOV A,7BH MOVC A,A+DPTR MOV P0,A LCALL DELAY CLR P2.4 MOV A,7CH MOVC A,A+DPTR MOV P0,A LCALL DELAY CLR P2.3 MOV A,7DH MOVC A,A+DPTR MOV P0,A LCALL DELAYCLR P2.2 MOV A,7EH MOVC A,A+DPTR MOV P0,A LCALL DELAY CLR P2.1 MOV A,7FH MOVC A,A+DPTR MOV P0,A LCALL DELAY

34、 CLR P2.0 RETTAB:DB 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0FFH ;共陽數(shù)碼管;延時子程序DELAY:MOV R6,#2LOOP1:MOV R7,#248 NOPLOOP2:DJNZ R7,LOOP2 DJNZ R6,LOOP1 RET;鍵盤檢測子程序(無鍵按下繼續(xù)檢測,有鍵按下賦A鍵值)KEY:LCALL KS ;調(diào)用檢測按鍵子程序 JNZ K1 ;有鍵按下繼續(xù) LCALL DELAY2 ;無鍵按調(diào)用延時去抖 ACALL DIR ;調(diào)用動態(tài)顯示 AJMP KEY ;返回繼續(xù)檢測按鍵K1:LCALL DELAY

35、2 ;有鍵按下延時去抖動 LCALL KS ;再調(diào)用檢測按腱子程序 JNZ K2 ;確認有按鍵進行下一步 ACALL DIR ;調(diào)用動態(tài)顯示 AJMP KEY ;無鍵按下返回繼續(xù)檢測K2:MOV R2,#0EFH ;將掃描值送入R2暫存 MOV R3,#00H ;將第一列值送入R3暫存K3:MOV P1,R2 ;將R2值送入P1口等于1跳轉(zhuǎn)到L1 MOV A,#00H ;將第一行值送入ACC AJMP LK ;跳轉(zhuǎn)到鍵值處理程序等于1跳轉(zhuǎn)到L2 MOV A,#04H ;將第二行的行值送入ACC AJMP LK ;跳轉(zhuǎn)到鍵值處理程序等于1跳轉(zhuǎn)到L3 MOV A,#08H ;將第三行行值送入ACC

36、 AJMP LK ;跳轉(zhuǎn)到鍵值處理程序等于1跳轉(zhuǎn)到NEXT處 MOV A,#0CH ;將第四行行值送入ACCLK:ADD A,R3 ;行值與列值相加后的鍵值送入A PUSH ACC ;將A中的值送入堆棧暫存K4:LCALL DELAY2 ;調(diào)用延時去抖程序 LCALL KS ;調(diào)用按鍵檢測程序 JNZ K4 ;按鍵沒有松開繼續(xù)返回檢測 POP ACC ;將堆棧值送入ACC MOV DPTR,#KEYTAB MOVC A,A+DPTR RETNEXT:INC R3 ;列值加一 MOV A,R2 ;R2值送入A JNB ACC.7,KEY ;掃描完至KEY處進行下一掃描 RL A ;掃描未完將值左

37、移一位進行下一列掃描 MOV R2,A ;將ACC值送入R2暫存 AJMP K3 ;跳轉(zhuǎn)到K3繼續(xù)KS: MOV P1,#0FH ;將P1口高四位置0低四位置1 MOV A,P1 ;讀P1口 XRL A,#0FH ;將A中的值與A中的值相異或 RET ;子程序返回KEYTAB:DB 7,8,9,10,4,5,6,11,1,2,3,12,0,14,15,13 ;鍵值表;40ms延時去抖動子程序DELAY2:MOV R6,#8H LP1: MOV R7,#0FAHLP2: DJNZ R7,LP2 DJNZ R6,LP1 RET;主程序START:MOV 78H,#0 ;初始化:78H放0的段碼,其

38、余放熄滅碼 MOV 79H,#10 MOV 7AH,#10 MOV 7BH,#10 MOV 7CH,#10 MOV 7DH,#10 MOV 7EH,#10 MOV 7FH,#10 MOV R5, #0 ;R5是按鍵次數(shù),初始置0 MOV 30H,#0 ;30H是功能鍵存放單元,置為0 MOV 40H,#0 ;40H單元初始置為0 MOV 41H,#0 ;41H單元初始置為0SETB P3.2LOOP: LCALL DIR LCALL KEY INC R5;判斷按下的是哪個鍵S1:CJNE A,#10,S2 ;不是"+"鍵,跳到S2 LJMP FUN ;是"+&qu

39、ot;鍵,跳到FUNS2:CJNE A,#11,S3 ;不是"-"鍵,跳到S3 LJMP FUN ;是"-"鍵,跳到FUNS3:CJNE A,#12,S4 ; 不是"*"鍵,跳到S4 LJMP FUN ; 是"*"鍵,跳到FUNS4:CJNE A,#13,S5 ; 不是"/"鍵,跳到S5 LJMP FUN ; 是"/"鍵,跳到FUNS5:CJNE A,#14,S6 ; 不是"="鍵,跳到S6 LJMP FUN ;是"="鍵,跳到FUNS

40、6:CJNE A,#15,N1 ; 不是"CL"鍵,跳到N1 LJMP START ; 是"CL"鍵,跳到STARTN1:CJNE R5,#1,N2 ;判斷第幾次按鍵 LJMP T1N2:CJNE R5,#2,N3 LJMP T2N3:CJNE R5,#3,N4 LJMP T3N4:CJNE R5,#4,N5 LJMP T4N5:CJNE R5,#5,N6 LJMP T5N6:CJNE R5,#6,N7 LJMP T6N7:CJNE R5,#7,N8 LJMP T7N8:CJNE R5,#8,RING LJMP T8RING:CLR P3.2 ;超過八次

41、報警T1:MOV R4,A ;輸入值暫存R4 MOV 78H,A ;輸入值送顯示個位緩存 MOV 79H,#10 MOV 7AH,#10 MOV 7BH,#10 MOV 7CH,#10 MOV 7DH,#10 MOV 7EH,#10 MOV 7FH,#10 LJMP LOOPT2:MOV R7,A MOV B,#10 MOV A,R4 MUL AB ADD A,R7 MOV R4,A MOV 7AH,#10 MOV 7BH,#10 MOV 7CH,#10 MOV 7DH,#10 MOV 7EH,#10 MOV 7FH,#10 MOV 79H, 78H ;個位到十位 MOV 78H,R7 ;新數(shù)

42、為個位 LJMP LOOPT3:MOV R7,A MOV B,#10 MOV A,R4 MUL AB ADD A,R7 MOV R4,A MOV 7BH,#10 MOV 7CH,#10 MOV 7DH,#10 MOV 7EH,#10 MOV 7FH,#10 MOV 7AH,79H ;十位到百位 MOV 79H,78H ;個位到十位 MOV 78H,R7 ; 新數(shù)為個位 LJMP LOOPT4:MOV R7,A MOV B,#10 MOV A,R4 MUL AB ADD A,R7 MOV R4,A MOV 7CH,#10 MOV 7DH,#10 MOV 7EH,#10 MOV 7FH,#10 MOV 7BH,7AH MOV 7AH,79H MOV 79H,78H MOV 78H,R7 LJMP LOOPT5:MOV R7,A MOV B,#10 MOV A,R4 MUL AB ADD A,R7 MOV R4,A MOV 7DH,#10 MOV 7EH,#10 MOV 7FH,#10 MOV 7CH,7BH MOV 7BH,7AH MOV 7AH,79H MOV 79H,78H MOV 78H,R7 LJMP LOOPT6:MOV R7,A MOV B,#10 MOV A,R4 MUL AB ADD A,R7 MOV R4,A MOV 7EH,#10 MOV 7F

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論