864234458基于51單片機(jī)的簡易計(jì)算器設(shè)計(jì)_第1頁
864234458基于51單片機(jī)的簡易計(jì)算器設(shè)計(jì)_第2頁
864234458基于51單片機(jī)的簡易計(jì)算器設(shè)計(jì)_第3頁
864234458基于51單片機(jī)的簡易計(jì)算器設(shè)計(jì)_第4頁
864234458基于51單片機(jī)的簡易計(jì)算器設(shè)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、摘要 課題 摘 要 工程實(shí)踐教學(xué)環(huán)節(jié)是為了學(xué)生能夠更好地鞏固和實(shí)踐所學(xué)專業(yè)知識(shí)而設(shè)置的,在本 次工程實(shí)踐中,我以智能化測量控制儀表原理與設(shè)計(jì) 、 mcs-51 系列單片微型計(jì)算機(jī) 及其應(yīng)用課程中所學(xué)知識(shí)為基礎(chǔ),設(shè)計(jì)了簡易計(jì)算器。本系統(tǒng)以 mcs-51 系列中的 8051 單片機(jī)為核心,能夠?qū)崿F(xiàn)兩位數(shù)的四則運(yùn)算。該系統(tǒng)通過檢測矩陣鍵盤掃描,判斷 是否按鍵,經(jīng)數(shù)據(jù)轉(zhuǎn)換把數(shù)值送入數(shù)碼管動(dòng)態(tài)顯示。 本系統(tǒng)的設(shè)計(jì)說明重點(diǎn)介紹了如下幾方面的內(nèi)容: 1)基于單片機(jī)簡易計(jì)算器的基本功能,同時(shí)對矩陣鍵盤及數(shù)碼管動(dòng)態(tài)顯示原理進(jìn)行 了簡單的闡述; 2)介紹了系統(tǒng)的總體設(shè)計(jì)、給出了系統(tǒng)的整體流程框圖,并對其進(jìn)行了功能

2、模塊劃 分及所采用的元器件進(jìn)行了詳細(xì)說明; 3)對系統(tǒng)各功能模塊的軟、硬件實(shí)現(xiàn)進(jìn)行了詳細(xì)的設(shè)計(jì)說明。 關(guān)鍵詞:關(guān)鍵詞:mcs-51 8051 單片機(jī);計(jì)算器;加減乘除 目錄 目錄 第一章 緒論 .1 1.2 設(shè)計(jì)目的 .1 1.3 設(shè)計(jì)任務(wù) .1 1.4 章節(jié)安排說明.1 第二章 計(jì)算器系統(tǒng)簡介 .3 2.1 單片機(jī)發(fā)展現(xiàn)狀.3 2.2 計(jì)算器系統(tǒng)現(xiàn)狀.4 2.3 簡易計(jì)算器系統(tǒng)簡介.4 第三章 主要器件簡介 .5 3.1 mcs-51 系列單片機(jī)簡介 .5 3.2 其它器件簡介.8 3.2.1 數(shù)碼管顯示 .8 3.2.2 矩陣按鍵 .9 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) .10 4.1 計(jì)算器硬件電

3、路設(shè)計(jì).10 4.2 計(jì)算器程序設(shè)計(jì) .10 4.2.1 存儲(chǔ)單元分配 .10 4.2.2 主程序設(shè)計(jì) .10 4.2.3 數(shù)碼管顯示數(shù)據(jù)轉(zhuǎn)換子程序 .10 4.2.4 數(shù)碼管動(dòng)態(tài)顯示子程序 .11 4.3 系統(tǒng)總框圖: .11 4.4 程序源代碼: .12 4.5 硬件連線圖: .20 結(jié)語 .22 參考文獻(xiàn)參考文獻(xiàn) .23 第一章 緒論 1 第一章 緒論 1.1 課題簡介 單片機(jī)由于其微小的體積和極低的成本,廣泛的應(yīng)用于家用電器、工業(yè)控制等領(lǐng)域 中。在工業(yè)生產(chǎn)中。單片機(jī)微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,也是頗具生命力 的機(jī)種。單片機(jī)微型計(jì)算機(jī)簡稱單片機(jī),特別適用于控制領(lǐng)域,故又稱為微控

4、制器。 本系統(tǒng)就是充分利用了 8051 芯片的 i/o 引腳。系統(tǒng)統(tǒng)采用 msc-51 系列單片機(jī) intel8051 為中心器件來設(shè)計(jì)計(jì)算器控制器,實(shí)現(xiàn)了能根據(jù)實(shí)際輸入值顯示并存儲(chǔ),計(jì)算 程序則是參照教材。至于位數(shù)和功能,如果有需要可以設(shè)計(jì)擴(kuò)充原系統(tǒng)來實(shí)現(xiàn) 。 1.2 設(shè)計(jì)目的 通過本次工程實(shí)踐,運(yùn)用智能化測量控制儀表原理與設(shè)計(jì) 、 mcs-51 系列單片微 型計(jì)算機(jī)及其應(yīng)用所學(xué)知識(shí)及查閱相關(guān)資料,完成簡易計(jì)算器的設(shè)計(jì),達(dá)到理論知識(shí) 與實(shí)踐更好結(jié)合、提高綜合運(yùn)用所學(xué)知識(shí)和設(shè)計(jì)能力的目的。 通過本次設(shè)計(jì)訓(xùn)練,可以使我們在基本思路和基本方法上對基于 mcs-51 單片機(jī)的嵌 入式系統(tǒng)設(shè)計(jì)有一個(gè)比

5、較感性的認(rèn)識(shí),并具備一定程度的設(shè)計(jì)能力。 1.3 設(shè)計(jì)任務(wù) 在本次工程實(shí)踐中,主要完成如下方面的設(shè)計(jì)任務(wù): 1)簡要綜述單片機(jī)技術(shù)發(fā)展的國內(nèi)外現(xiàn)狀及數(shù)碼管動(dòng)態(tài)顯示和矩陣鍵盤基本原理; 2)掌握 mcs-51 系列某種產(chǎn)品(例如 8051)的最小電路及外圍擴(kuò)展電路的設(shè)計(jì)方法; 3)了解單片機(jī)數(shù)據(jù)轉(zhuǎn)換功能及工作過程; 4)完成主要功能模塊的硬件電路設(shè)計(jì)及必要的參數(shù)確定; 5)用 protues 軟件完成原理電路的繪制; 6)完成系統(tǒng)設(shè)計(jì)說明書。 1.4 章節(jié)安排說明 整個(gè)設(shè)計(jì)總共分為四個(gè)章節(jié),第一章是前言部分,主要介紹了設(shè)計(jì)基于單片機(jī)簡易 計(jì)算器的意義、目的及主要內(nèi)容;第二章簡要介紹了單片機(jī)發(fā)展的

6、國內(nèi)外現(xiàn)狀及鍵盤掃 描,數(shù)據(jù)轉(zhuǎn)換,和動(dòng)態(tài)顯示原理進(jìn)行了簡要的說明。第三章是器件簡介,這一部分主要 第一章 緒論 2 介紹了系統(tǒng)的所用主要器件的選擇。第四章是系統(tǒng)詳細(xì)設(shè)計(jì)階段,分為硬件設(shè)計(jì)和程序 設(shè)計(jì)。按照程序設(shè)計(jì)的各部分實(shí)現(xiàn)的功能不同,將整個(gè)軟件系統(tǒng)分成了三個(gè)塊,并對每 一個(gè)功能塊所采用的元器件進(jìn)行了詳細(xì)介紹。此外還編寫了主要功能模塊的基本程序, 詳盡闡述了各模塊的工作過程。還有總流程圖,源代碼,硬器件鋪線圖。 第一章 緒論 3 第二章 計(jì)算器系統(tǒng)簡介 4 第二章 計(jì)算器系統(tǒng)簡介 2.1 單片機(jī)發(fā)展現(xiàn)狀 單片機(jī)的發(fā)展趨勢:低功耗 cmos 化;微型單片化;主流與多品種共存;單片機(jī)從 8 位、1

7、6 位到 32 位,數(shù)不勝數(shù),應(yīng)有盡有,有與主流 c51 系列兼容的,也有不兼容的,但 它們各具特色,互成互補(bǔ),為單片機(jī)的應(yīng)用提供廣闊的天地。 縱觀單片機(jī)的發(fā)展過程,可以預(yù)示單片機(jī)的發(fā)展趨勢,大致有: 1)低功耗 cmos 化 mcs-51 系列的 8051 推出時(shí)的功耗達(dá) 630mw,而現(xiàn)在的單片機(jī)普遍都在 100mw 左右, 隨著對單片機(jī)功耗要求越來越低,現(xiàn)在的各個(gè)單片機(jī)制造商基本都采用了 cmos(互補(bǔ)金屬 氧化物半導(dǎo)體工藝)。象 80c51 就采用了 hmos(即高密度金屬氧化物半導(dǎo)體工藝)和 chmos(互補(bǔ)高密度金屬氧化物半導(dǎo)體工藝)。cmos 雖然功耗較低,但由于其物理特征決定

8、其工作速度不夠高,而 chmos 則具備了高速和低功耗的特點(diǎn),這些特征,更適合于在要 求低功耗象電池供電的應(yīng)用場合。所以這種工藝將是今后一段時(shí)期單片機(jī)發(fā)展的主要途 徑。 2)微型單片化 現(xiàn)在常規(guī)的單片機(jī)普遍都是將中央處理器(cpu)、隨機(jī)存取數(shù)據(jù)存儲(chǔ)(ram)、只讀程 序存儲(chǔ)器(rom)、并行和串行通信接口,中斷系統(tǒng)、定時(shí)電路、時(shí)鐘電路集成在一塊單一 的芯片上,增強(qiáng)型的單片機(jī)集成了如 a/d 轉(zhuǎn)換器、pmw(脈寬調(diào)制電路)、wdt(看門狗)、 有些單片機(jī)將 lcd(液晶)驅(qū)動(dòng)電路都集成在單一的芯片上,這樣單片機(jī)包含的單元電路就 更多,功能就越強(qiáng)大。甚至單片機(jī)廠商還可以根據(jù)用戶的要求量身定做,制

9、造出具有自 己特色的單片機(jī)芯片。 此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機(jī)除了功能強(qiáng)和功耗低 外,還要求其體積要小?,F(xiàn)在的許多單片機(jī)都具有多種封裝形式,其中 smd(表面封裝)越 來越受歡迎,使得由單片機(jī)構(gòu)成的系統(tǒng)正朝微型化方向發(fā)展。 3)主流與多品種共存 現(xiàn)在雖然單片機(jī)的品種繁多,各具特色,但仍以 80c51 為核心的單片機(jī)占主流,兼 容其結(jié)構(gòu)和指令系統(tǒng)的有 philips 公司的產(chǎn)品,atmel 公司的產(chǎn)品和中國臺(tái)灣的 winbond 系列單片機(jī)。所以 c8051 為核心的單片機(jī)占據(jù)了半壁江山。而 microchip 公司的 pic 精 簡指令集(risc)也有著強(qiáng)勁的發(fā)展勢

10、頭,中國臺(tái)灣的 holtek 公司近年的單片機(jī)產(chǎn)量與日 第二章 計(jì)算器系統(tǒng)簡介 5 俱增,與其低價(jià)質(zhì)優(yōu)的優(yōu)勢,占據(jù)一定的市場分額。此外還有 motorola 公司的產(chǎn)品,日 本幾大公司的專用單片機(jī)。在一定的時(shí)期內(nèi),這種情形將得以延續(xù),將不存在某個(gè)單片 機(jī)一統(tǒng)天下的壟斷局面,走的是依存互補(bǔ),相輔相成、共同發(fā)展的道路。 2.2 計(jì)算器系統(tǒng)現(xiàn)狀 計(jì)算器一般由運(yùn)算器、控制器、存儲(chǔ)器、鍵盤、顯示器、電源和一些可選外圍設(shè) 備及電子配件通過人工或機(jī)器設(shè)備組成。低檔計(jì)算器的運(yùn)算器、控制器由數(shù)字邏輯電 路實(shí)現(xiàn)簡單的串行運(yùn)算,其隨機(jī)存儲(chǔ)器只有一、二個(gè)單元,供累加存儲(chǔ)用。高檔計(jì)算 器由微處理器和只讀存儲(chǔ)器實(shí)現(xiàn)各種復(fù)

11、雜的運(yùn)算程序,有較多的隨機(jī)存儲(chǔ)單元以存放 輸入程序和數(shù)據(jù)。鍵盤是計(jì)算器的輸入部件,一般采用接觸式或傳感式。為減小計(jì)算 器的尺寸,一鍵常常有多種功能。顯示器是計(jì)算器的輸出部件,有發(fā)光二極管顯示器 或液晶顯示器等。除顯示計(jì)算結(jié)果外,還常有溢出指示、錯(cuò)誤指示等。計(jì)算器電源采 用交流轉(zhuǎn)換器或電池,電池可用交流轉(zhuǎn)換器或太陽能轉(zhuǎn)換器再充電。為節(jié)省電能,計(jì) 算器都采用 cmos 工藝制作的大規(guī)模集成電路(見互補(bǔ)金屬 -氧化物-半導(dǎo)體集成電 路) ,并在內(nèi)部裝有定時(shí)不操作自動(dòng)斷電電路。計(jì)算器可選用的外圍設(shè)備有微型打印 機(jī)、盒式磁帶機(jī)和磁卡機(jī)等。 2.3 簡易計(jì)算器系統(tǒng)簡介 本計(jì)算器是以 mcs-51 系列 8

12、051 單片機(jī)為核心構(gòu)成的簡易計(jì)算器系統(tǒng)。該系統(tǒng)通過 單片機(jī)控制,實(shí)現(xiàn)對 4*4 鍵盤掃描進(jìn)行實(shí)時(shí)的按鍵檢測,并把檢測數(shù)據(jù)存儲(chǔ)下來。整個(gè) 計(jì)算器系統(tǒng)的工作過程為:首先存儲(chǔ)單元初始化,顯示初始值和鍵盤掃描,判斷按鍵位 置,查表得出按鍵值,單片機(jī)則對數(shù)據(jù)進(jìn)行儲(chǔ)存與相應(yīng)處理轉(zhuǎn)換,之后送入數(shù)碼管動(dòng)態(tài) 顯示。整個(gè)系統(tǒng)可分為三個(gè)主要功能模塊:功能模塊一,實(shí)時(shí)鍵盤掃描;功能模塊二, 數(shù)據(jù)轉(zhuǎn)換為了數(shù)碼管顯示;功能模塊三,數(shù)碼管動(dòng)態(tài)顯示。 第二章 計(jì)算器系統(tǒng)簡介 6 第三章 主要器件簡介 3.1 mcs-51 系列單片機(jī)簡介 8051 是 mcs-51 系列單片機(jī)的典型產(chǎn)品,以這一代表性的機(jī)型進(jìn)行系統(tǒng)的講解。

13、8051 單片機(jī)包含中央處理器、程序存儲(chǔ)器(rom)、數(shù)據(jù)存儲(chǔ)器(ram)、定時(shí)/計(jì)數(shù)器、 并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總 線,現(xiàn)在我們分別加以說明: 中央處理器中央處理器: 中央處理器(cpu)是整個(gè)單片機(jī)的核心部件,是 8 位數(shù)據(jù)寬度的處理器,能處理 8 位 二進(jìn)制數(shù)據(jù)或代碼,cpu 負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控 制輸入輸出功能等操作。 數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器(ram)(ram) 8051 內(nèi)部有 128 個(gè) 8 位用戶數(shù)據(jù)存儲(chǔ)單元和 128 個(gè)專用寄存器單元,它們是統(tǒng)一編 址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用

14、戶只能訪問,而不能用于存放用戶數(shù) 據(jù),所以,用戶能使用的 ram 只有 128 個(gè),可存放讀寫的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶 定義的字型表。 圖 3-1 8051 內(nèi)部結(jié)構(gòu)圖 程序存儲(chǔ)器程序存儲(chǔ)器(rom)(rom): 8051 共有 4096 個(gè) 8 位掩膜 rom,用于存放用戶程序,原始數(shù)據(jù)或表格。 定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器(rom)(rom): 第三章 主要器件簡介 7 8051 有兩個(gè) 16 位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程 序轉(zhuǎn)向。 并行輸入輸出并行輸入輸出(i/o)(i/o)口:口: 8051 共有 4 組 8 位 i/o 口(p0、 p1、p2 或 p3

15、),用于對外部數(shù)據(jù)的傳輸。 全雙工串行口全雙工串行口: 8051 內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口 既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。 中斷系統(tǒng):中斷系統(tǒng): 8051 具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中 斷,可滿足不同的控制要求,并具有 2 級的優(yōu)先級別選擇。 時(shí)鐘電路:時(shí)鐘電路: 8051 內(nèi)置最高頻率達(dá) 12mhz 的時(shí)鐘電路,用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,但 8051 單片機(jī)需外置振蕩電容。 單片機(jī)的結(jié)構(gòu)有兩種類型,一種是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開的形式,即哈佛 (harvard)結(jié)構(gòu),另一種是采用通

16、用計(jì)算機(jī)廣泛使用的程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器合二為一 的結(jié)構(gòu),即普林斯頓(princeton)結(jié)構(gòu)。intel 的 mcs-51 系列單片機(jī)采用的是哈佛結(jié)構(gòu)的 形式,而后續(xù)產(chǎn)品 16 位的 mcs-96 系列單片機(jī)則采用普林斯頓結(jié)構(gòu)。 下圖是 mcs-51 系列單片機(jī)的內(nèi)部結(jié)構(gòu)示意圖 3-2。 第三章 主要器件簡介 8 圖 3-2 mcs-51 結(jié)構(gòu)圖 mcs-51 的引腳說明: mcs-51 系列單片機(jī)中的 8031、8051 及 8751 均采用 40pin 封裝的雙列直接 dip 結(jié)構(gòu), 右圖是它們的引腳配置,40 個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩 根,4 組 8 位共

17、32 個(gè) i/o 口,中斷口線與 p3 口線復(fù)用?,F(xiàn)在我們對這些引腳的功能加以 說明: mcs-51 的引腳說明: mcs-51 系列單片機(jī)中的 8031、8051 及 8751 均采用 40pin 封裝的雙列直接 dip 結(jié)構(gòu), 右圖是它們的引腳配置,40 個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩 根,4 組 8 位共 32 個(gè) i/o 口,中斷口線與 p3 口線復(fù)用。現(xiàn)在我們對這些引腳的功能加以 說明:如圖 3-3 圖 3-3 雙列直插式封裝引腳圖 pin9:reset/vpd復(fù)位信號(hào)復(fù)用腳,當(dāng) 8051 通電,時(shí)鐘電路開始工作,在 reset 引腳 上出現(xiàn) 24 個(gè)時(shí)鐘周期以

18、上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計(jì)數(shù)器 pc 指向 0000h,p0-p3 輸出口全部為高電平,堆棧指針寫入 07h,其它專用寄存器被清“0” 。 reset 由高電平下降為低電平后,系統(tǒng)即從 0000h 地址開始執(zhí)行程序。然而,初始復(fù)位不 改變 ram(包括工作寄存器 r0-r7)的狀態(tài),8051 的初始態(tài)。 8051 的復(fù)位方式可以是自動(dòng)復(fù)位,也可以是手動(dòng)復(fù)位。此外,reset/vpd還是一復(fù)用 腳,vcc掉電其間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部 ram 的數(shù)據(jù)不丟失。見下圖 3-4 為兩種復(fù)位方式和兩種時(shí)鐘方式: 第三章 主要器件簡介 9 pin30:ale/當(dāng)訪問外部程

19、序器時(shí),ale(地址鎖存)的輸出用于鎖存地址的低位 字節(jié)。而訪問內(nèi)部程序存儲(chǔ)器時(shí),ale 端將有一個(gè) 1/6 時(shí)鐘頻率的正脈沖信號(hào),這個(gè)信號(hào) 可以用于識(shí)別單片機(jī)是否工作,也可以當(dāng)作一個(gè)時(shí)鐘向外輸出。更有一個(gè)特點(diǎn),當(dāng)訪問 外部程序存儲(chǔ)器,ale 會(huì)跳過一個(gè)脈沖。 如果單片機(jī)是 eprom,在編程其間,將用于輸入編程脈沖。 pin29:當(dāng)訪問外部程序存儲(chǔ)器時(shí),此腳輸出負(fù)脈沖選通信號(hào),pc 的 16 位地址 數(shù)據(jù)將出現(xiàn)在 p0 和 p2 口上,外部程序存儲(chǔ)器則把指令數(shù)據(jù)放到 p0 口上,由 cpu 讀入并 執(zhí)行。 pin31:ea/vpp程序存儲(chǔ)器的內(nèi)外部選通線,8051 和 8751 單片機(jī),內(nèi)置

20、有 4kb 的程 序存儲(chǔ)器,當(dāng) ea 為高電平并且程序地址小于 4kb 時(shí),讀取內(nèi)部程序存儲(chǔ)器指令數(shù)據(jù),而 超過 4kb 地址則讀取外部指令數(shù)據(jù)。如 ea 為低電平,則不管地址大小,一律讀取外部程 序存儲(chǔ)器指令。顯然,對內(nèi)部無程序存儲(chǔ)器的 8031,ea 端必須接地。 在編程時(shí),ea/vpp腳還需加上 21v 的編程電壓。 3.2 其它器件簡介 3.2.1 數(shù)碼管顯示 在本任務(wù)中用 4 位數(shù)碼管顯示當(dāng)前數(shù)值的千,百,十,個(gè),由于數(shù)碼管個(gè)數(shù)多,如 采用靜態(tài)顯示方式,則占用單片機(jī)的 i/o 口線太多,如果用定時(shí)器/計(jì)數(shù)器的串行移位寄 存器工作方式及外接串入并出移位寄存器 74ls164 的方式,則

21、電路復(fù)雜。所以,在數(shù)碼 管個(gè)數(shù)較多時(shí),常采用動(dòng)態(tài)顯示方式。 4 位數(shù)碼管的相同段并聯(lián)在一起,由一個(gè) 8 位 i/o(p1 口)輸出字形碼控制顯示某一 字形,每個(gè)數(shù)碼管的公共端由另外一個(gè) i/o 口(p0 口)輸出的字位碼控制,即數(shù)碼管顯示 的字形是由單片機(jī) i/o 口輸出的字形碼確定,而哪個(gè)數(shù)碼管點(diǎn)亮是由單片機(jī) i/o 口輸出 的字位碼確定的。4 個(gè)數(shù)碼管分時(shí)輪流循環(huán)點(diǎn)亮,在同一時(shí)刻只有 1 個(gè)數(shù)碼管點(diǎn)亮,但由 第三章 主要器件簡介 10 于數(shù)碼管具有余輝特性及人眼具有視覺暫留特性,所以適當(dāng)?shù)剡x取循環(huán)掃描頻率,看上 去所有數(shù)碼管是同時(shí)點(diǎn)亮的,察覺不出閃爍現(xiàn)象。動(dòng)態(tài)顯示方式所接數(shù)碼管不能太多,

22、否則會(huì)因每個(gè)數(shù)碼管所分配的實(shí)際導(dǎo)通時(shí)間太少,使得數(shù)碼管的亮度不足。在本任務(wù)中, 為了簡便,字形碼和字位碼都沒由加驅(qū)動(dòng)電路,在實(shí)際應(yīng)用中應(yīng)加驅(qū)動(dòng)電路。數(shù)碼管有 共陰極和共陽極兩種,對于共陽數(shù)碼管,字形驅(qū)動(dòng)輸出 0 有效,字位驅(qū)動(dòng)輸出 1 有效; 而對于共陰數(shù)碼管則相反,即:字形驅(qū)動(dòng)輸出 1 有效,字位驅(qū)動(dòng)輸出 0 有效。 3.2.2 矩陣按鍵 鍵盤是單片機(jī)系統(tǒng)中最常用的人機(jī)對話輸入設(shè)備,用戶通過鍵盤向單片機(jī)輸入數(shù)據(jù) 或指令。鍵盤控制程序需完成的任務(wù)有:監(jiān)測是否有鍵按下,有鍵按下時(shí),在無硬件去 抖的動(dòng)電路時(shí),應(yīng)用軟件延時(shí)方法消除按鍵抖動(dòng)影響;當(dāng)有多個(gè)鍵同時(shí)按下時(shí),只處理 一個(gè)按鍵,不管一次按鍵持續(xù)

23、多長時(shí)間,僅執(zhí)行一次按鍵功能程序。 矩陣按鍵掃描程序是一種節(jié)省 io 口的方法,按鍵數(shù)目越多節(jié)省 io 口就越可觀,思路: 先判斷某一列(行)是否有按鍵按下,再判斷該行(列)是那一只鍵按下。但是,在程 序的寫法上,采用了最簡單的方法,使得程序效率最高。本程序中,如果檢測到某鍵按 下了,就不再檢測其它的按鍵,這完全能滿足絕大多數(shù)需要,又能節(jié)省大量的 cpu 時(shí)間。 本鍵盤掃描程序的優(yōu)點(diǎn)在于:不用專門的按鍵延時(shí)程序,提高了 cpu 效率,也不用 中斷來掃描鍵盤,節(jié)省了硬件資源。另外,本鍵盤掃描程序,每次掃描占用 cpu 時(shí)最短, 不論有鍵按下或者無鍵按下都可以在很短的時(shí)間完成一次掃描。 本鍵盤掃描

24、子程序名叫 key,每次要掃描時(shí)用 lcall key 調(diào)用即可。 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 11 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 4.1 計(jì)算器硬件電路設(shè)計(jì) 8051 單片機(jī)一片,4*4 鍵盤一個(gè),4 位共陽極的七段數(shù)碼管一個(gè),連線和電阻和開關(guān) 若干。8051 單片機(jī)的 p2 口作鍵盤口,其中 p2.4-p2.7 為鍵盤掃描輸出線,p2.0-p2.3 為 鍵盤掃描輸入線。鍵盤由 4*4 共 16 個(gè)按鍵組成,10 個(gè)數(shù)字鍵(由 0-9 組成)5 個(gè)運(yùn)算符 號(hào)(加減乘除等于)組成,1 個(gè)清除鍵(作用相當(dāng)于整體復(fù)位) 。4 個(gè)數(shù)碼管用于顯示當(dāng) 前數(shù)值的千,百,十,個(gè),采用動(dòng)態(tài)顯示方式,p1 口接 4 個(gè)數(shù)

25、碼管的七段,p0 口分別接 4 個(gè)數(shù)碼管的公共端,p1 口輸出數(shù)碼管的字形碼,p0 口輸出數(shù)碼管的字位碼。 4.2 計(jì)算器程序設(shè)計(jì) 4.2.1 存儲(chǔ)單元分配 30h 單元:數(shù)值個(gè)位顯示單元;31h 單元:數(shù)值十位顯示單元;32h 單元:數(shù)值百位顯 示單元;33h 單元:數(shù)值千位顯示單元;23h 單元:第一操作數(shù)存儲(chǔ)單元;24h 單元:第 二操作數(shù)存儲(chǔ)單元;25h 單元:鍵值暫存單元;27h 單元:清除鍵狀態(tài);34h-37h 單元: 結(jié)果數(shù)據(jù)轉(zhuǎn)換暫存單元;38h-39h 單元:結(jié)果高低 8 位暫存單元;r5 單元:操作數(shù)計(jì)數(shù) 單元;r4 單元:操作數(shù)數(shù)值位數(shù)計(jì)數(shù)單元;r3 單元:運(yùn)算符號(hào)存儲(chǔ)單元

26、。 4.2.2 主程序設(shè)計(jì) 主程序進(jìn)行程序中用到的一些存儲(chǔ)單元的初始化,數(shù)值顯示和 4*4 鍵盤掃描。首先, 進(jìn)行存儲(chǔ)單元初始化,給數(shù)碼管顯示單元 30h-33h 賦予“0000”字形數(shù)據(jù),將數(shù)值計(jì)數(shù) 單元,存儲(chǔ)單元,23h-25h,34h-37h,38h,39h,3ah,3bh,3ch,賦予初值零。之后,調(diào)用鍵 盤掃描子程序,和數(shù)碼管顯示數(shù)據(jù)轉(zhuǎn)換程序,數(shù)碼管動(dòng)態(tài)顯示子程序。主程序不斷進(jìn)行 鍵盤掃描,數(shù)碼管顯示數(shù)據(jù)轉(zhuǎn)換子程序和動(dòng)態(tài)顯示子程序。 4.2.3 數(shù)碼管顯示數(shù)據(jù)轉(zhuǎn)換子程序 由于數(shù)值單元存放的是二進(jìn)制數(shù),而用戶熟悉的是十進(jìn)制數(shù),所以應(yīng)將數(shù)值單元中 的二進(jìn)制轉(zhuǎn)換為十進(jìn)制數(shù),即 bcd 碼。

27、要通過數(shù)碼管顯示出當(dāng)前數(shù)值,還必須將 bcd 碼 進(jìn)一步轉(zhuǎn)換為七段碼,轉(zhuǎn)換的最終結(jié)果數(shù)據(jù)存放于顯示緩沖區(qū) 30h-33h 單元中,其中 30h 單元存放數(shù)值的個(gè)位七段碼,31h 單元存放數(shù)值的十位七段碼,32h 單元存放數(shù)值的百位 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 12 七段碼,33h 單元存放數(shù)值的千位七段碼。 4.2.4 數(shù)碼管動(dòng)態(tài)顯示子程序 本任務(wù)由 p1 口輸出字形碼,p0 口輸出字位碼。先將存放于 30h 單元的數(shù)值個(gè)位七段 碼由 p1 口輸出,同時(shí) p0 口輸出使數(shù)值個(gè)位顯示數(shù)碼管點(diǎn)亮的字位碼。由于采用的是共 陽數(shù)碼管,所以只有該位數(shù)碼管對應(yīng)的 p0.0 為 1,其他位 p0.1-p0.3

28、位 0,點(diǎn)亮延時(shí) 10ms。然后 p1 口輸出數(shù)值十位七段碼,p0.1 位 1,數(shù)值十位數(shù)碼管點(diǎn)亮,延時(shí) 10ms。接 著 p1 口輸出數(shù)值百位七段碼,p0.2 為 1,數(shù)值百位數(shù)碼管點(diǎn)亮,延時(shí) 10ms。最后 p1 口 輸出數(shù)值千位七段碼,p0.3 為 1,數(shù)值千位數(shù)碼管點(diǎn)亮,延時(shí) 10ms。 4.3 系統(tǒng)總框圖: 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 13 4.4 程序源代碼: dispbuf equ 30h ;顯示緩沖區(qū)首地址定義 org 0000h ;主程序的入口地址 start:mov dispbuf,#0c0h ;4 個(gè)數(shù)碼管顯示“0000”字形數(shù)據(jù) mov dispbuf+1,#0c0h mo

29、v dispbuf+2,#0c0h mov dispbuf+3,#0c0h mov 37h,#00h ;數(shù)值初始化 mov 27h,#00h mov 26h,#00h mov 25h,#00h mov 24h,#00h mov 23h,#00h mov r3,#00h mov r5,#00h mov r4,#00h loop: lcall key ;調(diào)用鍵盤掃描子程序 mov r6,27h cjne r6,#00h,start ;清除鍵判斷 mov r6,26h cjne r6,#00h,fa ;顯示數(shù)據(jù)轉(zhuǎn)換子程序選擇 lcall conv ;調(diào)用數(shù)碼管顯示數(shù)據(jù)轉(zhuǎn)換子程序 fa:lcall d

30、ispscan ;調(diào)用數(shù)碼管動(dòng)態(tài)顯示子程序 sjmp loop key:mov p2,#0fh ;鍵盤掃描子程序 mov a,p2 anl a,#0fh cjne a,#0fh,k10 ret k10:jb p2.0,k20 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 14 k11:mov p2,#0efh jb p2.0,k12 cjne r5,#00h,l1 mov r4,#00h inc r5 mov r3,#1h l1:ljmp cend k12: mov p2,#0dfh jb p2.0,k13 cjne r5,#00h,l2 mov r4,#00h inc r5 mov r3,#2h l2:ljmp

31、cend k13: mov p2,#0bfh jb p2.0,k14 cjne r5,#00h,l3 mov r4,#00h inc r5 mov r3,#3h l3:ljmp cend k14: mov p2,#7fh jb p2.0,kil cjne r5,#00h,l4 mov r4,#00h inc r5 mov r3,#4h kil:ljmp kend l4:ljmp cend k20:jb p2.1,k30 k21:mov p2,#0efh 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 15 jb p2.1,k22 ljmp dyu k22:mov p2,#0dfh jb p2.1,k23 mov 25

32、h,#3h ljmp opr k23:mov p2,#0bfh jb p2.1,k24 mov 25h,#6h ljmp opr k24:mov p2,#7fh jb p2.1,cctv mov 25h,#9h ljmp opr cctv:ljmp kend k30:jb p2.2,k40 k31: mov p2,#0efh jb p2.2,k32 mov 25h,#0h ljmp opr k32:mov p2,#0dfh jb p2.2,k33 mov 25h,#2h ljmp opr k33:mov p2,#0bfh jb p2.2,k34 mov 25h,#5h ljmp opr k34

33、:mov p2,#7fh jb p2.2,kend mov 25h,#8h 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 16 ljmp opr k40:jb p2.3,kend k41: mov p2,#0efh jb p2.3,k42 inc 27h ljmp kend k42:mov p2,#0dfh jb p2.3,k43 mov 25h,#1h ljmp opr k43:mov p2,#0bfh jb p2.3,k44 mov 25h,#4h ljmp opr k44:mov p2,#7fh jb p2.3,kend mov 25h,#7h ljmp opr opr:inc r4 ;鍵值存儲(chǔ) cjne r

34、5,#00h,chang cjne r4,#2h,kbk zhi:mov a,20h mov b,#0ah mul ab mov 20h,25h add a,20h cjne r5,#00h,czh mov 23h,a ljmp kend czh: mov 24h,a ljmp kend 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 17 kend:mov p2,#0fh mov a,p2 anl a,#0fh cjne a,#0fh,kend ret chang:cjne r4,#2h,hong ajmp zhi hong:jnc cend inc r5 mov 20h,25h mov 24h,25h ljmp

35、cend kbk:jnc cend mov 20h,25h mov 23h,25h ljmp cend dyu:mov r5,#00h ;結(jié)果計(jì)算 mov r4,#00h mov 25h,#00h cjne r3,#1h,s mov a,23h add a,24h mov 23h,a sjmp cend s:cjne r3,#2h,s1 clr c mov a,23h cjne a,#00h,jianfa mov 23h,#0eh sjmp cend jianfa:subb a,24h 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 18 mov 23h,a sjmp cend s1:cjne r3,#3h,s2 m

36、ov a,23h mov b,24h mov a,23h mul ab mov r6,b cjne r6,#00h,cheng mov 23h,a sjmp cend s2:cjne r3,#4,cend mov a,24h cjne a,#00h,zy mov a,#00h sjmp cend zy:mov a,23h mov b,24h div ab mov 23h,a cend:mov p2,#0fh mov a,p2 anl a,#0fh cjne a,#0fh,cend ret cheng:mov r3,b mov b,#64h div ab mov 36h,a mov a,b mo

37、v b,#0ah 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 19 div ab mov 35h,a mov 34h,b mov dptr,#table xian:mov a,34h add a,#6h mov b,#0ah div ab mov 25h,a mov 34h,b mov a,b movc a,a+dptr mov dispbuf,a mov a,35h add a,#5h add a,25h mov b,#0ah div ab mov 25h,a mov 35h,b mov a,b movc a,a+dptr mov dispbuf+1,a mov a,36h add a,#2h add a,25h mov b,#0ah div ab add a,37h mov 37h,a movc a,a+dptr 第四章 計(jì)算器系統(tǒng)設(shè)計(jì) 20 mov dispbuf+3,a mov 36h,b mov a,b movc a,a+dptr mov dispbuf+2,a djnz r6,xian mov 26h,#1h ajmp cend con

溫馨提示

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

最新文檔

評論

0/150

提交評論