畢業(yè)設(shè)計(論文)-基于單片機的簡易計算器設(shè)計.doc_第1頁
畢業(yè)設(shè)計(論文)-基于單片機的簡易計算器設(shè)計.doc_第2頁
畢業(yè)設(shè)計(論文)-基于單片機的簡易計算器設(shè)計.doc_第3頁
畢業(yè)設(shè)計(論文)-基于單片機的簡易計算器設(shè)計.doc_第4頁
畢業(yè)設(shè)計(論文)-基于單片機的簡易計算器設(shè)計.doc_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

電 畢業(yè)設(shè)計(論文)題 目: 基于單片機的簡易計算器 專業(yè)名稱: 電子信息工程技術(shù) 姓 名: 學(xué) 號: 班 級: 08級通信與信息技術(shù)班 指導(dǎo)教師: (2011屆)2010年 12月 30日 摘要摘要 近幾年單片機技術(shù)的發(fā)展很快,其中電子產(chǎn)品的更新速度迅猛。計算器是日常生活中比較的常見的電子產(chǎn)品之一。如何才能使計算器技術(shù)更加的成熟,充分利用已有的軟件和硬件條件,設(shè)計出更出色的計算器呢。本設(shè)計是以at89s52單片機為核心的計算器模擬系統(tǒng)設(shè)計,輸入采用46矩陣鍵盤,可以進行加、減、乘、除9位帶符號數(shù)字運算,并在lcd1602上顯示操作過程。科技的進步告別了以前復(fù)雜的模擬電路,一塊幾厘米平方的單片機可以省去很多繁瑣的電路?,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)用廣泛的計算工具。關(guān)鍵詞 at89s52 lcd1602 計算器 矩陣鍵盤目錄第一章 前言11.1 系統(tǒng)開發(fā)背景11.2 系統(tǒng)開發(fā)意義11.3 設(shè)計目的1第二章 方案論證22.1 方案構(gòu)思22.2 方案比較與選擇2第三章 系統(tǒng)硬件設(shè)計及說明33.1系統(tǒng)組成及總體框圖33.2元件簡介33.2.1 at89s52特點33.2.2 74ls08簡要說明93.2.3 lcd1602液晶顯示屏12第四章 設(shè)計原理分析154.1 設(shè)計方案的確定154.2計算器硬件方案及硬件資源分配154.2.1 硬件資源分配154.2.2 系統(tǒng)的硬件設(shè)計154.2.3 鍵盤電路的設(shè)計174.2.4 顯示電路的設(shè)計18第五章 計算器的軟件設(shè)計195.1計算器的軟件規(guī)劃195.2 鍵盤掃描的程序設(shè)計195.3 顯示模塊的程序設(shè)計195.4 主程序的設(shè)計205.5 軟件的可靠性設(shè)計20結(jié)束語22致謝23參考文獻24附錄25附錄一:硬件實物圖25附錄二:系統(tǒng)程序清單26第一章 前言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)用及外特性有較清楚的認識,并會使用lcd(液晶顯示模塊)實現(xiàn)計算結(jié)果的顯示;掌握液晶顯示模塊的驅(qū)動和編程,設(shè)計lcd和單片機的接口電路,以及利用單片機對液晶模塊的驅(qū)動和操作; 2、在充分分析內(nèi)部邏輯的概念,進行軟件和調(diào)試,學(xué)會使用,并能夠以其為平臺設(shè)計出具有四則運算能力簡易計算器的硬件電路和軟件程序。第二章 方案論證2.1 方案構(gòu)思本設(shè)計可以采用兩種方案,一種是以fpga為核心處理芯片,配備相應(yīng)的外設(shè);另外一種是以at89s52處理器,配備相應(yīng)的外設(shè)。1、方案一:采用fpga控制fpga是一種高密度的可編程邏輯器件,自從xilinx公司1985年推出第一片fpga以來,fpga的集成密度和性能提高很快,其集成密度最高達500萬門/片以上,系統(tǒng)性能可達200mhz。由于fpga器件集成度高,方便易用,開發(fā)和上市周期短,在數(shù)字設(shè)計和電子生產(chǎn)中得到迅速普及和應(yīng)用,并一度在高密度的可編程邏輯器件領(lǐng)域中獨占鰲頭。但是而基于 sram編程的fpga,其編程信息需存放在外部存儲器上 ,需外部存儲器芯片 ,且使用方法復(fù)雜 ,保密性差,而其對于一個簡單的計算器而言,實用fpga有點大材小用,成本太高。2、方案二:采用at89s52單片機是單片微型機的簡稱,故又稱為微控制器mcu(micro control unit)。通常由單塊集成電路芯片組成,內(nèi)部包含有計算機的基本功能部件:中央處理器cpu,存儲器和i/o接口電路等。因此,單片機只要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個單片機控制系統(tǒng)。單片機廣泛用于智能產(chǎn)品,智能儀表,測控技術(shù),智能接口等,具有操作簡單,實用方便,價格便宜等優(yōu)點,而其中at89s52以mcs-51為內(nèi)核,是單片機中最典型的代表,應(yīng)用于各種控制領(lǐng)域。2.2 方案比較與選擇通過以上兩種方案論證和比較,從設(shè)計的實用性,方便性和成本出發(fā),選擇了以at89s52單片機作為中央處理單元進行計算器的設(shè)計,這樣設(shè)計能夠?qū)崿F(xiàn)對六位浮點數(shù)的加減和三位浮點數(shù)的乘除運算。第三章 系統(tǒng)硬件設(shè)計及說明 3.1系統(tǒng)組成及總體框圖與門模塊lcd液晶顯示屏模塊電源模塊at89s52主控制模 塊編碼鍵盤模塊圖3.1 系統(tǒng)組成及總體框圖3.2元件簡介 3.2.1 at89s52特點圖3.2.1-1 單片機at89s521、主要性能: (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ù)指針 掉電標(biāo)識符 片內(nèi)振蕩器和時鐘電路 (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 位 定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時鐘電路。此外, at89s52 可降至0hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu 停止工作,允許ram、定時器/計數(shù)器、串口、中斷繼續(xù)工 作。掉電保護方式下,ram內(nèi)容被保存,振蕩器被凍結(jié), 單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。8 位微控制器 8k 字節(jié)在系統(tǒng)可編程 flash。同時該芯片還具有pdip、tqfp和plcc等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。3、at89s52引腳功能at89s52 單片機為40 引腳芯片見圖3.2.1-2。圖3.2.1-2 at89s52引腳圖(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口亦作為at89s52特殊功能(第二功能)使用,如表3.2.1所示。 表3.2.1 p3口管腳 備選功能:端口引腳第二功能p3.0rxd(串行輸入口)p3.1txd(串行輸出口)p3.2/int0(外部中斷0)p3.3/int1(外部中斷1)p3.4t0(記時器0外部輸入)p3.5t1(記時器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默認狀態(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)at89s52由外部程序存儲器取指令(或數(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。 xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 xtal2:來自反向振蕩器的輸出。 xtal1,xtal2接石英晶體振蕩器。如圖3.2.1-3所示外接晶體引腳圖。 c2 xtal2 懸空 xtal2 c1 xtal1 外部振蕩信號 xtal1 gnd gnd 接地 接地a內(nèi)部方式 b外部方式圖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時間周期,如12mhz的機器周期為1微秒。(3)控制或復(fù)位引腳reset 此腳為高電平時(約2個機器周期)可將單片機復(fù)位。rst/vpd當(dāng)出現(xiàn)兩個機器周期高電平時,單片機復(fù)位。復(fù)位后,p0p3輸出高電平;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、at89s52的編程方法 編程前,須按編程模式表設(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 74ls08簡要說明74ls08為四組2輸入端與門(正邏輯),其主要電特性的典型值如下: 型號tplhtphlpd74ls088ns10ns17mw74ls08邏輯圖:圖3.2.2 74ls08邏輯圖引出端符號 1a4a 輸入端1b4b 輸入端 1y4y 輸出端 74ls08功能表:表3.2.2 74ls08功能表(y=ab)inputsoutputabyllhhlhlhlllh極限值:電源電壓 . 7v 輸入電壓. 7v ab 間電壓 . 5.5v 輸出截止態(tài)電壓. 7v工作環(huán)境溫度 070存儲溫度 . -65150 推薦工作條件:74ls08最小額定最大單位電源電壓vcc4.7555.25v輸入高電平電壓vih2v輸入低電平電 壓vil08v輸出高電平電流ioh-400a輸出低電平電 流iol8ma靜態(tài)特性(ta 為工作環(huán)境溫度范圍):參 數(shù)測 試 條 件【1】最小最大單位v ik輸入嵌位電壓vcc=最小-1.5vvoh輸出高電平電壓vcc最小,vih2v, ioh最大2.7vvol輸出低電平電壓vcc= 最小,vil=最大,iol=最大0.5vii最大輸入電壓時輸入電流vcc最大0.1mai ih輸入高電平電流vcc最大20uai il輸入低電平電流vcc最大mai os輸出短路電流vcc最大-20-100maicch輸出高電平時電源電流vcc最大4.8maiccl輸出低電平時電源電流vcc最大8.8ma1: 測試條件中的“最小”和“最大”用推薦工作條件中的相應(yīng)值。動態(tài)特性(ta=25):參 數(shù)測 試 條 件最大單位tplh輸出由低到高傳輸延遲時間vcc=5v,cl=15pf,rl=2k15nstphl輸出由高到低傳輸延遲時間20ns3.2.3 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的詳細資料見表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)整對比度。第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í)行命令。第714腳d0d7為8位雙向數(shù)據(jù)線。第1516腳背光陽極和背光陰極。表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è)置指令8ddram地址設(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 硬件資源分配主要用到的硬件:at89s52 lcd液晶顯示屏 編碼鍵盤 硬件分配:1、p0、p3口:做為輸出口,控制lcd液晶顯示屏顯示數(shù)據(jù)的結(jié)果。2、p1口:做為輸入口,與鍵盤連接,實現(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è)計方法。at89s52 單片機與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ù)端口,p3.5-p3.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所示:延時程序開始檢測led是否在忙掃描鍵盤y n加減乘除運算子程序液晶顯示結(jié)束圖5.3模塊的流程圖5.4 主程序的設(shè)計 主程序主要是用來對lcd液晶顯示屏進行初始化的。5.5 軟件的可靠性設(shè)計 提高本儀器其可靠性措施主要有: 1、為防止程序跑飛,軟件中設(shè)置了軟件陷阱。 2、為防止程序死循環(huán),軟件中使用了看門狗技術(shù)。結(jié)束語在硬件的制作過程中我走了好多的彎路,主要是在系統(tǒng)還沒有設(shè)計很有把握就開始動手制作了。后來發(fā)現(xiàn)與設(shè)計的要求還有偏差,反復(fù)的改過了幾次,浪費了大量的時間和體力。感受到設(shè)計人員要有耐心,要認真的從要求開始研究。軟件的編寫過程中費了很大的力氣,因為軟件的編寫要求很高,要很細心,一不小心就會調(diào)用錯誤,很深刻的體會到作為軟件編程人員是絕不能粗心大意的。一個程序的完成的速度和質(zhì)量高低與細心與否有著很大聯(lián)系。編程時,我充分使用了結(jié)構(gòu)化的思想。這樣因為語句較少,程序調(diào)試比較方便,功能模塊可以逐一的調(diào)試,充分體現(xiàn)了結(jié)構(gòu)化編程的優(yōu)勢。當(dāng)每個模塊都完成時,將其功能加到一起就完成了整體的設(shè)計。致謝本次畢業(yè)設(shè)計得到導(dǎo)師陳應(yīng)華老師的熱心指導(dǎo),在這里對陳老師表示最衷心的感謝。陳老師平易近人,對學(xué)生的設(shè)計進度和學(xué)習(xí)很關(guān)心。在畢業(yè)設(shè)計的前期,首先給我們介紹了不少有用的資料和書籍;在硬件設(shè)計等方面給予悉心的指導(dǎo);在調(diào)試的過程中陳老師給每個出現(xiàn)的問題給予及時的指導(dǎo)。在寫畢業(yè)設(shè)計論文的階段,陳老師讓我們提前給他評審,不論內(nèi)容字體,還是格式上的問題都一一指出。待人平和、工作認真、治學(xué)嚴(yán)謹他的給我留下很深刻的印象。更重要的是,他善于與學(xué)生溝通,不僅在畢業(yè)設(shè)計上給我及時的指導(dǎo),更為我大學(xué)最后階段的學(xué)習(xí)提出了許多寶貴的意見。這一切都在潛移默化地影響著我,為我以后進入工作崗位樹立了良好的榜樣。同時還要感謝梁芳芳老師,她關(guān)心同學(xué)們的進程,了解同學(xué)們在撰寫過程中的麻煩,給我們提供很多幫助。最后向所有幫助和關(guān)心過我的人表示衷心感謝!參考文獻【1】張靖武,周靈杉.單片機系統(tǒng)的proteus設(shè)計與仿真m.北京:北京電子工業(yè)出版社【2】靳達.求是科技.單片機應(yīng)用系統(tǒng)開發(fā)實例導(dǎo)航m.:人民郵電出版社,2006【3】劉守義. 單片機應(yīng)用技術(shù)m.:西安電子科技大學(xué)出版社,2001【4】林志琦.基于proteus的單片機可視化軟硬件仿真m.北京:北京航空航天大學(xué)出版社,2006【5】胡漢才.單片機原理及接口技術(shù).清華大學(xué)出版社,1996【6】徐江海.單片機實用教程m.北京:機械工業(yè)出版社,2007.【7】肖洪兵. 跟我學(xué)用單片機. 北京:北京航空航天大學(xué)出版社,2002.8【8】夏繼強. 單片機實驗與實踐教程. 北京:北京航空航天大學(xué)出版社, 2001【9】譚浩強. c語言程序設(shè)計m.北京:清華大學(xué)出版社,2000.【10】劉?;? c語言程序設(shè)計與實訓(xùn)教程m.北京:科學(xué)出版社,2004.【11】張磊. c語言程序設(shè)計m.北京:高等教育出版社,2005.【12】嚴(yán)桂蘭. c語言程序設(shè)計m.廈門:廈門大學(xué)出版社,2006附錄附錄一:硬件實物圖硬件實物圖(正面)硬件實物圖(背面)附錄二:系統(tǒng)程序清單;主程序/ header:/ file name: / author:/ date:#include #include lcd1602.h#include keypade.hvoid header_printf(unsigned char *str)/規(guī)避warning l15 while(*str!=0)bwr_data(*str);str+;void header()lcd_moveto(0,0);header_printf(zhangfeng );lcd_moveto(1,3);header_printf(xh:0810416016);void main()lcd_init();header();p2=p2|0x0f;p1=p1&0xc0;/*開外部中斷*/it0=1;/下降沿觸發(fā)ex0=1;ea = 1;while(1);void mint0 (void) interrupt 0char i;ea=0; for(i=5;i0;i-)if(int0=1) break;if(int0=0)key_press();ea=1;按鍵處理程序#include #include lcd1602.h#include keypade.h#include operation.hvoid key_press()char a16;/第一次輸入數(shù)字存在b16里,按下中間計算符后,循環(huán)alen=blen;清空blenchar b16;/再次輸入數(shù)字仍存在b16里,按下等號后,計算a,b,結(jié)果存在blen;char key;char i;char arc;/運算符char len;/數(shù)字長度bitsign;/正負號bit point;/小數(shù)點key=key_get();/數(shù)字鍵處理if(key=12) key=7;else if(key=13) key=8;else if(key=14) key=9;else if(key=22) key=4;else if(key=23) key=5;else if(key=24) key=6;else if(key=32) key=1;else if(key=33) key=2;else if(key=34) key=3;else if(key=42) key=0;else if(key=11) key=c;/清空else if(key=21) key=s;/正負號else if(key=31) key=%;else if(key=41) key= ; /空格else if(key=43) key=.;else if(key=44) key=;else if(key=45) key=+;else if(key=25) key=-;else if(key=15) key=*;else if(key=16) key=/;else if(key=26) key=m;/mrcelse if(key=36) key=d;/m-else if(key=46) key=a;/m+else key=e;/錯誤if(len0;len-)blen= ;b0=0;b1=.;lcd_moveto(1,14);lcd_printf(0.);if(key0x2f&key0x3a)if(len=0&key=0)lcd_moveto(1,14);lcd_printf(0.);/第一位輸入0不響應(yīng)else if(point=0)blen=key;blen+1=.;len+;elseblen+1=key;len+;/小數(shù)點處理else if(key=.)/point=1,已存在小數(shù)點/len=15,最后一位按下小數(shù)點if(point=0)if(len0)if(sign=0&len0;i-) bi=bi-1;b0=-;sign=1;else if(sign=1)for(i=0;ilen;i+) bi=bi+1;sign=0;len-;lcd_moveto(1,14-len);lcd_printf( );else if(key=%)else if(key=+|key=-|key=*|key=/)/運算符if(arc=0)for(i=0;i16;i+)/把第一個數(shù)存入aai=bi;bi= ;b0=0;b1=.;len=0;sign=0;point=0;arc=key;elseif(arc=/&point=len)key=e;elseoperation(a,b,arc);for(i=0;i16;i+)/清空bbi= ;b0=0;b1=.;len=0;sign=0;point=0;arc=key;else if(key=)/等號if(arc=/&point=len)key=e;else if(arc!=0)operation(a,b,arc);for(i=0;i16;i+)/清空bbi= ;b0=0;b1=.;len=0;sign=0;point=0;arc=0;/清除計算標(biāo)志while(p3_2=0)if(key=c)/清零lcd_moveto(0,0);lcd_printf( );lcd_moveto(1,0);lcd_printf( 0.);for(i=0;i16;i+)ai= ;bi= ;b0=0;b1=.;len=0;sign=0;point=0;arc=0;else if(key=e)/意料外的按鍵lcd_init();lcd_printf(erro

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論