點擊鏈接獲取Keil源碼與Project Backups仿真圖:
https://download.csdn.net/download/qq_64505944/88637995?spm=1001.2014.3001.5503
源碼獲取
B 源碼+仿真圖+課程設計+51
摘 要
計算器一般是指“電子計算器”,能進行數(shù)學運算的手持機器,擁有集成電路芯片,結構簡單,功能較弱,但由于它使用方便、操作簡單、價格低廉,因而廣泛運用于商業(yè)交易中,也是必備的辦公用品。
近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往作為一個核心部件來使用,但僅單片機方面的知識是不夠的,還應根據(jù)具體硬件結構、軟硬件結合,來加以完善。因此,單片機的應用已經(jīng)越來越貼近生活,用單片機來實現(xiàn)一些電子設計也變得容易起來。計算器在人們的日常中是比較的常見的電子產(chǎn)品之一??墒撬€在發(fā)展之中,以后必將出現(xiàn)功能更加強大的計算器,基于這樣的理念,本次設計是用單片機來設計的計算器。該設計系統(tǒng)是以 AT89S52 為單片機, P1 口作為輸入端,外接 4X4 的鍵盤。通過鍵盤掃描來對輸入數(shù)的控制,在 P0 口、P2 口接了驅(qū)動電路,用來保證 LCD 的工作正常。計算器將完成的功能有加,減,乘,除等功能。
關鍵詞:計算器;單片機;LCD;矩陣鍵盤
ABSTRACT
Calculator generally refers to the electronic calculator, and the term is introduced to China by the Japanese. The calculator with the IC chip, simple structure, and weak function is able to perform mathematical operations on handheld machine. But it is easy using, simple operation and low price. So it is widely used in commercial transactions, and is also an essential office supplies.
With the rapid development of science and technology in recent years, the application of SCM is the deepening and promote the traditional controlling detection technologies that are increasingly updated. In real-time detection and automatic control of microcomputer application system, the microcontroller is often used as a core component to use, but only the knowledge of the microcontroller is not enough, and should be based on the specific hardware architecture, hardware and software combination to make it perfect. So the application of SCM is more and more close to life, so using of single chip to achieve some electronic designs also become easy. In the people daily life the calculator is one of the common electronic products. But it is still in development, it will become more powerful calculator in the future. According to such idea, the design is that SCM design calculator. The design system is based on AT89S52 microcontroller, P0 port as input, external 4X4 keyboard. In P1, P2mouth is connected with the drive circuit to ensure the normal work of LED. The calculator will complete add, subtract, multiply, divide and other function.
Keywords: calculator, MCU, LCD, Matrix keyboard
前 言
計算器(calculator;counter)一般是指“電子計算器”,能進行數(shù)學運算的手持機器,擁有集成電路芯片,結構簡單,功能較弱,但由于它使用方便、操作簡單、價格低廉,因而廣泛運用于商業(yè)交易中,也是必備的辦公用品之一。計算器一般由運算器、控制器、存儲器、鍵盤、顯示器、電源和一些可選外圍設備及電子配件通過人工或機器設備組成。隨著科學技術的不斷發(fā)展及計算器應用的普及,人們發(fā)現(xiàn)在工業(yè)控制中,有很多時候需要在惡劣的環(huán)境中進行各種數(shù)據(jù)的采集、運算和控制。本設計是由單片機實現(xiàn)的模擬計算器,它不僅能實現(xiàn)數(shù)據(jù)的加減乘除運算,而且還能使數(shù)據(jù)及其計算結果在數(shù)碼管上顯示出來,能夠?qū)崿F(xiàn)0-256的數(shù)字四則運算。本設計是用單片機AT89S52來控制,采用LCD1602液晶顯示讀取數(shù)據(jù),軟件部分是由C語言來編寫的。利用鍵盤和LCD1602設計一個簡單的數(shù)學計算器,可以完成簡單的如加,減,乘,除的四則運算,并將運算結果在LCD1602上顯示出來。
目 錄
第一章 緒論 1
1.1研究背景 1
1.1.1單片機發(fā)展現(xiàn)狀 1
1.1.2計算器系統(tǒng)現(xiàn)狀 2
1.1.3選題意義及現(xiàn)狀 2
第二章 總體方案及設計 3
2.1設計目的 3
2.2設計任務 3
2.3設計思路 3
2.3.1方案構思 3
2.3.2 方案比較與選擇 4
2.3.3系統(tǒng)總體模塊圖 4
第三章 系統(tǒng)硬件設計 5
3.1 主控模塊設計 5
3.2鍵盤輸入模塊設計 11
3.3 LCD顯示模塊設計 12
3.3.1 LCD1602主要技術參數(shù) 13
3.3.2引腳功能說明 13
3.4清零、音樂開關、開方和多次方運算功能模塊設計 14
3.5電源模塊設計 15
3.6 運算模塊(單片機控制) 16
第四章 軟件設計 17
4.1顯示程序設計 17
4.2鍵掃程序設計 17
4.3清零程序設計 19
4.4聲音開關程序設計 20
4.5總體設計 21
第五章 系統(tǒng)仿真 23
5.1 Proteus仿真 23
第六章 系統(tǒng)調(diào)試 27
6.1問題與分析 27
6.1.1硬件常見故障 27
6.1.2軟件調(diào)試 27
第七章 總結與展望 30
7.1總結 30
7.2展望 30
致謝…35
參考文獻 32
附錄 33
程序清單 33
中英文文獻對照翻譯 54
第1章緒論
1.1研究背景
1.1.1單片機發(fā)展現(xiàn)狀
單片機進一步改變CPU的性能,加快指令運算的速度和提高系統(tǒng)控制的可靠性。采用精簡指令集(RISC)結構和流水線技術,可以大幅度提高運行速度?,F(xiàn)指令速度最高者已達100MIPS(Million Instruction Per Seconds,即兆指令每秒),單片機的發(fā)展現(xiàn)狀:使用壽命長;低電壓與低功耗化;發(fā)展速度越來越快;從 8 位、16 位到 32 位,數(shù)不勝數(shù),應有盡有,部分與主流C51系列兼容,部分與之不兼容,它們各具特色,互補互成??v觀單片機的發(fā)展歷史,其有如下發(fā)展趨勢:
1、大容量、高性能
以往單片機內(nèi)的ROM為1KB~4KB,RAM 為64~128B。但在需要復雜控制的場合,該存儲容量是不夠的,必須進行外接擴充。為了適應這種領域的要求,須運用新的工藝,使片內(nèi)存儲器大容量化。目前,單片機內(nèi)ROM 最大可達64KB,RAM 最大為2KB。另外并加強了位處理、中斷和定時控制功能。這類單片機的運算速度比標準的單片機高出10 倍以上。由于這類單片機有極高的指令速度,可以使用軟件模擬其I/O 功能,由此引入了虛擬外設的新概念。
2、串行擴展技術
在很長一段時間里,通用型單片機通過三總線結構擴展外圍器件成為單片機應用的主流結構。隨著低價位OTP(One Time Programble)及各種特殊類型片內(nèi)程序存儲器的發(fā)展,加之處圍接口不斷進入片內(nèi),推動了單片機“單片”應用結構的發(fā)展。特別是I2C、SPI 等串行總線的引入,可以使單片機的引腳設計得更少,單片機系統(tǒng)結構更加簡化及規(guī)范化。
3、低功耗CMOS化
MCS-51系列的8031推出時的功耗達630mW,而現(xiàn)在的單片機普遍都在100mW左右,隨著對單片機功耗要求越來越低,現(xiàn)在的各個單片機制造商基本都采用了CMOS(互補金屬氧化物半導體工藝)。80C51就采用了HMOS(即高密度金屬氧化物半導體工藝)和CHMOS(互補高密度金屬氧化物半導體工藝)。CMOS雖然功耗較低,但由于其物理特征決定其工作速度不夠高,而CHMOS則具備了高速和低功耗的特點,這些特征,更適合于在要求低功耗,電池供電的應用場合。所以這種工藝將是今后一段時期單片機發(fā)展的主要途徑。
4、微型單片化
現(xiàn)在常規(guī)的單片機普遍都是將中央處理器(CPU)、隨機存取數(shù)據(jù)存儲(RAM)等集成在一塊單一的芯片上,增強型的單片機集成了如A/D轉換器、PMW(脈寬調(diào)制電路)等都集成在單一的芯片上,這樣單片機包含的單元電路就更多,功能就越強大。甚至單片機廠商還可以根據(jù)用戶的要求量身定做,制造出具有自己特色的單片機芯片。 此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機除了功能強和功耗低外,還要求其體積要小?,F(xiàn)在的許多單片機都具有多種封裝形式,其中SMD(表面封裝)越來越受歡迎,使得由單片機構成的系統(tǒng)正朝微型化方向發(fā)展。
1.1.2計算器系統(tǒng)現(xiàn)狀
計算器一般由存儲器、鍵盤和機器設備等組成。鍵盤是計算器的輸入部件,一般采用接觸式或傳感式。為減小計算器的尺寸,一鍵常常有多種功能。顯示器是計算器的輸出部件,有發(fā)光二極管顯示器或液晶顯示器等。除顯示計算結果外,還常有溢出指示、錯誤指示等。計算器電源采用交流轉換器或電池,電池可用交流轉換器或太陽能轉換器再充電。為節(jié)省電能,計算器都采用CMOS工藝制作的大規(guī)模集成電路,并在內(nèi)部裝有定時不操作自動斷電電路。
1.1.3選題意義及現(xiàn)狀
計算器(calculator;counter)一般是指“電子計算器”,該名詞由日文傳入中國。計算器是能進行數(shù)學運算的手持機器,擁有集成電路芯片,結構簡單,功能較弱,但由于它使用方便、操作簡單、價格低廉,因而廣泛運用于商業(yè)交易中,也是必備的辦公用品之一。隨著科學技術的不斷發(fā)展及計算器應用的普及,人們發(fā)現(xiàn)在工業(yè)控制中,有很多時候需要在惡劣的環(huán)境中進行各種數(shù)據(jù)的采集、運算和控制。
第二章 總體方案及設計
2.1設計目的
通過本次畢業(yè)設計,應用《單片機應用基礎》《計算機應用基礎》等所學相關知識及查閱資料,完成簡易計算器的設計,以達到理論與實踐更好的結合、進一步綜合運用所學知識設計的能力的目的。
通過本次設計的訓練,可以使我在基本思路和基本方法上對基于MCS-51單片機的嵌入式系統(tǒng)設計有一個比較感性的認識,并具備一定程度的設計能力。
2.2設計任務
1.了解單片機的基本原理。
2.學習電子計算機制作基本原理及方法。
3.熟練掌握PROTUES軟件。
4.會用KEIL編程,具有一定的編程能力。
5.設計制作電子計算器硬件及軟件系統(tǒng)。
6.撰寫畢業(yè)論文。
2.3設計思路
2.3.1方案構思
本設計可以采用兩種方案,一種是以FPGA為核心處理芯片,配備相應的外設;另外一種是以AT89S52處理器,配備相應的外設。
1、方案一:采用FPGA控制
FPGA是一種高密度的可編程邏輯器件,自從Xilinx公司1985年推出第一片F(xiàn)PGA以來,FPGA的集成密度和性能提高很快,其集成密度最高達500萬門/片以上,系統(tǒng)性能可達200MHz。由于FPGA器件集成度高,方便易用,開發(fā)和上市周期短,在數(shù)字設計和電子生產(chǎn)中得到迅速普及和應用,并一度在高密度的可編程邏輯器件領域中獨占鰲頭。
但是而基于 SRAM編程的FPGA,其編程信息需存放在外部存儲器上 ,需外部存儲器芯片 ,且使用方法復雜 ,保密性差,而其對于一個簡單的計算器而言,實用FPGA有點大材小用,成本太高。
2、方案二:采用AT89S52
單片機是單片微型機的簡稱,故又稱為微控制器MCU(Micro Control Unit)。通常由單塊集成電路芯片組成,內(nèi)部包含有計算機的基本功能部件:中央處理器CPU,存儲器和I/O接口電路等。因此,單片機只要和適當?shù)能浖巴獠吭O備相結合,便可成為一個單片機控制系統(tǒng)。單片機廣泛用于智能產(chǎn)品,智能儀表,測控技術,智能接口等,具有操作簡單,實用方便,價格便宜等優(yōu)點,而其中AT89S52以MCS-51為內(nèi)核,是單片機中最典型的代表,應用于各種控制領域。
2.3.2方案比較與選擇
通過以上兩種方案論證和比較,從設計的實用性,方便性和成本出發(fā),選擇了以AT89S52單片機作為中央處理單元進行計算器的設計,這樣設計能夠?qū)崿F(xiàn)對六位浮點數(shù)的加減和三位浮點數(shù)的乘除運算。系統(tǒng)采用以下方案:
(1)采用AT89S52作為主控芯片;
(2)顯示模塊使用LCD1602液晶顯示屏;
(3)輸入模塊使用4*4矩陣鍵盤;
(4)AC清零按鍵使用獨立按鍵并接入單片機外部中斷引腳;
(5)聲音提示開關按鍵使用獨立按鍵并接入單片機外部中斷引腳;
(6)平方和開方按鍵由開發(fā)板上的獨立按鍵實現(xiàn);
(7)電源采用LM7805穩(wěn)壓電路。
2.3.3系統(tǒng)總體模塊圖
圖2-1總體模塊圖
整個系統(tǒng)由電源給51單片機和LCD液晶顯示提供電源使其工作,當外接按鍵輸入有效數(shù)值和運算模式時,通過主控芯片實現(xiàn)整個系統(tǒng)的功能。
第三章 系統(tǒng)硬件設計
3.1 主控模塊設計
1、主要性能:
(1) ? 8031 CPU與MCS-51 兼容
? 8K字節(jié)可編程FLASH存儲器(壽命:1000寫/擦循環(huán))
? 全靜態(tài)工作:0Hz-33MHz
? 三級加密程序存儲器
? 128*8位內(nèi)部RAM
? 32條可編程I/O線
? 三個16位定時器/計數(shù)器
? 八個中斷源
? 全雙工UART串行通道
? 低功耗的閑置和掉電模式
? 掉電后中斷可喚醒
? 看門狗定時器
? 雙數(shù)據(jù)指針
? 掉電標識符
? 片內(nèi)振蕩器和時鐘電路
(2) 管腳說明:
VCC:供電電壓。
GND:接地。
2、AT89S52的功能特性描述
AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非 易失性存儲器技術制造,與工業(yè)80C51 產(chǎn)品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提 供高靈活、超有效的解決方案。
AT89S52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口, 片內(nèi)晶振及時鐘電路。
此外, AT89S52 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工 作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結, 單片機一切工作停止,直到下一個中斷或硬件復位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產(chǎn)品的需求。
3、AT89S52引腳功能
AT89S52 單片機為40 引腳芯片見圖3-1。
圖3-1 AT89S52引腳
(1)口線:P0、P1、P2、P3 共四個八位口。
P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。
對P0端口寫“1”時,引腳用作高阻抗輸入。
當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下,P0不具有內(nèi)部上拉電阻。
在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。
P1口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。
此外,P1.0和P1.1分別作定時器/計數(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)編程用)
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 口送出高八位地址。在這種應用中,P2 口使用很強的內(nèi)部上拉發(fā)送1。
在使用8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。
在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。
P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。
P3口亦作為AT89S52特殊功能(第二功能)使用,如表3-1所示。
表3-1 P3口管腳 備選功能:
端口引腳 第二功能
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 /INT0(外部中斷0)
P3.3 /INT1(外部中斷1)
P3.4 T0(記時器0外部輸入)
P3.5 T1(記時器1外部輸入)
P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)
P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)
(2)其他引腳說明:
RST:復位輸入。晶振工作時,RST腳持續(xù)2 個機器周期高電平將使單片機復位??撮T狗計時完成后,RST 腳輸出96 個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復位高電平有效。
ALE/PROG——當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。
對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。
如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE禁止位無效。
PSEN——程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89S52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。
EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內(nèi)部會鎖存EA端狀態(tài)。
如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。
FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為12MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇,在本設計電路中選用了12MHz。電容取20PF左右。機器周期=12×時間周期,如12MHz的機器周期為1微秒。
(3)控制或復位引腳
RESET 此腳為高電平時(約2個機器周期)可將單片機復位。
RST/VPD——當出現(xiàn)兩個機器周期高電平時,單片機復位。復位后,P0~P3輸出高電平;SP寄存器為07H;其它寄存器全部清0;不影響RAM狀態(tài)。如圖3-2所示。
圖3-2 按鍵電平復位
AT89SXX系列單片機實現(xiàn)了ISP下載功能,故而取代了89CXX系列的下載方式,也是因為這樣,ATMEL公司已經(jīng)停止生產(chǎn)89CXX系列的單片機,現(xiàn)在市面上的AT89CXX多是停產(chǎn)前的庫存產(chǎn)品。
4、AT89S52的編程方法
編程前,須按編程模式表設置好地址、數(shù)據(jù)及控制信號;順序如下:
① 在地址線上加上要編程單元的地址信號。
② 在數(shù)據(jù)線上加上要寫入的數(shù)據(jù)字節(jié)。
③ 激活相應的控制信號。
④ 將EA/Vpp端加上+12V編程電壓。
⑤ 每對Flash存儲陣列寫入一個字節(jié)或每寫入一個程序機密位,加上一個ALE/PROG編程脈沖。每個字節(jié)寫入周期是自身定時的,大多數(shù)約為50us。改變編程單元的地址和寫入的數(shù)據(jù),重復①—⑤步驟,直到全部文件編程結束。
單片機的現(xiàn)狀及發(fā)展方向:
單片機是為了工業(yè)控制需要滿足而誕生的,是自動控制系統(tǒng)的核心部件,因而也主要用于工業(yè)控制、智能化儀器儀表、家用電器中。它具有體積小,功能多、價格低、使用方便、系統(tǒng)設計靈活等優(yōu)點,應用領域不斷擴大,除了工業(yè)控制,智能化儀表,通訊,家用電器外,在智能化高檔電子玩具產(chǎn)品中也大量采用單片機芯片作為核心控制部件。
由于單片機主要面向工業(yè)控制,工作環(huán)境比較惡劣,入高溫,強電磁干擾,甚至含有腐蝕性氣體,在太空中工作的單片機控制系統(tǒng),還必須具有抗輻射能力,這決定了單片機CPU于通用微機CPU具有不同的技術特征和發(fā)展方向:
(1) 可靠性高;
(2) 控制功能往往很強,數(shù)值計算交叉;
(3) 指令系統(tǒng)比通用微處理器慢的多;
(4) X系列芯片取代;
(5) 抗干擾性強,工作溫度范圍寬。
單片機的最小系統(tǒng)設計如圖3-3所示:
圖3-3 單片機最小系統(tǒng)
3.2鍵盤輸入模塊設計
計算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨立按鍵的方式,在這種情況下,編程會很簡單,但是會占用大量的I/O 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤的方案。計算器將通過按鍵輸入數(shù)字和運算符利用單片機不斷掃描鍵盤。矩陣鍵盤采用四條I/O 線作為行線,四條I/O 線作為列線組成鍵盤,在行線和列線的每個交叉點上設置一個按鍵。這種行列式鍵盤結構能有效地提高單片機系統(tǒng)中I/O 口的利用率。P1口:作為輸入口,與鍵盤連接,實現(xiàn)數(shù)據(jù)的輸入.
矩陣鍵盤的設計如圖3-4所示:
3.3 LCD顯示模塊設計
LCD1602,工業(yè)字符型液晶,能夠同時顯示16x02即32個字符(16列2行),故簡稱1602。1602LCD 液晶具有功耗低、顯示內(nèi)容豐富、清晰,顯示信息量大,顯示速度較快,界面友好等而得到廣泛應用,因此使用1602液晶顯示屏,可以方便的顯示多種字符,特別適用于單片機計算器的雙行顯示。通過D0-D7引腳向LCD寫指令字或?qū)憯?shù)據(jù)以使LCD實現(xiàn)不同的功能或顯示相應的數(shù)據(jù)。P0口作為液晶顯示的數(shù)據(jù)端口,與D0-D7連接。P2.1-P2.3口作為其控制端口,控制LCD液晶顯示屏顯示輸出數(shù)據(jù),與RS,RW,E,連接 。
液晶顯示模塊的設計如圖3-5所示:
圖3-5 液晶顯示模塊
3.3.1 LCD1602主要技術參數(shù)
顯示容量:16×2個字符
芯片工作電壓:4.5—5.5V
工作電流:2.0mA(5.0V)
模塊最佳工作電壓:5.0V
字符尺寸:2.95×4.35(W×H)mm
3.3.2引腳功能說明
LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表3-3所示。
表3-3引腳接口說明表
編號 符號 引腳說明 編號 符號 引腳說明
1 GND 電源地 9 D2 數(shù)據(jù)
2 VCC 電源正極 10 D3 數(shù)據(jù)
3 V0 液晶顯示偏壓 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ù)據(jù) 16 BLK 背光源負極
第1腳:GND為地電源。
第2腳:VCC接5V正電源。
第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。
第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器,低電平時選擇指令寄存器。
第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。
第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。
第15腳:背光源正極。
第16腳:背光源負極。
3.4清零、音樂開關、開方和多次方運算功能模塊設計
本設計要求在任何時候按下AC清零鍵,都必須退出當前操作,數(shù)據(jù)清零,準備下一次的運算,故應采用獨立鍵盤產(chǎn)生下降沿輸入給單片機外部中斷處理。
對于聲音開關按鍵,由于要求隨時關閉或打開聲音提示,本設計也采用獨立按鍵產(chǎn)生下降沿輸入給單片機的外部中斷處理。
而開方或多次方運算,則可與矩陣鍵盤一起檢測,也當做一個運算符處理。具體功能按鍵設計如圖3-6所示:
圖3-6功能按鍵設
圖中,AC為清零按鍵、KeyBeep為聲音開關按鍵、KeySqrt為開方按鍵、KeyPow為多次方按鍵。
3.5電源模塊設計
由于AT89S52和LCD1602都是采用5V供電,而且其他模塊功能也采用5V電平,本系統(tǒng)采用LM7805作為穩(wěn)壓芯片,經(jīng)過初級和次級的電容濾波,最終得到穩(wěn)定的5V電壓供給系統(tǒng)使用。
圖3-7電源
3.6 運算模塊(單片機控制)
AT89S52單片機是在一塊芯片中集成了CPU、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ù)是否為零,為零時顯示錯誤提示,不是零顯示運算結果。
第四章 軟件設計
4.1顯示程序設計
LCD1602在上電以后,應該先等待50毫秒左右,讓其內(nèi)部芯片初始化后再對其進行操作。在對其操作時,應參考其時序圖,先把命令寫入其內(nèi)部寄存器設置它的工作方式和狀態(tài)。要顯示數(shù)據(jù)的時候,先設置好顯示坐標,再往里面寫入要顯示的ASCII碼,LCD則通過刷新和替換來顯示新的數(shù)據(jù)。其程序流程圖如圖4-1所示:
圖4-1顯示程序流程圖
其程序位于后面附錄
4.2鍵掃程序設計
由于矩陣鍵盤采用4行4列的結構,每一行每一列各對應一個I/O口,故程序應該逐行查詢,一旦查詢到有某一行的按鍵被按下了,則根據(jù)讀取到的I/O總線口的數(shù)據(jù)即可查詢到是哪一列的按鍵被按下了,最后對應行列返回一個按鍵值回主函數(shù)。
其程序流程圖如圖4-2所示:
否
否
否
否
圖4-2 矩陣鍵盤程序流程圖
其程序位于后面附錄
4.3清零程序設計
根據(jù)系統(tǒng)要求以及硬件結構,AC按鍵直接接入單片機外部中段0,則程序應使用中斷來清除各數(shù)據(jù)存儲變量達到清零的目的,并把清零標志位至1,在主程序中不斷查詢標志位,若為1,則清零后。其程序框圖如圖4-3所示:
圖4-3清零程序流程圖
其程序如下:
/***清零中斷程序******/
void EX0_int() interrupt 0
{
if(beepflag==1) //若開聲音則每一次按鍵均鳴叫
{
beep=0;
delayms(100);
beep=1;
}
lcdwrite_com(0x01); //顯示清屏
lcd_setxy(0,0);
lcdwrite_data('0');
lcd_setxy(0,0);
num='N'; //數(shù)字初始化
keynum1=0,keynum2=0,sign=0;
ans1=0,ans2=0,ans=0,point=0;
conflag=0,newcalc=0;
ac=1;
}
4.4聲音開關程序設計
根據(jù)要求,聲音開關使用外部中斷1來處理,當按下聲音開關時,觸發(fā)單片機進入外部中斷1,在中斷程序里,通過對聲音開關標志位取反,在按鍵掃描過程中,加入對聲音標志位的判斷,若為1,則發(fā)出聲音,即可實現(xiàn)聲音提示功能。其程序框圖如圖4-4:
否
圖4-4聲音開關程序流程圖
其程序如下:
```c
/***聲音中斷程序******/
void EX1_int() interrupt 2
{
beepflag=~beepflag;
if(beepflag==1) //若開聲音則每一次按鍵均鳴叫
{
beep=0;
delayms(100);
beep=1;
}
}
4.5總體設計
整體程序包括:電子計算器.C、lcd1602.C和lcd1602_8.h
本系統(tǒng)采用大小循環(huán)嵌套方式的軟件設計思想,大循環(huán)則一直在運行,使計算器一直處于工作狀態(tài),并不斷掃描按鍵,小循環(huán)用于識別數(shù)字是否輸入完,一旦檢測到輸入的是運算符,則轉換輸入數(shù)值并儲存起來,最后按下等于號以后則根據(jù)運算符計算兩個數(shù)值的大小,并通過LCD顯示。
軟件系統(tǒng)總框圖如圖4-5所示:
圖4-5 軟件系統(tǒng)總框圖
其程序位于后面附錄
第五章 系統(tǒng)仿真
5.1 Proteus仿真
系統(tǒng)仿真圖見圖5-1所示:
圖5-1系統(tǒng)仿真圖
圖5-2加法運算
圖5-3減法運算
圖5-4乘法運算
圖5-5除法運算
圖5-6開根號運算
第六章 系統(tǒng)調(diào)試
6.1問題與分析
6.1.1硬件常見故障
1、邏輯錯誤:它是由設計錯誤或加工過程中的工藝性錯誤所造成的。這類錯誤包括錯線、開路、短路等。
2、元器件失效:有兩方面的原因:一是器件本身已損壞或性能不符合要求;二是組裝錯誤造成元件失效,如電解電容、集成電路安裝方向錯誤等。
3、可靠性差:因其可靠性差的原因很多,如金屬化孔、接插件接觸不良會造成系統(tǒng)時好時壞,經(jīng)不起振動;走線和布局不合理也會引起系統(tǒng)可靠性差。
4、電源故障:若樣機由電源故障,則加電后很容易造成器件損壞。電源故障包括電壓值不符合設計要求,電源引線和插座不對,功率不足,負載能力差等。
6.1.2軟件調(diào)試
軟件調(diào)試一般分為以下四個階段:
1、編寫程序并查錯;
2、在 C 語言的編譯系統(tǒng)中編譯源程序
3、對程序進行編譯連接,并及時發(fā)現(xiàn)程序中存在的錯誤;
4、改正錯誤。
在本次調(diào)試中出現(xiàn)的問題有:
1、在程序中有的函數(shù)名未定義;
2、在抄錄程序時,少錄入一些字符,如: ”“{”“-”“;、 、等符號,而出現(xiàn)錯誤;
3、有一些函數(shù)名錄入時少寫一個字母或順序顛倒;
4、沒有注意函數(shù)名的調(diào)用及定義;
5、芯片引腳定義出錯而導致沒有實驗現(xiàn)象。
各項功能測試:
表6-1功能測試
加法測試 減法測試
表6-2功能測試
乘法測試 除法測試
表6-3功能測試
開方測試 多次方運算測試
表6-4功能測試
錯誤提示測試1 錯誤提示測試2
由以上測試結果可知,計算器的各項功能正常,基本能達到設計要求。下面將進行多次測試,以檢驗計算器的性能指標。
本次對計算器的功能進行多次測量,其測試結果如下表:
表6-5功能多次測量
次數(shù) 第一運算數(shù) 運算符號 第二運算數(shù) 運算結果 實際結果
1 524 + 5624.563 6148.5629882 6148.563
2 55914 - 264.51 55649.4882811 55649.49
3 562 * 2 1124 1124
4 67 / 7.5 8.933334 8.93333333
5 8 (無輸入) 2.828427 2.28427125
6 9 ^ 2 81 81
7 (無輸入) + 19 100 100
8 (無輸入) (無輸入) 10 10
9 42 / 0 math error 錯誤
10 -64 (無輸入) math error 錯誤
結果分析:對比運算結果和實際結果可知,進行一般的整形運算計算器能準確無誤計算出來,但是當進行浮點運算時候,會產(chǎn)生精度丟失或者是有尾數(shù)產(chǎn)生,這是因為單片機對的浮點運算功能差,而且在keil開發(fā)環(huán)境中,float型和double型浮點數(shù)的精度都是一樣的,其小數(shù)點的有效數(shù)字位數(shù)都是6~7位,這就決定了本設計的計算器的浮點數(shù)精度有限,只能通過小數(shù)點補償來減少浮點數(shù)運算誤差。另外,由連續(xù)運算、新一輪運算測試、錯誤提示測試的結果以及運算過程中的AC清零、聲音開關設置可見,本設計的計算器的功能基本能實現(xiàn)。但是,由實際操作可發(fā)現(xiàn)本設計存在以下不足:
(1)某些按鍵不夠靈敏,導致需要按很多次才能輸入;
(2)當運算式子超過屏幕范圍時,不能通過移動屏幕來完全顯示式子;
(3)當連續(xù)出現(xiàn)錯誤操作時,如連續(xù)輸入減號,程序不能自動復位,會產(chǎn)生連續(xù)錯誤;
(4)沒有刪除輸入功能,當輸入出錯時,只能通過清零后重新輸入;
(5)沒有數(shù)據(jù)溢出提示功能。
第七章 總結與展望
7.1總結
經(jīng)過多次測量與調(diào)試,本計算器基本能實現(xiàn)設計要求中的功能。在設計的過程中,也遇到了不少的困難,例如在LCD上顯示任意位整數(shù),顯示任意位小數(shù),在輸入小數(shù)的時候小數(shù)點的處理問題,連續(xù)運算的結果保存與清空問題等等。最后通過不斷的查閱資料,請教別人,修改程序,下載調(diào)試等過程,終于把遇到的問題逐一解決了。雖然某些問題解決得不夠完美,但是都是經(jīng)過自己的思考和努力解決的,在此過程自己也學到了很多東西,例如學會了矩陣鍵盤的掃描技術、LCD接口技術、LCD的顯示技術、中斷技術等等,這些技術對熟練單片機的使用以及單片機項目開發(fā)是非常有幫助的。在設計的過程中的思考解決問題的思路和方法對以后的工作和生活都是非常有幫助的。
7.2展望
單片機程序運行可靠,并且可以修改,通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是一些獨特的功能。通過使用單片機編寫的程序?qū)崿F(xiàn)高智能、高效率和更高的可靠性。
本設計是由單片機實現(xiàn)的模擬計算器,它不僅能實現(xiàn)數(shù)據(jù)的加減乘除運算,而且還能使數(shù)據(jù)及其計算結果在數(shù)碼管上顯示出來,能夠?qū)崿F(xiàn)0-256的數(shù)字四則運算。本設計是用單片機AT89C51來控制,采用LCD1602液晶顯示讀取數(shù)據(jù),軟件部分是由C語言來編寫的。利用鍵盤和LCD1602設計一個簡單的數(shù)學計算器,可以完成簡單的如加,減,乘,除的四則運算,并將運算結果在LCD1602上顯示出來。
致 謝
本課題是在武傳艷導師的直接關懷和耐心指導下完成的。在整個設計期間,武老師嚴謹?shù)闹螌W態(tài)度、一絲不茍的工作作風、無私的奉獻品德、高度的責任感和實干的精神對我影響至深,使我受益終生,在此向武老師表示崇高的敬意和衷心的感謝。
在論文完成之時,再次感謝導師在諸多學術上的指導和生活上的關懷,我會終生銘記導師的教誨,學習恩師的品格,在今后的人生道路上再接再厲,無愧于恩師的栽培,還要向在實驗和論文完成過程中給予我?guī)椭耐瑢W們表示衷心的感謝!
最后,向幫助過我的各位老師和同學表示深深的謝意!
參考文獻
[1]馬忠梅等編著.單片機的C語言應用程序設計,北京:北京航空航天大學出版社,2007
[2]李云剛等編著.單片機原理與應用系統(tǒng)設計,北京:中國水利水電出社,2008
[3]張軍編著.AVR單片機應用系統(tǒng)開發(fā)典型實例,西安:中國電力出版社,2005
[4]李建忠編著.單片機原理及應用,西安:西安電子科技大學出版社,2011
[5] 吳寧.80X86/Pentium 微型計算機原理及應用[M], 北京:電子社,2004
[6] 蔡美琴.MCS-51系列單片機系統(tǒng)及其應用[M],北京:高等教社,2003
[7] 肖金球.單片機原理與接口技術[M],北京: 清華大學出版社2004
[8] 郭天祥.新概念51單片機C語言教程:入門、提高、開發(fā)、拓展全攻 略,北京:電子工業(yè)出版社,2009
[9] 譚浩強.從語言程序設計,第三版,北京:清華大學出版社,2005
[10]徐愛鈞.智能化測量控制儀表原理與設計,第二版,北京:北京航天航空大學出版社,2004.9
[11]孫育才等.MCS-51 系列單片微型計算機及其應用,第四版:東南大學出版社,2004.3
[12]李萍等.智能儀器實驗指導書,大連:大連交通大學,2007.9
[13]單片機應用技術(C 語言):中國勞動社會保障出版社,2006.6
[14]朱定華著.單片機原理與接口技術:電子工業(yè)出版社,2001.4
[15]王宜懷.劉曉升等著,嵌入式應用技術基礎教程,北京:清華大學出版社,2005.7
[16]王威著.HCS12 微控制器原理及應用,北京:北京航空航天大學出版社,2007.10
[17]周立功.單片機實驗與實踐,北京:北京航空航天大學出版社,2004.3.26
[18]孫育才等.MCS-51系列單片微型計算機及其應用,第四版:東南大學出版社.2004.3文章來源:http://www.zghlxwxcb.cn/news/detail-795160.html
附錄
程序清單
1、電子計算器.C文章來源地址http://www.zghlxwxcb.cn/news/detail-795160.html
到了這里,關于基于AT89C52單片機的計算器設計與仿真的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!