本科生畢業(yè)論文(設計) (2)
《本科生畢業(yè)論文(設計) (2)》由會員分享,可在線閱讀,更多相關《本科生畢業(yè)論文(設計) (2)(35頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 本科生畢業(yè)論文(設計) 基于STC89C52單片機簡易計算器的設計 學 院 電氣信息工程學院 專 業(yè) 電氣工程及其自動化 班 級 09級電氣四班 學 號 0612090533 學 生 姓 名 聯(lián) 系 方 式 指 導 教 師 羅書克 職稱: 講師 2013年 5月 摘 要 近幾年單片機技術的發(fā)展很快,其中,電子產(chǎn)品的更新速度迅猛。計算器是
2、日常生活中比較常見的電子產(chǎn)品之一。如何才能使計算器技術更加的成熟,充分利用已有的硬件和軟件條件,設計出更出色的計算器。 本設計是以STC89C52單片機為核心的計算器模擬系統(tǒng)設計,輸入采用4*4矩陣鍵盤,可以進行加、減、乘、除帶符號數(shù)字運算(六位整數(shù)、兩位小數(shù)),并在液晶顯示屏LCD1602上靜態(tài)顯示操作過程及結果。本設計的操作過程是利用SCTT89C51的來控制LXD1602顯示器,SCT89C51有共四個端口,作為數(shù)據(jù)的輸入端和輸出端,其中兩個端口作為輸出端,兩個端口作為輸出端,兩個特殊的端口XTAL2和XTAL1,則作為外部振蕩器的輸入端和輸出端。四個端口的作用是:一個輸入端接4*4矩
3、陣鍵盤,另一個數(shù)據(jù)輸入端接顯示屏LCD1602的三個特殊端口,而另外兩個端口作為輸出端口,一個端口接顯示屏LCD1602的數(shù)據(jù)端口,另一個端口作為振蕩電路的輸入端和輸出端,連接好電路,接通電源,則可在液晶顯示屏LCD1602顯示加、減、乘、除的運算過程及結果,這是計算機的設計總過程。 關鍵詞:單片機;C語言;計算器 Simple calculator design based on single chip ABSTRACT Single-chip computer technology developing rapidly in recent years,
4、among them,electronic product update speed is fast. The calculator is one of the electronic products are common in everyday life. How can you make the calculator technology more mature, make full use of existing hardware and software conditions, design a better calculator. This design is based on S
5、TC89C52 single-chip microcomputer as the core of calculator simulation system design, input use 4 * 4 matrix keyboard, could add, subtract, multiply and divide signed number-crunching six (integer, two decimal places), and static on the LCD display LCD1602 display operation process and results. This
6、 design process is controlled by using SCTT89C51 LXD1602 display, SCT89C51 has a total of four ports, as the data input terminal and output terminal, two of the port as the output side, the two ports as the output side, and two special port XTAL1 and XTAL2, as external oscillator input end and outpu
7、t end. Four port is: a 4 * 4 matrix keyboard input, another data input termination display LCD1602 three specific ports, and the other two ports as output port, a port display LCD1602 data port, another port as oscillation circuit input end and output end, good connection electric circuit, switch on
8、 the power, can be in the LCD display LCD1602 display of add, subtract, multiply and divide operation process and result, this is the computer's design process. Key words: Single chip microcomputer; The C language; Calculating machine 目 錄 序言 1 1. 方案論證 1 1.1 芯片 1 1.1.1 方案一 1 1.1.2 方案優(yōu)點 2
9、 1.2 輸入模塊 2 1.2.1 方案一 2 1.2.2 方案的優(yōu)點 2 1.3 顯示模塊 2 1.3.1 方案一 2 1.3.2 方案的應用 3 2. 計算器硬件設計 3 2.1 系統(tǒng)組成及硬件框圖 3 2.2 元器件簡介 3 2.2.1 STC89C52特點 3 2.2.2 LCD1602液晶顯示屏 8 3. 計算器設計原理分析 11 3.1 設計方案一 11 3.2 計算器硬件方案及硬件資源分配 11 3.2.1 硬件資源分配 11 3.2.2 系統(tǒng)的硬件設計 11 3.2.3 鍵盤電路的設計 12 3.2.4 顯示電路的結構 13 4. 計算器軟
10、件設計 14 4.1 計算器的軟件規(guī)劃 14 4.2 主模塊的程序設計 14 4.3 顯示模塊的程序設計 15 4.4 鍵盤模塊的程序設計 17 結 論 19 參考文獻 20 附錄一 電路原理圖 21 附錄二 軟件程序 21 致謝 28 基于單片機的簡易計算器的設計 序言 隨著社會的發(fā)展,科學的進步,人們的生活水平在逐步地提高,尤其是微電子技術的發(fā)展猶如雨后春筍般的變化。電子產(chǎn)品的更新速度快就不足驚奇了。計算器在人們的日常中是比較常見的電子產(chǎn)品之一,如何使計算器技術更加的成熟,充分利用已有的軟件和硬件條件,設計出更出色的計算器,使其更好地為各個行業(yè)服務,成了
11、如今電子領域重要的研究課題。 現(xiàn)如今,人們的日常生活中已經(jīng)離不開計算器了,社會的各個角落都有它的身影,比如商店、辦公室、學校等,因此設計一款簡單實用的計算器會有很大的實際意義。 本設計旨在進一步掌握單片機理論知識,理解嵌入式單片機系統(tǒng)的硬軟件設計,加強對實際應用系統(tǒng)設計的能力。通過本設計的學習,使我掌握單片機程序設計和微機接口應用的基本方法,并能綜合運用本科階段所學軟、硬件知識分析實際問題,提高解決畢業(yè)設計實際問題的能力,為單片機應用和開發(fā)打下良好的基礎。 1.對字符液晶顯示模塊的工作原理,如初始化、清屏、顯示、調(diào)用及外特性有較清楚的認識,并會使用LCD(液晶顯示模塊)實現(xiàn)計算結果的顯示
12、;掌握液晶顯示模塊的驅(qū)動和編程,設計LCD和單片機的接口電路,以及利用單片機對液晶顯示模塊的驅(qū)動和操作; 2.在充分分析內(nèi)部邏輯的概念,進行軟件和調(diào)試,學會使用,并能夠以其為平臺設計出具有四則運算能力簡易計算器的硬件電路和軟件程序。 1. 方案論證 1.1 芯片 1.1.1 方案一 本設計中的芯片采用STC89C52,配備相應的外設。單片機是單片微型機的簡稱,故又稱為微控制器MCU(Micro Control Unit)。通常由單塊集成電路芯片組成,內(nèi)部包含有計算機的基本功能部件:中央處理器CPU,存儲器和I/O接口電路等。因此,單片機只要和適當?shù)能浖巴獠吭O備相結合,便可成為一個單
13、片機控制系統(tǒng)。單片機廣泛應用于智能產(chǎn)品,智能儀表,測控技術,智能接口等,具有操作簡單、實用方便、價格便宜等優(yōu)點,而其中STC89C52是一種帶8K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM-Flash Programable and Erasable Read Only Memory)的低電壓,高性能COMOS8的微處理器。該器件與工業(yè)標準的MCS-51指令集和輸出管腳相兼容;且是單片機中最典型的代表,應用于各種控制領域。 1.1.2 方案優(yōu)點 采用芯片STC89C52,能使方案實用性和方便性更強,成本更低,STC89C52單片機作為中央處理單元進行計算器這樣設計,它能夠?qū)崿F(xiàn)對六位整數(shù)、
14、兩位小數(shù)的加、減、乘、除的四則運算。 1.2 輸入模塊 1.2.1 方案一 采用矩陣式鍵盤作為輸入模塊,矩陣式按鍵輸入模塊,其特點是:電路和軟件稍復雜,但相比之下,當鍵數(shù)越多時,越節(jié)約I/O口,比較節(jié)省資源。其原理圖如圖1-1所示。 圖1-1 矩陣鍵盤輸入 1.2.2 方案的優(yōu)點 本設計中的輸入模塊使用的是矩陣鍵盤輸入。鍵盤輸入預置用于計算,按鍵較多。采用矩陣式按鍵,可以方便地輸入一個數(shù)值,使操作界面更具有更方便、簡潔和人性化,且節(jié)約了寶貴的I/O口資源,故采用方案二作為系統(tǒng)輸入模塊。 1.3 顯示模塊 1.3.1 方案一 采用LCD1602液晶顯示,其特點是:可以調(diào)
15、節(jié)其背光亮度,這種顯示方式接口,編程雖然有些麻煩,但管理較方便,占用的I/O口資源線也不多。 1.3.2 方案的應用 本設計中的顯示模塊使用的是LCD1602液晶顯示。在計算器運算中,需顯示的數(shù)字、符號較多,按很據(jù)個方面的特點,而后可以發(fā)現(xiàn)LCD液晶顯示,雖然在價格上的確是稍貴于LED數(shù)碼管;但數(shù)碼管在硬件設計電路中,會因線太多、線路復雜而過于繁瑣,則舍棄LED數(shù)碼管,故選擇LCD1062。 2. 計算器硬件設計 2.1 系統(tǒng)組成及硬件框圖 圖2-1 系統(tǒng)組成及硬件框圖 2.2 元器件簡介 2.2.1 STC89C52特點 圖2-2 單片機STC89C52 1、 主要
16、性能: (1) 與MCS-51單片機產(chǎn)品兼容;8K字節(jié)在系統(tǒng)可編程Flash存儲 (2) 1000次擦寫周期; (3) 全靜態(tài)操作:0Hz-33Hz; (4) 三級加密程序存儲器; (5) 32個可編程I/O口線、三個16位定時器/計數(shù)器、8個中斷源; (6) 全雙工UART串行通信; (7) 低功耗空閑和掉電模式,掉電后中斷可喚醒; (8) 雙數(shù)據(jù)指針; (9) 掉電標識符。 2、STC89C52的功能特性概述 STC89C52是一種低功耗、高性能CMOS 8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。使用高密度非易失性存儲器技術制造,與工業(yè)80C51產(chǎn)品指令和引
17、腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在線系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。 STC89C52具有以下標準功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門口定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口,片內(nèi)晶振及時鐘電路。另外,STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振
18、蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。8位微控制器,8K字節(jié)在系統(tǒng)可編程Flash。同時,該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產(chǎn)品的需求。 3、STC89C52的引腳功能 單片機STC89C52為40引腳芯片,見圖2-3所示。 圖 2-3 STC89C52引腳圖 (1)口線:P0、P1、P2、P3共四個八位口。 P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下,P0
19、不具有內(nèi)部上拉電阻。在Flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。 P1口:P1口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P1端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用;作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在Flash編程和校驗時,P1口接收低8位地址字節(jié)。此外,P1.0和P1.1分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和定時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX)。 P2口:P2口是一個具有內(nèi)部上拉電阻的8位雙向
20、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口也接收高八位地址字節(jié)和一些控制信號。 表 2-1 STC89C52的P3口第二功能 端口引腳 第二功能 P3.
21、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ù)存儲器寫選通) P3.7 RD(外部數(shù)據(jù)存儲器讀選通) P3口:P3口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P3輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P3端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用;作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為STC89C52特殊功能(第二功能)使用,
22、如表2-1所示。在Flash編程和校驗時,P3口也接收一些控制信號。 (2)其他引腳說明: 看RST:復位輸入。晶振工作時,RST腳持續(xù)2個機器周期高電平將使單片機復位。門狗計時完成后,RST腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRT0位可以使此功能無效。DISRT0默認狀態(tài)下,復位高電平有效。 ALE/PROG:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于所存地址的低八位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖
23、。 對Flash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只要一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被拉高,單片機執(zhí)行外部程序時,應設置ALE禁止位無效。 PSEN:程序存儲允許(PSEN)輸出是外部程序存儲器的讀選通信號,當STC89C52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖;在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。 EA/VPP:外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H~
24、FFFFH),EA端必須保持低電平(接地)。需注意是:如果加密LB1被編程,復位時內(nèi)部會鎖存EA端狀態(tài)。 如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。 圖2-4 晶振外接結構引腳圖 XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為1MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz~24MHz內(nèi)選擇,在本設計電路中選用了12MH
25、z。電容取20PF左右。機器周期=12*時間周期,如12MHz的機器周期為1微秒。 (1)控制或復位引腳 RESET此腳為高電平時(約2個機器周期)可將單片機復位。 RST/VPD:當出現(xiàn)兩個機器周期高電平時,單片機復位。復位后,P0~P3輸出高電平;SP寄存器為07H;其它寄存器全部清零;不影響RAM狀態(tài),如圖2-5所示。 圖 2-5 復位電路 4、單片機的現(xiàn)狀及發(fā)展方向 單片機是為了工業(yè)控制需要滿足而誕生的,是自動控制系統(tǒng)的核心部件,因而也主要用于工業(yè)控制、智能化儀器儀表、家用電器中。它具有體積小、功能多、價格低、使用方便、系統(tǒng)設計靈活等優(yōu)點。應用領域不斷擴大,除了工業(yè)控制
26、、智能化儀表、通訊、家用電器外,在智能化高檔電子玩具產(chǎn)品中也大量采用單片機芯片作為核心控制部件。由于單片機主要面向工業(yè)控制,工作環(huán)境比較惡劣,入高溫,強電磁干擾,甚至含有腐蝕性氣體;在太空中工作的單片機控制系統(tǒng),還必須具有抗輻射能力,這決定了單片機CPU于通用微機CPU具有不同的技術特征和發(fā)展方向:可靠性高;控制功能往往很強;指令系統(tǒng)比通用微處理器慢得多;X系列芯片取代;抗干擾性強,工作溫度范圍寬。 2.2.2 LCD1602液晶顯示屏 1、 液晶顯示原理 液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器有厚度薄、適用于大規(guī)
27、模集成電路直接驅(qū)動、易于實現(xiàn)全彩色顯示的特點,目前已經(jīng)被廣泛應用在便攜式計算機、數(shù)字攝像機、PDA移動通信工具等眾多領域。 2、 LCD1602的應用簡介 LCD1602液晶顯示器采用HD44780及其兼容芯片作為點陣式LCD的控制器驅(qū)動器,還采用HD44100進行LCD的時分割驅(qū)動。HD44780的內(nèi)部結構主要包括顯示數(shù)據(jù)RAM(DDRAM)、字符發(fā)生器ROM(CGROM)、字符發(fā)生器RAM(CGRAM)、指令寄存器IR、數(shù)據(jù)寄存器DR、地址計數(shù)器AC(Address Counter)和忙標志BF(Busy Flag)等邏輯電路。 1602液晶模塊內(nèi)部的控制器共有11條控制指令,豐富的
28、指令可以完成液晶的時序控制、工作方式設置和數(shù)據(jù)顯示等。 采用的LCD1602液晶模塊是標準16針插座,接口電路如圖2-6所示,及各引腳說明如表2-6所示。 圖2-6 LCD1602的引腳接口電路圖 表 2-2 LCD1602的引腳說明 第1腳 Vss為地電源 第2腳 VDD接5V正電源 第3腳 Vo為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。 第4腳 Rs為寄存器選擇,高電平選擇數(shù)據(jù)寄存器、低電平選擇指令寄存器。 第5腳 Rw為讀寫
29、信號線,高電平時進行讀操作,低電平時選擇指令寄存器。 第6腳 E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。 第7-14腳 D0-D7為8位雙向數(shù)據(jù)線。 第15-16腳 背光陽極和背光陰極。 3、 其他方面簡介 DDRAM用來暫存顯示字符的代碼,共80個字節(jié),DDRAM的各個單元對應著顯示屏上的各個字符位,如圖2-2-6所示。因此,DDRAM的地址也就意味著顯示字符的地址,顯示字符時首先要向LCD送顯示字符地址。 LCD 16字*2行 00 01 02 03 04 05 06 07 08 09 0A 0B 0C
30、 0D OE OF 10 …… 27 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 …… 67 圖 2-2-6 DDRAM單元地址與顯示屏字符位的對應關系 4、LCD1602的主要技術參數(shù): (1)顯示容量為16*2個字符; (2)芯片工作電壓為4.5V-5.5V; (3)工作電流為2.0mA(5.0V); (4)模塊最佳工作電壓為5.0V; (5)字符尺寸為2.95*4.35(W*H)mm。 5、LCD的特點: (1)低壓微功耗; (2)平板型結構; (3)被動顯示
31、型(無眩光,不刺激人眼,不會引起眼睛疲勞); (4)顯示信息量大(因為像素可以做得很?。?; (5)易于彩色化(在色譜上可以非常準確的復現(xiàn)); (6)無電磁輻射(對人體安全,利于信息保密); (7)長壽命(這種器件幾乎沒有什么劣化問題,因此壽命極長,但是液晶背光壽命有限,不過背光部分可以更換)。 3. 計算器設計原理分析 3.1 設計方案一 本設計需要使用LCD液晶顯示屏和編碼鍵盤。故選擇靜態(tài)顯示和用4*4的按鍵鍵盤,使用LCD1602液晶顯示屏來顯示運算過程和運算結果。 主程序進行初始化,其他的程序選擇模塊式的方式。首先對每個模塊進行調(diào)試,當模塊調(diào)試成功后,逐一地加入主程序中,
32、最后完成整個軟件部分的設計。 3.2 計算器硬件方案及硬件資源分配 3.2.1 硬件資源分配 主要用到的硬件:單片機STC89C52 、液晶顯示屏LCD1602 、4*4按鍵鍵盤硬件分配: 1、 P3口:作為輸入口,與鍵盤連接,實現(xiàn)數(shù)據(jù)的輸入; 2、 P0、P2口:作為輸出口(P2口為高位,P0口為低位),控制LCD液晶顯示屏顯示數(shù)據(jù)的結果; 3、 液晶顯示屏LCD1602顯示輸出。 3.2.2 系統(tǒng)的硬件設計 為了更好地實現(xiàn)系統(tǒng)的功能,硬件電路的設計應該遵循以下原則: 1、優(yōu)化硬件電路 采用軟件設計與硬件設計相結合的方法。盡管采用軟件來實現(xiàn)硬件系統(tǒng)的功能時,也許響應的時間
33、會比單純使用硬件時長,而且還要占用微處理器(MCU)的時間;但是,用軟件實現(xiàn)硬件的功能可以簡化硬件結構,提高電路的可靠性。所以,在設計本系統(tǒng)的時候,在滿足可靠性和實時性的前提下,盡可能地通過軟件來實現(xiàn)硬件功能。 2、可靠性及抗干擾設計 根據(jù)可靠性設計理論,系統(tǒng)所用芯片數(shù)量越少,系統(tǒng)的平均無故障時間越長。而且,所用芯片數(shù)量越少,地址和數(shù)據(jù)總線在電路板上受干擾的可能性也就越小。因此,系統(tǒng)的設計思想是在滿足功能的情況下爭取較少數(shù)量的芯片。 功能擴展是否靈活是衡量一個系統(tǒng)優(yōu)劣的重要指標。一次設計往往不能完全考慮到系統(tǒng)的各個方面,系統(tǒng)需要不斷完善以及進行功能升級。進行功能擴展時,應該在原有設計的基
34、礎上,通過修改軟件程序和少量硬件完成。對于本系統(tǒng)而言,就是要求在系統(tǒng)硬件不變的情況下,能夠通過修改軟件程序,完成功能的升級和擴展。 根據(jù)提出的系統(tǒng)設計方案,結合以上三條原則,確定了系統(tǒng)硬件的設計。計算器主要由以下一些功能模塊組成:非編碼鍵盤模塊、運算模塊(單片機內(nèi)部)、LCD液晶顯示模塊等。該系統(tǒng)的硬件設計采用了模塊化的設計方法。STC89C52單片機與LCD液晶顯示屏顯示電路是整個電路的核心,它們能實現(xiàn)系統(tǒng)的功能要求。 簡易計算器主要包括:鍵盤電路、運算電路、輸出顯示電路。 前面說明了該系統(tǒng)的設計,系統(tǒng)采用了比較簡單的設計方案,所以該系統(tǒng)的硬件設計的總外圍電路不會產(chǎn)生過多的干擾。下面對
35、系統(tǒng)的外圍電路分別作了說明。鍵盤部分采用4*4按鍵鍵盤,顯示部分采用LCD液晶顯示屏完全能夠很好地實現(xiàn)顯示方面的要求。 3.2.3 鍵盤電路的設計 鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20個以上)和專用驅(qū)動芯片的組合;當按下某個按鍵時,它能夠處理按鍵抖動、連擊等問題,直接輸出按鍵的編碼,無需系統(tǒng)軟件干預。 圖3-1 鍵盤電路 通用計算機使用的鍵盤就是編碼鍵盤。在智能儀器中,使用并行接口芯片8279或串行接口HD7279均可以組成編碼鍵盤,同時還可以兼顧數(shù)碼管的顯示驅(qū)動,其相關的接口電路和接口軟件均可在芯片資料中得到。當系統(tǒng)功能比較復雜,按鍵數(shù)量很多時,采用編碼
36、鍵盤可以簡化軟件設計。非編碼鍵盤成本低廉。從成本角度出發(fā),本設計選用的是非編碼鍵盤。如圖3-1所示。 3.2.4 顯示電路的結構 當系統(tǒng)需要顯示少量數(shù)據(jù)時,采用LCD液晶顯示屏進行顯示是一種經(jīng)濟實用的方法。P0口作為液晶顯示的數(shù)據(jù)端口,P2.0-P2.2口作為其控制端口,控制LCD液晶顯示屏顯示輸出數(shù)據(jù)。 最終顯示電路如圖3-2所示。 圖3-2 LCD液晶顯示屏顯示 4. 計算器軟件設計 4.1 計算器的軟件規(guī)劃 簡易計算器的程序主要包括以下功能模塊: 1、 讀鍵程序、判鍵程序段、運算操作子程序等部分; 2、 基于LCD液晶顯示屏的顯示模塊; 3、 主模塊,為系統(tǒng)的
37、初始化 4.2 主模塊的程序設計 主程序主要用來對LCD液晶顯示屏進行初始化的。在考慮主程序編寫之前,先應對計算器的運作流程有一個大致的了解,之后依次為依據(jù)畫出大致的流程圖如圖4-1所示,以便于編寫其主模塊的程序,這樣看來,會比較清晰、更加方便。 圖 4-1 主程序框圖 本來在考慮主模塊流程時,曾考慮到在初始化LCD顯示后應該進入中斷服務的,當然也這么畫上去了;可經(jīng)過老師的提點,之后又反復推敲了好幾遍,再將流程好好地走了幾遍,發(fā)現(xiàn)的確存在著問題。 在主程序中的確不用中斷服務,它其實也屬于一個子程序,是與鍵盤程序有關,之后會加以說明。 既然是計算器,只要反復地進行四則運算,其
38、過程與結果并在液晶顯示屏上顯示出來。 通過這個詳細的主模塊程序框圖,即能夠很快地編寫出其程序: void main() { uchar i,j; init(); write_cmd(0x80); //將液晶指針定位在第一行第一個單元 key=15; i=flag1=0; while(1) { ………… write_cmd(0x80+0x40); //將液晶指針定位在第二行第一個單元 jscl(); } flag1=0; } } 在以上的程序中“write_cmd(0x80);”,被賦值為“0x
39、80”,則是根據(jù)圖 2-2-6 DDRAM單元地址與顯示屏字符位的對應關系中便能找到,第一行第一個單元的值為80H,則第二行第一個單元的值就為80H+40H,即得出“write_cmd(0x80+0x40);”。 4.3 顯示模塊的程序設計 圖4-2 顯示程序框圖 顯示模塊程序首先要對顯示模塊進行初始化;然后控制光標的位置;定義液晶顯示的控制端口,用SBIT指令完成;然后設置清屏、關閉顯示、歸位、開顯示、顯示位置的首地址等等。 顯示模塊的流程圖如圖4-2所示。 根據(jù)以上的顯示程序的流程框圖,便能編寫出其顯示子程序: void jscl() //計算并顯示函數(shù) { uch
40、ar i,j,n;
…………
{
for(j=0;j 41、p2=s-temp1;
…………
for(i=n;i>0;i--) //在液晶上顯示結果
{ write_data(table[b[i-1]]);
…………
}
通過其顯示子程序,發(fā)現(xiàn)要顯示其最終結果,就必須先存放第一操作數(shù)、第二操作數(shù),之后來判定使用四則運算中的哪一種運算,其后進行運算處理,最后便能在LCD液晶顯示屏上顯示其最終結果。
4.4 鍵盤模塊的程序設計
鍵盤掃描子程序,首先讀出P3口的低四位,然后讀出P3口的高四位。然后鍵值并顯示緩存。而后,將鍵盤上的值轉(zhuǎn)換為ASCII碼,最后就可以用軟件來設置硬件按鍵各個鍵所代表的內(nèi)容。
讀鍵程序使用 42、的是反轉(zhuǎn)法讀鍵,不管鍵盤矩陣的規(guī)模大小,均進行兩次讀鍵。第一次所有行線均輸出低電平,從所有讀入鍵盤信息(列信息);第二次所有列線均輸出低電平,從所有行線讀入鍵盤信息(行信息)。
系統(tǒng)中連接的是4*4行列式按鍵鍵盤,其中“0-9”為數(shù)字鍵;“+、-、*、/、=”為符號鍵;“ON/C”為功能鍵(清屏鍵),在程序中會加入一個記憶功能鍵,而與其搭配的硬件按鍵為符號鍵中的“=”,以為求方便。
圖4-3 中斷服務程序框圖
數(shù)字鍵按下則將相應的數(shù)字送入數(shù)字緩沖區(qū);符號鍵按下則將送入符號緩沖區(qū);功能鍵按下則執(zhí)行相應的程序;最終進行運算后,綜合結果將送入結果緩沖區(qū),并在LCD液晶顯示屏上顯示出來。
43、鍵盤模塊程序也可相當于一個中斷服務子程序,如圖4-3所示。
通過以上的中斷服務程序框圖,來編寫其子程序:
void keyscan() //鍵盤掃描程序
{ uchar temp,uu=0xf7;
uint i;
for(i=0;i<4;i++)
{uu=_crol_(uu,1); //_crol_為左移函數(shù)
…………
{
case 0xee: key=0; break;
case 0xde: key=1; break;
………………
case 0x77: key=15; break;
}
在以上的程序中,其 44、中的“key=0……key=15”是按鍵“0-9、+、-、*、/、=、ON/C”16個鍵。而“case 0xee: key=0; break;”中,被賦值為“0xee”,則是因為行信息是P3口的低四位,若是按鍵按下為“0”,則P3.0為“0”,P3.1-P3.3為“1”;同時,列信息是P3口的高四位,若是按鍵按下為“0”,則P3.4為“0”,P3.5-P3.7為“1”;由此可得,其被賦值為“0xee”。
以此類推,之后一直到“case 0x77: key=15; break;”為止,都是采用相同的方法去賦值的
結 論
在硬件的制作過程中,我走了很多彎路。主要是在系統(tǒng)還沒有到設計完全的時候 45、就開始很心急地做仿真圖和實物。后來發(fā)現(xiàn)與設計的要求還有偏差,而后反復地改了好幾次,浪費了大量的時間和精力。
板子是按照自己的思想和意愿來設計的。一開始,本想用匯編語言來編程的,可是當編了一部分之后才發(fā)現(xiàn),用匯編語言來編程的話,相當繁復冗長;之后就想試著用C語言來編程。在圖書館查閱了一些相關資料后,就開始寫程序。在編寫程序的過程中,發(fā)現(xiàn)居然出現(xiàn)了不少問題。所以,在編寫程序的過程中,也就完善了軟件的設計。
編程時,已充分使用了結構化的思想。這樣一來,因為語句較少,程序調(diào)試也比較方便,功能模塊可以逐一地調(diào)試,充分體現(xiàn)了結構化編程的優(yōu)勢。當每個模塊都完成時,將其功能加到一起就完成了整體的設計,通過 46、這次畢業(yè)論文的設計,使自己在單片機方面得了很高的提升空間,為自己為將來打下了不小的基礎.
參考文獻
[1] 李廣弟,朱月秀,冷祖祁.單片機基礎[M].北京:北京航空航天大學出版社,2007:1.
[2] 徐惠民,田輝,孫全,等.微機原理與接口技術[M].北京:高等教育出版社,2007:5
[3] 林志琦.單片機原理接口及應用[M].北京:北京水利水電出版社,2007.
[4] 張友德、趙金英、涂時亮.單片微型計算機原理、應用與實驗(第四版)[M].上海:復旦大學出版社,2003.
[5] 彭傳良.電子計算器鍵盤與單片機的接口技術及其應用[J]. 氣象水文海洋儀器 ,1999 47、(02):40-44
[6] 譚浩強,C程序設計(第三版)[M]:北京:清華大學出版社,1999
[7] 萬冬、王玥玥. ?電子設計實戰(zhàn)訓練之六:簡單計算器[J]. 電子制作,2008(11):28-31
[8] 高偉. AT89單片機原理及應用[M]. 北京:國防工業(yè)出版社 2008.
[9] 張慶鋒.?計算器LCD顯示屏與單片機的簡單接口[J] .電子技術應用,1996(2):23-25
[10]江世明. 基于Proteus的單片機應用技術[M]. 北京:電子工業(yè)出版社,2009.
[11]周潤景. 基于Proteus的電路與單片機系統(tǒng)設計與仿真[M]. 北京:北京航空航天大學 48、出版社,2006.
附錄一 電路原理圖
附錄二 軟件程序
#include 49、 '+','-','*','/','=','.'};
uchar key,flag1,js,k1,k2;
uchar a[20],b[20];
float jieguo=0;
void delay(uchar z)//延時函數(shù)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_cmd(uchar cmd)//LCD寫命令函數(shù)
{
lcdrs=0;//寫指令控制端為低
P0=cmd;
delay(5);
lcden=1;//給個高脈沖結束
dela 50、y(4);
lcden=0;
}
void write_data(uchar date)//寫數(shù)據(jù)函數(shù)
{
lcdrs=1;//寫數(shù)據(jù)控制端高電平
P0=date;
delay(5);
lcden=1;//給個高脈沖結束
delay(5);
lcden=0;
}
void init()//液晶初始化函數(shù)。
{lcdrw=0;
lcden=0;
write_cmd(0x38);//設置16*2顯示,8位數(shù)據(jù)接口
write_cmd(0x0c);//設置開顯示,不顯示光標 (關顯示是0x08)
write_cmd(0x06);//寫一個字符 51、后地址指針加1
write_cmd(0x01);//清屏
}
void keyscan() //鍵盤掃描程序
{ uchar temp,uu=0xf7;
uint i;
for(i=0;i<4;i++)
{uu=_crol_(uu,1); //_crol_為左移函數(shù)
P3=uu;
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f)
{ delay(10);
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f)
{ temp=P3;
switch( 52、temp)
{
case 0xee: key=0; break;
case 0xde: key=1; break;
case 0xbe: key=2; break;
case 0x7e: key=3; break;
case 0xed: key=4; break;
case 0xdd: key=5; break;
case 0xbd: key=6; break;
case 0x7d: key=7; break;
case 0xeb: key=8; break;
case 0xdb: ke 53、y=9; break;
case 0xbb: key=10; break;
case 0x7b: key=11; break;
case 0xe7: key=12; break;
case 0xd7: key=13; break;
case 0xb7: key=14; break;
case 0x77: key=15; break;
}
while(temp!=0x0f)
{ temp=P3;
temp=temp&0x0f;
}
flag1=1;
}
}
}
54、
}
void jscl() //計算并顯示函數(shù)
{ uchar i,j,n;
float s,temp2;
long int s1,s2,a1,b1,c1,temp1;
a1=b1=1;
s1=s2=0;
s=0;
if(k2!=0)
{
for(j=0;j 55、 { for(i=0;i 56、t)(s*1000)%10;
if(c1>5 || c1==5)
s=s+0.01;
temp1=(long int)(s); //以下部分處理結果
temp2=s-temp1;
n=0;
while(temp1)
{ b[n]=temp1%10;
temp1=temp1/10;
n++;
}
b[n]=temp2*10;
b[n+1]=(uchar)(temp2*100)%10;
for(i=n;i>0;i--) //在液晶上顯示結果
{ write_d 57、ata(table[b[i-1]]);
}
write_data(table[15]);
write_data(table[b[n]]);
write_data(table[b[n+1]]);
}
void main()
{
uchar i,j;
init();
write_cmd(0x80); //將液晶指針定位在第一行第一個單元
key=15;
i=flag1=0;
while(1)
{ keyscan();
if(flag1==1)
{if(key==15)
{ write_cmd( 58、0x01);
i=0;
for(j=0;j<20;j++)
a[j]=b[j]=0;
k1=k2=0;
}
else if(key<10)
{ write_data(table[key]);
a[i]=key;
i++;
}
else if(key<14)
{ write_data(table[key]);
k1=i-1;
js=key;
}
else
{ write_data(table[key]);
if(i==0)
k2=0;
else
k2=i-1;
59、 write_cmd(0x80+0x40); //將液晶指針定位在第二行第一個單元
jscl();
}
flag1=0;
}
}
}
致謝
本次畢業(yè)設計得到指導老師羅書克老師的熱心指導,在這里對羅老師表示最衷心的感謝。羅老師平易近人,對學生的設計進度和學習很關心。在畢業(yè)設計的前期,首先給我們分析了一下課題的基本含義,也介紹了不少有用的資料和書籍;在硬件設計等方面給予悉心地指導;在調(diào)試的過程中,羅老師給每個出現(xiàn)的問題也給予了及時的指導。在寫畢業(yè)設計論文的階段,羅老師先跟我們講了一下大體的結構思路、內(nèi)容字體、格式上的及一些其他問題。待人平和、工 60、作認真、治學嚴謹?shù)乃o我留下了很深刻的印象。更重要的是,他善于與學生溝通,不僅在畢業(yè)設計上給了我及時的指導,更為我大學最后階段的學習提出了許多寶貴的意見。這一切都在潛移默化地影響著我,為我以后進入工作崗位樹立了良好的榜樣。
最后向所有幫助和關心過我的人表示衷心感謝!
g an employment tribunal claim
Employment tribunals sort out disagreements between employers and employees.
You may need to make a claim to an employment tribunal 61、 if:
· you don't agree with the disciplinary action your employer has taken against you
· your employer dismisses you and you think that you have been dismissed unfairly.
For more information about dismissal and unfair dismissal, see?Dismissal.
You can make a claim to an employment tribunal, eve 62、n if you haven't?appealed?against the disciplinary action your employer has taken against you. However, if you win your case, the tribunal may reduce any compensation awarded to you as a result of your failure to appeal.
Remember that in most cases you must make an application to an employment trib 63、unal within three months of the date when the event you are complaining about happened. If your application is received after this time limit, the tribunal will not usually accept it.
If you are worried about how the time limits apply to you, take advice from one of the organisations listed under?F 64、urther help.
Employment tribunals are less formal than some other courts, but it is still a legal process and you will need to give evidence under an oath or affirmation.
Most people find making a claim to an employment tribunal challenging. If you are thinking about making a claim to an employmen 65、t tribunal, you should get help straight away from one of the organisations listed under?Further help.
If you are being represented by a solicitor at the tribunal, they may ask you to sign an agreement where you pay their fee out of your compensation if you win the case. This is known as a?damages- 66、based agreement. In England and Wales, your solicitor can't charge you more than 35% of your compensation ?if you win the case.
If you are thinking about signing up for ?a damages-based agreement, you should make sure you're clear about the terms of the agreement. It might be best to get advice from an experienced adviser, for example, at a Citizens Advice Bureau. ?To find your nearest CAB, including those that give advice by e-mail, click on?nearest CAB.
For more information about making a cl
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。