單片機課程設計——計算器設計_第1頁
單片機課程設計——計算器設計_第2頁
單片機課程設計——計算器設計_第3頁
單片機課程設計——計算器設計_第4頁
單片機課程設計——計算器設計_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 目錄一、設計總緒21.1設計思想21.2設計說明21.3關鍵詞:矩陣鍵盤,單片機,數(shù)碼管顯示,匯編語言21.4設計目的21.5設計要求2二、設計方案32.1硬件電路設計方案32.1.1基本結構32.1.2系統(tǒng)框架圖32.1.3工作流程圖42.1.4單片機主控制模塊52.2系統(tǒng)功能描述6三、各模塊功能介紹73.1鍵盤輸入模塊73.1.1鍵盤分布圖73.1.2工作原理73.2運算控制模塊83.3顯示模塊83.4振蕩電路模塊9四、仿真電路10仿真運行結果10五、調(diào)試過程總結12附錄:13參考文獻:13源程序代碼13 一、設計總緒1.1設計思想 近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷深入,同

2、時帶動傳統(tǒng)控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往作為一個核心部件來使用,但僅單片機方面的知識是不夠的,還應根據(jù)具體硬件結構、軟硬件結合,來加以完善。 計算機在人們的日常生活中是比較常見的電子產(chǎn)品之一??墒撬€在發(fā)展之中,以后必將出現(xiàn)功能更加強大的計算機,基于這樣的理念,本次設計是用AT89c51單片機、LCD顯示器、控制按鍵為元件來設計的計算器。利用此設計熟悉單片機微控制器及匯編語言編程,對其片資源及各個I/O端口的功能和基本用途的了解。掌握應用程序開發(fā)環(huán)境,常用的LCD顯示器的使用方法和一般鍵盤的使用方法 此設計是基于單片機技術的簡易計算器的方案,

3、本次設計所提出的一種基于單片機技術的簡易計算器的方案,采用具有數(shù)據(jù)處理能力的中央處理器CPU,隨機存儲器ROM,多種I/O口和中斷系統(tǒng)、定時器/計時器等功能集成到一塊硅片上構成的一個小而完善的計算機系統(tǒng)單片機,配以匯編語言編寫的執(zhí)行程序,能更好的解決計算機計算的問題,隨著數(shù)字生活的到來,單片機在生活中越來越重要,它能將大量的邏輯功能集成與一個集成電路中,使用起來十分方便。 1.2設計說明本次課程設計討論了單片機技術的計算器構思,設計方案,工作原理,主要系統(tǒng)包括單片機80C51,排阻RESPACK8,開關,六位數(shù)碼管顯示器等,主要組成部分包括:鍵盤輸入模塊,運算模塊,控制模塊,顯示模塊。通過鍵盤

4、輸入數(shù)值,單片機進行運算后在數(shù)碼管顯示出結果。1.3關鍵詞:矩陣鍵盤,單片機,數(shù)碼管顯示,匯編語言1.4設計目的 通過本次課程設計,運用單片機微型計算機原理及應用所學到的知識及查詢相關資料,完成簡易計算器的設計,進一步提高單片機的系統(tǒng)設計和開發(fā)能力,達到理論知識與實踐更好的結合,提高綜合運用所學知識和設計能力的目的。1.5設計要求 要求設計一個單片機應用系統(tǒng),利用keil和proteus軟件完成系統(tǒng)軟硬件的設計及模擬調(diào)試。實現(xiàn)五位數(shù)(可為帶小數(shù)點)的加減乘除運算,通過按鍵輸入十進制數(shù)據(jù)。利用六位數(shù)碼管顯示運算結果。并實現(xiàn)復位操作。由于要設計的是簡單的計算器,可以進行四則運算,為了得到教好的顯示

5、效果,采用LCD顯示數(shù)據(jù)和結果。、另外鍵盤包括數(shù)字鍵(0-9)、符號鍵(+、-、*、/)、清除鍵和等號鍵,故只需要16個按鍵即可,設計中采用集成的計算機鍵盤來,當鍵入+、-、*、/運算符,計算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲,并等待再次鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號就會在LCD上輸出運算結果,執(zhí)行程序:開機顯示零,等待鍵入數(shù)值,當鍵入數(shù)字,通過LCD顯示出 二、設計方案2.1硬件電路設計方案2.1.1基本結構 計算器一般由運算器、控制器、鍵盤、顯示器、電源和一些可選外圍設備及電子配件通過人工或機器設備組成。鍵盤是計算器的輸入部件,一般采用接觸式或傳感式。顯示器是計算器的輸出部件,有發(fā)光二極管顯示

6、器或液晶顯示器等。除顯示計算結果外,還常有溢出指示、錯誤指示等。計算器電源采用交流轉(zhuǎn)換器或電池。計算器都采用CMOS工藝制作的大規(guī)模集成電路。 本次課程設計中我是采用了以MCS51系列的單片機AT89C51單片機為核心構成的簡易計算器。該系統(tǒng)通過單片機控制,實現(xiàn)對4*4鍵盤進行實時掃描的按鍵檢測,并把檢測數(shù)據(jù)存儲下來。整個計算器系統(tǒng)的工作過程為:首先存儲單元初始化,顯示初始值和鍵盤掃描,判斷按鍵位置,查表得出按鍵值,單片機則對數(shù)據(jù)進行儲存與相應處理轉(zhuǎn)換,之后送入數(shù)碼管動態(tài)顯示。整個系統(tǒng)可分為三個主要功能模塊:功能模塊一,實時鍵盤掃描;功能模塊二,數(shù)據(jù)轉(zhuǎn)換成顯示器顯示;功能模塊三,計算控制模塊。

7、功能模塊四:顯示模塊。2.1.2系統(tǒng)框架圖 控制 運算 鍵盤 顯示 圖2.1 系統(tǒng)總體框架圖2.1.3工作流程圖 開始 初始化 鍵盤列掃描 有鍵按下 復位鍵 數(shù)字鍵 記憶對應鍵值 運算功能鍵 其他鍵數(shù)碼管顯示 是” =”? No記憶其運算符 數(shù)碼管顯示 計算最后結果 Yes 圖2.2 系統(tǒng)工作流程圖2.1.4單片機主控制模塊 AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術制造,與

8、工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。主要特性:與MCS-51 兼容 ;4K字節(jié)可編程閃爍存儲器 ;1000寫/擦循;數(shù)據(jù)保留時間:10年;全靜態(tài)工作:0Hz-24Hz;三級程序存儲器鎖定;128*8位內(nèi)部RAM;32可編程I/O線;兩個16位定時器/計數(shù)器;5個中斷源 ;可編程串行通道;低功耗的閑置和掉電模式;片內(nèi)振蕩器和時鐘電路 74LS245是我們常用的芯片,用來驅(qū)動led或者其他的設備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)

9、據(jù)。74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。當8051單片機的P0口總線負載達到或超過P0最大負載能力時,必須接入74LS245等總線驅(qū)動器。當片選端/CE低電平有效時,DIR=“0”,信號由 B 向 A 傳輸;(接收)DIR=“1”,信號由 A 向 B 傳輸;(發(fā)送)當CE為高電平時,A、B均為高阻態(tài)。由于P2口始終輸出地址的高8位,接口時74LS245的三態(tài)控制端1G和2G接地,P2口與驅(qū)動器輸入線對應相連。P0口與74LS245輸入端相連,E端接地,保證數(shù)據(jù)線暢通。8051的/RD和/PSEN相與后接DIR,使得RD且PSEN有效時,74LS245輸入(P0.1D1

10、),其它時間處于輸出(P0.1D1)。 圖2 74LS245引腳圖 2.2系統(tǒng)功能描述本程序有LCD動態(tài)顯示,鍵盤輸入顯示功能,程序啟動時默認為計算器狀態(tài)。(1)計算器狀態(tài)下:按“0”“9”,顯示相應數(shù)字;按“復位”,恢復初始化模式;按“加減乘除”可實現(xiàn)加減乘除的運算功能 三、各模塊功能介紹3.1鍵盤輸入模塊 3.1.1鍵盤分布圖 圖 3.1 計算器鍵盤圖 3.1.2工作原理 本設計采用P3口作為矩陣鍵盤輸入口,開始工作后,單片機先對矩陣鍵盤的行進行掃描。若無鍵按下,先使P3為11110000,然后檢測外來輸入,若有輸入,則可使四位的0其中一位置1,即完成了按行號的輸入。列掃描遠離同行掃描相同

11、,不過P3初始為00001111.檢測完行號與列號后,產(chǎn)生一個8位二進制碼,即可對鍵盤值進行輸入。3.2運算控制模塊 圖3.2 計算器運算控制模塊 控制模塊控制著數(shù)字錄入,數(shù)字錄入是進行計算的前提,它是將從矩陣鍵盤上輸入的數(shù)值、運算符等錄入單片機處理器進行處理,從而得出運算結果。計算模塊作為計算器的核心模塊共有加、減、乘、除四個部分。其設計原理是先將鍵盤輸入的BCD碼數(shù)字轉(zhuǎn)換為十進制數(shù)字,然后再對其進行運算。由于最后需要進行輸出顯示,所以我們的最終結果以十進制的形式顯示在六位的數(shù)碼顯示管上。3.3顯示模塊 圖 3.3 數(shù)碼管顯示屏 本設計采用了六位數(shù)碼管,可以顯示0999999之間的任意整數(shù),

12、由于LED數(shù)碼管有6個,若采用靜態(tài)顯示,則最少需要48根數(shù)據(jù)線與6根地址線,這對只有40個引腳的單片機來說是不可能實現(xiàn)的。所以我采用了動態(tài)掃描的顯示方法。其原理是不同時刻對不同位上的數(shù)碼管進行選通,同時對其進行數(shù)碼輸出。當掃描頻率很高時,將不會看到數(shù)碼管的閃爍。本設計應用了定時器中斷來實現(xiàn)間時顯示。3.4振蕩電路模塊 圖 3,.4 振蕩電路 振蕩電路如圖所示。圖中晶振的兩端分別接單片機的19和18腳。時鐘有內(nèi)部電路產(chǎn)生,定時器件為石英晶體和電容組成的并聯(lián)諧振回路。3.5起保護作用模塊 圖 3.5 限流電阻 這一排限流電阻,它們的作用是起保護作用,防止數(shù)碼管的段位被燒壞。 四、仿真電路 圖4.1

13、 系統(tǒng)電路仿真圖仿真運行結果 例如:運行23*2時,一次在鍵盤上輸入數(shù)據(jù)和功能鍵,功能鍵不會再數(shù)碼管上顯示出來,只會顯示出輸入的數(shù)據(jù)和運行結果。 圖4.2 輸入數(shù)據(jù)23時 圖4.3 輸入數(shù)據(jù)2 圖4.4 計算23*2的運行結果五、調(diào)試過程總結 開始在做這個單片機課設的時候,感覺無從下手,一點頭緒都沒有。后來上網(wǎng)查了好多資料,向?qū)W長請教。終于功夫不負有心人,做出了這個單片機的課設。調(diào)試過程中也遇到了一些問題,先是數(shù)碼管顯示數(shù)據(jù)不完整,經(jīng)過仔細檢查發(fā)現(xiàn)是線路連接的錯誤;后來又遇到計算時會出現(xiàn)運算錯誤,經(jīng)過查找發(fā)現(xiàn)原來是編程的問題。在利用keil軟件編程的過程中,會出現(xiàn)各種各樣的問題,有的是由于粗心

14、而引起的,有的是因為概念模糊而導致的。再用proteus進行仿真時,會出現(xiàn)的問題主要是線路連接問題,可能會不小心把線連錯,其他的我覺得只要元器件選擇好,各引腳的功能清楚的話一般不會有太大的問題。在這次做課程設計的過程中我深深體會到了要獨立完成一個作品的設計是多么不容易。雖然我做的只是最基礎的,但是從這個最小的系統(tǒng)中卻是利用了單片機的最基礎的功能。在這個過程中,我們不僅僅是編程仿真那么簡單,還需要有極大的耐心與毅力。設計的過程中會遇到各種各樣的問題,我們應該靜下心來好好研究,這對于我們以后的工作也是非常重要的??偟膩碚f,這次課程設計,一個禮拜的緊張忙碌終于完成了。感覺自己的收獲還是很多的,無論是

15、對專業(yè)知識的了解還是對硬件的設計,都是需要我們下很大的功夫去研究的。通過這次課程設計,最大的一點體會是單片機學的不夠扎實,不會的很多啊,當然這次的課程設計做計算器程序用的是匯編語言,盡管大家都知道匯編編這個程序很困難,但還是互相學習,到處找資料看,問同學,所以我的軟件主程序才能編譯成功,系統(tǒng)才能調(diào)試出結果。很感謝那些熱心教導我的同學和指導我的老師。附錄:參考文獻:【1】姜志海、劉連鑫等,單片機微型計算機原理及應用M。北京:電子工業(yè)出版社,2011【2】周潤景,張麗娜?;赑ROTEUS的電路及單片機系統(tǒng)設計與仿真M。北京:北京航空航天大學出版社,2006源程序代碼YJ EQU50H ;結果存放

16、YJ1 EQU51H ;中間結果存放GONG EQU52H ;功能鍵存放ORG 00H;程序存放的首地址START:MOV R3,#0 ;初始化顯示為空MOV GONG,#0;功能鍵清零MOV 32H,#00H;(32H)=00H,存放輸入的數(shù)據(jù)MOV 33H,#00H;(33H)=00HMOV 34H,#00H;(34H)=00HMLOOP:CALL DISP ;調(diào)顯示子程序, call通過入口地址跳轉(zhuǎn)有返回,返回地址壓入堆棧。WAIT:CALL TESTKEY NEXT1:CJNE A,#1,NEXT2 LJMP E1NEXT2:CJNE A,#2,NEXT3LJMP E1NEXT3:CJ

17、NE 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 ;判斷是否功能鍵LJMP E2 ;轉(zhuǎn)功能鍵處理NEXT11:CJNE A,#11,NEXT12LJMP E2NEXT12:CJNE A,#12, NEXT13LJMP E2

18、NEXT13:CJNE A,#13,NEXT14LJMP E2NEXT14:CJNE A,#14,NEXT15LJMP E2NEXT15:LJMP E3 ;判斷是否清除鍵E1:CJNE R3,#1,N1 ;判斷第幾次按鍵,若(R3)不等于(1),則跳轉(zhuǎn)到N1處執(zhí)行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 R4,A ;輸入值暫存R4MOV 34H,A ;輸入值送顯示緩存MOV 33H,#00HMOV 32H,#00HLJM

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

20、鍵次數(shù)清零MOV R4,#0 ;輸入值清零MOV YJ,#0 ;計算結果清零MOV GONG,#0 ;功能鍵設為零 MOV 32H,#00H;顯示清空MOV 33H,#00HMOV 34H,#00HLJMP MLOOPE2:MOV 34H,#00HMOV 33H,#00HMOV 32H,#00HMOV R0,GONG ;與上次功能鍵交換MOV GONG,AMOV A,R0CJNE A,#10,N21 ;判斷功能鍵LJMP JIA ;""N21: CJNE A,#11,N22LJMP JIAN ;""N22: CJNE A,#12,N23LJMP CHEN

21、G ;"*"N23:CJNE A,#13,N24LJMP CHU ;"/"N24:CJNE A,#0,N25LJMP FIRST ;首次按功能鍵N25:LJMP DEN ;"="N4:LJMP E3FIRST:MOV YJ,R4 ;輸入值送結果MOV R3,#0 ;按鍵次數(shù)清零LJMP DISP1 ;結果處理/加法/JIA:MOV A,YJ;上次結果送累加器ADD A,R4;上次結果加輸入值JB CY,N4;溢出MOV YJ,A;存本次結果MOV R3,#0;按鍵次數(shù)清零LJMP DISP1/減法/JIAN:MOV A,YJSUBB

22、A,R4;上次結果減輸入值JB CY,N4;負數(shù)溢出,JB位變量條件轉(zhuǎn)移指令,若直接尋址位的值為1,則執(zhí)行轉(zhuǎn)移MOV YJ,AMOV R3,#0LJMP DISP1/乘法/CHENG:MOV A,YJMOV B,AMOV A,R4MUL AB;上次結果乘輸入值JB OV,N4;溢出MOV YJ,ALJMP DISP1/除法/CHU:MOV A,R4MOV B,AMOV A,YJDIV AB;上次結果除輸入值MOV YJ,AMOV R3,#0LJMP DISP1/等于/DEN:MOV R3,#0LJMP DISP1DISP1:MOVB,#10MOVA,YJMOVB,#10MOVA,YJ1DIVA

23、BMOVYJ1,AMOVA,BMOV33H,A;十位送顯示緩存MOVA,YJ1JZDISP11;結果是否為二位數(shù)MOV32H,A;百位數(shù)送顯示緩存DISP11:LJMPMLOOP;長跳轉(zhuǎn)指令DISP: MOV R0,#34HDIR1: MOV DPTR,#SEGTAB ;基寄存器DPTR存入輸入的數(shù)據(jù)值 MOV A,R0;寄存器間接尋址 MOVC A,A+DPTR;基寄存器加變址寄存器間接尋址 MOV P0,A CJNE R0,#34H,DIR2 SETB P2.0DIR2: CJNE R0,#33H,DIR3 SETB P2.1 CALL D1MS CLR P2.1 ;P2.1端口清零 DEC R0 ;減1指令 SJMP DIR1DIR3: SETB P2.2 CALL D1MS CLR P2.2 RETD1MS: MOV R7,#02HDMS: MOV R6,#0F0H DJNZ R6,$ ;減1不為0跳轉(zhuǎn)指令DJNZ R7,DMS RETSEGTAB:DB 0C0H, 0F9H, 0A4H, 0B0H ;0 1 2 3定義字節(jié) DB 99H, 92H, 82H, 0F8H ;4 5 6 7 DB 80H, 90H, 88H, 83H ;8 9 A B DB 0C6H, 0A1H, 86H, 8EH ;C

溫馨提示

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

評論

0/150

提交評論