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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

8、工業(yè)標(biāo)準(zhǔn)的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或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)

9、據(jù)。74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。當(dāng)8051單片機(jī)的P0口總線負(fù)載達(dá)到或超過P0最大負(fù)載能力時,必須接入74LS245等總線驅(qū)動器。當(dāng)片選端/CE低電平有效時,DIR=“0”,信號由 B 向 A 傳輸;(接收)DIR=“1”,信號由 A 向 B 傳輸;(發(fā)送)當(dāng)CE為高電平時,A、B均為高阻態(tài)。由于P2口始終輸出地址的高8位,接口時74LS245的三態(tài)控制端1G和2G接地,P2口與驅(qū)動器輸入線對應(yīng)相連。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)顯示,鍵盤輸入顯示功能,程序啟動時默認(rèn)為計算器狀態(tài)。(1)計算器狀態(tài)下:按“0”“9”,顯示相應(yīng)數(shù)字;按“復(fù)位”,恢復(fù)初始化模式;按“加減乘除”可實現(xiàn)加減乘除的運算功能 三、各模塊功能介紹3.1鍵盤輸入模塊 3.1.1鍵盤分布圖 圖 3.1 計算器鍵盤圖 3.1.2工作原理 本設(shè)計采用P3口作為矩陣鍵盤輸入口,開始工作后,單片機(jī)先對矩陣鍵盤的行進(jìn)行掃描。若無鍵按下,先使P3為11110000,然后檢測外來輸入,若有輸入,則可使四位的0其中一位置1,即完成了按行號的輸入。列掃描遠(yuǎn)離同行掃描相同

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

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

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

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

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

16、YJ1 EQU51H ;中間結(jié)果存放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 ;計算結(jié)果清零MOV GONG,#0 ;功能鍵設(shè)為零 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 ;輸入值送結(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 DISP1/減法/JIAN:MOV A,YJSUBB

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

23、BMOVYJ1,AMOVA,BMOV33H,A;十位送顯示緩存MOVA,YJ1JZDISP11;結(jié)果是否為二位數(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)系上傳者。文件的所有權(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論