單片機計算器模擬方案及對策_第1頁
單片機計算器模擬方案及對策_第2頁
單片機計算器模擬方案及對策_第3頁
單片機計算器模擬方案及對策_第4頁
單片機計算器模擬方案及對策_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、-. z.理工學院課 程 設 計 說 明 書 課程名稱單片機原理及應用 設計課題數字計算器設計 專 業 班 級 姓 名 年 月日 課 程 設 計 任 務 書系專業學生班級*課程名稱設計題目 51系單片機數字計算器的設計課程設計容與要求:1.擴展4*4鍵盤,其中10個數字,5個功能鍵,1個清零2. 使用五位數碼管接口電路3. 完成十進制的四則運算(加、減、乘、除);4. 實現低于三位小于255數字的連續運算;5. 使用keil軟件編寫程序;6. 最后用ptoteus仿真;設計(論文)開始日期 年 月日 指導教師設計(論文)完成日期 年 月日 指導教師 年 月日 課 程 設 計 評 語 第 1 頁

2、 系專業學生班級*課程名稱設計題目51系單片機數字計算器課程設計篇幅:圖紙說明書 頁 指導教師評語: 年月 日 指導教師答辯委員會評語:成 績 評 定 項 目滿 分得 分 平時成績20分設計(論文)圖紙及說明書成績50分 答辯成績30分合 計評 定 成 績答辯委員會主任 年 月 日 洛 陽 理 工 學 院 目錄摘要01引言01第一章設計任務和要求021.1設計要求1.2設計方案的確定第二章單片機簡要原理022.1AT89C51介紹2.2 芯片74LS164介紹第三章硬件設計073.1 鍵盤電路的設計3.2 顯示電路的設計3.3 其他電路設計3.4 總原理圖第四章軟件設計11 4.1 主程序的設

3、計4.2 顯示、讀鍵模塊的設計4.3 其他容說明4.4 源程序代碼第五章調試與仿真235.1 Keil C51單片機軟件開發系統5.2 proteus的操作總結25心得體會26參考文獻27-. z.摘要本設計是基于51系列的單片機進行的簡易計算器系統設計,可以完成計算器的鍵盤輸入,進行加、減、乘、除3位無符號數字的簡單四則運算,并在LED上相應的顯示結果。設計過程在硬件與軟件方面進行同步設計。硬件選擇AT89C51單片機和74ls164,輸入用44矩陣鍵盤。顯示用5位7段共陰極LED靜態顯示。軟件從分析計算器功能、流程圖設計,再到程序的編寫進行系統設計。選用編譯效率最高的Keil軟件用匯編語言

4、進行編程,并用proteus仿真。關鍵詞:單片機 計算器 AT89C51芯片 74LS164 引言簡易計算器的原理與設計是單片機課程設計課題中的一個。在完成理論學習和必要的實驗后,我們掌握了單片機的基本原理以及編程和各種基本功能的應用,但對單片機的硬件實際應用和單片機完整程序設計還不清楚,實際動手能力不夠,因此對該課程進行一次課程設計是有必要的。單片機課程設計既鞏固了課本學到的理論,還學到了單片機硬件電路和程序設計,簡易計算器課程設計通過自己動手用計算機電路設計軟件,編寫和調試,最后仿真,來加深對單片機的認識,充分發揮我們的個人創新和動手能力,并提高我們對單片機的興趣,同時學習查閱資料、參考資

5、料的方法。-. z.第一章設計任務和要求1.1 設計要求本次課程設計,我選擇的課題是單片機數字計算器硬軟件設計,設計任務為:1.擴展4*4鍵盤,其中10個數字,5個功能鍵,1個清零2. 使用五位數碼管接口電路3. 完成十進制的四則運算(加、減、乘、除);4. 實現低于三位小于255數字的連續運算;5. 使用keil軟件編寫程序;6. 最后用ptoteus仿真;1.2 設計方案的確定按照1.1的設計要求,本課題需要使用數碼管顯示和擴展4*4鍵盤,由于實驗箱的硬件電路已經固定,故選擇串行靜態顯示和用P1口擴展4*4鍵盤,擴展的4*4鍵盤定義十個數字鍵,六個功能鍵,使用串行靜態顯示顯示運算結果。主程

6、序進行初始化,采用定時器0進行查鍵,每次按鍵后調用顯示子程序。第二章單片機簡要原理在該課程設計中,主要用到一個AT89c51芯片和串接的五個74LS164芯片。作為該設計的主要部分。下面將對這兩個芯片原理及功能做已詳細介紹和說明。2.1AT89c51介紹 圖21芯片AT89C51的外形結構和引腳圖如21所示。AT89C51是一種帶4K字節閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-

7、51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。1.主要特性:8051 CPU與MCS-51 兼容4K字節可編程FLASH存儲器(壽命:1000寫/擦循環) 全靜態工作:0Hz-24KHz三級程序存儲器鎖定128*8位部RAM 32條可編程I/O線兩個16位定時器/計數器 5個中斷源可編程串行通道低功耗的閑置和掉電模式片振蕩器和時鐘電路2.管腳說明VCC:供電電壓(圖中未畫出)GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P

8、1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫1”時,其管腳被部上拉電阻拉高

9、,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址1”時,它利用部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入1”后,它們被部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能

10、口,如下表所示:管腳備選功能P3.0 R*D(串行輸入口)P3.1 T*D(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 /WR(外部數據存儲器寫選通)P3.7 /RD(外部數據存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。 RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正

11、脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE輸出可在SFR8EH地址上置0。此時, ALE只有在執行MOV*,MOVC指令時才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。 /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有部程序存儲器。

12、注意加密方式1時,/EA將部鎖定為RESET;當/EA端保持高電平時,此間部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。*TAL1:反向振蕩放大器的輸入及部時鐘工作電路的輸入。*TAL2:來自反向振蕩器的輸出引腳。2.2 芯片74LS164介紹74LS164是一個串入并出的8位移位寄存器,他常用于單片機系統中,下面結束一下這個元件的基本知識。74LS164外部結構和引腳如圖22所示:圖22 74LS164引腳圖主要特性: 串行輸入帶鎖存 時鐘輸入,串行輸入帶緩沖 異步清除 最高時鐘頻率可高達36Mhz 功耗:10mW/bit 74系列工作溫度: 0C to 70

13、C Vcc最高電壓:7V 輸入最高電壓:7V 最大輸出驅動能力:高電平:0.4mA ; 低電平:8mA 引腳功能:在單片機系統中, 如果并行口的IO資源不夠,而串行口又沒有其他的作用, 則我們可以用74LS164來擴展并行IO口,節約單片機資源。74LS164是一個串行輸入并行輸出的移位寄存器。并帶有清除端。其中,Q0Q7 并行輸出端; A,B串行輸入端; MR 清除端,為0時,輸出清零。;CP 時鐘輸入端。第三章硬件設計簡易數字計算器系統硬件設計主要包括:鍵盤電路,顯示電路以及其他輔助電路。下面分別進行設計。3.1 鍵盤電路的設計鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20

14、個以上)和專用驅動芯片的組合,當按下*個按鍵時,它能夠處理按鍵抖動、連擊等問題,直接輸出按鍵的編碼,無需系統軟件干預。通用計算機使用的標準鍵盤就是編碼鍵盤。在智能儀器中,使用并行接口芯片8279或串行接口芯片HD7279均可以組成編碼鍵盤,同時還可以兼顧數碼管的顯示驅動,其相關的接口電路和接口軟件均可在芯片資料中得到。當系統功能比較復雜,按鍵數量很多時,采用編碼鍵盤可以簡化軟件設計。但大多數智能儀器和電子產品的按鍵數目都不太多(20個以),為了降低成本和簡化電路通常采用非編碼鍵盤。非編碼鍵盤的接口電路有設計者根據需要自行決定,按鍵信息通過接口軟件來獲取。本課題需要的是16個按鍵,故選擇用非編碼

15、鍵盤,為了減少所占用的端口,由P1口采用4*4矩陣式鍵盤。具體電路連接如圖31所示圖31 4*4鍵盤輸入3.2 顯示電路的設計當系統需要顯示少量數據時,采用LED數碼管進行顯示是一種經濟實用的方法。數碼管顯示有靜態顯示和動態顯示兩種方法。為了減少端口的使用,故選擇靜態顯示,并采用共陰極接法電路如圖32所示 圖32五位數碼管顯示LED數碼管顯示塊是由發光二極管顯示字段的顯示器件。在單片機應用常使用七段LED。這種顯示塊有共陰極和共陽極兩種。3.3其他電路設計1.復位、時鐘電路設計當使用部振蕩電路時,*TAL1.*TAL2引腳外接石英晶體和微調電容,如圖33.1所示,圖中C2.C3大小一般為30P

16、F。還加了復位/備用電源引腳的接線方法,任何單片機在工作之前都要進行復位,以便CPU以及其他功能部件都處于一個確定的初始化狀態,并從這個狀態開始工作,也就是程序開始執行之前,單片機做好準備工作。如何進行復位呢?只用在單片機的RST引腳上保持兩個 33.1時鐘電路 33.2復位電路機器周期(24個時鐘周期)的高電平即可對單片機實現復位操作(如圖33.2)。當主電源Vcc發生掉電或者是電壓降低到電平規定值時,VPD上外接的備用電源自動啟用,為單片機部RAM提供電源,以保護片RAM中的信息不丟失,使系統在恢復上電后能正常運行2多位數碼管電路顯示的驅動電路單片機應用中只有一位的的數字顯示是不常見的,即

17、要同時驅動多個數碼管顯示,就必須要同時讓多個數碼管加上各自不同的選片段,這個屬于靜態顯示。所謂靜態顯示,就是每一個顯示器,都要占用單獨的具有封鎖功能的I/O接口用于筆畫字段形代碼,單片機只要把顯示的字形代碼發送到接口電路,直到要顯示新的數據時,再發送新的字形碼,因此,使用這種方法單片機中CPU的開銷小,可以提高單獨鎖存的I/O接口電路很多,這里以常用的串并轉化電路74LS164為例介紹一種常用靜態顯示電路。74ls16474ls16474ls16474ls16474ls164T*DR*D89C51H.AH.AH.AH.AH.A圖34 五位數碼管靜態顯示框圖及接法如圖34所示,5片74LS164

18、首尾相串,而時鐘端接在一起,這樣,當輸入8個脈沖時,從單片機R*D端輸出的數據就進入到第一個74LS164中了,當第二個8個脈沖到來時,這個數據就進入了第二個片74LS164,新的數據則進入了第一個74LS164。這樣,當第五個脈沖完成后,首次送出的數據被送入到最左面的74LS164中,其他數據依次出現在第一、第二、第三、第四片74LS164中。入口:把要顯示的數分別放在顯示緩沖區60H-64H共五個單元中,并且分別對應五個數碼管LED1-LED4。出口:預置在顯示緩沖區中的五個數組成相應的現實字形碼,然后輸出到顯示器中顯示。3.4 總原理圖(圖35) 圖35 總原理圖第四章軟件設計在軟件規劃

19、要求下,簡易計算器的程序主要包括以下功能模塊:(1)主模塊,為系統初始化。(2顯示與讀鍵模塊,分顯示子程序,判鍵程序段、運算操作子程序等部分;主程序的設計初始化參數清零鍵LED顯示輸入數值讀取鍵值狀態清零數值送顯示緩存開始按鍵輸入?分析鍵值數字鍵等待數值輸入結果送顯示緩存保存結果和功能鍵根據上次功能鍵和輸入功能鍵否是是數字鍵是清零鍵是功能鍵圖41 主程序流程圖主程序主要是用來進行初始化的,調用其他子程序,清空各個標志位,清空緩存區,讀取鍵碼,判斷功能,在LED上作出回應,主程序流程圖如圖41所示。(1)數字送顯示緩沖程序設計簡易計算器所顯示的數值最大位三位。要顯示數值,先判斷數值大小和位數,如

20、果是超過三位或大于255,將不顯示數字。可重新輸入數字,再次計算。(2)運算程序的設計首先初始化參數,送LED低位顯示0”,高位不顯示。然后掃描鍵盤看是否有鍵輸入,若有,讀取鍵碼。判斷鍵碼是數字鍵、清零鍵還是功能鍵,是數值鍵則送LED顯示并保存數值,是清零鍵則做清零處理,是功能鍵則又判斷是=”還是運算鍵,若是=”則計算最后結果并送LED顯示,若是運算鍵則保存相對運算程序的首地址。4.2 顯示、讀鍵模塊的設計1. LED顯示程序設計LED顯示器由七段發光二極管組成,排列成8字形狀,因此也稱為七段LED顯示器。簡易計算器用到的數字09的共陰極字形代碼如下表:顯示字gfedcba段碼00111111

21、3fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fh2.讀鍵子程序設計為了實現鍵盤的輸入功能,每個鍵都有其處理子程序,為此每個鍵都對應一個碼鍵碼。為了得到被按鍵的鍵碼,使用行掃描法識別按鍵。其程序框圖如圖42:初始化地址參數讀入行信號列掃描信號移位輸出列掃描信號開始返回該列有輸入?4列掃描完?初始化地址參數讀入行信號列掃描信號移位輸出列掃描信號開始返回該列有輸入?4列掃描完?初始化地址參數讀入行信號列掃描信號移位輸出列掃描信號開始返回該列有輸入

22、?4列掃描完?是否否按照行列計算鍵值是查表得鍵碼等待按鍵釋放圖42計算鍵值子程序流程圖4.3 其他容說明1. 定時查鍵的程序設計進入定時器0的中斷程序后,首先重新付初值,然后調用讀鍵程序,如果有鍵按下,則判斷按鍵是否與上次按鍵相同,如果相同則判斷按鍵相應位是否為一,如果不為一,說明這不是持續按鍵導致的按鍵相應,并且進行相應的程序。如果不是則退出中斷程序。讀鍵程序使用的是反轉法讀鍵,不管鍵盤矩陣的規模大小,均進行兩次讀鍵。第一次所有行線均輸出低電平,從所有讀入鍵盤信息(列信息);第二次所有列線均輸出低電平,從所有行線讀入鍵盤信息(行信息)。將兩次讀鍵信息進行組合就可以得到按鍵的特征編碼,然后通過

23、查表得到按鍵的順序編碼。將各特征編碼按希望的順序排成一表,然后用當前讀得的特征碼來查表。當表中有該特征碼時,它的位置就是對應的順序編碼;當表中沒有該特征碼時,說明這是一個沒有定義的鍵碼,與沒有按鍵(0FFH)同等看待。數字鍵按下則將相應的數字送入緩存區,功能鍵按下則執行相應的程序。首先對數字鍵的程序段進行相應的設計,如果運算鍵(、,*,/)響應標志不為一,則將輸入的數字送入第一個操作數緩存區,并且清空所有響應位。否則送入第二個操作數緩存區。其次對功能鍵的程序段進行相應的設計。如果功能鍵(、,*,/)第一次被按下,則置相應的標志位為一,并且將運算鍵響應標志位置一,清空第二個操作數的緩存區,為輸入

24、操作數做準備,如果是第二次按下則先調用運算操作子程序,執行上次按下的運算鍵的運算,置相應的標志位為一,并且將運算鍵響應標志位置一,清空第二個操作數的緩存區,為輸入操作數做準備。如果是C鍵按下,則先判斷運算鍵響應位是否為一,如果不為一,則清空第一個操作數,否則清空第二個操作數。如果是=鍵按下,則調用運算操作子程序。2.軟件的可靠性設計提高本儀器的可靠性措施主要有:(1)為防止程序跑飛,軟件中設置了軟件陷阱(2)為防止鍵盤抖動造成按鍵錯誤,采取了軟件防(3)為了保證結果的正確性,結果溢出時顯示錯誤代碼0 4.4 源程序代碼DBUFEQU 30HTEMP EQU 40HYJ EQU50H ;結果存放

25、YJ1 EQU51H ;中間結果存放GONG EQU52H ;功能鍵存放DIN BIT0B0H ;P3.0CLK BIT 0B1H ;P3.1ORG 00HSTART:MOV R3,#0 ;初始化顯示為空MOV GONG,#0MOV 30H,#10HMOV 31H,#10HMOV 32H,#00HMOV 33H,#10HMOV 34H,#10HMLOOP:CALL DISP ;PAN調顯示子程序WAIT:CALL TESTKEY ;判斷有無按鍵JZ WAIT CALL GETKEY ;讀鍵INC R3 ;按鍵個數CJNE A,#0,NE*T1 ;判斷是否數字鍵LJMP E1 ;轉數字鍵處理NE

26、*T1:CJNE A,#1,NE*T2LJMP E1NE*T2:CJNE A,#2,NE*T3LJMP E1NE*T3:CJNE A,#3,NE*T4LJMP E1NE*T4:CJNE A,#4,NE*T5LJMP E1NE*T5:CJNE A,#5,NE*T6LJMP E1NE*T6:CJNE A,#6,NE*T7LJMP E1NE*T7:CJNE A,#7,NE*T8LJMP E1NE*T8:CJNE A,#8,NE*T9LJMP E1NE*T9:CJNE A,#9,NE*T10LJMP E1NE*T10:CJNE A,#10,NE*T11 ;判斷是否功能鍵LJMP E2 ;轉功能鍵處理N

27、E*T11:CJNE A,#11,NE*T12LJMP E2NE*T12:CJNE A,#12, NE*T13LJMP E2NE*T13:CJNE A,#13,NE*T14LJMP E2NE*T14:CJNE A,#14,NE*T15LJMP E2NE*T15:LJMP E3 ;判斷是否清除鍵E1:CJNE R3,#1,N1 ;判斷第幾次按鍵LJMP E11 ;為第一個數字N1:CJNE R3,#2,N2LJMP E12 ;為第二個數字N2:CJNE R3,#3,N3 LJMP E13 ;為第三個數字N3:LJMP E3 ;第四個數字轉溢出E11:MOV R4,A ;輸入值暫存R4MOV 34

28、H,A ;輸入值送顯示緩存MOV 33H,#10HMOV 32H,#10HLJMP MLOOP ;等待再次輸入E12:MOV R7,A ;個位數暫存R7MOV B,#10MOV A,R4MUL AB ;十位數ADDA,R7MOV R4,A ;輸入值存R4MOV 32H,#10H ;輸入值送顯示緩存MOV 33H,34HMOV 34H,R7LJMP MLOOPE13:MOV R7,AMOV B,#10MOV A,R4MUL AB OV,E3 ;輸入溢出ADD A,R7 CY,E3 ;輸入溢出MOV R4,AMOV 32H,33H;輸入值送顯示緩存MOV 33H,34HMOV 34H,R7LJMP

29、 MLOOPE3:MOV R3,#0 ;按鍵次數清零MOV R4,#0 ;輸入值清零MOV YJ,#0 ;計算結果清零MOV GONG,#0 ;功能鍵設為零MOV 30H,#10H ;顯示清空MOV 31H,#10HMOV 32H,#10HMOV 33H,#10HMOV 34H,#00HLJMP MLOOPE2:MOV 34H,#10HMOV 33H,#10HMOV 32H,#10HMOV R0,GONG ;與上次功能鍵交換MOV GONG,AMOV A,R0CJNE A,#10,N21 ;判斷功能鍵LJMP JIA ;”N21:CJNE A,#11,N22LJMP JIAN ;”N22:CJ

30、NE A,#12,N23LJMP CHENG ;*”N23:CJNE A,#13,N24LJMP CHU ;/”N24:CJNE A,#0,N25LJMP FIRST ;首次按功能鍵N25:LJMP DEN ;=”N4:LJMP E3FIRST:MOV YJ,R4 ;輸入值送結果MOV R3,#0 ;按鍵次數清零LJMP DISP1 ;結果處理JIA:MOV A,YJ;上次結果送累加器ADD A,R4;上次結果加輸入值 CY,N4;溢出MOV YJ,A;存本次結果MOV R3,#0;按鍵次數清零LJMP DISP1JIAN:MOV A,YJSUBB A,R4;上次結果減輸入值 CY,N4;負數

31、溢出MOV YJ,AMOV R3,#0LJMP DISP1CHENG:MOV A,YJMOV B,AMOV A,R4MUL AB;上次結果乘輸入值 OV,N4;溢出MOV YJ,ALJMP DISP1CHU:MOV A,R4MOV B,AMOV A,YJDIV AB;上次結果除輸入值MOV YJ,AMOV R3,#0LJMP DISP1DEN:MOV R3,#0LJMP DISP1DISP1:MOVB,#10MOVA,YJ;結果送累加器DIVAB;結果除10MOVYJ1,A;暫存商”MOVA,B;取個位數MOV34H,A;個位數送顯示緩存MOVA,YJ1JZDISP11;結果是否為一位數MOV

32、B,#10MOVA,YJ1DIVABMOVYJ1,AMOVA,BMOV33H,A;十位送顯示緩存MOVA,YJ1JZDISP11;結果是否為二位數MOV32H,A;百位數送顯示緩存DISP11:LJMPMLOOPDISP:MOVR0,#DBUF;顯示子程序MOVR1,#TEMP+4MOVR2,#5DP10:MOVDPTR,#SEGTABMOVA,R0MOVCA,A+DPTRMOVR1,AINCR0DECR1DJNZR2,DP10MOVR0,#TEMPMOVR1,#5DP12:MOVR2,#8MOVA,R0DP13:RLCAMOVDIN,CCLRCLKSETBCLKDJNZR2,DP13INCR

33、0DJNZR1,DP12RETSEGTAB:DB3FH,06H,5BH,4FH,66H,6DH;段碼定義DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,00H,40HTESTKEY:MOVP1,#0FH;讀入鍵狀態MOVA,P1CPLAANLA,#0FH;高四位不用RETKEYTABLE:DB0DEH,0EDH,0DDH,0BDH;鍵碼定義DB0EBH,0DBH,0BBH,0E7HDB0D7H,0B7H,07EH,07DHDB07BH,077H,0BEH,0EEHGETKEY:;讀鍵子程序MOVR6,#10ACALLDELAYMOVP1,#0FHMOVA,

34、P1CJNEA,0FH,K12LJMPMLOOPK12:MOVB,AMOVP1,#0EFHMOVA,P1CJNEA,#0EFH,K13MOVP1,#0DFHMOVA,P1CJNEA,#0DFH,K13MOVP1,#0BFHMOVA,P1CJNEA,#0BFH,K13MOVP1,#07FHMOVA,P1CJNEA,#07FH,K13LJMPMLOOPK13:ANL A,#0F0HORLA,BMOVB,AMOVR1,#16MOVR2,#0MOVDPTR,#KEYTABLEK14:MOVA,R2MOVCA,A+DPTRCJNEA,B,K16MOVP1,#0FHK15:MOVA,P1CJNEA,#0F

35、H,K15MOVR6,#10ACALLDELAYMOVA,R2RETK16:INCR2DJNZR1,K14AJMPMLOOPDELAY:MOVR7,#80;延時子程序DLOOP:DJNZR7,DLOOPDJNZR6,DLOOPRETEND第五章調試與仿真下面用Keil與porteus仿真軟件介紹數字計算器的仿真與調試。5.1Keil C51單片機軟件開發系統1. 采用KEIL 開發的89c51單片機應用程序步驟:(1)在keil集成開發環境中創建新項目(Project),擴展文件名為.UV2,并為該項目選定合適的單片機CPU器件(本設計采用ATMEL 公司下的AT89C51)(2)用keil的

36、文本編輯器編寫源文件,可以是匯編文件(.ASM),并將該文件添加到項目中去。一個項目文件可以包含多個文件,除了源程序文件外,還可以是庫文件、頭文件或文本說明文件。(3)通過keil的相關選擇項,配置編譯環境、連接定位器以及Debug調試器的功能。(4)對項目中的源文件進行編譯連接,生成絕對目標代碼和可選的HE*文件,如果出現編譯連接錯誤則返回到第2步,修改源文件中的錯誤后重構整個項目。(5)對沒有語法錯誤的程序進行仿真調試,調試成功后將HE*文件寫入到單片機應用系統的ROM中。5.2 proteus的操作1.硬件電路圖的接法操作(1).放置選擇(刪除)元器件(2).移動元器件(3).縮放視圖(4).連接導線(5).仿真,調試2.單片機系統PROTEUS設計與仿真過程Proteus強大的單片機系統設計與仿真功能,使它可成為單片機系統應用開發和改進手段之一。全部過程都是在計算機上通過Proteus來完成的。其過程一般也可分為三步:(1)在ISIS平臺上進行單片機系統電路設計、選擇元器件、接插件、連接電路和電氣檢測等。簡稱Proteus電路設計。(2)在Keil平臺上進行單片機系統程序設計、編輯、匯編編譯、代碼級調試,最后生成目標代碼文件(*.he*)。簡稱Proteus源程序設計和

溫馨提示

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

評論

0/150

提交評論