單片機設(shè)計實驗報告簡單計算器的設(shè)計_第1頁
單片機設(shè)計實驗報告簡單計算器的設(shè)計_第2頁
單片機設(shè)計實驗報告簡單計算器的設(shè)計_第3頁
單片機設(shè)計實驗報告簡單計算器的設(shè)計_第4頁
單片機設(shè)計實驗報告簡單計算器的設(shè)計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄1.總體方案選擇21.1 實驗要求:21.2方案設(shè)計22.硬件原理電路圖的設(shè)計及分析22.1主控模塊22.1.1 STC89C52單片機主要特性32.1.2 STC89C52單片機管腳圖42.1.3 STC89C52單片機的中斷系統(tǒng)42.1.4 STC89C52單片機的定時/計數(shù)器42.2矩陣鍵盤模塊設(shè)計:52.2.1矩陣鍵盤原理介紹52.2.2矩陣鍵盤電路設(shè)計52.3 LCD液晶顯示器簡介62.3.1液晶模塊簡介62.3.2液晶顯示部分與89S52的接口73系統(tǒng)軟件設(shè)計93.1系統(tǒng)軟件流程圖93.2系統(tǒng)整體原理圖104.系統(tǒng)調(diào)試114.1硬件調(diào)試114.2軟件調(diào)試114.3調(diào)試結(jié)果125

2、. 心得體會131.總體方案選擇1.1 實驗要求:1) 通過小鍵盤實現(xiàn)數(shù)據(jù)的輸入,并在LED數(shù)碼管上顯示2) 實現(xiàn)+、-、*、/ 3) 在LED數(shù)碼管上顯示結(jié)果4) 并有清零,退出功能1.2方案設(shè)計本系統(tǒng)以STC89C52單片機為控制核心,對系統(tǒng)進行初始化,主要完成對鍵盤的響應(yīng)、液晶顯示燈功能的控制,起到總控和協(xié)調(diào)各模塊之間工作的作用。單片機通過檢測鍵盤讀取使用者按下對用功能的按鍵,然后通過單片機內(nèi)部運放把運算的結(jié)果顯示在液晶屏幕上。圖1-1系統(tǒng)結(jié)構(gòu)框圖本系統(tǒng)結(jié)構(gòu)如圖1-1所示,本設(shè)計可分為以下模塊:單片機主控模塊、鍵盤模塊、功率放大模塊、鬧鈴模塊、按鍵設(shè)置模塊。下面對各個模塊的設(shè)計方案逐一進

3、行論證分析。2.硬件原理電路圖的設(shè)計及分析2.1主控模塊STC89C52有40個引腳,4個8位并行I/O口,1個全雙工異步串行口,同時內(nèi)含5個中斷源,2個優(yōu)先級,2個16位定時/計數(shù)器。STC89C52的存儲器系統(tǒng)由4K的程序存儲器(掩膜ROM),和128B的數(shù)據(jù)存儲器(RAM)組成。STC89C52單片機的基本組成框圖見圖2-1。圖2-1 2.1.1 STC89C52單片機主要特性1. 一個8 位的微處理器(CPU)。2. 片內(nèi)數(shù)據(jù)存儲器RAM(128B),用以存放可以讀寫的數(shù)據(jù),如運算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù)等,SST89 系列單片機最多提供1K 的RAM。3. 片內(nèi)程序存儲器

4、ROM(4KB),用以存放程序、一些原始數(shù)據(jù)和表格。4. 四個8 位并行IO 接口P0P3,每個口既可以用作輸入,也可以用作輸出。5. 兩個定時器計數(shù)器,每個定時器計數(shù)器都可以設(shè)置成計數(shù)方式,用以對外部事件進行計數(shù),也可以設(shè)置成定時方式,并可以根據(jù)計數(shù)或定時的結(jié)果實現(xiàn)計算機控制。6. 五個中斷源的中斷控制系統(tǒng)。7. 一個全雙工UART(通用異步接收發(fā)送器)的串行IO 口,用于實現(xiàn)單片機之間或單機與微機之間的串行通信。8. 片內(nèi)振蕩器和時鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率為12MHz。2.1.2 STC89C52單片機管腳圖圖2-2 89S52單片機管腳圖1. 時鐘電路引

5、腳XTAL1 和XTAL2:2. 控制信號引腳RST,ALE,PSEN 和EA:3. 輸入/輸出端口P0/P1/P2/P3:2.1.3 STC89C52單片機的中斷系統(tǒng)STC89C52系列單片機的中斷系統(tǒng)有5個中斷源,2個優(yōu)先級,可以實現(xiàn)二級中斷服務(wù)嵌套。由片內(nèi)特殊功能寄存器中的中斷允許寄存器IE控制CPU是否響應(yīng)中斷請求;由中斷優(yōu)先級寄存器IP安排各中斷源的優(yōu)先級;同一優(yōu)先級內(nèi)各中斷同時提出中斷請求時,由內(nèi)部的查詢邏輯確定其響應(yīng)次序。2.1.4 STC89C52單片機的定時/計數(shù)器在單片機應(yīng)用系統(tǒng)中,常常會有定時控制需求,如定時輸出、定時檢測、定時掃描等;也經(jīng)常要對外部事件進行計數(shù)。89C5

6、2單片機內(nèi)集成有兩個可編程的定時/計數(shù)器:T0和T1,它們既可以工作于定時模式,也可以工作于外部事件計數(shù)模式,此外,T1還可以作為串行口的波特率發(fā)生器。2.2矩陣鍵盤模塊設(shè)計:2.2.1矩陣鍵盤原理介紹在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵

7、盤是合理的。矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識別也要復(fù)雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。2.2.2矩陣鍵盤電路設(shè)計圖2-3矩陣鍵盤硬件連接圖首先辨別鍵盤中有無鍵按下,有單片機I/O口向鍵盤送全掃描字,然后讀入行線狀態(tài)來判斷。方法是:向行線輸出全掃描字00H,把全部列線置為低電平,然后將列線的電平狀態(tài)讀入累加器A中。如果有按鍵按下,總會有一根行線電平

8、被拉至低電平從而使行線不全為1。判斷鍵盤中哪一個鍵被按下使通過將列線逐列置低電平后,檢查行輸入狀態(tài)來實現(xiàn)的。方法是:依次給列線送低電平,然后查所有行線狀態(tài),如果全為1,則所按下的鍵不在此列;如果不全為1,則所按下的鍵必在此列,而且是在與零電平行線相交的交點上的那個鍵。2.3 LCD液晶顯示器簡介液晶是一種既具有液體的流動性又具有光學(xué)特性的有機化合物,它的透明程度和呈現(xiàn)的顏色受外加電場的影響,利用這特點便可做成字符顯示器。液晶顯示器(LCD)英文全稱為Liquid Crystal Display,它一種是采用了液晶控制透光度技術(shù)來實現(xiàn)色彩的顯示器。顯示接口用來顯示系統(tǒng)的狀態(tài),命令或采集的電壓數(shù)據(jù)

9、。本系統(tǒng)顯示部分用的是LCD液晶模塊,采用一個16×1的字符型液晶顯示模塊。 2.3.1液晶模塊簡介LCD1602液晶模塊采用HD44780控制器,hd44780具有簡單而功能較強的指令集,可以實現(xiàn)字符移動,閃爍等功能,LM016L與單片機MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標志(BF),顯示數(shù)RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計數(shù)器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動寫入DDRAM和CG

10、RAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時,液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來存儲顯示的字符,能存儲80個字符碼,CGROM由8位字符碼生成5*7點陣字符160中和5*10點陣字符32種.8位字符編碼和字符的對應(yīng)關(guān)系,可以查看參考文獻(30)中的表4.CGRAM是為用戶編寫特殊字符留用的,它的容量僅64字節(jié),可以自定義8個5*7點陣字符或者4個5*10點陣字符,AC可以存儲DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,則IR自動把地址碼裝入AC,同時選擇DDRAM或CGRAM但愿,LCD1602液晶模塊的引腳圖如圖2-4所示。圖2-

11、4 LCD1601引腳圖 寄存器選擇控制如表2-1。表2-1寄存器選擇控制RSR/W操作說明00寫入指令寄存器(清除屏等)01讀busy flag(DB7),以及讀取位址計數(shù)器(DB0DB6)值10寫入數(shù)據(jù)寄存器(顯示各字型等)11從數(shù)據(jù)寄存器讀取數(shù)據(jù)2.3.2液晶顯示部分與89S52的接口 如圖2-5所示。用89C51的P2口作為數(shù)據(jù)線,用P3.2、P3.1、P3.0分別作為LCD的E、R/W、RS。其中E是下降沿觸發(fā)的片選信號,R/W是讀寫信號,RS是寄存器選擇信號本模塊設(shè)計要點如下:顯示模塊初始化:首先清屏,再設(shè)置接口數(shù)據(jù)位為8位,顯示行數(shù)為1行,字型為5×7點陣,然后設(shè)置為整

12、體顯示,取消光標和字體閃爍,最后設(shè)置為正向增量方式且不移位。向LCD的顯示緩沖區(qū)中送字符,程序中采用2個字符數(shù)組,一個顯示字符,另一個顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應(yīng)的數(shù)組中,完成后再統(tǒng)一顯示.首先取一個要顯示的字符或數(shù)據(jù)送到LCD的顯示緩沖區(qū),程序延時2.5ms,判斷是否夠顯示的個數(shù),不夠則地址加一取下一個要顯示的字符或數(shù)據(jù)。圖2-5 LCD1602與STC89C52的接口3系統(tǒng)軟件設(shè)計3.1系統(tǒng)軟件流程圖圖3-1 軟件流程圖183.2系統(tǒng)整體原理圖4.系統(tǒng)調(diào)試4.1硬件調(diào)試計算器的電路系統(tǒng)較大,對于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯誤,則會對檢測造成很大的不便

13、,而且電路的交線較多,對于各種鋒利的引腳要注意處理,否則會刺破帶有包皮的導(dǎo)線,則會對電路造成短路現(xiàn)象。在本計算器的設(shè)計調(diào)試中遇到了很多的問題?;叵脒@些問題只要認真多思考都是可以避免的,以下為主要的問題:(1)程序調(diào)試初期液晶一直沒有正常顯示,總在第一行顯示黑條。解決:經(jīng)調(diào)查發(fā)現(xiàn)液晶對比度沒有調(diào)好,旋轉(zhuǎn)液晶調(diào)節(jié)對比度用的電位器直到液晶顯示正常。(2)開始時程序一直不能往單片機下載。解決:檢查復(fù)位電路,時鐘電路,以及單片機的供電系統(tǒng),后來發(fā)現(xiàn)晶振沒有起振,最終把晶振的起振電容換了就能夠下載程序。4.2軟件調(diào)試計算器是多功能的數(shù)字型設(shè)備,可以根據(jù)用戶按下的按鍵記錄要計算的數(shù)值。并通過單片機內(nèi)部運算計

14、算出結(jié)果并在屏幕上顯示。計算器的功能很多,所以對于它的程序也較為復(fù)雜,所以在編寫程序和調(diào)試時出現(xiàn)了相對較多的問題。最后經(jīng)過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調(diào)試過程中主要遇到的問題如下:1每次計算一次數(shù)值運算后,屏幕上會殘留以前換算的結(jié)果,進行下一次運算的時候也沒有消除。解決:經(jīng)過分析初步確認是液晶在進行下一次運算的時候沒有進行清屏,在上一次運算完成后,進行新一次運算的時候單片機對液晶進行處理使其進行清屏處理,最后解決了此問題。2當用戶按下按鍵的時候,單片機讀取的數(shù)值跟設(shè)定的數(shù)值不對。解決:重新檢查矩陣鍵盤電路的連接,重新建立一個新的對應(yīng)關(guān)系。4.3調(diào)試結(jié)果經(jīng)過一

15、系列的問題查找后系統(tǒng)最終能正常工作,并完成所有的功能。以下為系統(tǒng)仿真圖: 圖4-1系統(tǒng)仿真圖5. 心得體會通過這次課程設(shè)計,我學(xué)到了不少課本上沒有的知識,也鍛煉了自己的動手能力,將以前學(xué)過的零散的知識串到一起。經(jīng)過我長時間的設(shè)計及調(diào)試,本系統(tǒng)基本能實現(xiàn)設(shè)定的要求。通過這些我的硬件和軟件開發(fā)能力都獲得了提高。首先硬件方面,基本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作?;菊莆樟薖rotel99SE原理圖的方法,并設(shè)計了一個單片機最小系統(tǒng)。通過開發(fā)板的設(shè)計和硬件搭建的過程,使我對51系單片機的接口有了更深層次的理解,熟悉了一些單片機常用的外圍電路引腳和連接方法,如LED數(shù)碼管,鍵盤等。并且我學(xué)會了分

16、析問題解決問題的能力,加深了對所學(xué)理論知識的理解和運用。我的動手能力得到了很大的提高,創(chuàng)新意識得到了鍛煉。在整個設(shè)計過程中,雖然忙碌勞累,但也充實快樂,老師每天都會不厭其煩的陪著我們在機房,有任何問題都會對我們傾囊相授,在這我想向陪伴我們?nèi)甑睦蠋熣f聲謝謝,你們辛苦了!參考文獻1 彭偉.單片機C語言程序設(shè)計實訓(xùn)100例.電子工業(yè)出版社.2009年2 吳運昌模擬電子線路基礎(chǔ)廣州:華南理工大學(xué)出版社,2004年3 閻石數(shù)字電子技術(shù)基礎(chǔ)北京:高等教育出版社,1997年4 張曉麗等數(shù)據(jù)結(jié)構(gòu)與算法北京:機械工業(yè)出版社,2002年5 馬忠梅等 ARM&Linux嵌入式系統(tǒng)教程北京:北京航空航天大學(xué)

17、出版社,6 李建忠單片機原理及應(yīng)用西安:西安電子科技大學(xué),2002年7 韓志軍等.單片機應(yīng)用系統(tǒng)設(shè)計M.機械工業(yè)出版社,20048 周潤景等. Proteus在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例M.電子工業(yè)出版社,9 馬忠梅等.單片機的C語言應(yīng)用程序設(shè)計M.北京航空航天大學(xué)出版社,200610 劉樹中,孫書膺,王春平.單片機和液晶顯示驅(qū)動器串行接口的實現(xiàn)J.微計算機信息,2007系統(tǒng)源程序#include <reg52.h>#include"LCD1602.h"#include"math.h"/端口及函數(shù)說明-#define Ke

18、y_port P2 /按鍵 unsigned char key_scan(void); /鍵盤掃描函數(shù) bit FlagN = 0; /是否有數(shù)字按下 ,按下后置1bit FlagO = 0; /是否有操作符按下,按下后置1bit FlagD = 0; /是否按下小數(shù)點,按下后置1bit FlagNegX=0;bit FlagNegY=0;double X = 0.0,Y = 0.0,RES = 0.0; /X為第一個操作數(shù) Y為第二個操作數(shù) unsigned char OPER = 0; /操作符號 int Num16=0; /存放結(jié)果位/-void delay(unsigned int i

19、)unsigned int x,y;for(x= 0;x<i;x+)for(y = 0;y<110;y+);while(Numi=0)/判斷第一個不為0的數(shù)i+;k = 4-i;if(i > 3) /RES<1時LCDDispChar(2,2,'0');LCDDispChar(3,2,'.');for(l=0;l<4;l+) LCDDispNum(4+l,2,Numl+4);elsefor(j = 0;j<k;j+) /顯示所有的整數(shù)部分LCDDispNum(2+j,2,Numi+);LCDDispChar(2+j,2,

20、9;.');j+;for(l=0;l<4;l+) LCDDispNum(2+j,2,Numl+4); j+; /計算部分的函數(shù)/傳入?yún)?shù):x-運算數(shù)1,y運算數(shù)2,oper運算符號/返回值:運算結(jié)果 void Calculate(void) switch (OPER) case 11:RES = (double)X*1.0+Y;break;case 12:RES = (double)X*1.0-Y;break;case 13:RES = (double)X*1.0*Y;break;case 14:RES = (double)X*1.0/Y;break;default:break;

21、 /主函數(shù) void main() unsigned char i=0;unsigned int temp = 0;unsigned char location = 0;/當前顯示指針位置FlagN = 0;FlagO = 0;FlagD = 0; FlagNegX=0;FlagNegY=0;LCDInit(); while(FlagO)LCDCursor();while(FlagN) /輸入X的過程中 沒有按下操作符建 按下后跳出 i = key_scan();OPER = i; /取得操作符 if(i>=0) && (i<10) if(FlagD) /當沒有按下

22、小數(shù)點時 X=X*10+i; else /按下小數(shù)點后的情況, /儲存值以便顯示 Numtemp+4 = i; /更新X值以便計算 if(temp = 0)X = X + (double)i/10;if(temp = 1)X = X + (double)i/100;if(temp = 2)X = X + (double)i/1000;if(temp = 3)X = X + (double)i/10000;if(temp = 4)X = X + (double)i/100000; temp+; LCDDispNum(location+,1,i); else if(i = 10) /顯示小數(shù)點 L

23、CDDispChar(location+,1,'.'); else if(i = 12 && X=0) /按下-號 FlagN=0;FlagNegX=1;LCDDispChar(location+,1,'-'); /輸入Xif(FlagNegX)X=0-X;if(i = 11)/顯示操作符 LCDDispChar(location+,1,'+');else if(i = 12)LCDDispChar(location+,1,'-');else if(i = 13)LCDDispChar(location+,1,'X');else if (i = 14)LCDDispChar(locat

溫馨提示

  • 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

提交評論