計算器模擬系統(tǒng)設(shè)計-畢業(yè)設(shè)計_第1頁
計算器模擬系統(tǒng)設(shè)計-畢業(yè)設(shè)計_第2頁
計算器模擬系統(tǒng)設(shè)計-畢業(yè)設(shè)計_第3頁
計算器模擬系統(tǒng)設(shè)計-畢業(yè)設(shè)計_第4頁
計算器模擬系統(tǒng)設(shè)計-畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算器模擬系統(tǒng)設(shè)計 學(xué)生:XXX 指導(dǎo)教師:XXX內(nèi)容摘要:本設(shè)計是基于51系列的單片機進行的簡易計算器系統(tǒng)設(shè)計,可以完成計算器的鍵盤輸入,進行加、減、乘、除3位無符號數(shù)字的簡單四則運算,并在LED上相應(yīng)的顯示結(jié)果。設(shè)計過程在硬件與軟件方面進行同步設(shè)計。硬件選擇AT89C51單片機和74lS164,輸入用4×4矩陣鍵盤。顯示用5位7段共陰極LED靜態(tài)顯示。軟件從分析計算器功能、流程圖設(shè)計,再到程序的編寫進行系統(tǒng)設(shè)計。選用編譯效率最高的Keil軟件用匯編語言進行編程,并用proteus仿真。關(guān)鍵詞:LED 計算器 AT89C51芯片 74LS164 Calculator simulat

2、ion system designAbstract:The design is a simple calculator based on 51 series microcontroller system design, to complete the calculator keyboard input, add, subtract, multiply, and in addition to three unsigned numeric simple four operations, and the corresponding result will be displayed on the LE

3、D.The design process of hardware and software aspects of the synchronous design. Hardware choose AT89C51 microcontroller and 74ls164-enter the 4 × 4 matrix keyboard. Static display with five 7-segment common cathode LED display. Software calculator function from the analysis, flow charts, desig

4、n, and then program the preparation of system design. Selected to compile the most efficient Keil software in assembly language programming, and with proteus simulation.Keywords: LED calculator AT89C51 chip 74LS164目 錄前言11 設(shè)計任務(wù)和要求11.1 設(shè)計要求11.2 設(shè)計方案的確定22 單片機簡要原理22.1 AT89c51介紹22.2 芯片74LS164介紹53 硬件設(shè)計63.

5、1 鍵盤電路的設(shè)計63.2 顯示電路的設(shè)計73.3 其他電路設(shè)計73.3.1 復(fù)位、時鐘電路設(shè)計73.3.2 多位數(shù)碼管電路顯示的驅(qū)動電路84 軟件設(shè)計94.1主程序的設(shè)計94.2 顯示、讀鍵模塊的設(shè)計104.3 其他內(nèi)容說明114.3.1 定時查鍵的程序設(shè)計114.3.2 軟件的可靠性設(shè)計124.4 源程序代碼(見附錄)125 調(diào)試與仿真125.1 Keil C51單片機軟件開發(fā)系統(tǒng)125.2 proteus的操作125.2.1 硬件電路圖的接法操作125.2.2 單片機系統(tǒng)PROTEUS設(shè)計與仿真過程136 結(jié)束語13附錄:計算器程序代碼15參考文獻:2324計算器模擬系統(tǒng)設(shè)計前言近年來,

6、單片機以其體積小、價格廉、面向控制等獨特優(yōu)點,在各種工業(yè)控制、儀器儀表、設(shè)備、產(chǎn)品的自動化、智能化方面獲得了廣泛的應(yīng)用。與此同時,單片機應(yīng)用系統(tǒng)的可靠性成為人們越來越關(guān)注的重要課題。影響可靠性的因素是多方面的,如構(gòu)成系統(tǒng)的元器件本身的可靠性、系統(tǒng)本身各部分之間的相互耦合因素等。其中系統(tǒng)的抗干擾性能是系統(tǒng)可靠性的重要指標。本設(shè)計采用AT89C51 芯片,實現(xiàn)了利用單片機進行了一個簡單計算器設(shè)計。允許對輸入數(shù)據(jù)進行加減乘除運算及LED 顯示。如果設(shè)計對象是更為復(fù)雜的計算器系統(tǒng),其實際原理與方法與本設(shè)計基本相同。另外,實例所設(shè)計的計算器是用LED 數(shù)碼管顯示的,當然也可以用其他的器件顯示,如LED

7、顯示屏,這樣就可以顯示出更多的字符,在此基礎(chǔ)上,還可以編寫更加完善的程序來實現(xiàn)更多的計算功能。設(shè)計的關(guān)鍵所在,必須非常熟悉單片機的原理與結(jié)構(gòu),同時還要對整個設(shè)計流程有很好的把握,將單片機和其他模塊完整的銜接。簡易計算器的原理與設(shè)計是單片機課程設(shè)計課題中的一個。在完成理論學(xué)習(xí)和必要的實驗后,我們掌握了單片機的基本原理以及編程和各種基本功能的應(yīng)用,但對單片機的硬件實際應(yīng)用和單片機完整程序設(shè)計還不清楚,實際動手能力不夠,因此對該課程進行一次課程設(shè)計是有必要的。單片機課程設(shè)計既鞏固了課本學(xué)到的理論,還學(xué)到了單片機硬件電路和程序設(shè)計,簡易計算器課程設(shè)計通過自己動手用計算機電路設(shè)計軟件,編寫和調(diào)試,最后仿

8、真,來加深對單片機的認識,充分發(fā)揮我們的個人創(chuàng)新和動手能力,并提高我們對單片機的興趣,時學(xué)習(xí)查閱資料、參考資料的方1 設(shè)計任務(wù)和要求1.1 設(shè)計要求 本次課程設(shè)計,我選擇的課題是單片機數(shù)字計算器硬軟件設(shè)計,設(shè)計任務(wù)為: 擴展4*4鍵盤,其中10個數(shù)字,5個功能鍵,1個清零;使用五位數(shù)碼管接口電路;完成十進制的四則運算(加、減、乘、除); 實現(xiàn)低于三位小于255數(shù)字的連續(xù)運算;使用keil軟件編寫程序; 最后用ptoteus仿真;1.2 設(shè)計方案的確定 按照設(shè)計要求,本課題需要使用數(shù)碼管顯示和擴展4*4鍵盤,由于實驗箱的硬件電路已經(jīng)固定,故選擇串行靜態(tài)顯示和用P1口擴展4*4鍵盤,擴展的4*4鍵

9、盤定義十個數(shù)字鍵,六個功能鍵,使用串行靜態(tài)顯示顯示運算結(jié)果。主程序進行初始化,采用定時器0進行查鍵,每次按鍵后調(diào)用顯示子程序。 2 單片機簡要原理2.1 AT89c51介紹 圖2.1-1 AT89C51管腳圖芯片AT89C51的外形結(jié)構(gòu)和引腳圖如21所示。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃

10、爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。主要特性:8051 CPU與MCS-51 兼容4K字節(jié)可編程FLASH存儲器(壽命:1000寫/擦循環(huán))全靜態(tài)工作:0Hz-24KHz三級程序存儲器保密鎖定128*8位內(nèi)部RAM32條可編程I/O線兩個16位定時器/計數(shù)器5個中斷源可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時鐘電路管腳說明VCC:供電電壓(圖中未畫出)GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部

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

12、外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P

13、3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意

14、的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令時才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在

15、FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出引腳。2.2 芯片74LS164介紹74LS164是一個串入并出的8位移位寄存器,他常用于單片機系統(tǒng)中,下面結(jié)束一下這個元件的基本知識。74LS164外部結(jié)構(gòu)和引腳如圖22所示: 圖2.2-1 74LS164引腳圖主要特性:串行輸入帶鎖存 時鐘輸入,串行輸入帶緩沖 異步清除 最高時鐘頻率可高達36Mhz 功耗:10mW/bit 74系列工作溫度: 0C to 70C Vcc最高電壓:7V 輸入最高電壓:7V 最大輸出驅(qū)動能力:高電平:0.4mA

16、 ; 低電平:8mA 引腳功能:在單片機系統(tǒng)中, 如果并行口的IO資源不夠,而串行口又沒有其他的作用, 那么我們可以用74LS164來擴展并行IO口,節(jié)約單片機資源。74LS164是一個串行輸入并行輸出的移位寄存器。并帶有清除端。其中,Q0Q7 并行輸出端 ; A,B串行輸入端; MR 清除端, 為0時,輸出清零。CP 時鐘輸入端。3 硬件設(shè)計3.1 鍵盤電路的設(shè)計 鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20個以上)和專用驅(qū)動芯片的組合,當按下某個按鍵時,它能夠處理按鍵抖動、連擊等問題,直接輸出按鍵的編碼,無需系統(tǒng)軟件干預(yù)。通用計算機使用的標準鍵盤就是編碼鍵盤。在智能儀器中

17、,使用并行接口芯片8279或串行接口芯片HD7279均可以組成編碼鍵盤,同時還可以兼顧數(shù)碼管的顯示驅(qū)動,其相關(guān)的接口電路和接口軟件均可在芯片資料中得到。當系統(tǒng)功能比較復(fù)雜,按鍵數(shù)量很多時,采用編碼鍵盤可以簡化軟件設(shè)計。但大多數(shù)智能儀器和電子產(chǎn)品的按鍵數(shù)目都不太多(20個以內(nèi)),為了降低成本和簡化電路通常采用非編碼鍵盤。非編碼鍵盤的接口電路有設(shè)計者根據(jù)需要自行決定,按鍵信息通過接口軟件來獲取。 本課題需要的是16個按鍵,故選擇用非編碼鍵盤,為了減少所占用的端口,由P1口采用4*4矩陣式鍵盤。具體電路連接如圖3.1-1所示。 圖3.1-1 4*4鍵盤輸入3.2 顯示電路的設(shè)計 當系統(tǒng)需要顯示少量數(shù)

18、據(jù)時,采用LED數(shù)碼管進行顯示是一種經(jīng)濟實用的方法。數(shù)碼管顯示有靜態(tài)顯示和動態(tài)顯示兩種方法。為了減少端口的使用,故選擇靜態(tài)顯示,并采用共陰極接法電路。LED數(shù)碼管顯示塊是由發(fā)光二極管顯示字段的顯示器件。在單片機應(yīng)用中通常使用七段LED。這種顯示塊有共陰極和共陽極兩種。3.3 其他電路設(shè)計3.3.1 復(fù)位、時鐘電路設(shè)計當使用內(nèi)部振蕩電路時,XTAL1.XTAL2引腳外接石英晶體和微調(diào)電容,如圖所示,圖中C2.C3大小一般為30PF。還加了復(fù)位/備用電源引腳的接線方法,任何單片機在工作之前都要進行復(fù)位,以便CPU以及其他功能部件都處于一個確定的初始化狀態(tài),并從這個狀態(tài)開始工作,也就是程序開始執(zhí)行之

19、前,單片機做好準備工作。如何進行復(fù)位呢?只用在單片機的RST引腳上保持兩個。 圖3.3.1-1時鐘電路 圖3.3.1-2復(fù)位電路機器周期(24個時鐘周期)的高電平即可對單片機實現(xiàn)復(fù)位操作。當主電源Vcc發(fā)生掉電或者是電壓降低到電平規(guī)定值時,VPD上外接的備用電源自動啟用,為單片機內(nèi)部RAM提供電源,以保護片內(nèi)RAM中的信息不丟失,使系統(tǒng)在恢復(fù)上電后能正常運行。3.3.2 多位數(shù)碼管電路顯示的驅(qū)動電路單片機應(yīng)用中只有一位的的數(shù)字顯示是不常見的,即要同時驅(qū)動多個數(shù)碼管顯示,就必須要同時讓多個數(shù)碼管加上各自不同的選片段,這個屬于靜態(tài)顯示。所謂靜態(tài)顯示,就是每一個顯示器,都要占用單獨的具有封鎖功能的I

20、/O接口用于筆畫字段形代碼,單片機只要把顯示的字形代碼發(fā)送到接口電路,直到要顯示新的數(shù)據(jù)時,再發(fā)送新的字形碼,因此,使用這種方法單片機中CPU的開銷小,可以提高單獨鎖存的I/O接口電路很多,這里以常用的串并轉(zhuǎn)化電路74LS164為例介紹一種常用靜態(tài)顯示電路。74ls16474ls16474ls16474ls16474ls164TXDRXD89C51H.AH.AH.AH.AH.A圖3.3.2-1 五位數(shù)碼管靜態(tài)顯示框圖及接法5片74LS164首尾相串,而時鐘端接在一起,這樣,當輸入8個脈沖時,從單片機RXD端輸出的數(shù)據(jù)就進入到第一個74LS164中了,當?shù)诙€8個脈沖到來時,這個數(shù)據(jù)就進入了第二

21、個片74LS164,新的數(shù)據(jù)則進入了第一個74LS164。這樣,當?shù)谖鍌€脈沖完成后,首次送出的數(shù)據(jù)被送入到最左面的74LS164中,其他數(shù)據(jù)依次出現(xiàn)在第一、第二、第三、第四片74LS164中。入口:把要顯示的數(shù)分別放在顯示緩沖區(qū)60H-64H共五個單元中,并且分別對應(yīng)五個數(shù)碼管LED1-LED4。出口:蔣預(yù)置在顯示緩沖區(qū)中的五個數(shù)組成相應(yīng)的現(xiàn)實字形碼,然后輸出到顯示器中顯示。 圖3.3.2-2 計算器設(shè)計圖4 軟件設(shè)計在軟件規(guī)劃要求下,簡易計算器的程序主要包括以下功能模塊:主模塊,為系統(tǒng)初始化。顯示與讀鍵模塊,分顯示子程序,判鍵程序段、運算操作子程序等部分;4.1 主程序的設(shè)計初始化參數(shù)清零鍵

22、LED顯示輸入數(shù)值讀取鍵值狀態(tài)清零數(shù)值送顯示緩存開始按鍵輸入?分析鍵值數(shù)字鍵等待數(shù)值輸入結(jié)果送顯示緩存保存結(jié)果和功能鍵根據(jù)上次功能鍵和輸入功能鍵否是是數(shù)字鍵是清零鍵是功能鍵 圖4.1-1 主程序流程圖 主程序主要是用來進行初始化的,調(diào)用其他子程序,清空各個標志位,清空緩存區(qū),讀取鍵碼,判斷功能,在LED上作出回應(yīng),主程序流程圖如圖41所示。數(shù)字送顯示緩沖程序設(shè)計:簡易計算器所顯示的數(shù)值最大位三位。要顯示數(shù)值,先判斷數(shù)值大小和位數(shù),如果是超過三位或大于255,將不顯示數(shù)字??芍匦螺斎霐?shù)字,再次計算。運算程序的設(shè)計:首先初始化參數(shù),送LED低位顯示“0”,高位不顯示。然后掃描鍵盤看是否有鍵輸入,若

23、有,讀取鍵碼判斷鍵碼是數(shù)字鍵、清零鍵還是功能鍵,是數(shù)值鍵則送LED顯示并保存數(shù)值,是清零鍵則做清零處理,是功能鍵則又判斷是“=”還是運算鍵,若是“=”則計算最后結(jié)果并送LED顯示,若是運算鍵則保存相對運算程序的首地址。4.2 顯示、讀鍵模塊的設(shè)計LED顯示器由七段發(fā)光二極管組成,排列成8字形狀,因此也稱為七段LED顯示器。簡易計算器用到的數(shù)字09的共陰極字形代碼如下表:表4.2-1 共陰極字形代碼表顯示字gfedcba段碼001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107

24、h811111117fh911011116fh 為了實現(xiàn)鍵盤的輸入功能,每個鍵都有其處理子程序,為此每個鍵都對應(yīng)一個碼鍵碼。為了得到被按鍵的鍵碼,使用行掃描法識別按鍵。4.3 其他內(nèi)容說明4.3.1 定時查鍵的程序設(shè)計進入定時器0的中斷程序后,首先重新付初值,然后調(diào)用讀鍵程序,如果有鍵按下,則判斷按鍵是否與上次按鍵相同,如果相同則判斷按鍵相應(yīng)位是否為一,如果不為一,說明這不是持續(xù)按鍵導(dǎo)致的按鍵相應(yīng),并且進行相應(yīng)的程序。如果不是則退出中斷程序。 讀鍵程序使用的是反轉(zhuǎn)法讀鍵,不管鍵盤矩陣的規(guī)模大小,均進行兩次讀鍵。第一次所有行線均輸出低電平,從所有讀入鍵盤信息(列信息);第二次所有列線均輸出低電平

25、,從所有行線讀入鍵盤信息(行信息)。將兩次讀鍵信息進行組合就可以得到按鍵的特征編碼,然后通過查表得到按鍵的順序編碼。將各特征編碼按希望的順序排成一張表,然后用當前讀得的特征碼來查表。當表中有該特征碼時,它的位置就是對應(yīng)的順序編碼;當表中沒有該特征碼時,說明這是一個沒有定義的鍵碼,與沒有按鍵(0FFH)同等看待。 數(shù)字鍵按下則將相應(yīng)的數(shù)字送入緩存區(qū),功能鍵按下則執(zhí)行相應(yīng)的程序。 首先對數(shù)字鍵的程序段進行相應(yīng)的設(shè)計,如果運算鍵(、,*,/)響應(yīng)標志不為一,則將輸入的數(shù)字送入第一個操作數(shù)緩存區(qū),并且清空所有響應(yīng)位。否則送入第二個操作數(shù)緩存區(qū)。其次對功能鍵的程序段進行相應(yīng)的設(shè)計。如果功能鍵(、,*,/

26、)第一次被按下,則置相應(yīng)的標志位為一,并且將運算鍵響應(yīng)標志位置一,清空第二個操作數(shù)的緩存區(qū),為輸入操作數(shù)做準備,如果是第二次按下則先調(diào)用運算操作子程序,執(zhí)行上次按下的運算鍵的運算,置相應(yīng)的標志位為一,并且將運算鍵響應(yīng)標志位置一,清空第二個操作數(shù)的緩存區(qū),為輸入操作數(shù)做準備。 如果是C鍵按下,則先判斷運算鍵響應(yīng)位是否為一,如果不為一,則清空第一個操作數(shù),否則清空第二個操作數(shù)。 如果是=鍵按下,則調(diào)用運算操作子程序。 4.3.2 軟件的可靠性設(shè)計 提高本儀器的可靠性措施主要有:  為防止程序跑飛,軟件中設(shè)置了軟件陷阱  為防止鍵盤抖動造成按鍵錯誤,采取了軟件防 為了保

27、證結(jié)果的正確性,結(jié)果溢出時顯示錯誤代碼0 4.4 源程序代碼(見附錄)5 調(diào)試與仿真下面用Keil與 porteus仿真軟件介紹數(shù)字計算器的仿真與調(diào)試。5.1 Keil C51單片機軟件開發(fā)系統(tǒng)采用KEIL 開發(fā)的89c51單片機應(yīng)用程序步驟:在keil 集成開發(fā)環(huán)境中創(chuàng)建新項目(Project),擴展文件名為.UV2,并為該項目選定合適的單片機CPU器件(本設(shè)計采用ATMEL 公司下的AT89C51)用keil的文本編輯器編寫源文件,可以是匯編文件(.ASM),并將該文件添加到項目中去。一個項目文件可以包含多個文件,除了源程序文件外,還可以是庫文件、頭文件或文本說明文件。通過keil的相關(guān)選

28、擇項,配置編譯環(huán)境、連接定位器以及Debug調(diào)試器的功能。對項目中的源文件進行編譯連接,生成絕對目標代碼和可選的HEX文件,如果出現(xiàn)編譯連接錯誤則返回到第2步,修改源文件中的錯誤后重構(gòu)整個項目。對沒有語法錯誤的程序進行仿真調(diào)試,調(diào)試成功后將HEX文件寫入到單片機應(yīng)用系統(tǒng)的ROM中。5.2 proteus的操作5.2.1 硬件電路圖的接法操作 放置選擇(刪除)元器件移動元器件縮放視圖連接導(dǎo)線仿真,調(diào)試5.2.2 單片機系統(tǒng)PROTEUS設(shè)計與仿真過程Proteus強大的單片機系統(tǒng)設(shè)計與仿真功能,使它可成為單片機系統(tǒng)應(yīng)用開發(fā)和改進手段之一。全部過程都是在計算機上通過Proteus來完成的。其過程一

29、般也可分為三步:在ISIS平臺上進行單片機系統(tǒng)電路設(shè)計、選擇元器件、接插件、連接電路和電氣檢測等。簡稱Proteus電路設(shè)計。在Keil平臺上進行單片機系統(tǒng)程序設(shè)計、編輯、匯編編譯、代碼級調(diào)試,最后生成目標代碼文件(*.hex)。簡稱Proteus源程序設(shè)計和生成目標代碼文件。在ISIS平臺上將目標代碼文件加載到單片機系統(tǒng)中,并實現(xiàn)單片機系統(tǒng)的實時交互、協(xié)同仿真。它在相當程度上反映了實際單片機系統(tǒng)的運行情況。簡稱Proteus仿真。6 結(jié)束語基于單片機的設(shè)計至今為止已經(jīng)進入了令人鼓舞的階段,在進行了兩周時間的摸索與設(shè)計,使我不僅僅對于單片機軟件與硬件的常用設(shè)計與功能有所認識,還使我對于一項設(shè)計

30、研究的制作過程所需要的詳細步驟和具體實現(xiàn)方法有了進一步的掌握。由于我們的初步嘗試,當中的缺點是無可非議地存在著。當然在這次寶貴的設(shè)計活動中,經(jīng)驗才是對于我們最大的收獲,而且還增強了自身對未知問題以及對知識的深化認識的能力,但是,僅僅是完成了作品還是不可以自我滿足的,我們要認真的思考設(shè)計過程中遇到的問題,多查資料,將理論與實際相結(jié)合思考,并在以后的學(xué)習(xí)中更要加倍注意犯過的錯誤??傊@次設(shè)計從軟件編寫調(diào)試到軟硬件聯(lián)機調(diào)試,發(fā)現(xiàn)了自己的許多不足,在以后的學(xué)習(xí)中,我將一定回注意。課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練

31、和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機已經(jīng)成為當今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為自動化專業(yè)的學(xué)生來說掌握單片機的開發(fā)技術(shù)是十分重要的。 我的題目是計算器模擬系統(tǒng)的設(shè)計,對于我們這些工科學(xué)生來說,這是一次考驗。怎么才能找到課堂所學(xué)與實際應(yīng)用的最佳結(jié)合點?怎樣讓自己的業(yè)余更接近專業(yè)?怎樣讓自己的計劃更具有序性,而不會忙無一用?這都是我們所要考慮和努力的。這次課程設(shè)計我學(xué)到很多很多的東西,學(xué)會了怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。不僅鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識,掌握了

32、一種系統(tǒng)的研究方法,可以進行一些簡單的編程。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,對單片機匯編語言掌握得不夠好。這次課程設(shè)計通過自己的努力,同學(xué)的幫助,網(wǎng)絡(luò)資料的收集,最終順利完成了。最后,對我們的XX老師,表示感謝!謝謝他半年來對我的幫助和指導(dǎo)。同時,對幫助我的所有同學(xué)表示衷心的感謝!附錄:計算器程序代碼DBUF EQU 30HTEMP EQU

33、 40HYJ EQU50H ;結(jié)果存放YJ1 EQU51H ;中間結(jié)果存放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調(diào)顯示子程序WAIT:CALL TESTKEY ;判斷有無按鍵JZ WAIT CALL GETKEY ;讀鍵INC R3 ;按鍵個數(shù)CJNE A,#0,NEXT1 ;判斷是否數(shù)

34、字鍵LJMP E1 ;轉(zhuǎn)數(shù)字鍵處理NEXT1:CJNE A,#1,NEXT2LJMP E1NEXT2:CJNE A,#2,NEXT3LJMP E1NEXT3:CJNE A,#3,NEXT4LJMP E1NEXT4:CJNE A,#4,NEXT5LJMP E1NEXT5:CJNE A,#5,NEXT6LJMP E1NEXT6:CJNE A,#6,NEXT7LJMP E1NEXT7:CJNE A,#7,NEXT8LJMP E1NEXT8:CJNE A,#8,NEXT9LJMP E1NEXT9:CJNE A,#9,NEXT10LJMP E1NEXT10:CJNE A,#10,NEXT11 ;判斷是否

35、功能鍵LJMP E2 ;轉(zhuǎn)功能鍵處理NEXT11:CJNE A,#11,NEXT12LJMP E2NEXT12:CJNE A,#12, NEXT13LJMP E2NEXT13:CJNE A,#13,NEXT14LJMP E2NEXT14:CJNE A,#14,NEXT15LJMP E2NEXT15:LJMP E3 ;判斷是否清除鍵E1:CJNE R3,#1,N1 ;判斷第幾次按鍵LJMP E11 ;為第一個數(shù)字N1:CJNE R3,#2,N2LJMP E12 ;為第二個數(shù)字N2:CJNE R3,#3,N3 LJMP E13 ;為第三個數(shù)字N3:LJMP E3 ;第四個數(shù)字轉(zhuǎn)溢出E11:MOV

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

37、MOV 33H,34HMOV 34H,R7LJMP MLOOPE3:MOV R3,#0 ;按鍵次數(shù)清零MOV R4,#0 ;輸入值清零MOV YJ,#0 ;計算結(jié)果清零MOV GONG,#0 ;功能鍵設(shè)為零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

38、,#11,N22LJMP JIAN ;“”N22:CJNE A,#12,N23LJMP CHENG ;“*”N23:CJNE A,#13,N24 LJMP CHU ;“/”N24:CJNE A,#0,N25LJMP FIRST ;首次按功能鍵N25:LJMP DEN ;“=”N4:LJMP E3FIRST:MOV YJ,R4 ;輸入值送結(jié)果MOV R3,#0 ;按鍵次數(shù)清零LJMP DISP1 ;結(jié)果處理JIA:MOV A,YJ;上次結(jié)果送累加器ADD A,R4 ;上次結(jié)果加輸入值JB CY,N4 ;溢出MOV YJ,A;存本次結(jié)果MOV R3,#0;按鍵次數(shù)清零LJMP DISP1JIAN:

39、MOV A,YJSUBB A,R4 ;上次結(jié)果減輸入值JB CY,N4 ;負數(shù)溢出MOV YJ,AMOV R3,#0LJMP DISP1CHENG:MOV A,YJMOV B,AMOV A,R4MUL AB ;上次結(jié)果乘輸入值JB OV,N4 ;溢出MOV YJ,ALJMP DISP1CHU:MOV A,R4MOV B,AMOV A,YJDIV AB ;上次結(jié)果除輸入值MOV YJ,AMOV R3,#0LJMP DISP1DEN:MOV R3,#0LJMP DISP1DISP1:MOVB,#10MOVA,YJ;結(jié)果送累加器DIVAB;結(jié)果除10MOVYJ1,A;暫存“商”MOVA,B;取個位數(shù)

40、MOV34H,A;個位數(shù)送顯示緩存MOVA,YJ1JZDISP11;結(jié)果是否為一位數(shù)MOVB,#10MOVA,YJ1DIVABMOVYJ1,AMOVA,BMOV33H,A;十位送顯示緩存MOVA,YJ1JZDISP11;結(jié)果是否為二位數(shù)MOV32H,A;百位數(shù)送顯示緩存DISP11:LJMPMLOOPDISP:MOVR0,#DBUF;顯示子程序MOVR1,#TEMP+4MOVR2,#5DP10:MOVDPTR,#SEGTABMOVA,R0MOVCA,A+DPTRMOVR1,AINCR0DECR1DJNZR2,DP10MOVR0,#TEMPMOVR1,#5DP12:MOVR2,#8MOVA,R0DP13:RLCAMOVDIN,CCLRCLKSETBCLKDJNZR2,DP13INCR0DJNZR1,DP12RETSEGTAB: DB3FH,06H,5BH,4FH,66H,6DH;段碼定義 DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,00H,40HTESTKEY:MOVP1,#0FH ;讀入鍵狀態(tài)MOVA,P1CPLAANLA,#0FH ;高四位不用RETKEYTABLE:DB0DEH,0EDH,0DDH,0BDH ;鍵碼定義DB0EBH,0DBH,0BBH,0E7HDB0D7H,0B7H,07EH,07DHDB07BH,077

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論