第一章 前言
1.1 系統(tǒng)開發(fā)背景
隨著社會的發(fā)展,科學(xué)的進(jìn)步,人們的生活水平在逐步的提高,尤其是微電子技術(shù)的發(fā)展,猶如雨后春筍般的變化。電子產(chǎn)品的更新速度快就不足驚奇了。計(jì)算器在人們的日常中是比較的常見的電子產(chǎn)品之一。如何使計(jì)算器技術(shù)更加的成熟,充分利用已有的軟件和硬件條件,設(shè)計(jì)出更出色的計(jì)算器,使其更好的為各個行業(yè)服務(wù),成了如今電子領(lǐng)域重要的研究課題。
1.2 系統(tǒng)開發(fā)意義
今天,人們的日常生活中已經(jīng)離不開計(jì)算器了,社會的各個角落都有它的身影,比如商店,辦公室,學(xué)?!虼嗽O(shè)計(jì)一款簡單實(shí)用的計(jì)算器會有很大的實(shí)際意義。
1.3 設(shè)計(jì)目的
本設(shè)計(jì)旨在進(jìn)一步掌握單片機(jī)理論知識,理解嵌入式單片機(jī)系統(tǒng)的硬軟件設(shè)計(jì),加強(qiáng)對實(shí)際應(yīng)用系統(tǒng)設(shè)計(jì)的能力。通過本設(shè)計(jì)的學(xué)習(xí),使我掌握單片機(jī)程序設(shè)計(jì)和微機(jī)接口應(yīng)用的基本方法,并能綜合運(yùn)用本科階段所學(xué)軟、硬件知識分析實(shí)際問題,提高解決畢業(yè)設(shè)計(jì)實(shí)際問題的能力,為單片機(jī)應(yīng)用和開發(fā)打下良好的基礎(chǔ)。
1、對字符液晶顯示模塊的工作原理,如初始化、清屏、顯示、調(diào)用及外特性有較清楚的認(rèn)識,并會使用LCD(液晶顯示模塊)實(shí)現(xiàn)計(jì)算結(jié)果的顯示;掌握液晶顯示模塊的驅(qū)動和編程,設(shè)計(jì)LCD和單片機(jī)的接口電路,以及利用單片機(jī)對液晶模塊的驅(qū)動和操作;
2、在充分分析內(nèi)部邏輯的概念,進(jìn)行軟件和調(diào)試,學(xué)會使用,并能夠以其為平臺設(shè)計(jì)出具有四則運(yùn)算能力簡易計(jì)算器的硬件電路和軟件程序。
第二章 方案論證
2.1 方案構(gòu)思
本設(shè)計(jì)可以采用兩種方案,一種是以FPGA為核心處理芯片,配備相應(yīng)的外設(shè);另外一種是以AT89S52處理器,配備相應(yīng)的外設(shè)。
1、方案一:采用FPGA控制
FPGA是一種高密度的可編程邏輯器件,自從Xilinx公司1985年推出第一片F(xiàn)PGA以來,FPGA的集成密度和性能提高很快,其集成密度最高達(dá)500萬門/片以上,系統(tǒng)性能可達(dá)200MHz。由于FPGA器件集成度高,方便易用,開發(fā)和上市周期短,在數(shù)字設(shè)計(jì)和電子生產(chǎn)中得到迅速普及和應(yīng)用,并一度在高密度的可編程邏輯器件領(lǐng)域中獨(dú)占鰲頭。
但是而基于 SRAM編程的FPGA,其編程信息需存放在外部存儲器上 ,需外部存儲器芯片 ,且使用方法復(fù)雜 ,保密性差,而其對于一個簡單的計(jì)算器而言,實(shí)用FPGA有點(diǎn)大材小用,成本太高。
2、方案二:采用AT89S52
單片機(jī)是單片微型機(jī)的簡稱,故又稱為微控制器MCU(Micro Control Unit)。通常由單塊集成電路芯片組成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件:中央處理器CPU,存儲器和I/O接口電路等。因此,單片機(jī)只要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個單片機(jī)控制系統(tǒng)。單片機(jī)廣泛用于智能產(chǎn)品,智能儀表,測控技術(shù),智能接口等,具有操作簡單,實(shí)用方便,價格便宜等優(yōu)點(diǎn),而其中AT89S52以MCS-51為內(nèi)核,是單片機(jī)中最典型的代表,應(yīng)用于各種控制領(lǐng)域。
2.2? 方案比較與選擇
通過以上兩種方案論證和比較,從設(shè)計(jì)的實(shí)用性,方便性和成本出發(fā),選擇了以AT89S52單片機(jī)作為中央處理單元進(jìn)行計(jì)算器的設(shè)計(jì),這樣設(shè)計(jì)能夠?qū)崿F(xiàn)對四位加減乘除和除法四位小點(diǎn)數(shù)的運(yùn)算。
第三章 系統(tǒng)硬件設(shè)計(jì)及說明
3.1系統(tǒng)組成及總體框圖
圖3.1 系統(tǒng)組成及總體框圖
3.2元件簡介
3.2.1 AT89S52特點(diǎn)
1、主要性能:
(2) 管腳說明:
VCC:供電電壓。
GND:接地。
2、AT89S52的功能特性描述
AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非 易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。
AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位 定時器/計(jì)數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時鐘電路。
此外, AT89S52 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計(jì)數(shù)器、串口、中斷繼續(xù)工 作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。
3、AT89S52引腳功能
AT89S52 單片機(jī)為40 引腳芯片見圖3.2.1-2。
(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é);在程序校驗(yàn)時,輸出指令字節(jié)。程序校驗(yàn)時,需要外部上拉電阻。
P1口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。
此外,P1.0和P1.1分別作定時器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和定時器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。
在flash編程和校驗(yàn)時,P1口接收低8位地址字節(jié)。
引腳號第二功能:
P1.0 T2(定時器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時鐘輸出
P1.1 T2EX(定時器/計(jì)數(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 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。
在使用8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。
在flash編程和校驗(yàn)時,P2口也接收高8位地址字節(jié)和一些控制信號。
P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。
P3口亦作為AT89S52特殊功能(第二功能)使用,如表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編程和校驗(yàn)時,P3口也接收一些控制信號。
此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號。
(2)其他引腳說明:
RST:復(fù)位輸入。晶振工作時,RST腳持續(xù)2 個機(jī)器周期高電平將使單片機(jī)復(fù)位。看門狗計(jì)時完成后,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激活。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效。
PSEN——程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89S52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(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。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
XTAL1,XTAL2接石英晶體振蕩器。如圖3.2.1-3所示外接晶體引腳圖。
XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為12MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇,在本設(shè)計(jì)電路中選用了12MHz。電容取20PF左右。機(jī)器周期=12×?xí)r間周期,如12MHz的機(jī)器周期為1微秒。
(3)控制或復(fù)位引腳
RESET 此腳為高電平時(約2個機(jī)器周期)可將單片機(jī)復(fù)位。
RST/VPD——當(dāng)出現(xiàn)兩個機(jī)器周期高電平時,單片機(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)前的庫存產(chǎn)品。
4、AT89S52的編程方法
編程前,須按編程模式表設(shè)置好地址、數(shù)據(jù)及控制信號;順序如下:
① 在地址線上加上要編程單元的地址信號。
② 在數(shù)據(jù)線上加上要寫入的數(shù)據(jù)字節(jié)。
③ 激活相應(yīng)的控制信號。
④ 將EA/Vpp端加上+12V編程電壓。
⑤ 每對Flash存儲陣列寫入一個字節(jié)或每寫入一個程序機(jī)密位,加上一個ALE/PROG編程脈沖。每個字節(jié)寫入周期是自身定時的,大多數(shù)約為50us。改變編程單元的地址和寫入的數(shù)據(jù),重復(fù)①—⑤步驟,直到全部文件編程結(jié)束。
單片機(jī)的現(xiàn)狀及發(fā)展方向:
單片機(jī)是為了工業(yè)控制需要滿足而誕生的,是自動控制系統(tǒng)的核心部件,因而也主要用于工業(yè)控制、智能化儀器儀表、家用電器中。它具有體積小,功能多、價格低、使用方便、系統(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)用簡介
模塊內(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)整對比度。
實(shí)際電路中采用2K電阻到地,比較理想。 |
第4腳 | RS為寄存器選擇,高電平選擇數(shù)據(jù)寄存器、低電平選擇指令寄存器。 |
第5腳 | RW為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。
當(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的點(diǎn)陣字符,高電平時為5x10的點(diǎn)陣字符; |
指令7 | 字符發(fā)生器RAM地址設(shè)置 |
指令8 | DDRAM地址設(shè)置 |
指令9 | 讀忙信號和光標(biāo)地址
BF位 → 為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù) |
指令10 | 寫數(shù)據(jù) |
指令11 | 讀數(shù)據(jù) |
2 、LCD的特點(diǎn):
(1)低壓微功耗;
(2)平板型結(jié)構(gòu);
(3)被動顯示型(無眩光,不刺激人眼,不會引起眼睛疲勞);
(4)顯示信息量大(因?yàn)橄袼乜梢宰龅煤苄?;
(5)易于彩色化(在色譜上可以非常準(zhǔn)確的復(fù)現(xiàn));
(6)無電磁輻射(對人體安全,利于信息保密);
(7)長壽命(這種器件幾乎沒有什么劣化問題,因此壽命極長,但是液晶背光壽命有限,不過背光部分可以更換)。
第四章 設(shè)計(jì)原理分析
4.1? 設(shè)計(jì)方案的確定
本設(shè)計(jì)需要使用LCD液晶顯示屏和編碼鍵盤。故選擇靜態(tài)顯示和用編碼鍵盤。使用LCD液晶顯示屏顯示運(yùn)算結(jié)果。
主程序進(jìn)行初始化,其他的程序選擇模塊式的方式。首先對每個模塊進(jìn)行調(diào)試, 當(dāng)模塊調(diào)試成功后,逐一的加入主程序中,最后完成整個軟件部分的設(shè)計(jì)。
4.2計(jì)算器硬件方案及硬件資源分配
4.2.1 硬件資源分配
主要用到的硬件:AT89S52?? 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é)合的方法;盡管采用軟件來實(shí)現(xiàn)硬件系統(tǒng)的功能時,也許響應(yīng)時間會比單純使用硬件時長,而且還要占用微處理器(MCU)的時間;但是,用軟件實(shí)現(xiàn)硬件的功能可以簡化硬件結(jié)構(gòu),提高電路的可靠性。所以,在設(shè)計(jì)本系統(tǒng)得時候,在滿足可靠性和實(shí)時性的前提下,盡可能的通過軟件來實(shí)現(xiàn)硬件功能。
2、可靠性及抗干擾設(shè)計(jì)
根據(jù)可靠性設(shè)計(jì)理論,系統(tǒng)所用芯片數(shù)量越少,系統(tǒng)的平均無故障時間越長。而且,所用芯片數(shù)量越少,地址和數(shù)據(jù)總線在電路板上受干擾的可能性也就越小。因此,系統(tǒng)的設(shè)計(jì)思想是在滿足功能的情況下力爭使用較少數(shù)量的芯片。
3、靈活的功能擴(kuò)展
功能擴(kuò)展是否靈活是衡量一個系統(tǒng)優(yōu)劣的重要指標(biāo)。一次設(shè)計(jì)往往不能完全考慮到系統(tǒng)的各個方面,系統(tǒng)需要不斷完善以及進(jìn)行功能升級。進(jìn)行功能擴(kuò)展時,應(yīng)該在原有設(shè)計(jì)的基礎(chǔ)上,通過修改軟件程序和少量硬件完成。對于本系統(tǒng)而言,就是要求在系統(tǒng)硬件不變的情況下,能夠通過修改軟件程序,完成功能的升級和擴(kuò)展。
根據(jù)第提出的系統(tǒng)設(shè)計(jì)方案,結(jié)合以上三條原則,確定了系統(tǒng)硬件的設(shè)計(jì)。計(jì)算器主要由以下一些功能模塊構(gòu)成:非編碼鍵盤模塊、LCD液晶顯示屏模塊等。
該系統(tǒng)的硬件設(shè)計(jì)采用了模塊化的設(shè)計(jì)方法。AT89S52 單片機(jī)與LCD液晶顯示屏顯示電路是整個電路的核心,它們實(shí)現(xiàn)系統(tǒng)的功能要求。
簡易計(jì)算器主要包括:鍵盤電路,顯示電路。
下圖為總體硬件結(jié)構(gòu)。(如圖4.2.2 所示為整個系統(tǒng)的原理圖)
圖4.2.2 計(jì)算器原理圖
前面敘述了該系統(tǒng)的設(shè)計(jì)說明,系統(tǒng)采用了比較簡單的設(shè)計(jì)方案,所以該系統(tǒng)的硬件設(shè)計(jì)的總外圍電路不會產(chǎn)生過多的干擾。在下面的闡述中,對系統(tǒng)的外圍電路分別予以介紹。鍵盤部分采用編碼鍵盤,顯示部分采用LCD液晶顯示屏完全能夠很好的實(shí)現(xiàn)顯示方面的要求。
4.2.3 鍵盤電路的設(shè)計(jì)
鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20個以上)和專用驅(qū)動芯片的組合,當(dāng)按下某個按鍵時,它能夠處理按鍵抖動、連擊等問題,直接輸出按鍵的編碼,無需系統(tǒng)軟件干預(yù)。通用計(jì)算機(jī)使用的標(biāo)準(zhǔn)鍵盤就是編碼鍵盤。在智能儀器中,使用并行接口芯片8279或串行接口芯片HD7279均可以組成編碼鍵盤,同時還可以兼顧數(shù)碼管的顯示驅(qū)動,其相關(guān)的接口電路和接口軟件均可在芯片資料中得到。當(dāng)系統(tǒng)功能比較復(fù)雜,按鍵數(shù)量很多時,采用編碼鍵盤可以簡化軟件設(shè)計(jì)。非編碼鍵盤成本低廉。
從成本角度出發(fā),本設(shè)計(jì)選用的是非編碼鍵盤。如圖4.2.3
4.2.4 顯示電路的設(shè)計(jì)
當(dāng)系統(tǒng)需要顯示少量數(shù)據(jù)時,采用LCD液晶顯示屏進(jìn)行顯示是一種經(jīng)濟(jì)實(shí)用的方法。P0口作為液晶顯示的數(shù)據(jù)端口,P3.5-P3.7口作為其控制端口,控制LCD液晶顯示屏顯示輸出數(shù)據(jù)。
最終電路如圖4.2.4所示:
第五章 計(jì)算器的軟件設(shè)計(jì)
5.1計(jì)算器的軟件規(guī)劃
簡易計(jì)算器的程序主要包括以下功能模塊:
1、定時查鍵模塊,分為讀鍵程序、判鍵程序段、運(yùn)算操作子程序等部分;
2、基于LCD液晶顯示屏的顯示模塊;
3、主模塊,為系統(tǒng)的初始化。
5.2 鍵盤掃描的程序設(shè)計(jì)
鍵盤掃描子程序,首先讀出P1的低四位,然后讀出P1口的高四位。然后鍵值并顯示緩存。然后將鍵如的值轉(zhuǎn)換為ASCII碼然后就可以軟件來設(shè)置硬件按鍵各個鍵代表的內(nèi)容。
讀鍵程序使用的是反轉(zhuǎn)法讀鍵,不管鍵盤矩陣的規(guī)模大小,均進(jìn)行兩次讀鍵。第一次所有行線均輸出低電平,從所有讀入鍵盤信息(列信息);第二次所有列線均輸出低電平,從所有行線讀入鍵盤信息(行信息)。
數(shù)字鍵按下則將相應(yīng)的數(shù)字送入緩存區(qū),功能鍵按下則執(zhí)行相應(yīng)的程序。
5.3 顯示模塊的程序設(shè)計(jì)
顯示模塊程序首先要對顯示模塊進(jìn)行初始化;然后控制光標(biāo)的位置;定義液晶顯示的控制端口,用SBIT指令完成;然后設(shè)置清屏、關(guān)閉顯示、歸位、開顯示、顯示位置的首地址等等。
顯示模塊的流程圖如圖5.3所示: