簡(jiǎn)易計(jì)算器課程設(shè)計(jì)_第1頁(yè)
簡(jiǎn)易計(jì)算器課程設(shè)計(jì)_第2頁(yè)
簡(jiǎn)易計(jì)算器課程設(shè)計(jì)_第3頁(yè)
簡(jiǎn)易計(jì)算器課程設(shè)計(jì)_第4頁(yè)
簡(jiǎn)易計(jì)算器課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、科研訓(xùn)練論文題 目:基于單片機(jī)的計(jì)算器的設(shè)計(jì)目錄 一、概述31.1設(shè)計(jì)要求及任務(wù):31.2設(shè)計(jì)原理:3二、系統(tǒng)總體方案及硬件設(shè)計(jì)32.1計(jì)算器總體思想32.2硬件的選擇與連接42.2.1硬件選擇52.2.2接口設(shè)計(jì)5三、軟件設(shè)計(jì)73.2系統(tǒng)流程總圖73.3顯示程序設(shè)計(jì)83.4鍵盤(pán)識(shí)別程序設(shè)計(jì)93.4.1原理與分析93.4.2流程圖9四、設(shè)計(jì)體會(huì)與總結(jié)10五、參考文獻(xiàn)10 附錄基于單片機(jī)的計(jì)算器的設(shè)計(jì)摘 要: 本設(shè)計(jì)是一個(gè)實(shí)現(xiàn)加減乘除的計(jì)算器,它的硬件主要由四部分構(gòu)成,一個(gè)8051單片機(jī)芯片,兩個(gè)八段共陰極數(shù)碼管,一個(gè)4*4鍵盤(pán),它可以實(shí)現(xiàn)一位數(shù)的加減乘除運(yùn)算。顯示部分:采用LED動(dòng)態(tài)顯示。按鍵

2、部分:采用4*4鍵盤(pán)。采用軟件識(shí)別鍵值,并執(zhí)行相應(yīng)的操作。關(guān) 鍵 詞:LED接口;鍵盤(pán)接口;8255A;匯編語(yǔ)言一、概述 1.1設(shè)計(jì)要求及任務(wù): (1)設(shè)計(jì)4*4的鍵盤(pán),其中10個(gè)數(shù)字鍵09,其余六個(gè)鍵“+”、“”、“*”、 “/”、“=”、和“C” 鍵; (2)設(shè)計(jì)兩位LED接口電路; (3)實(shí)現(xiàn)1位數(shù)的簡(jiǎn)單運(yùn)算1.2設(shè)計(jì)原理: (1)LED顯示器接口技術(shù) LED動(dòng)態(tài)顯示接口技術(shù) (2)鍵盤(pán)顯示技術(shù) 逐行(逐列掃描法) 二、系統(tǒng)總體方案及硬件設(shè)計(jì)2.1計(jì)算器總體思想顯示部分:采用LED動(dòng)態(tài)顯示。按鍵部分:采用4*4鍵盤(pán)。采用軟件識(shí)別鍵值,并執(zhí)行相應(yīng)的操作。執(zhí)行過(guò)程:開(kāi)機(jī)顯示零,等待鍵入數(shù)值,

3、當(dāng)鍵入數(shù)字,經(jīng)通過(guò)數(shù)碼管顯示出來(lái),當(dāng)鍵入+、-、*、/運(yùn)算符,計(jì)算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲(chǔ),并等待再次鍵入數(shù)值,當(dāng)再鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號(hào)就會(huì)在數(shù)碼管上輸出運(yùn)算結(jié)果。圖1 系統(tǒng)設(shè)計(jì)框圖2.2硬件的選擇與連接圖二 硬件連接總圖2.2.1硬件選擇(1) 由于本設(shè)計(jì)比較簡(jiǎn)單,因此選用內(nèi)部含有4KBE2PROM的89C51單片機(jī)作為系統(tǒng)的核心。(2) 擴(kuò)展輸入/輸出端口在擴(kuò)展輸入/輸出端口時(shí),要求輸入口能夠緩沖,輸出口能夠鎖存。常用小規(guī)模集成電路芯片74LS244或74LS245等擴(kuò)展輸入端口,用74LS273、74LS373、 74LS377擴(kuò)展輸出端口。這種擴(kuò)展方法的特點(diǎn)是電路簡(jiǎn)單,

4、但功能單一、靈活性差。因而常采用中規(guī)模的可編程并行接口芯片8255A擴(kuò)展輸入/輸出端口。 (3)鎖存電路采用74LS3732.2.2接口設(shè)計(jì)(1)單片機(jī)與8255A的接口設(shè)計(jì)8255A中的數(shù)據(jù)總線(xiàn)緩沖器為三態(tài)雙向數(shù)據(jù)緩沖存儲(chǔ)器,用于將8255A的數(shù)據(jù)線(xiàn)D0D7和單片機(jī)的數(shù)據(jù)總線(xiàn)(P0口)連接,實(shí)現(xiàn)單片機(jī)和接口間的數(shù)據(jù)傳送。讀寫(xiě)控制部件的接口設(shè)計(jì)1、/CS為片選信號(hào),接成低電平表示8255A被選中。/CS與P2.7相連,用P2口的最高位控制8255A是否工作。即將P2.7控制為低電平。 2、RESET-復(fù)位信號(hào),高電平有效,接在單片機(jī)的RST端。 3、/RD和/WR為讀寫(xiě)控制信號(hào),低電平有效。分

5、別將兩個(gè)端口接單片機(jī)的/RD和/WR4、A1和A0-端口選擇信號(hào),分別與單片機(jī)的低兩位地址線(xiàn)P1.1和P1.0相連。用于選擇不同端口。采用74LS373三態(tài)鎖存器,用于分離P0口第八位地址線(xiàn),將它的Q0和Q1口接至8255A的地址輸入端A0和A1。所以若將P1.2P1.7和P2.0P2.6全接為高電平,A口地址為07FFCH,B口地址為07FFDH,C口地址為07FFEH,控制字寄存器地址為07FFFH.(2)LED顯示電路的設(shè)計(jì):簡(jiǎn)易計(jì)算器需要2位8段碼LED顯示電路。用8051單片機(jī)經(jīng)8255A擴(kuò)展2位8段碼LED顯示器,用8255A的A口作為段碼(字形代碼)數(shù)據(jù)口,PB0和PB1作位碼口

6、。圖三 顯示器接口電路(3)鍵盤(pán)接口設(shè)計(jì)89C51單片機(jī)經(jīng)8255A擴(kuò)展4*4行列式鍵盤(pán),8255A的B口和C口用于擴(kuò)展鍵盤(pán)接口,B口高4位作為輸出口,C口低4位作為輸入口。設(shè)各口工作于方式零。則8255A的工作方式控制字為10000001(81H)鍵盤(pán)接口設(shè)計(jì)圖四 鍵盤(pán)接口圖三、軟件設(shè)計(jì) 3、1軟件系統(tǒng)的功能該設(shè)計(jì)能夠?qū)崿F(xiàn)1位的加減乘除和清零功能,利用實(shí)驗(yàn)箱上4*6鍵盤(pán)中前4列,即0-9,A-F鍵。A,B,C,D分別為“+”“-”“*”“/”鍵,E是等于鍵,F(xiàn)清零。其他是數(shù)字鍵。再利用實(shí)驗(yàn)箱上的LED顯示器,對(duì)于即時(shí)按下的鍵和結(jié)果進(jìn)行顯示。 3.2系統(tǒng)流程總圖 圖五 系統(tǒng)總流程圖3.3顯示程

7、序設(shè)計(jì)LED顯示器有共陰極和共陽(yáng)極兩種。共陰極就是把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極,使用時(shí)公共陰極接地,某端接高電平時(shí)才發(fā)亮。共陽(yáng)極則是把發(fā)光二極管的陽(yáng)極連在一起構(gòu)成公共陽(yáng)極,使用時(shí)公共陽(yáng) 接十5V端。某端接低電平時(shí)才發(fā)亮。在此次設(shè)計(jì)中采用共陰極接法。 LED動(dòng)態(tài)顯示接口技術(shù):動(dòng)態(tài)顯示中,任意時(shí)刻雖只有一位顯示器被點(diǎn)亮,但當(dāng)一個(gè)循環(huán)周期小于人的視覺(jué)暫留時(shí)間時(shí),看上去與全部顯示器持續(xù)點(diǎn)亮的效果相同。從而提高數(shù)碼管的利用效率,所以采用LED動(dòng)態(tài)顯示接口技術(shù)。 多位LED顯示器接口電路需要有兩個(gè)輸出口,其中一個(gè)用于輸出8條段控線(xiàn)(有小數(shù)點(diǎn)顯示),另一個(gè)用于輸出位控線(xiàn),位控線(xiàn)的數(shù)目等于顯示器的位

8、數(shù)。 利用LED動(dòng)態(tài)顯示的方法,設(shè)置顯示緩沖地址和循環(huán)次數(shù),讓兩個(gè)數(shù)碼管從左到右依次顯示,之間要調(diào)用延時(shí)子程序,但延時(shí)時(shí)間小于人的視覺(jué)暫留。程序流程圖如下圖六 顯示程序設(shè)計(jì)流程圖3.4鍵盤(pán)識(shí)別程序設(shè)計(jì)3.4.1原理與分析1、測(cè)試是否有鍵按下: 單片機(jī)I/O 口向所有列線(xiàn)輸出低電平。即向列口 寫(xiě)入00H。 然后輸入各行線(xiàn)狀態(tài),即讀輸入口的字。 比較:若行線(xiàn)狀態(tài)全為高電平,則表明無(wú)鍵按下;若行線(xiàn)狀態(tài)中有低電 平,則表明有鍵按下。 2、消抖動(dòng) 3、掃描鍵盤(pán)以確定被按鍵的物理位置 4、 計(jì)算鍵碼如果鍵號(hào)是按從左到右,從上到下的順序編排的,按這種編排規(guī)律,各行的首 鍵號(hào)依次是 00H、08H、10H、1

9、8H,如列線(xiàn)按07的順序編號(hào),則可選用鍵碼的計(jì)算公式為: 鍵碼= 首鍵號(hào) 十 列號(hào) 5、 等待鍵釋放 實(shí)驗(yàn)箱提供6*4的小鍵盤(pán),只使用前四列,即0-9,A-F鍵。A,B,C,D分別為“+“-”“*”“/”鍵,E是等于鍵,F(xiàn)清零。其他是數(shù)字鍵。再利用實(shí)驗(yàn)箱上的LED顯示器,對(duì)于即時(shí)按下的鍵和結(jié)果進(jìn)行顯示。向列掃描碼逐列輸出低電平,然后從行碼地址讀回。如果有鍵按下,則相應(yīng)的行值應(yīng)為低,如果無(wú)鍵按下,由于上拉電阻的作用,行碼為高。這樣可以通過(guò)輸出的列碼和讀取的行碼判斷按下的是什么鍵,在判斷有鍵按下后,要有一定的延時(shí),防止鍵盤(pán)抖動(dòng)。在接線(xiàn)時(shí)將KEY/LED CS接到 CS0上,則列掃描地址為08002

10、H,行掃描地址為08001H。為了實(shí)現(xiàn)鍵盤(pán)的數(shù)據(jù)輸入功能和命令處理功能,每個(gè)鍵都有其處理子程序,為此每個(gè)鍵都對(duì)應(yīng)一個(gè)碼鍵碼。為了得到被按鍵的鍵碼,現(xiàn)使用行掃描法識(shí)別按鍵。 3.4.2流程圖該程序可由兩部分構(gòu)成,首先掃描是否有鍵按下是執(zhí)行TESTKEY程序,若有鍵按下則調(diào)用GETKEY程序,若無(wú)鍵按下則繼續(xù)掃描按鍵程序直到有鍵按下。圖七 鍵盤(pán)掃描程序的流程圖四、設(shè)計(jì)體會(huì)與總結(jié)通過(guò)基于8051單片機(jī)簡(jiǎn)易計(jì)算器的設(shè)計(jì),加深了我對(duì)單片機(jī)課程的了解,學(xué)以致用,不但回顧了過(guò)去所學(xué),更使我了解了現(xiàn)在的不足,彌補(bǔ)了一些知識(shí)漏洞。更重要的是在實(shí)際設(shè)計(jì)和試驗(yàn)中形成了更加科學(xué)合理的認(rèn)識(shí),不斷形成更為合理和具有科學(xué)性

11、的思想方式。在這次設(shè)計(jì)中接住了互聯(lián)網(wǎng)等途徑查詢(xún)相關(guān)信息,并在圖書(shū)館查閱了大量單片機(jī)資料。這不但擴(kuò)展了有關(guān)單片機(jī)領(lǐng)域的眼界,而且完善了以往的知識(shí)體系。提高了運(yùn)用知識(shí)的綜合能力。 五、參考文獻(xiàn)【1】郭文川主編. 單片機(jī)原理與接口技術(shù)M. 北京:中國(guó)農(nóng)業(yè)出版社,2007【2】何利民。MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)【M】。北京:北京航空航天大學(xué)出版社, 1990.143.-160。【3】李華。MCS-51系列單片機(jī)實(shí)用接口技術(shù)【M】。北京:北京航空航天大學(xué)出版社, 1993.148.-158。附錄:PAPORT EQU 07FFCH ; 端控制口 A口PBPORT EQU 07FFDH ; 位控制

12、口和鍵盤(pán)列線(xiàn)輸出口 B口PCPORT EQU 07FFEH ; 鍵盤(pán)行碼讀入口 C口DATA1 EQU 70HDATA2 EQU 71HDIZHI1 EQU 72HDIZHI2 EQU 73HLEDBUF EQU 60H ;置顯示緩沖單元首地址 LJMP STARTSTART: MOV SP,#40H MOV LEDBUF+0,#0 MOV LEDBUF+1,#03FHMLOOP: CALL DISPLAYLED ; 顯示 CALL TESTKEY ; 有鍵入? JZ MLOOP ; 無(wú)鍵入,繼續(xù)顯示 CALL GETKEY ;讀入鍵碼JISUAN: MOV R3,A CJNE R3,#0FH

13、,QU ;判斷是否為清零鍵? MOV R3,#00H ;清零 MOV R4,#00H MOV R5,#00H MOV DATA1,#00H MOV DATA2,#00H MOV DIZHI1,#00H MOV DIZHI2,#00H MOV LEDBUF+0,#0 MOV LEDBUF+1,#03FH LJMP MLOOPQU: CLR C CJNE R3,#0AH,FOLLOW ; 判斷是數(shù)字鍵還是功能鍵?FOLLOW:JC SHUZI ;R3<10,說(shuō)明是數(shù)字鍵 LJMP GNSHUZI: MOV A,R4 ;判斷是否有運(yùn)算符輸入, JNZ SHUZI1 ;有就將數(shù)值存在DATA2

14、MOV A,R3 MOV DATA1,A LJMP XS ;顯示第一次輸入的數(shù)值SHUZI1:MOV A,R3 MOV DATA2,A LJMP XS ;顯示第二次輸入的數(shù)值GN: MOV R4,#01H ;將01H給R4,說(shuō)明已有運(yùn)算符輸入 CJNE R3,#0EH,JIA ;判斷鍵值是否為“=”? MOV R4, #00h ;將R4清零 MOV A,DIZHI1 ;執(zhí)行“=” MOV DPH,A MOV A,DIZHI2 MOV DPL,A MOV A,#00H JMP A+DPTR ;轉(zhuǎn)到本次輸入的算法程序JA: CJNE R3, #0AH, JN ;若鍵值為“+”則將“+”的程序首地址

15、 MOV DPTR,#JIA ;存在DIZHI1和DIZHI2中 MOV A,DPH MOV DIZHI1, A MOV A,DPL MOV DIZHI2, A LJMP MLOOPJN: CJNE R3, #0BH, CE ;若鍵值為“-”則將“-”的程序首地址存 MOV DPTR, #JIAN ;DIZHI1和DIZHI2中 MOV A, DPH MOV DIZHI1, A MOV A,DPL MOV DIZHI2, A LJMP MLOOPCE: CJNE R3,#0CH, CU ;若鍵值為“*”則將“*”的程序首地址存在 MOV DPTR,#CHENG ;址存在DIZHI1和DIZHI

16、2中 MOV A,DPH MOV DIZHI1, A MOV A, DPL MOV DIZHI2, A LJMP MLOOPCu: CJNE R3, #0DH, ZHUAN ;若鍵值為“/”則將“/”的程序首地址存在 MOV DPTR , #CHU ;存在DIZHI1和DIZHI2中 MOV A, DPH MOV DIZHI1, A MOV A, DPL MOV DIZHI2, AZHUAN: LJMP MLOOPJIA: MOV A, DATA1 ;加法程序 ADD A, DATA2 LJMP XSJIAN: MOV A, DATA1 ;減法程序 SUBB A, DATA2 LJMP XSC

17、HENG: MOV A, DATA1 ;乘法程序 MOV B, DATA2 MUL AB LJMP XSCHU: MOV A, DATA1 ;除法程序 MOV B, DATA2 DIV ABXS: MOV B, #10 ;顯示個(gè)位數(shù)字 DIV AB MOV R5,A MOV A, B MOV DPTR,#LEDMAP MOVC A, A+DPTR MOV LEDBUF+1,A MOV A, R5FRIST: CJNE A,#0,NEXT LJMP MLOOP ;運(yùn)算完后繼續(xù)掃描鍵盤(pán)NEXT: MOV B,#10 ;顯示十位數(shù)字 DIV AB MOV R5,A MOV A,B MOV DPTR,

18、 #LEDMAP MOVC A, A+DPTR MOV LEDBUF+0, A MOV A,R5 LJMP FRIST ENDLEDMAP: DB 3FH,06H,5BH,4FH ;八段管顯示碼 DB 66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,71HDELAY: MOV R7,#0 ;延時(shí)子程序DELAYLOOP: DJNZ R7,DELAYLOOP DJNZ R6,DELAYLOOP RET;顯示子程序*DISPLAYLED: MOV R0,#LEDBUF MOV R1,#2 ;共兩個(gè)八段管 MOV R2,#02H ;02H=0000

19、 0010B從左邊開(kāi)始顯示LOOP: MOV DPTR,#PBPORT ;位控口地址 MOV A,#0 MOVX DPTR,A ;將零輸出到位控口,關(guān)閉所有八段管 MOV A,R0 ACALL LEDMAP MOV DPTR,#PAPORT ;段控口地址 MOVX DPTR,A ;輸出到段控口 MOV DPTR,#PAPORT MOV A,R2 MOVX DPTR,A ;顯示一位八段管 MOV R6,#1 ;1毫秒延時(shí) CALL DELAY MOV A,R2 ;顯示下一位 RR A MOV R2,A INC R0 DJNZ R1,LOOP RET;判斷是否有鍵按下子程序*88TESTKEY: MOV DPTR,#PBPORT MOV A,#0 MOVX DPTR,A ;輸出線(xiàn)置零 MOV DPTR,#PCPORT ; 讀入鍵狀態(tài) MOVX A, DPTR CPL A ANL A,#0FH ;高四位不用,將高四位清零 RET;定義鍵碼的值*KEYTABLE: DB 0DH, 0CH, 0BH, 0AH DB 0EH, 03H, 06

溫馨提示

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

評(píng)論

0/150

提交評(píng)論