單片機簡易計算機論文_第1頁
單片機簡易計算機論文_第2頁
單片機簡易計算機論文_第3頁
單片機簡易計算機論文_第4頁
單片機簡易計算機論文_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、畢 業(yè) 論 文(設(shè)計) 題 目:單片機的簡易計算器學(xué)生姓名 指導(dǎo)教師 系(部) 信息工程系 專 業(yè) 電子信息工程技術(shù)班級 學(xué)號 提交日期 年 月 日 答辯日期 年 月 日 年 月 日基于單片機的簡易計算器摘 要在很多領(lǐng)域的數(shù)據(jù)處理中要用到數(shù)學(xué)運算,作為計算機自動處理系統(tǒng)更顯得重要。此項目設(shè)計以單片機為核心部件的計算器,采用4*4矩陣式鍵盤,16個鍵依次對應(yīng)09、“+”、“-”、“*”、“/”、“=”和清除鍵。使用單片機最小應(yīng)用系統(tǒng)1模塊,簡單方便。采用LCD1602A作顯示。本次設(shè)計是用AT89S51單片機、LCD顯示器、控制按鍵為元件來設(shè)計的計算器。利用此設(shè)計熟悉單片機微控制器及C語言編程,

2、對其片資源及各個I/O端口的功能和基本用途的了解。掌握Microsoft Visual C+ 6.0應(yīng)用程序開發(fā)環(huán)境,常用的LCD顯示器的使用方法和一般鍵盤的使用方法。本計算器系統(tǒng)簡單,實用性強,成本低,使用維護(hù)方便,軟件功能強,運行穩(wěn)定可靠等優(yōu)點。關(guān)鍵詞:單片機,計算器,矩陣式鍵盤,LCD顯示目錄第一章 論緒11.1 課題簡介11.2 設(shè)計目的1第二章 計算器系統(tǒng)簡介22.1 單片機發(fā)展現(xiàn)狀22.2 計算器系統(tǒng)現(xiàn)狀32.3 MCS-51系列單片機簡介32.4為兩種復(fù)位方式和兩種時鐘方式:62.4 矩陣按鍵8第三章 硬件系統(tǒng)設(shè)計83.1 鍵盤接口電路93.2 LCD顯示模塊103.3 運算模塊

3、10第四章 軟件設(shè)計114.1 匯編語言和C語言的特點及選擇114.2 鍵掃程序設(shè)計134.3 算術(shù)運算程序設(shè)計174.4 顯示程序設(shè)計20第五章 系統(tǒng)調(diào)試與存在的問題245.1 硬件調(diào)試245.2 軟件調(diào)試24總 結(jié)25參考文獻(xiàn)26附 錄2729第一章 論緒 1.1 課題簡介當(dāng)今社會,隨著人們物質(zhì)生活的不斷提高,電子產(chǎn)品已經(jīng)走進(jìn)了家家戶戶,無論是生活或?qū)W習(xí),還是娛樂和消遣幾乎樣樣都離不開電子產(chǎn)品,大型復(fù)雜的計算能力是人腦所不能勝任的,而且比較容易出錯。計算器作為一種快速通用的計算工具方便了用戶的使用。計算器可謂是我們最親密的電子伙伴之一。本設(shè)計著重在于分析計算器軟件和開發(fā)過程中的環(huán)節(jié)和步驟,

4、并從實踐經(jīng)驗出發(fā)對計算器設(shè)計做了詳細(xì)的分析和研究。單片機由于其微小的體積和極低的成本,廣泛的應(yīng)用于家用電器、工業(yè)控制等領(lǐng)域中。在工業(yè)生產(chǎn)中。單片微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片微型計算機簡稱單片機,特別適用于控制領(lǐng)域,故又稱為微控制器。本系統(tǒng)就是充分利用了8051芯片的I/O引腳。系統(tǒng)以采用MCS-51系列單片機Intel8051為中心器件來設(shè)計計算器控制器,實現(xiàn)了能根據(jù)實際輸入值顯示并存儲的功能,計算程序則是參照教材。至于位數(shù)和功能,如果有需要可以通過設(shè)計擴(kuò)充原系統(tǒng)來實現(xiàn) 。1.2 設(shè)計目的通過本次課題設(shè)計,應(yīng)用單片機應(yīng)用基礎(chǔ)、計算機應(yīng)用基礎(chǔ)等所學(xué)相關(guān)知識及查

5、閱資料,完成簡易計算器的設(shè)計,以達(dá)到理論與實踐更好的結(jié)合、進(jìn)一步提高綜合運用所學(xué)知識和設(shè)計的能力的目的。通過本次設(shè)計的訓(xùn)練,可以使我在基本思路和基本方法上對基于MCS-51單片機的嵌入式系統(tǒng)設(shè)計有一個比較感性的認(rèn)識,并具備一定程度的設(shè)計能力。1.3 設(shè)計任務(wù)在本次課程設(shè)計中,主要完成如下方面的設(shè)計任務(wù):1、簡要闡述單片機技術(shù)發(fā)展的國內(nèi)外現(xiàn)狀及LED動態(tài)顯示和矩陣鍵盤基本原理;2、掌握MCS-51系列某種產(chǎn)品(例如8051)的最小電路及外圍擴(kuò)展電路的設(shè)計方法;3、了解單片機數(shù)據(jù)轉(zhuǎn)換功能及工作過程;4、完成主要功能模塊的硬件電路設(shè)計及必要的參數(shù)確定;5、用protel軟件完成原理電路圖的繪制;第二

6、章 計算器系統(tǒng)簡介目前,51系列單片機在我國的各行各業(yè)得到了廣泛應(yīng)用,各大專業(yè)院校、職業(yè)培訓(xùn)學(xué)校,均開設(shè)了單片機原理與應(yīng)用方面的課程,這是一門技術(shù)性和實踐性很強的學(xué)科,必須通過一系列的軟硬件實驗、理論聯(lián)系實際,才能學(xué)好、學(xué)懂,取得較好的學(xué)習(xí)效果。2.1 單片機發(fā)展現(xiàn)狀單片機的發(fā)展趨勢:低功耗CMOS化;微型單片化;主流與多品種共存;單片機從8位、16位到32位,數(shù)不勝數(shù),應(yīng)有盡有,有與主流C51系列兼容的,也有不兼容的,但它們各具特色,互成互補,為單片機的應(yīng)用提供廣闊的天地??v觀單片機的發(fā)展歷程,可以發(fā)現(xiàn)單片機的發(fā)展趨勢大致有:1、低功耗CMOS化MCS-51系列的8051推出時的功耗達(dá)630

7、mW,而現(xiàn)在的單片機普遍都在100mW左右,隨著對單片機功耗的要求越來越低,現(xiàn)在的各個單片機制造商基本都采用了CMOS(互補金屬氧化物半導(dǎo)體工藝)。像80C51就采用了HMOS(即高密度金屬氧化物半導(dǎo)體工藝)和CHMOS(互補高密度金屬氧化物半導(dǎo)體工藝)。CMOS雖然功耗較低,但由于其物理特征決定了其工作速度不夠高,而CHMOS則具備了高速和低功耗的特點,這些特征,更適合于在要求低功耗象電池供電的應(yīng)用場合。所以這種工藝將是今后一段時期內(nèi)單片機發(fā)展的主要途徑。2、微型單片化 現(xiàn)在常規(guī)的單片機普遍都是將中央處理器(CPU)、隨機存取數(shù)據(jù)存儲(RAM)、只讀程序存儲器(ROM)、并行和串行通信接口、

8、中斷系統(tǒng)、定時電路、時鐘電路集成在一塊單一的芯片上,增強型的單片機集成了如A/D轉(zhuǎn)換器、PMW(脈寬調(diào)制電路)、WDT(看門狗),有些單片機將LCD(液晶)驅(qū)動電路都集成在單一的芯片上,這樣單片機包含的單元電路就更多,功能就更強大。甚至單片機廠商還可以根據(jù)用戶的要求量身定做,制造出具有自己特色的單片機芯片。此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機除了功能強和功耗低外,還要求其體積要小?,F(xiàn)在的許多單片機都具有多種封裝形式,其中SMD(表面封裝)越來越受歡迎,使得由單片機構(gòu)成的系統(tǒng)正朝微型化方向發(fā)展。 3、主流與多品種共存現(xiàn)在雖然單片機的品種繁多,各具特色,但仍是以80C51為核心的

9、單片機占主流,兼容其結(jié)構(gòu)和指令系統(tǒng)的有PHILIPS公司的產(chǎn)品,ATMEL公司的產(chǎn)品和中國臺灣的Winbond系列單片機。因此以80C51為核心的單片機占據(jù)了半壁江山。而Microchip公司的PIC精簡指令集(RISC)也有著強勁的發(fā)展勢頭,中國臺灣的HOLTEK公司近年的單片機產(chǎn)量與日俱增,以其價低質(zhì)優(yōu)的優(yōu)勢,占據(jù)一定的市場份額。此外還有MOTOROLA公司的產(chǎn)品,日本幾大公司的專用單片機。在一定的時期內(nèi),這種形勢將得以延續(xù),將不存在某個單片機一統(tǒng)天下的壟斷局面,走的是依存互補,相輔相成、共同發(fā)展的道路。2.2 計算器系統(tǒng)現(xiàn)狀計算器一般由運算器、控制器、存儲器、鍵盤、顯示器、電源和一些可選

10、外圍設(shè)備及電子配件通過人工或機器設(shè)備組成。低檔計算器的運算器、控制器由數(shù)字邏輯電路實現(xiàn)簡單的串行運算,其隨機存儲器只有一、二個單元,供累加存儲用。高檔計算器由微處理器和只讀存儲器實現(xiàn)各種復(fù)雜的運算程序,有較多的隨機存儲單元以存放輸入程序和數(shù)據(jù)。鍵盤是計算器的輸入部件,一般采用接觸式或傳感式。為減小計算器的尺寸,一鍵常常有多種功能。顯示器是計算器的輸出部件,有發(fā)光二極管顯示器和液晶顯示器等。除顯示計算結(jié)果外,還常有溢出指示、錯誤指示等。計算器電源采用交流轉(zhuǎn)換器或電池,電池可用交流轉(zhuǎn)換器或太陽能轉(zhuǎn)換器再充電。為節(jié)省電能,計算器都采用CMOS工藝制作的大規(guī)模集成電路(見互補金屬-氧化物-半導(dǎo)體集成電

11、路),并在內(nèi)部裝有定時不操作自動斷電電路。計算器可選用的外圍設(shè)備有微型打印機、盒式磁帶機和磁卡機等。本計算器是以MCS-51系列8051單片機為核心構(gòu)成的簡易計算器系統(tǒng)。該系統(tǒng)通過單片機控制,實現(xiàn)對4*4鍵盤掃描進(jìn)行實時的按鍵檢測,并把檢測數(shù)據(jù)存儲下來。整個計算器系統(tǒng)的工作過程為:首先存儲單元初始化,顯示初始值和鍵盤掃描,判斷按鍵位置,查表得出按鍵值,單片機則對數(shù)據(jù)進(jìn)行儲存與相應(yīng)處理轉(zhuǎn)換,之后送入LED顯示器動態(tài)顯示。整個系統(tǒng)可分為三個主要功能模塊:功能模塊一,實時鍵盤掃描;功能模塊二,數(shù)據(jù)轉(zhuǎn)換成顯示器顯示;功能模塊三,顯示器動態(tài)顯示。2.3 MCS-51系列單片機簡介8051是MCS-51系

12、列單片機的典型產(chǎn)品,以這一代表性的機型進(jìn)行系統(tǒng)的講解。8051單片機包含中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,其內(nèi)部結(jié)構(gòu)如圖2.1所示,現(xiàn)在分別加以說明:圖2.1 8051內(nèi)部結(jié)構(gòu)圖中央處理器:中央處理器(CPU)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運算和控制輸入輸出功能等操作。數(shù)據(jù)存儲器(RAM):8051內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄

13、存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個,可存放讀寫的數(shù)據(jù),運算的中間結(jié)果或用戶定義的字型表。程序存儲器(ROM):8051共有4096個8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。定時/計數(shù)器:8051有兩個16位的可編程定時/計數(shù)器,以實現(xiàn)定時或計數(shù)產(chǎn)生中斷,用于控制程序轉(zhuǎn)向。并行輸入輸出(I/O)口:8051共有4組8位I/O口(P0、 P1、P2和P3),用于對外部數(shù)據(jù)的傳輸。全雙工串行口:8051內(nèi)置一個全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。中斷

14、系統(tǒng):8051具備較完善的中斷功能,有兩個外中斷、兩個定時/計數(shù)器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。時鐘電路:8051內(nèi)置最高頻率達(dá)12MHz的時鐘電路,用于產(chǎn)生整個單片機運行的脈沖時序,但8051單片機需外置振蕩電容。單片機的結(jié)構(gòu)有兩種類型,一種是程序存儲器和數(shù)據(jù)存儲器分開的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計算機廣泛使用的程序存儲器與數(shù)據(jù)存儲器合二為一的結(jié)構(gòu),即普林斯頓(Princeton)結(jié)構(gòu)。INTEL的 MCS-51系列單片機采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的MCS-96系列單片機則采用普林斯頓結(jié)構(gòu)。下圖是MCS-51系列單

15、片機的內(nèi)部結(jié)構(gòu)示意圖圖2.2MCS-51內(nèi)部結(jié)構(gòu)MCS-51的引腳說明:MCS-51系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直插DIP結(jié)構(gòu),下圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在對這些引腳的功能加以說明:如圖2.3所示。圖2.3 雙列直插式封裝引腳圖Pin9:RESET/Vpc復(fù)位信號復(fù)用腳,當(dāng)8051通電,時鐘電路開始工作,在RESET引腳上出現(xiàn)24個時鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫

16、入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),8051的初始態(tài)。8051的復(fù)位方式可以是自動復(fù)位,也可以是手動復(fù)位。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機內(nèi)部RAM的數(shù)據(jù)不丟失。見下圖2.4為兩種復(fù)位方式和兩種時鐘方式:圖2.4上電自動復(fù)位電路 圖2.5手動復(fù)位電路 圖2.6內(nèi)部時鐘方式 圖2.7外部時鐘方式Pin30:ALE/當(dāng)訪問外部程序器時,ALE(地址鎖存)的輸出用于鎖存地址的低位字節(jié)。而訪問內(nèi)部程序存儲器時,ALE端

17、將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當(dāng)作一個時鐘向外輸出。它還有一個特點是,當(dāng)訪問外部程序存儲器時,ALE會跳過一個脈沖。如果單片機是EPROM,在編程其間,將用于輸入編程脈沖。Pin29:當(dāng)訪問外部程序存儲器時,此引腳輸出負(fù)脈沖選通信號,PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。Pin31:EA/Vpp程序存儲器的內(nèi)外部選通線,8051和8751單片機,內(nèi)置有4kB的程序存儲器,當(dāng)EA為高電平并且程序地址小于4kB時,讀取內(nèi)部程序存儲器指令數(shù)據(jù),而超過4kB地址則讀取外部指令數(shù)據(jù)。如EA為

18、低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內(nèi)部無程序存儲器的8031,EA端必須接地。在編程時,EA/Vpp腳還需加上21V的編程電壓。2.4 矩陣按鍵鍵盤是單片機系統(tǒng)中最常用的人機對話輸入設(shè)備,用戶通過鍵盤向單片機輸入數(shù)據(jù)或指令。鍵盤控制程序需完成的任務(wù)有:監(jiān)測是否有鍵按下,有鍵按下時,若無硬件去抖動電路時,應(yīng)用軟件延時方法消除按鍵抖動影響;當(dāng)有多個鍵同時按下時,只處理一個按鍵,不管一次按鍵持續(xù)多長時間,僅執(zhí)行一次按鍵功能程序。矩陣按鍵掃描程序是一種節(jié)省I/O口的方法,按鍵數(shù)目越多節(jié)省I/O口就越可觀,思路:先判斷某一列(行)是否有按鍵按下,再判斷該行(列)是哪一只鍵按下。

19、但是,在程序的寫法上,采用了最簡單的方法,使得程序效率最高。本程序中,如果檢測到某鍵按下了,就不再檢測其它的按鍵,這完全能滿足絕大多數(shù)需要,又能節(jié)省大量的CPU時間。2.5 計算器設(shè)計總體思想根據(jù)功能和指示要求,本系統(tǒng)選用以MCS-51單片機為主控機。通過擴(kuò)展必要的外圍接口電路,實現(xiàn)對計算器的設(shè)計。具體設(shè)計如下:1、由于要設(shè)計的是簡單的計算器,可以進(jìn)行四則運算,為了得到教好的顯示效果,采用LCD顯示數(shù)據(jù)和結(jié)果。2、另外鍵盤包括數(shù)字鍵(0-9)、符號鍵(+、-、*、/)、清除鍵和等號鍵,故只需要16個按鍵即可,設(shè)計中采用集成的計算機鍵盤。3、執(zhí)行程序:開機顯示零,等待鍵入數(shù)值,當(dāng)鍵入數(shù)字,通過L

20、CD顯示出來,當(dāng)鍵入+、-、*、/運算符,計算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲,并等待再次鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號就會在LCD上輸出運算結(jié)果。4、錯誤提示:當(dāng)單片機執(zhí)行程序中有錯誤時,會在LCD上顯示相應(yīng)的提示,如:當(dāng)輸入的數(shù)值或計算器得到的結(jié)果大于計算器的顯示范圍時,計算器會在LCD上提示溢出;當(dāng)除數(shù)為0時,計算器會在LCD上提示錯誤。第三章 硬件系統(tǒng)設(shè)計硬件系統(tǒng)是指構(gòu)成微機系統(tǒng)的實體和裝置,通常由運算器、控制器、存儲器、輸入接口電路和輸入設(shè)備、輸出接口電路和輸出設(shè)備等組成。單片機實質(zhì)上是一個硬件的芯片,在實際應(yīng)用中,通常很難直接和被控對象進(jìn)行電氣連接,必須外加各種擴(kuò)展接口電路、外部設(shè)備

21、、被控對象等硬件和軟件,才能構(gòu)成一個單片機應(yīng)用系統(tǒng)。本設(shè)計選用以AT89S51單片機為主控單元。顯示部分:采用LCD靜態(tài)顯示。按鍵部分,采用4*4鍵盤。 硬件電路原理圖如圖3.1所示:圖3.1 硬件電路原理圖3.1 鍵盤接口電路計算機輸入數(shù)字和其他功能按鍵時要用到很多按鍵,在這種情況下,編程會很簡單,但是會占用大量的I/O口資源,因此在很多情況下都不采用這樣的方式,而是采用矩陣鍵盤的方式。矩陣鍵盤采用四條I/O線作為行線,四條I/O線作為列線組成鍵盤,在行線和列線的每個交叉點上設(shè)置一個按鍵。這樣鍵盤上按鍵的數(shù)量就為4*4個。這樣行列式鍵盤結(jié)構(gòu)能有效的提高單片機系統(tǒng)中I/O口的利用率。計算器的鍵

22、盤布局如圖3.2所示:一般有16個鍵組成,在單片機中正好有一個P端口實現(xiàn)16個按鍵功能,這種形式在單片機系統(tǒng)中最常用。圖3.2 矩陣鍵盤內(nèi)部電路3.2 LCD顯示模塊本設(shè)計采用LCD液晶顯示器來顯示輸出數(shù)據(jù)。LCD的特性有:1、+5V電壓,對比可調(diào)度;2、內(nèi)含復(fù)位電路;3、提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能;4、有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM;5、內(nèi)建有160個5X7點陣的字型的字符發(fā)生器CGROM;6、8個可由用戶自定義的5X7的字符發(fā)生器CGRAM。本設(shè)計通過D0-D7引腳向LCD寫指令字或?qū)憯?shù)據(jù)以使LCD實現(xiàn)不同的功能或顯示相應(yīng)的數(shù)據(jù)。其接口電路如圖3

23、.3所示。圖3.3 LCD接口電路LCD的引腳說明如表3.1所示: 符號引腳說明符號引腳說明VSS電源地DB4Data I/OVDD電源正極(+5V)DB5Data I/OV0液晶顯示偏壓輸入DB6Data I/ORS數(shù)據(jù)/命令選擇端(H/L)DB7Data I/OR/W讀寫控制信號(H/L)CS1片選IC1信號E使能信號CS2片選IC2信號DB0Data I/ORST復(fù)位端(H:正常工作,L:復(fù)位)DB1Data I/OVEE負(fù)電源輸出(-10V)DB2Data I/OBLA背光源正極(+4.2)DB3Data I/OBLK背光源正極3.3 運算模塊MCS-51單片機是在一塊芯片中集成了CP

24、U、RAM、ROM、定時器/計數(shù)器和多功能I/O等計算機所需要的基本功能部件。如果按功能劃分,它由以下功能部件組成,即微處理器(CPU),數(shù)據(jù)存儲器(RAM),程序存儲器(ROM/EPROM),并行I/O口,串行口,定時器/計數(shù)器,中斷系統(tǒng)及特殊功能寄存器(SFR)。單片機是靠程序運行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的一些功能,通過使用單片機編寫的程序可以實現(xiàn)高智能、高效率以及高可靠性,因此采用單片機作為計算器的主要功能部件,可以很快的實現(xiàn)運算功能。運算模塊由鍵盤和顯示屏組成。單片機通過按鍵來實現(xiàn)輸入數(shù)據(jù)和操作方式的控制,在運算過程中,對所設(shè)的數(shù)據(jù)進(jìn)行四則運算時,要先

25、確定選用的是哪一個運算符,若是+或*,則要判斷結(jié)果是否會溢出,溢出則顯示錯誤提示,沒有溢出則顯示運算結(jié)果,若是/,則要判斷除數(shù)是否為零,為零時顯示錯誤提示,不為零顯示運算結(jié)果。第四章 軟件設(shè)計4.1 匯編語言和C語言的特點及選擇本設(shè)計是硬件電路和軟件編程相結(jié)合的設(shè)計方案,選擇合適的編程語言是一個重要的環(huán)節(jié)。在單片機的應(yīng)用系統(tǒng)程序設(shè)計時,常用的是匯編語言和C語言。機硬件,程序可讀性和可移植性比較差。而C語言雖然執(zhí)行效率沒有匯編語言高,但語言簡潔,使用方便,靈活,運算豐富,表達(dá)化類型多樣化,數(shù)據(jù)結(jié)構(gòu)類型豐富,具有結(jié)構(gòu)化的控制語句,程序設(shè)計自由度大,有很好的可重用性,可移植性等特點。由于現(xiàn)在單片機的

26、發(fā)展已經(jīng)達(dá)到了很高的水平,內(nèi)部的各種資源相當(dāng)?shù)呢S富,CPU的處理速度非常的快。用C語言來控制單片機無疑是一個理想的選擇。所以在本設(shè)計中采用C語言編寫軟件程序。主函數(shù)設(shè)計:/*函數(shù)聲明*/#include<reg51.h>#include<math.h>#define uchar unsigned char#define uint unsigned intchar translate(int keycode);void arithmetic();void init_LCM();void write_data(char ddata);void write_com(char

27、command);void check_BF();void clearLCD();void display(long a);void dealerror(); void dataoverflow();/*定義變量和數(shù)組*/long x=0,y=0,num=0;int operators,input,iny=0;char key;char error5="error"char overflow8="overflow"sbit EN=P34;sbit R_W=P35;sbit RS=P36;/*主函數(shù)*/main()EA=1;EX0=1;IT0=1;P2=0

28、xff;display(0);init_LCM();write_data(0x30);while(1)4.2 鍵掃程序設(shè)計鍵掃程序的過程為:開始時,先判斷是否有鍵閉合,無鍵閉合時,返回繼續(xù)判斷,有鍵閉合時,先去抖動,然后確定是否有鍵按下,若無鍵按下,則返回繼續(xù)判斷是否有鍵閉合,若有鍵按下,則判斷鍵號,然后釋放,若釋放按鍵完畢,則返回,若沒有釋放按鍵,則返回繼續(xù)釋放。其流程圖如圖4.1所示。圖4.1 鍵掃程序流程圖鍵掃程序設(shè)計:/*鍵值轉(zhuǎn)化為鍵盤上按鍵值函數(shù)*/char translate(int keycode)switch(keycode)case 0:return '7'b

29、reak;case 1:return '4'break;case 2:return '1'break;case 3:return 'c'break;case 4:return '8'break;case 5:return '5'break;case 6:return '2'break;case 7:return '0'break;case 8:return '9'break;case 9:return '6'break;case 10:return &

30、#39;3'break;case 11:return '='break;case 12:return '/'break;case 13:return '*'break;case 14:return '-'break;case 15:return '+'break; /*外部中斷0處理函數(shù)*/void INT_0(void) interrupt 0 using 0key=translate(P2&0x0f);if(key<='9'&&key>='0&

31、#39;) /判斷按下的鍵是否為數(shù)值num=num*10+(key-'0');if (operators>0)y=num;iny=1;elsex=num;if(num<134217728&&num>-134217728) /當(dāng)前數(shù)值是否超出限定范圍display(num);elsedataoverflow();elseswitch(key)case 'c':x=0;y=0;num=0;iny=0;operators=0;display(num);break;case '=':arithmetic();iny=0;

32、operators=0;num=0;break;case '+': if (operators)arithmetic();operators=1;num=0;break;case '-': if (operators)arithmetic();operators=2;num=0;break;case '*': if (operators)arithmetic();operators=3;num=0;break;case '/':if (operators)arithmetic();operators=4;num=0;break;4

33、.3 算術(shù)運算程序設(shè)計算術(shù)運算程序的過程為:先判斷輸入的運算符是+、-、*、/ 中的哪一個,若是+或-,則要判斷運算結(jié)果是否溢出,溢出則顯示錯誤信息,沒溢出就顯示運算結(jié)果,若是/,則要先判斷除數(shù)是否為零,為零就顯示錯誤信息,不為零則顯示運算結(jié)果,若是-,則直接顯示運算結(jié)果。其流程圖如圖4.2所示。圖4.2 算術(shù)運算程序設(shè)計流程圖算術(shù)運算程序設(shè)計:/*算術(shù)運算函數(shù)*/void arithmetic()if (iny)switch(operators)case 1:x=x+y;num=x;if(num<134217728&&num>-134217728)display(

34、num);elsedataoverflow();break;case 2:x=x-y;num=x;if(num<134217728&&num>-134217728)display(num);elsedataoverflow();break;case 3:x=x*y;num=x;if(num<134217728&&num>-134217728)display(num);elsedataoverflow();break;case 4:if (y=0)dealerror();elsex=x/y;num=x; if(num<13421772

35、8&&num>-134217728)display(num);elsedataoverflow();break;y=0;4.4 顯示程序設(shè)計顯示程序的過程為:顯示開始時,先進(jìn)行LCD的初始化,判斷是否顯示漢字或ACSII碼或圖形,若不顯示,則返回,若顯示的是漢字或ACSII碼,則進(jìn)行相應(yīng)功能的設(shè)置,然后送地址和數(shù)據(jù),再判斷是否顯示完,顯示完則返回,沒有顯示完則繼續(xù)送地址,若顯示的是圖形,則先進(jìn)行相應(yīng)功能的設(shè)置,再送行地址和列地址,然后送數(shù)據(jù),最后判斷是否顯示完,顯示完則返回,沒有顯示完則繼續(xù)送行地址和列地址。其流程圖如圖4.3所示。圖4.3 顯示程序流程圖LCD顯示程序設(shè)

36、計:/*LCD初始化函數(shù)*/void init_LCM()write_com(0x30);write_com(0x30);write_com(0x30);write_com(0x38);write_com(0x08);write_com(0x01);write_com(0x06);write_com(0x0e);/*LCD寫數(shù)據(jù)函數(shù)*/void write_data(char ddata)RS=1;/*寫指令*/R_W=0;EN=1;/*使能信號開*/P1=ddata;/*將數(shù)據(jù)送入p1口*/EN=0;/*使能信號關(guān)*/check_BF();/*LCD寫指令函數(shù)*/void write_com

37、(char command)RS=0;/*寫指令*/R_W=0;EN=1;/*使能信號開*/P1=command;/*將數(shù)據(jù)送入p1口*/EN=0;/*使能信號關(guān)*/check_BF();/*LCD檢查忙碌函數(shù)*/void check_BF()char i,x=0x80;P1=0xff;while(x&0x80)RS=0;R_W=1;EN=1;x=P1;EN=0;for (i=0;i<10;i+);EN=0;/*關(guān)閉使能信號*/*LCD清屏函數(shù)*/void clearLCD()write_com(0x01);/*LCD顯示函數(shù)*/void display(long a)long temp,b,c=-1;int lenth=1,i,j;clearLCD();if(a<0)a=a*c;write_data('-'); temp=a;while(temp=temp/10)!=0)lenth+;for(i=lenth;i>0;i-)b=1;for(j=0;j<i-1;j+)b=b*10;write_data(

溫馨提示

  • 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

提交評論