標(biāo)題: 基于單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)資料 [打印本頁(yè)]

作者: 51hei天地    時(shí)間: 2018-3-8 04:33
標(biāo)題: 基于單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)資料
近幾年單片機(jī)技術(shù)的發(fā)展很快,其中電子產(chǎn)品的更新速度迅猛。計(jì)算器是日常生活中比較的常見(jiàn)的電子產(chǎn)品之一。如何才能使計(jì)算器技術(shù)更加的成熟,充分利用已有的軟件和硬件條件,設(shè)計(jì)出更出色的計(jì)算器呢。
本設(shè)計(jì)是以STC89C51單片機(jī)為核心的計(jì)算器模擬系統(tǒng)設(shè)計(jì),輸入采用4×4矩陣鍵盤,可以進(jìn)行加、減、乘、除4位帶符號(hào)數(shù)字運(yùn)算,并在LCD1602上顯示操作過(guò)程。
科技的進(jìn)步告別了以前復(fù)雜的模擬電路,一塊幾厘米平方的單片機(jī)可以省去很多繁瑣的電路,F(xiàn)在應(yīng)用較廣泛的是科學(xué)計(jì)算器,與我們?nèi)粘K玫暮?jiǎn)單計(jì)算器有較大差別,除了能進(jìn)行加減乘除,科學(xué)計(jì)算器還可以進(jìn)行正數(shù)的四則運(yùn)算和乘方、開(kāi)方運(yùn)算,具有指數(shù)、對(duì)數(shù)、三角函數(shù)、反三角函數(shù)及存儲(chǔ)等計(jì)算功能。計(jì)算器的未來(lái)是小型化和輕便化,現(xiàn)在市面上出現(xiàn)的使用太陽(yáng)能電池的計(jì)算器,使用ASIC設(shè)計(jì)的計(jì)算器,如使用純軟件實(shí)現(xiàn)的計(jì)算器等,未來(lái)的智能化計(jì)算器將是我們的發(fā)展方向,更希望成為應(yīng)用廣泛的計(jì)算工具。


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


第一章 前言

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

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

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

第二章 方案論證

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

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

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

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

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

3.2元件簡(jiǎn)介
3.2.1 STC89C51特點(diǎn)



圖3.2.1-1 單片機(jī)STC89C51

1、主要性能:
(1) • 8051 CPU與MCS-51 兼容
  • 8K字節(jié)可編程FLASH存儲(chǔ)器(壽命:1000寫/擦循環(huán))
  • 全靜態(tài)工作:0Hz-33MHz
  • 三級(jí)加密程序存儲(chǔ)器
  • 128*8位內(nèi)部RAM
  • 32條可編程I/O線
  • 三個(gè)16位定時(shí)器/計(jì)數(shù)器
  • 八個(gè)中斷源
  • 全雙工UART串行通道
• 低功耗的閑置和掉電模式
• 掉電后中斷可喚醒
• 看門狗定時(shí)器
• 雙數(shù)據(jù)指針
• 掉電標(biāo)識(shí)符
• 片內(nèi)振蕩器和時(shí)鐘電路
(2) 管腳說(shuō)明:
  VCC:供電電壓。
GND:接地。

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

3、STC89C51引腳功能
STC89C51 單片機(jī)為40 引腳芯片見(jiàn)圖3.2.1-2。
圖3.2.1-2 STC89C51引腳圖

(1)口線:P0、P1、P2、P3 共四個(gè)八位口。
P0 口:P0口是一個(gè)8位漏極開(kāi)路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。
對(duì)P0端口寫“1”時(shí),引腳用作高阻抗輸入。
  當(dāng)訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0不具有內(nèi)部上拉電阻。
在flash編程時(shí),P0口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。

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

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

P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(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(記時(shí)器0外部輸入)
P3.5
T1(記時(shí)器1外部輸入)
P3.6
/WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)
P3.7
/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)


在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。
此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。

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

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

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

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



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

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

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

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

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

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

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

                          

圖3.2.3 LCD接口電路

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


表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)移動(dòng)方向,高電平右移,低電平左移;
S  位 → 屏幕上所有文字是否左移或者右移,高電平有效,低電平無(wú)效;
指令4
顯示開(kāi)關(guān)控制
D  位 → 控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示;
C  位 → 控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo);   
    B  位 → 控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍 ;
指令5
光標(biāo)或顯示移位
S/C位 → 高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)
指令6
功能命令設(shè)置
DL位---高電平時(shí)為4位數(shù)據(jù)總線,低電平時(shí)為8位總線;
N—位低電平時(shí)為單行顯示,高電平時(shí)為雙行顯示;
F—位低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)為5x10的點(diǎn)陣字符;
指令7
字符發(fā)生器RAM地址設(shè)置
指令8
DDRAM地址設(shè)置
指令9
讀忙信號(hào)和光標(biāo)地址
BF位 → 為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù)
指令10
寫數(shù)據(jù)
指令11
讀數(shù)據(jù)



2 、LCD的特點(diǎn):
(1)低壓微功耗;
(2)平板型結(jié)構(gòu);
(3)被動(dòng)顯示型(無(wú)眩光,不刺激人眼,不會(huì)引起眼睛疲勞);
(4)顯示信息量大(因?yàn)橄袼乜梢宰龅煤苄?;
(5)易于彩色化(在色譜上可以非常準(zhǔn)確的復(fù)現(xiàn));
(6)無(wú)電磁輻射(對(duì)人體安全,利于信息保密);
(7)長(zhǎng)壽命(這種器件幾乎沒(méi)有什么劣化問(wèn)題,因此壽命極長(zhǎng),但是液晶背光壽命有限,不過(guò)背光部分可以更換)。


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

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


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

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

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

圖4.2.3 編碼鍵盤電路


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

圖4.2.4 LCD液晶顯示屏顯示

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

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

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

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

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


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

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

結(jié)束語(yǔ)

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



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







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1