簡易計算器設(shè)計_第1頁
簡易計算器設(shè)計_第2頁
簡易計算器設(shè)計_第3頁
簡易計算器設(shè)計_第4頁
簡易計算器設(shè)計_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘 要簡易計算器是一種非常廣泛日常工具,對現(xiàn)代社會越來越流行,它可以進(jìn)行一些簡易的計算。本系統(tǒng)可進(jìn)行簡易的計算信息,該電路采用AT89S52單片機作為核心,功耗小,能在3V的低壓工作,電壓可選用35V電壓供電。本系統(tǒng)硬件部分由AT89S52單片機、LCD1602液晶屏、鍵盤、指示燈系統(tǒng)等部分構(gòu)成。軟件部分用C51語言編寫,主要包括簡易計算、顯示等。本系統(tǒng)的設(shè)計說明重點介紹了如下幾方面的內(nèi)容:基于單片機簡易計算器的基本功能,同時對矩陣鍵盤及數(shù)碼管動態(tài)顯示原理進(jìn)行了簡單的闡述;介紹了系統(tǒng)的總體設(shè)計、給出了系統(tǒng)的整體流程框圖,并對其進(jìn)行了功能模塊劃分及所采用的元器件進(jìn)行了詳細(xì)說明;對系統(tǒng)各功能模塊的

2、軟、硬件實現(xiàn)進(jìn)行了詳細(xì)的設(shè)計說明。關(guān)鍵字:AT89S52;液晶屏LCD1602;計算器2簡單計算器的設(shè)計目 錄引言11.單片機的應(yīng)用21.1單片機的介紹21.2單片機的應(yīng)用21.3AT89S5232.硬件設(shè)計6 2.1 系統(tǒng)框圖6 2.2 最小系統(tǒng)6 2.3 矩陣鍵盤7 2.4 LCD160283. 軟件設(shè)計10 3.1矩陣鍵盤掃描原理10 3.2 LCD1602的軟件設(shè)計10 3.3 主程序設(shè)計12 3.4 源程序13 3.5 調(diào)試結(jié)果134. 設(shè)計小結(jié)14參考文獻(xiàn)15附錄16簡單計算器的設(shè)計引言隨著社會的發(fā)展,人們生活水平的提高,單片機的應(yīng)用越來越貼近生活了,人們常用單片機來實現(xiàn)一些簡單的

3、電子設(shè)計。單片機由于其微小的體積和極低的成本,廣泛的應(yīng)用于家用電器、工業(yè)控制等領(lǐng)域中。在工業(yè)生產(chǎn)中。單片機微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片機微型計算機簡稱單片機,特別適用于控制領(lǐng)域,故又稱為微控制器。計算器在人們的日常生活中是不可或缺的電子產(chǎn)品之一,目前市場上的計算器基本可以滿足我們的日常需求,但它還在發(fā)展之中,我們要繼續(xù)研究出更加強大的計算器?;谶@樣的理念,本設(shè)計采用單片機來設(shè)計簡易計算器。本設(shè)計是以STC89C52為單片機,LCD為顯示器設(shè)計的簡易計算器,所設(shè)計的計算器將完成兩位數(shù)的加、減、乘、除等功能。通過本次課程設(shè)計,進(jìn)一步掌握單片機知識,知道AT89

4、S52單片機的原理、編程和各種功能的應(yīng)用,了解簡易計算器的工作原理,初步掌握計算器的硬軟件設(shè)計、編寫、調(diào)試和仿真,充分提高動手能力和排除故障的能力,同時通過課程設(shè)計加深我們對單片機的認(rèn)識和興趣,發(fā)揮我們的創(chuàng)新能力和動手能力。1. 單片機及其應(yīng)用單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的計算機系統(tǒng)。  1.1 單片機介紹單片微型計算機簡稱單

5、片機,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的縮寫MCU表示單片機,它最早是被用在工業(yè)控制領(lǐng)域。單片機由芯片內(nèi)僅有CPU的專用處理器發(fā)展而來。最早的設(shè)計理念是通過將大量外圍設(shè)備和CPU集成在一個芯片中,使計算機系統(tǒng)更小,更容易集成進(jìn)復(fù)雜的而對體積要求嚴(yán)格的控制設(shè)備當(dāng)中。INTEL的Z80是最早按照這種思想設(shè)計出的處理器,從此以后,單片機和專用處理器的發(fā)展便分道揚鑣單片機是靠程序運行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨特的一些功能,這是別的器件需要費很大力氣才能做到的,有些則是花大力氣也很難做到的。一個不是很復(fù)雜的功能要是用美國

6、50年代開發(fā)的74系列,或者60年代的CD4000系列這些純硬件來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國70年代成功投放市場的系列單片機,結(jié)果就會有天壤之別!只因為單片機的通過你編寫的程序可以實現(xiàn)高智能,高效率,以及高可靠性!單片機的硬件特性:單片機集成度高。單片機包括CPU、4KB容量的ROM(8031 無)、128 B容量的RAM、 2個16位定時/計數(shù)器、4個8位并行口、全雙工串口行口。系統(tǒng)結(jié)構(gòu)簡單,使用方便,實現(xiàn)模塊化。1.2 單片機的應(yīng)用目前單片機滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡(luò)通訊與數(shù)

7、據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領(lǐng)域的機器人、智能儀表、醫(yī)療器械了。因此,單片機的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計算機應(yīng)用與智能化控制的科學(xué)家、工程師。單片機廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域,大致可分如下幾個范疇: (1)在智能儀器儀表上的應(yīng)用 (2)在工業(yè)控制中的應(yīng)用 (3)在家用電器中的應(yīng)用 (4)在計算機網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用 (5)單片機在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用 (6)在各種

8、大型電器中的模塊化應(yīng)用 (7)單片機在汽車設(shè)備領(lǐng)域中的應(yīng)用 此外,單片機在工商,金融,科研、教育,國防航空航天等領(lǐng)域都有著十分廣泛的用途。1.3 AT89S52單片機AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash

9、,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。主要性能1、與MCS-51單片機產(chǎn)品兼容2 、8K字節(jié)在系統(tǒng)可編程Flash存儲器3 、1000次擦寫周期4 、全靜態(tài)操作:0Hz33Hz5 、三級加密程序存儲器6 、32個可編程I/O口線

10、7 、三個16位定時器/計數(shù)器8、八個中斷源9、全雙工UART串行通道10、 低功耗空閑和掉電模式l 1、掉電后中斷可喚醒l 2、看門狗定時器l3、 雙數(shù)據(jù)指針l4、 掉電標(biāo)識符引腳結(jié)構(gòu) 圖1.1引腳結(jié)構(gòu)P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。P1 口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/

11、O 口,p1 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。在flash編程和校驗時,P1口接收低8位地址字節(jié)。引腳號第二功能P1.0 T2(定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出P1.1 T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制)P1.5 MOSI(在系統(tǒng)編程用)P1.6 MISO(在系統(tǒng)

12、編程用)P1.7 SCK(在系統(tǒng)編程用)P2 口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR)時,P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制

13、信號。P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。在flash編程和校驗時,P3口也接收一些控制信號。引腳號第二功能P3.0 RXD(串行輸入)P3.1 TXD(串行輸出)P3.2 INT0(外部中斷0)P3.3 INT0(外部中斷0)P3.4 T0(定時器0外部輸入)P3.5 T1(定時器1外部輸入)P3.6 WR(外部

14、數(shù)據(jù)存儲器寫選通)P3.7 RD(外部數(shù)據(jù)存儲器寫選通)RST: 復(fù)位輸入。晶振工作時,RST腳持續(xù)2 個機器周期高電平將使單片機復(fù)位??撮T狗計時完成后,RST 腳輸出96 個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8 位地址的輸出脈沖。在flash編程時,此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將

15、會跳過。如果需要,通過將地址為8EH的SFR的第0位置“1”,ALE操作將無效。這一位置“1”,ALE 僅在執(zhí)行MOVX 或MOVC指令時有效。否則,ALE 將被微弱拉高。這個ALE 使能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對微控制器處于外部執(zhí)行模式下無效。PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。2. 硬件設(shè)計2.1 系統(tǒng)框圖本文所設(shè)計的簡易計算器顯示系統(tǒng)由STC89C52單片機及其最小系統(tǒng)、LCD1602液晶顯示和矩陣鍵盤等部分組成。其系統(tǒng)框圖如圖2.1所示。圖2.1 簡易計算器系統(tǒng)框圖2.2 最小系統(tǒng)單片機最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元

16、件組成的單片機可以工作的系統(tǒng)。對51系列單片機來說,最小系統(tǒng)一般應(yīng)該包括:單片機、晶振電路、復(fù)位電路。如圖2.2為單片機的最小系統(tǒng)。 圖2.2 STC89C52最小系統(tǒng)STC89C52 單片機概述:STC89C52是一個低功耗,高性能CMOS 8位單片機,功能強大的微型計算機的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。STC89C52具有如下特點:40個引腳,8k的flash存儲器,128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(IO)口,5 個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,

17、片內(nèi)時鐘振蕩器。2.3 矩陣鍵盤鍵盤是單片機系統(tǒng)中最常用的人機對話輸入設(shè)備,用戶通過鍵盤向單片機輸入數(shù)據(jù)或指令。目前市場上鍵盤有獨立鍵盤和矩陣鍵盤,經(jīng)過多方考量,本設(shè)計采用矩陣鍵盤。在鍵盤中按鍵數(shù)量較多時,為了減少IO口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口就可以構(gòu)成4*4=16個按鍵,比直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯。所以,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤較為合理。2.3.1 獨立鍵盤與矩陣鍵盤的區(qū)別計算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨立按鍵的方式,在

18、這種情況下,編程會比較簡單,但是會占用大量的IO口資源,因此在很多情況下都不采用這種方式。矩陣鍵盤掃描程序的優(yōu)點在于,不用專門的按鍵延時程序,提高了CPU效率,也不用中斷來掃描鍵盤,節(jié)省了硬件資源。此外,本鍵盤掃描程序每次掃描占用CPU時最短,不論有鍵按下或者無鍵按下都可以在很短的時間完成一次掃描。2.3.2 矩陣鍵盤與單片機的接口電路下圖為矩陣鍵盤與單片機的接口電路圖,由圖可知,當(dāng)無按鍵閉合時, P10P13與P14P17之間開路;當(dāng)有鍵閉合時,與閉合鍵相連的兩條IO口線之間短路。 圖2.3 矩陣鍵盤接口電路2.4 LCD16022.4.1 LCD1602液晶簡介本設(shè)計使用LCD1602液晶

19、顯示器來顯示。液晶是介于固態(tài)和液態(tài)間的有機化合物,將其加熱會變成透明液態(tài),冷卻后變成結(jié)晶的混作固態(tài)。在點擊的作用下,產(chǎn)生冷熱變化,從而影響它的透光性,來達(dá)到顯示的目的。1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊,它有若干個5*7或者5*11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔,每行之間也有也有間隔,起到了字符間距和行間距的作用,所以它不能顯示圖形 。LCD1602液晶顯示器具有以下幾個優(yōu)點:低壓、微功耗、顯示信息量大、壽命長、無輻射、無污染。2.4.2 LCD1602與單片機的接口電路1602液晶模塊內(nèi)部的控

20、制器共有11條控制指令,豐富的指令可以完成液晶的時序控制、工作方式設(shè)置和數(shù)據(jù)顯示等。本設(shè)計采用的是LCD1602液晶模塊,是標(biāo)準(zhǔn)的16針插座,接口電路如下圖所示: 圖2.4 LCD1602接口電路知道接口圖后,還要了解每個引腳接口的說明,引腳接口說明如下表所示: 編號 符號 引腳說明編號 符號 引腳說明 1 VSS 電源地 9 D2 數(shù)據(jù) 2 VDD 電源正極 10 D3 數(shù)據(jù) 3 VL 液晶顯示偏壓 11 D4 數(shù)據(jù) 4 RS 數(shù)據(jù)/命令選擇 12 D5 數(shù)據(jù) 5 R/W 讀/寫選擇 13 D6 數(shù)據(jù) 6 E 使能信號 14 D7 數(shù)據(jù) 7 D0 數(shù)據(jù) 15 BLA 背光源正極 8 D1 數(shù)

21、據(jù) 16 BLK 背光源負(fù)極表2.4 引腳接口說明表3.軟件設(shè)計3.1矩陣鍵盤掃描原理如圖2.3所示,初始化時,將P1.4置為低電平,通過與0x0f 相與來判斷所按下的鍵,此次為掃描位于P1.4那一行的鍵,若相與結(jié)果為0x0e時說明P1.0所檢測出的為低電平,閉合的鍵應(yīng)為P1.4行與P1.0列的交叉處的鍵。若相與結(jié)果為0x0d則P1.1所檢測為低電平,閉合的鍵應(yīng)為P1.4行與P1.1列的交叉處的鍵。若相與結(jié)果為0x0b則P1.2所檢測為低電平,閉合的鍵應(yīng)為P1.4行與P1.2列的交叉處的鍵。若相與結(jié)果為0x07則P1.3所檢測為低電平,閉合的鍵應(yīng)為P1.4行與P1.3列的交叉處的鍵。要把16個

22、鍵盤全部掃描完需要進(jìn)行4次這樣的逐行掃描,所用方法相同程序類似分別另P1.5,P1.6,P1.7為低電平執(zhí)行相同操作。判斷有無按鍵按下的方法:第一步,置列線P14P17為輸入狀態(tài),從行線P10P13輸出低電平,讀入列線數(shù)據(jù),若某一列線為低電平,則該列線上有鍵閉合。第二步,行線輪流輸出低電平,從列線P14P17讀入數(shù)據(jù),若有某一列為低電平,則對應(yīng)行線上有鍵按下。綜合一二兩步的結(jié)果,可確定按鍵編號。但是鍵閉合一次只能進(jìn)行一次鍵功能操作,因此須等到按鍵釋放后,再進(jìn)行鍵功能操作,否則按一次鍵,有可能會連續(xù)多次進(jìn)行同樣的鍵操作。 圖2.3 矩陣鍵盤接口電路3.2 LCD1602的軟件設(shè)計3.2.1 LC

23、D1602的指令說明1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3.2所示。 表 3.2控制命令表序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容如上表所示,160

24、2液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。(1為高電平、0為低電平) 3.2.2 LCD1602的時序圖LCD1602與HD44780相兼容的芯片時序表如下:表3.3基本操作時序表讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無讀寫操作時序圖如下: 圖3.2 讀操作時序圖 圖3.3 寫操作時序圖3.3 主程序設(shè)計在程序設(shè)計方法上,模塊化程序設(shè)計是單片機應(yīng)用中最常用的程序設(shè)計方法。

25、設(shè)計的中心思想是把一個復(fù)雜應(yīng)用程序按整體功能劃分成若干相對獨立的程序模塊,各模塊可以單獨設(shè)計,編程和調(diào)試,然后組合起來。這種方法便于設(shè)計和調(diào)試,容易實現(xiàn)多個程序共存,但各個模塊之間的連接有一定的難度根據(jù)需要我們可以采用自上而下的程序設(shè)計方法,此方法先從主程序開始設(shè)計, 然后再制作各從屬程序和子程序,層層細(xì)化逐步求精,最終完成一個復(fù)雜程序的設(shè)計。這種方法比較符合人們的日常思維,缺點是一級的程序錯誤會對整個程序產(chǎn)生影響。程序流程圖如圖3.3 圖3.4主程序流程圖3.4 源程序見附錄3.5 調(diào)試結(jié)果在查找了相關(guān)書籍后編寫出程序,并根據(jù)程序焊接所需要的元器件,將各類元器件及管腳座焊接完畢后,插入單片機

26、、LCD顯示屏、矩陣鍵盤等各類芯片。隨后進(jìn)行功能驗證。加、減、乘、除運算和LCD液晶顯示。1)上電后,屏幕初始化。 2)計算。按下數(shù)字鍵,屏幕顯示按下的數(shù)字,再按下加、減、乘、除符號鍵,然后再按下數(shù)字鍵,最后按下“”號鍵,屏幕即顯示出計算結(jié)果。本次計算器可實現(xiàn)兩位數(shù)間的計算。 3)如果要再次計算,可以按下清零鍵清零,或者按下單片機的復(fù)位鍵,重新初始化。經(jīng)過以上步驟驗證可知,實驗?zāi)繕?biāo)功能基本實現(xiàn),設(shè)計成功。 圖3.5 調(diào)試結(jié)果圖4. 設(shè)計小結(jié)這次的課題是基于STC89C52的簡易計算器設(shè)計,本設(shè)計采用了STC89C52芯片,基本上實現(xiàn)了利用單片機進(jìn)行了一個 簡單的計算器設(shè)計,允許對輸入數(shù)據(jù)進(jìn)行加

27、、減、乘、除運算以及液晶 1602 進(jìn)行顯示。通過設(shè)計簡易計算器的過程中我掌握了單片機的基本原理及其各種應(yīng)用,對它的各種硬件接口與軟件設(shè)計方法有較深入的認(rèn)識。通過對電路原理圖、電路仿真、掌握了對proteus仿真軟件的使用。在實驗前我先是在網(wǎng)上和圖書館找了一些前輩所設(shè)計的計算器方案進(jìn)行學(xué)習(xí)參考,一開始認(rèn)為簡易計算器制作起來結(jié)構(gòu)相對簡單,涉及的知識也有文獻(xiàn)可查詢,除了程序繁瑣一些,其他都還好。但在實際制作過程中并不是這么簡單,我們遇到了許多問題,不僅僅是專業(yè)知識上的問題,還存在組員之間的意見不同等。最后在老師的指導(dǎo)和組員之間的磨合,都克服了困難,完成了設(shè)計。這次一次課程設(shè)計我們不僅將專業(yè)知識融會

28、貫通,還提高了動手能力和分工合作,通過課程設(shè)計,我們對單片機的認(rèn)識也有所提升。在用單片機實現(xiàn)簡易計算的設(shè)計中使用到了AT89s52、LCD1602及其4*4鍵盤的使用。在設(shè)計過程中我通過在網(wǎng)上和圖書館查閱資料,收集了關(guān)于單片機和液晶屏LCD1602顯示方面的資料,通過對這些資料的學(xué)習(xí),我了解了單片機的基本結(jié)構(gòu)和單片機在生活和生產(chǎn)中所發(fā)揮的作用;液晶屏LCD1602的原理和使用。參考文獻(xiàn)1徐志保,基于工程導(dǎo)向的單片機實戰(zhàn)教程,20112郭天祥,新概念51單片機c語言教程.北京:電子工業(yè)出版社,20093馬忠梅,單片機的C語言應(yīng)用程序設(shè)計.北京:北京航空航天大學(xué)出版社,19974張毅剛,單片機原理

29、及應(yīng)用.北京,高等教育出版社,20085譚浩強,C程序設(shè)計(第二版)M.北京:清華大學(xué)出版社,20036余錫存,曹國華,單片機原理及接口技術(shù).西安:西安電子科技大學(xué)出版社,200024附錄#include<reg51.h> /包含單片機寄存器的頭文件#include<intrins.h> /包含_nop_()函數(shù)定義的頭文件#include<math.h>sbit RS=P20; /寄存器選擇位,將RS位定義為P2.0引腳sbit RW=P21; /讀寫選擇位,將RW位定義為P2.1引腳sbit E=P22; /使能信號位,將E位定義為P2.2引腳sbit

30、BF=P17; /忙碌標(biāo)志位,#define NO_KEY_PRESS 0xffunsigned char code tab=0xb7,0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb;unsigned char code num="0123456789"unsigned long num1,num2,alg;unsigned char flag;void delay1ms() unsigned char i,j; for(i=0;i<10;i+) for(j=0;j<15;j+) ; void delay(unsigne

31、d char n) unsigned char i;for(i=0;i<n;i+) delay1ms(); /*函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)返回值:result。result=1,忙碌;result=0,不忙*/ unsigned char BusyTest(void) bit result;RS=0; /根據(jù)規(guī)定,RS為低電平,RW為高電平時,可以讀狀態(tài) RW=1; E=1; /E=1,才允許讀寫 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應(yīng)時間 result=BF; /將忙碌標(biāo)志電平賦給resultE=0; r

32、eturn result; /*函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊入口參數(shù):dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根據(jù)規(guī)定,RS和R/W同時為低電平時,可以寫入指令 RW=0; E=0; /E置低電平(根據(jù)表8-6,寫指令時,E為高脈沖, / 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0" _nop_(); _nop_(); /空操作兩個機器周期,給硬件反應(yīng)時間 P1=dictate; /將數(shù)據(jù)送入P1口,即寫入指令或地址

33、 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應(yīng)時間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應(yīng)時間 E=0; /當(dāng)E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令 /*函數(shù)功能:指定字符顯示的實際地址入口參數(shù):x*/ void WriteAddress(unsigned char x) WriteInstruction(x|0x80); /顯示位置的確定方法規(guī)定為"80H+地址碼x" /*函數(shù)功能:將數(shù)據(jù)(字符的標(biāo)準(zhǔn)ASCII碼)寫

34、入液晶模塊入口參數(shù):y(為字符常量)*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS為高電平,RW為低電平時,可以寫入數(shù)據(jù) RW=0; E=0; /E置低電平(根據(jù)表8-6,寫指令時,E為高脈沖, / 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0" P1=y; /將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應(yīng)時間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop

35、_(); /空操作四個機器周期,給硬件反應(yīng)時間 E=0; /當(dāng)E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令 /*函數(shù)功能:對LCD的顯示模式進(jìn)行初始化設(shè)置*/void LcdInitiate(void) delay(15); /延時15ms,首次寫指令時應(yīng)給LCD一段較長的反應(yīng)時間 WriteInstruction(0x38); /顯示模式設(shè)置:16×2顯示,5×7點陣,8位數(shù)據(jù)接口delay(5); /延時5msWriteInstruction(0x38);delay(5);WriteInstruction(0x38);delay(5);WriteInstruction

36、(0x0c); /顯示模式設(shè)置:顯示開,有光標(biāo),光標(biāo)閃爍delay(5);WriteInstruction(0x06); /顯示模式設(shè)置:光標(biāo)右移,字符不移delay(5);WriteInstruction(0x01); /清屏幕指令,將以前的顯示內(nèi)容清除delay(5); unsigned char keyscan()/鍵盤掃描,返回掃描值 unsigned char temp1,temp2,key;P0=0xf0;if(P0!=0xf0)delay(10);if(P0!=0xf0)temp1=P0;P0=0x0f;_nop_();_nop_();_nop_();temp2=P0;key=temp1|temp2;while(P0!=0x0f);return key;return NO_KEY_PRESS; unsigned char key_inquiry()/對鍵盤掃描值譯碼并顯示unsigned char i,key; key=keyscan();if(key!=NO_KEY_PRESS)if(flag)/按等于號若再次計算則將之前的數(shù)值清零WriteInstruction(0x01);delay(5);flag=0;switch(key)case 0x7e:WriteData('+');return '+'

溫馨提示

  • 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

提交評論