找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 16150|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于單片機的簡易計算器設(shè)計資料

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:285461 發(fā)表于 2018-3-8 04:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
近幾年單片機技術(shù)的發(fā)展很快,其中電子產(chǎn)品的更新速度迅猛。計算器是日常生活中比較的常見的電子產(chǎn)品之一。如何才能使計算器技術(shù)更加的成熟,充分利用已有的軟件和硬件條件,設(shè)計出更出色的計算器呢。
本設(shè)計是以STC89C51單片機為核心的計算器模擬系統(tǒng)設(shè)計,輸入采用4×4矩陣鍵盤,可以進行加、減、乘、除4位帶符號數(shù)字運算,并在LCD1602上顯示操作過程。
科技的進步告別了以前復(fù)雜的模擬電路,一塊幾厘米平方的單片機可以省去很多繁瑣的電路。現(xiàn)在應(yīng)用較廣泛的是科學(xué)計算器,與我們?nèi)粘K玫暮唵斡嬎闫饔休^大差別,除了能進行加減乘除,科學(xué)計算器還可以進行正數(shù)的四則運算和乘方、開方運算,具有指數(shù)、對數(shù)、三角函數(shù)、反三角函數(shù)及存儲等計算功能。計算器的未來是小型化和輕便化,現(xiàn)在市面上出現(xiàn)的使用太陽能電池的計算器,使用ASIC設(shè)計的計算器,如使用純軟件實現(xiàn)的計算器等,未來的智能化計算器將是我們的發(fā)展方向,更希望成為應(yīng)用廣泛的計算工具。


第一章 前言
1.1 系統(tǒng)開發(fā)背景
1.2 系統(tǒng)開發(fā)意義
1.3 設(shè)計目的
第二章 方案論證
2.1 方案構(gòu)思
2.2  方案比較與選擇
第三章 系統(tǒng)硬件設(shè)計及說明
3.1系統(tǒng)組成及總體框圖
3.2元件簡介
3.2.1 STC89C51特點
3.2.2 LCD1602液晶顯示屏
第四章 設(shè)計原理分析
4.1  設(shè)計方案的確定
4.2計算器硬件方案及硬件資源分配
4.2.1 硬件資源分配
4.2.2 系統(tǒng)的硬件設(shè)計
4.2.3 鍵盤電路的設(shè)計
4.2.4 顯示電路的設(shè)計
第五章 計算器的軟件設(shè)計
5.1計算器的軟件規(guī)劃
5.2 鍵盤掃描的程序設(shè)計
5.3 顯示模塊的程序設(shè)計
5.4 主程序的設(shè)計
5.5 軟件的可靠性設(shè)計
結(jié)束語
致謝
參考文獻
附錄
附錄一:硬件實物圖
附錄二:系統(tǒng)程序清單


第一章 前言

1.1 系統(tǒng)開發(fā)背景
隨著社會的發(fā)展,科學(xué)的進步,人們的生活水平在逐步的提高,尤其是微電子技術(shù)的發(fā)展,猶如雨后春筍般的變化。電子產(chǎn)品的更新速度快就不足驚奇了。計算器在人們的日常中是比較的常見的電子產(chǎn)品之一。如何使計算器技術(shù)更加的成熟,充分利用已有的軟件和硬件條件,設(shè)計出更出色的計算器,使其更好的為各個行業(yè)服務(wù),成了如今電子領(lǐng)域重要的研究課題。

1.2 系統(tǒng)開發(fā)意義
今天,人們的日常生活中已經(jīng)離不開計算器了,社會的各個角落都有它的身影,比如商店,辦公室,學(xué)�!�。因此設(shè)計一款簡單實用的計算器會有很大的實際意義。

1.3 設(shè)計目的
本設(shè)計旨在進一步掌握單片機理論知識,理解嵌入式單片機系統(tǒng)的硬軟件設(shè)計,加強對實際應(yīng)用系統(tǒng)設(shè)計的能力。通過本設(shè)計的學(xué)習(xí),使我掌握單片機程序設(shè)計和微機接口應(yīng)用的基本方法,并能綜合運用本科階段所學(xué)軟、硬件知識分析實際問題,提高解決畢業(yè)設(shè)計實際問題的能力,為單片機應(yīng)用和開發(fā)打下良好的基礎(chǔ)。
1、對字符液晶顯示模塊的工作原理,如初始化、清屏、顯示、調(diào)用及外特性有較清楚的認(rèn)識,并會使用LCD(液晶顯示模塊)實現(xiàn)計算結(jié)果的顯示;掌握液晶顯示模塊的驅(qū)動和編程,設(shè)計LCD和單片機的接口電路,以及利用單片機對液晶模塊的驅(qū)動和操作;
2、在充分分析內(nèi)部邏輯的概念,進行軟件和調(diào)試,學(xué)會使用,并能夠以其為平臺設(shè)計出具有四則運算能力簡易計算器的硬件電路和軟件程序。

第二章 方案論證

2.1 方案構(gòu)思
本設(shè)計可以采用兩種方案,一種是以FPGA為核心處理芯片,配備相應(yīng)的外設(shè);另外一種是以STC89C51處理器,配備相應(yīng)的外設(shè)。
1、方案一:采用FPGA控制
FPGA是一種高密度的可編程邏輯器件,自從Xilinx公司1985年推出第一片F(xiàn)PGA以來,FPGA的集成密度和性能提高很快,其集成密度最高達(dá)500萬門/片以上,系統(tǒng)性能可達(dá)200MHz。由于FPGA器件集成度高,方便易用,開發(fā)和上市周期短,在數(shù)字設(shè)計和電子生產(chǎn)中得到迅速普及和應(yīng)用,并一度在高密度的可編程邏輯器件領(lǐng)域中獨占鰲頭。
但是而基于 SRAM編程的FPGA,其編程信息需存放在外部存儲器上 ,需外部存儲器芯片 ,且使用方法復(fù)雜 ,保密性差,而其對于一個簡單的計算器而言,實用FPGA有點大材小用,成本太高。
2、方案二:采用STC89C51
單片機是單片微型機的簡稱,故又稱為微控制器MCU(Micro Control Unit)。通常由單塊集成電路芯片組成,內(nèi)部包含有計算機的基本功能部件:中央處理器CPU,存儲器和I/O接口電路等。因此,單片機只要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個單片機控制系統(tǒng)。單片機廣泛用于智能產(chǎn)品,智能儀表,測控技術(shù),智能接口等,具有操作簡單,實用方便,價格便宜等優(yōu)點,而其中STC89C51以MCS-51為內(nèi)核,是單片機中最典型的代表,應(yīng)用于各種控制領(lǐng)域。

2.2  方案比較與選擇
通過以上兩種方案論證和比較,從設(shè)計的實用性,方便性和成本出發(fā),選擇了以STC89C51單片機作為中央處理單元進行計算器的設(shè)計,這樣設(shè)計能夠?qū)崿F(xiàn)對四位加減乘除和除法四位小點數(shù)的運算。

第三章 系統(tǒng)硬件設(shè)計及說明

3.1系統(tǒng)組成及總體框圖

圖3.1 系統(tǒng)組成及總體框圖

3.2元件簡介
3.2.1 STC89C51特點



圖3.2.1-1 單片機STC89C51

1、主要性能:
(1) • 8051 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ù)指針
• 掉電標(biāo)識符
• 片內(nèi)振蕩器和時鐘電路
(2) 管腳說明:
  VCC:供電電壓。
GND:接地。

2、STC89C51的功能特性描述
STC89C51 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非 易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得STC89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。
STC89C51具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時鐘電路。
此外, STC89C51 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工 作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié), 單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。

3、STC89C51引腳功能
STC89C51 單片機為40 引腳芯片見圖3.2.1-2。
圖3.2.1-2 STC89C51引腳圖

(1)口線:P0、P1、P2、P3 共四個八位口。
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/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 口送出高八位地址。在這種應(yīng)用中,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口亦作為STC89C51特殊功能(第二功能)使用,如表3.2.1所示。

表3.2.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ù)存儲器讀選通)


在flash編程和校驗時,P3口也接收一些控制信號。
此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控制信號。

(2)其他引腳說明:
RST:復(fù)位輸入。晶振工作時,RST腳持續(xù)2 個機器周期高電平將使單片機復(fù)位。看門狗計時完成后,RST 腳輸出96 個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。

  ALE/PROG——當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。
  對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。
如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效。

PSEN——程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)STC89C51由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。

  EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。
  如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。
  FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。



圖3.2.1-3晶振外接結(jié)構(gòu)引腳圖

XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為12MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇,在本設(shè)計電路中選用了12MHz。電容取20PF左右。機器周期=12×?xí)r間周期,如12MHz的機器周期為1微秒。

(3)控制或復(fù)位引腳
RESET 此腳為高電平時(約2個機器周期)可將單片機復(fù)位。
RST/VPD——當(dāng)出現(xiàn)兩個機器周期高電平時,單片機復(fù)位。復(fù)位后,P0~P3輸出高電平;SP寄存器為07H;其它寄存器全部清0;不影響RAM狀態(tài)。如圖3.2.1-4所示。

圖3.2.1-4 按鍵電平復(fù)位

   AT89SXX系列單片機實現(xiàn)了ISP下載功能,故而取代了89CXX系列的下載方式,也是因為這樣,ATMEL公司已經(jīng)停止生產(chǎn)89CXX系列的單片機,現(xiàn)在市面上的AT89CXX多是停產(chǎn)前的庫存產(chǎn)品。

4、STC89C51的編程方法                        
編程前,須按編程模式表設(shè)置好地址、數(shù)據(jù)及控制信號;順序如下:
① 在地址線上加上要編程單元的地址信號。
② 在數(shù)據(jù)線上加上要寫入的數(shù)據(jù)字節(jié)。
③ 激活相應(yīng)的控制信號。
④ 將EA/Vpp端加上+12V編程電壓。
⑤ 每對Flash存儲陣列寫入一個字節(jié)或每寫入一個程序機密位,加上一個ALE/PROG編程脈沖。每個字節(jié)寫入周期是自身定時的,大多數(shù)約為50us。改變編程單元的地址和寫入的數(shù)據(jù),重復(fù)①—⑤步驟,直到全部文件編程結(jié)束。
單片機的現(xiàn)狀及發(fā)展方向:
單片機是為了工業(yè)控制需要滿足而誕生的,是自動控制系統(tǒng)的核心部件,因而也主要用于工業(yè)控制、智能化儀器儀表、家用電器中。它具有體積小,功能多、價格低、使用方便、系統(tǒng)設(shè)計靈活等優(yōu)點,應(yīng)用領(lǐng)域不斷擴大,除了工業(yè)控制,智能化儀表,通訊,家用電器外,在智能化高檔電子玩具產(chǎn)品中也大量采用單片機芯片作為核心控制部件。
由于單片機主要面向工業(yè)控制,工作環(huán)境比較惡劣,入高溫,強電磁干擾,甚至含有腐蝕性氣體,在太空中工作的單片機控制系統(tǒng),還必須具有抗輻射能力,這決定了單片機CPU于通用微機CPU具有不同的技術(shù)特征和發(fā)展方向:
(1) 可靠性高;
(2) 控制功能往往很強,數(shù)值計算交叉;
(3) 指令系統(tǒng)比通用微處理器慢的多;
(4) X系列芯片取代;
(5) 抗干擾性強,工作溫度范圍寬。

3.2.2 LCD1602液晶顯示屏
1、應(yīng)用簡介
模塊內(nèi)部自帶字符發(fā)生存儲器(CGROM),字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是(41H),顯示時模塊把代碼41H發(fā)給液晶模塊,我們就能在液晶上看到字母“A”。
1602液晶模塊內(nèi)部的控制器共有11條控制指令,豐富的指令可以完成液晶的時序控制、工作方式式設(shè)置和數(shù)據(jù)顯示等。
采用的LCD1602液晶模塊是標(biāo)準(zhǔn)16針插座,接口電路如圖3.2.3所示:關(guān)于LCD1602的詳細(xì)資料見表3.2.3-1和表3.2.3-2。

                          

圖3.2.3 LCD接口電路

表3.2.3-1 LCD1602引腳說明
第1腳
VSS為地電源
第2腳
VDD接5V正電源
第3腳
V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。
實際電路中采用2K電阻到地,比較理想。
第4腳
RS為寄存器選擇,高電平選擇數(shù)據(jù)寄存器、低電平選擇指令寄存器。
第5腳
RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。
當(dāng)RS和RW共同為低電平時  (00)可以寫入指令或者顯示地址;
當(dāng)RS為低電平RW為高電平時(01)可以讀入忙信號;
當(dāng)RS為高電平RW為低電平時(10)可以寫入數(shù)據(jù)。
第6腳
E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。
第7~14腳
D0~D7為8位雙向數(shù)據(jù)線。
第15~16腳
背光陽極和背光陰極。


表3.2.3-2 LCD1602指令表
指令1
清顯示     指令碼01H, 光標(biāo)復(fù)位到地址00H位置;
指令2
光標(biāo)復(fù)位   指令碼02H, 光標(biāo)返回到地址00H位置 ;
指令3
光標(biāo)和顯示模式設(shè)置
I/D位 → 光標(biāo)移動方向,高電平右移,低電平左移;
S  位 → 屏幕上所有文字是否左移或者右移,高電平有效,低電平無效;
指令4
顯示開關(guān)控制
D  位 → 控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示;
C  位 → 控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo);   
    B  位 → 控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍 ;
指令5
光標(biāo)或顯示移位
S/C位 → 高電平時移動顯示的文字,低電平時移動光標(biāo)
指令6
功能命令設(shè)置
DL位---高電平時為4位數(shù)據(jù)總線,低電平時為8位總線;
N—位低電平時為單行顯示,高電平時為雙行顯示;
F—位低電平時顯示5x7的點陣字符,高電平時為5x10的點陣字符;
指令7
字符發(fā)生器RAM地址設(shè)置
指令8
DDRAM地址設(shè)置
指令9
讀忙信號和光標(biāo)地址
BF位 → 為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù)
指令10
寫數(shù)據(jù)
指令11
讀數(shù)據(jù)



2 、LCD的特點:
(1)低壓微功耗;
(2)平板型結(jié)構(gòu);
(3)被動顯示型(無眩光,不刺激人眼,不會引起眼睛疲勞);
(4)顯示信息量大(因為像素可以做得很小);
(5)易于彩色化(在色譜上可以非常準(zhǔn)確的復(fù)現(xiàn));
(6)無電磁輻射(對人體安全,利于信息保密);
(7)長壽命(這種器件幾乎沒有什么劣化問題,因此壽命極長,但是液晶背光壽命有限,不過背光部分可以更換)。


第四章 設(shè)計原理分析

4.1  設(shè)計方案的確定
本設(shè)計需要使用LCD液晶顯示屏和編碼鍵盤。故選擇靜態(tài)顯示和用編碼鍵盤。使用LCD液晶顯示屏顯示運算結(jié)果。
    主程序進行初始化,其他的程序選擇模塊式的方式。首先對每個模塊進行調(diào)試, 當(dāng)模塊調(diào)試成功后,逐一的加入主程序中,最后完成整個軟件部分的設(shè)計。


4.2計算器硬件方案及硬件資源分配
4.2.1 硬件資源分配
主要用到的硬件:STC89C51   LCD液晶顯示屏  編碼鍵盤
硬件分配:
1、P1、P3口:做為輸出口,控制LCD液晶顯示屏顯示數(shù)據(jù)的結(jié)果。
2、P2口:做為輸入口,與鍵盤連接,實現(xiàn)數(shù)據(jù)的輸入。
3、LCD液晶顯示屏顯示輸出。

4.2.2 系統(tǒng)的硬件設(shè)計
為了更好的實現(xiàn)系統(tǒng)得功能,硬件電路的設(shè)計應(yīng)該遵循以下原則:
1、優(yōu)化硬件電路
采用軟件設(shè)計與硬件設(shè)計相結(jié)合的方法;盡管采用軟件來實現(xiàn)硬件系統(tǒng)的功能時,也許響應(yīng)時間會比單純使用硬件時長,而且還要占用微處理器(MCU)的時間;但是,用軟件實現(xiàn)硬件的功能可以簡化硬件結(jié)構(gòu),提高電路的可靠性。所以,在設(shè)計本系統(tǒng)得時候,在滿足可靠性和實時性的前提下,盡可能的通過軟件來實現(xiàn)硬件功能。
2、可靠性及抗干擾設(shè)計
根據(jù)可靠性設(shè)計理論,系統(tǒng)所用芯片數(shù)量越少,系統(tǒng)的平均無故障時間越長。而且,所用芯片數(shù)量越少,地址和數(shù)據(jù)總線在電路板上受干擾的可能性也就越小。因此,系統(tǒng)的設(shè)計思想是在滿足功能的情況下力爭使用較少數(shù)量的芯片。
3、靈活的功能擴展
功能擴展是否靈活是衡量一個系統(tǒng)優(yōu)劣的重要指標(biāo)。一次設(shè)計往往不能完全考慮到系統(tǒng)的各個方面,系統(tǒng)需要不斷完善以及進行功能升級。進行功能擴展時,應(yīng)該在原有設(shè)計的基礎(chǔ)上,通過修改軟件程序和少量硬件完成。對于本系統(tǒng)而言,就是要求在系統(tǒng)硬件不變的情況下,能夠通過修改軟件程序,完成功能的升級和擴展。
根據(jù)第提出的系統(tǒng)設(shè)計方案,結(jié)合以上三條原則,確定了系統(tǒng)硬件的設(shè)計。計算器主要由以下一些功能模塊構(gòu)成:非編碼鍵盤模塊、LCD液晶顯示屏模塊等。
該系統(tǒng)的硬件設(shè)計采用了模塊化的設(shè)計方法。STC89C51 單片機與LCD液晶顯示屏顯示電路是整個電路的核心,它們實現(xiàn)系統(tǒng)的功能要求。
簡易計算器主要包括:鍵盤電路,顯示電路。
下圖為總體硬件結(jié)構(gòu)。(如圖4.2.2 所示為整個系統(tǒng)的原理圖)
圖4.2.2 計算器原理圖
前面敘述了該系統(tǒng)的設(shè)計說明,系統(tǒng)采用了比較簡單的設(shè)計方案,所以該系統(tǒng)的硬件設(shè)計的總外圍電路不會產(chǎn)生過多的干擾。在下面的闡述中,對系統(tǒng)的外圍電路分別予以介紹。鍵盤部分采用編碼鍵盤,顯示部分采用LCD液晶顯示屏完全能夠很好的實現(xiàn)顯示方面的要求。

4.2.3 鍵盤電路的設(shè)計
鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20個以上)和專用驅(qū)動芯片的組合,當(dāng)按下某個按鍵時,它能夠處理按鍵抖動、連擊等問題,直接輸出按鍵的編碼,無需系統(tǒng)軟件干預(yù)。通用計算機使用的標(biāo)準(zhǔn)鍵盤就是編碼鍵盤。在智能儀器中,使用并行接口芯片8279或串行接口芯片HD7279均可以組成編碼鍵盤,同時還可以兼顧數(shù)碼管的顯示驅(qū)動,其相關(guān)的接口電路和接口軟件均可在芯片資料中得到。當(dāng)系統(tǒng)功能比較復(fù)雜,按鍵數(shù)量很多時,采用編碼鍵盤可以簡化軟件設(shè)計。非編碼鍵盤成本低廉。
從成本角度出發(fā),本設(shè)計選用的是非編碼鍵盤。如圖4.2.3

圖4.2.3 編碼鍵盤電路


4.2.4 顯示電路的設(shè)計
當(dāng)系統(tǒng)需要顯示少量數(shù)據(jù)時,采用LCD液晶顯示屏進行顯示是一種經(jīng)濟實用的方法。P0口作為液晶顯示的數(shù)據(jù)端口,P2.5-P2.7口作為其控制端口,控制LCD液晶顯示屏顯示輸出數(shù)據(jù)。
最終電路如圖4.2.4所示:

圖4.2.4 LCD液晶顯示屏顯示

第五章 計算器的軟件設(shè)計

5.1計算器的軟件規(guī)劃
簡易計算器的程序主要包括以下功能模塊:
1、定時查鍵模塊,分為讀鍵程序、判鍵程序段、運算操作子程序等部分;
2、基于LCD液晶顯示屏的顯示模塊;
3、主模塊,為系統(tǒng)的初始化。

5.2 鍵盤掃描的程序設(shè)計
鍵盤掃描子程序,首先讀出P1的低四位,然后讀出P1口的高四位。然后鍵值并顯示緩存。然后將鍵如的值轉(zhuǎn)換為ASCII碼然后就可以軟件來設(shè)置硬件按鍵各個鍵代表的內(nèi)容。
    讀鍵程序使用的是反轉(zhuǎn)法讀鍵,不管鍵盤矩陣的規(guī)模大小,均進行兩次讀鍵。第一次所有行線均輸出低電平,從所有讀入鍵盤信息(列信息);第二次所有列線均輸出低電平,從所有行線讀入鍵盤信息(行信息)。
數(shù)字鍵按下則將相應(yīng)的數(shù)字送入緩存區(qū),功能鍵按下則執(zhí)行相應(yīng)的程序。

5.3 顯示模塊的程序設(shè)計
顯示模塊程序首先要對顯示模塊進行初始化;然后控制光標(biāo)的位置;定義液晶顯示的控制端口,用SBIT指令完成;然后設(shè)置清屏、關(guān)閉顯示、歸位、開顯示、顯示位置的首地址等等。

顯示模塊的流程圖如圖5.3所示:


5.4 主程序的設(shè)計
主程序主要是用來對LCD液晶顯示屏進行初始化的。對輸入按鍵判斷,然后進行加減乘除,最后計算出結(jié)果,顯示出計算結(jié)果。

5.5 軟件的可靠性設(shè)計
提高本儀器其可靠性措施主要有:
1、為防止程序跑飛,軟件中設(shè)置了軟件陷阱。

結(jié)束語

在硬件的制作過程中我走了好多的彎路,主要是在系統(tǒng)還沒有設(shè)計很有把握就開始動手制作了。后來發(fā)現(xiàn)與設(shè)計的要求還有偏差,反復(fù)的改過了幾次,浪費了大量的時間和體力。感受到設(shè)計人員要有耐心,要認(rèn)真的從要求開始研究。軟件的編寫過程中費了很大的力氣,因為軟件的編寫要求很高,要很細(xì)心,一不小心就會調(diào)用錯誤,很深刻的體會到作為軟件編程人員是絕不能粗心大意的。一個程序的完成的速度和質(zhì)量高低與細(xì)心與否有著很大聯(lián)系。編程時,我充分使用了結(jié)構(gòu)化的思想。這樣因為語句較少,程序調(diào)試比較方便,功能模塊可以逐一的調(diào)試,充分體現(xiàn)了結(jié)構(gòu)化編程的優(yōu)勢。當(dāng)每個模塊都完成時,將其功能加到一起就完成了整體的設(shè)計。



單片機源碼與word格式的文檔下載地址:
http://www.torrancerestoration.com/bbs/dpj-108605-1.html


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表