基于51單片機(jī)的計(jì)算器和萬(wàn)年歷畢業(yè)論文-的設(shè)計(jì)說(shuō)明_第1頁(yè)
基于51單片機(jī)的計(jì)算器和萬(wàn)年歷畢業(yè)論文-的設(shè)計(jì)說(shuō)明_第2頁(yè)
基于51單片機(jī)的計(jì)算器和萬(wàn)年歷畢業(yè)論文-的設(shè)計(jì)說(shuō)明_第3頁(yè)
基于51單片機(jī)的計(jì)算器和萬(wàn)年歷畢業(yè)論文-的設(shè)計(jì)說(shuō)明_第4頁(yè)
基于51單片機(jī)的計(jì)算器和萬(wàn)年歷畢業(yè)論文-的設(shè)計(jì)說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1簡(jiǎn)介1.1概述眾所周知,單片機(jī)是一種集成電路芯片,它采用超大規(guī)模集成電路技術(shù),集成了中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、各種I/O端口和中斷系統(tǒng),具有數(shù)據(jù)處理能力的定時(shí)器/定時(shí)器。它是將顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路復(fù)用器、A/D轉(zhuǎn)換器等功能集成到硅片上而形成的小型完整的計(jì)算機(jī)系統(tǒng)。本設(shè)計(jì)要做的是單片機(jī)在簡(jiǎn)易計(jì)算器中最常見(jiàn)的應(yīng)用。本簡(jiǎn)易計(jì)算器以AT89S52單片機(jī)為核心,可顯示簡(jiǎn)易計(jì)算及時(shí)間,時(shí)間可手動(dòng)設(shè)定;另外還可以顯示當(dāng)前日歷,顯示格式為年(四位)、月(兩位)、日(兩位)位)。設(shè)定時(shí)間、設(shè)定值、啟動(dòng)定時(shí)器、切換日歷的位切換由外部中斷實(shí)現(xiàn)。簡(jiǎn)單的計(jì)算器不僅可以進(jìn)行簡(jiǎn)單

2、的計(jì)算,還可以顯示時(shí)間。簡(jiǎn)易計(jì)算器的顯示電路由LCD1602組成。制作這個(gè)設(shè)備的材料需要軟件和硬件的支持。硬件方面,AT89C51單片機(jī)、晶振、電源、液晶屏LCD1602。1.2設(shè)計(jì)思路1、本項(xiàng)目的設(shè)計(jì)是一個(gè)簡(jiǎn)單的計(jì)算器,可以進(jìn)行四次算術(shù)運(yùn)算。為了獲得更好的顯示效果,采用LCD顯示數(shù)據(jù)和結(jié)果;2、計(jì)算器部分:鍵盤(pán)包括數(shù)字鍵(0-9)、符號(hào)鍵(+、-、*、/)、清除鍵(ON/C)和等號(hào)(=),所以需要16個(gè)鍵。使用矩陣鍵盤(pán);3、時(shí)間顯示部分,年、月、日、時(shí)、分、秒、時(shí)間顯示和計(jì)算器控制鍵分別設(shè)置,需要8個(gè)獨(dú)立按鍵;3、執(zhí)行程序:開(kāi)機(jī)并顯示零,等待輸入數(shù)值,輸入數(shù)字后在液晶顯示屏上顯示,當(dāng)輸入+、

3、-、*、/運(yùn)算符時(shí),計(jì)算器執(zhí)行數(shù)值轉(zhuǎn)換并存儲(chǔ)在零件中,等待再次輸入數(shù)值。顯示輸入的數(shù)值,按等號(hào)在LCD上輸出運(yùn)算結(jié)果;4 、錯(cuò)誤提示:當(dāng)單片機(jī)執(zhí)行程序出現(xiàn)錯(cuò)誤時(shí), LCD上會(huì)顯示相應(yīng)的提示,如:當(dāng)輸入值或計(jì)算器得到的結(jié)果大于單片機(jī)的顯示范圍時(shí)計(jì)算器,計(jì)算器會(huì)在LCD上提示溢出;當(dāng)除數(shù)為0時(shí),計(jì)算器會(huì)在LCD上提示錯(cuò)誤,顯示“error”。2 單片機(jī)及其應(yīng)用單片機(jī)是一種集成電路芯片,采用超大規(guī)模集成電路技術(shù)集成中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、各種I/O端口和中斷系統(tǒng),具有數(shù)據(jù)處理能力的定時(shí)器/定時(shí)器。和其他功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路復(fù)用器、A/D轉(zhuǎn)換

4、器等電路)集成在一個(gè)小而完整的硅芯片上的計(jì)算機(jī)系統(tǒng)中。圖2. 1 AT89S522.1單片機(jī)簡(jiǎn)介單片機(jī),簡(jiǎn)稱(chēng)單片機(jī),是典型的嵌入式微控制器(Microcontroller Unit)。 MCU的縮寫(xiě)常用英文字母來(lái)表示單片機(jī)。單片機(jī)是由芯片上只有一個(gè)CPU的專(zhuān)用處理器發(fā)展而來(lái)的。最早的設(shè)計(jì)理念是通過(guò)將大量外圍設(shè)備和 CPU 集成到一個(gè)芯片中,使計(jì)算機(jī)系統(tǒng)更小,更容易集成到復(fù)雜且體積關(guān)鍵的控制設(shè)備中。 INTEL 的 Z80 是第一款按照這種思路設(shè)計(jì)的處理器。此后,單片機(jī)和專(zhuān)用處理器的發(fā)展將分道揚(yáng)鑣。微控制器在程序上運(yùn)行并且可以修改。不同的功能是通過(guò)不同的程序?qū)崿F(xiàn)的,特別是一些特殊的、獨(dú)特的功能。

5、這是其他設(shè)備需要付出很大努力才能實(shí)現(xiàn)的,而有些是很難通過(guò)大量努力實(shí)現(xiàn)的。如果用純硬件完成一個(gè)不是很復(fù)雜的功能,比如美國(guó)1950年代開(kāi)發(fā)的74系列,或者1960年代的CD4000系列,電路肯定是大PCB板!但如果使用1970年代在美國(guó)成功投放市場(chǎng)的一系列微控制器,結(jié)果就會(huì)大不相同!就因?yàn)閱纹瑱C(jī)可以通過(guò)你寫(xiě)的程序?qū)崿F(xiàn)高智能、高效率、高可靠性!單片機(jī)硬件特點(diǎn):?jiǎn)纹瑱C(jī)集成度高。單片機(jī)包括CPU、4KB容量的ROM(無(wú)8031)、128B容量的RAM、2個(gè)16位定時(shí)器/計(jì)數(shù)器、4個(gè)8位并口、全雙工串口。該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,使用方便,模塊化。2.2單片機(jī)應(yīng)用目前,單片機(jī)已經(jīng)滲透到我們生活的各個(gè)領(lǐng)域,在任何領(lǐng)域

6、幾乎都很難找到單片機(jī)的蹤跡。導(dǎo)彈導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通信和數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車(chē)的安全系統(tǒng),錄像機(jī),攝像機(jī)、自動(dòng)洗衣機(jī)、程控玩具、電子寵物等的控制,都離不開(kāi)單片機(jī)。更不用說(shuō)自動(dòng)控制領(lǐng)域的機(jī)器人、智能電表和醫(yī)療設(shè)備。因此,單片機(jī)的研究、開(kāi)發(fā)和應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用和智能控制方面的科學(xué)家和工程師。單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)療器械、航空航天、特種設(shè)備的智能化管理和過(guò)程控制。它們大致可以分為以下幾類(lèi):(1)在智能儀器儀表中的應(yīng)用(2)在工業(yè)控制中的應(yīng)用(3)在家用電器中的應(yīng)用(4)在計(jì)算機(jī)網(wǎng)絡(luò)與通信領(lǐng)域

7、的應(yīng)用(5)單片機(jī)在醫(yī)療器械領(lǐng)域的應(yīng)用(6)在各種大電器中的模塊化應(yīng)用(7)單片機(jī)在汽車(chē)裝備領(lǐng)域的應(yīng)用此外,單片機(jī)在工商業(yè)、金融、科研、教育、國(guó)防、航天等領(lǐng)域有著非常廣泛的用途。2.3 AT89S52單片機(jī)AT89S52 是一款具有 8K 系統(tǒng)內(nèi)可編程閃存的低功耗、高性能 CMOS 8 位微控制器。它采用 Atmel 的高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè) 80C51 產(chǎn)品完全指令和引腳兼容。片上閃存內(nèi)容在系統(tǒng)內(nèi)對(duì)程序存儲(chǔ)器進(jìn)行編程,也適用于傳統(tǒng)編程器。 AT89S52 在單芯片上,具有智能 8 位 CPU 和系統(tǒng)內(nèi)可編程閃存,為許多嵌入式控制應(yīng)用系統(tǒng)提供了高度靈活和超高效的解決方案。AT89

8、S52 具有以下標(biāo)準(zhǔn)功能:8k 字節(jié) Flash、256 字節(jié) RAM、32 位 I/O 線(xiàn)、看門(mén)狗定時(shí)器、2 個(gè)數(shù)據(jù)指針、 3個(gè) 16 位定時(shí)器/計(jì)數(shù)器、 1個(gè) 6 向量 2 級(jí)中斷結(jié)構(gòu)、全雙工串口、晶振和時(shí)鐘電路。此外,AT89S52 可低至 0Hz 靜態(tài)邏輯操作,支持 2 種軟件可選擇的省電模式。在空閑模式下,CPU 停止工作,內(nèi)容 RAM、定時(shí)器/計(jì)數(shù)器、串行端口和中斷繼續(xù)工作。在掉電保護(hù)模式下,RAM容量被保存,振蕩器被凍結(jié),單片機(jī)的所有工作都停止,直到下一次中斷或硬件復(fù)位。主要性能:1.兼容MCS -51單片機(jī)產(chǎn)品8K字節(jié)系統(tǒng)可編程閃存3. 1000次擦除周期4、全靜態(tài)運(yùn)行: 0H

9、z33Hz5 、三級(jí)加密程序存儲(chǔ)器6. 32條可編程I/O線(xiàn)7. 三個(gè) 16位定時(shí)器/計(jì)數(shù)器8. 八個(gè)中斷源9.全雙工UART串行通道10.低功耗空閑和掉電模式l1 、中斷可以掉電喚醒l2 、看門(mén)狗定時(shí)器l3 、雙數(shù)據(jù)指針l4 、掉電標(biāo)識(shí)圖2. 2 AT89S52引腳結(jié)構(gòu)端口 P0:端口 P0 是一個(gè) 8 位開(kāi)漏雙向 I/O 端口。作為輸出,每個(gè)位可以驅(qū)動(dòng) 8 個(gè) TTL 邏輯電平。當(dāng)向 P0 端口寫(xiě)入“1”時(shí),該引腳用作高阻抗輸入。當(dāng)訪(fǎng)問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0 端口也被復(fù)用為低 8 位地址/數(shù)據(jù)。在這種模式下,P0 有一個(gè)部分上拉電阻。在 Flash 編程時(shí),端口 P0 也用于接收指令

10、字節(jié);在程序驗(yàn)證期間,輸出指令字節(jié)。對(duì)于程序驗(yàn)證,需要一個(gè)外部上拉電阻。端口 P1:端口 P1 是一個(gè)帶有上拉電阻的 8 位雙向 I/O 端口。 P1輸出緩沖器可以驅(qū)動(dòng)四個(gè) TTL 邏輯電平。當(dāng)P1端口寫(xiě)“1”時(shí),一個(gè)上拉電阻將該端口拉高,此時(shí)可以作為輸入端口使用。用作輸入時(shí),由于外部電阻,外部下拉的引腳會(huì)輸出電流。另外,P1.0 和 P1.2 分別作為定時(shí)器/計(jì)數(shù)器 2 的外部計(jì)數(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器 2 的觸發(fā)輸入(P1.1/T2EX),如下圖所示桌子。 .在閃存編程和驗(yàn)證期間,P1 端口接收低 8 位地址字節(jié)。引腳號(hào)次要功能P1.0 T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸

11、入),時(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 為 8 位雙向 I/O 端口,帶上拉電阻,P2 輸出緩沖器可驅(qū)動(dòng) 4 個(gè) TTL 邏輯電平。當(dāng)P2端口寫(xiě)“1”時(shí),一個(gè)上拉電阻將該端口拉高,此時(shí)可以作為輸入端口使用。用作輸入時(shí),由于外部電阻,外部下拉的引腳會(huì)輸出電流。 16位地址訪(fǎng)問(wèn)外部程序存儲(chǔ)器或讀取外部數(shù)據(jù)存儲(chǔ)器時(shí)(如執(zhí)行MOVX DPTR),P2口發(fā)出高位8位地址。在此應(yīng)用中,P2 端口使用強(qiáng)外部上拉致 1。當(dāng)使用 8 位地址(如 M

12、OVX RI)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),P2 端口輸出 P2 鎖存器的內(nèi)容。在閃存編程和驗(yàn)證過(guò)程中,P2 端口還接收高 8 位地址字節(jié)和一些控制信號(hào)。端口 3:端口 3 是一個(gè)帶上拉電阻的 8 位雙向 I/O 端口, P2輸出緩沖器可以驅(qū)動(dòng) 4 個(gè) TTL 邏輯電平。當(dāng)P3端口寫(xiě)“1”時(shí),一個(gè)上拉電阻會(huì)將端口拉高,此時(shí)可以作為輸入端口使用。用作輸入時(shí),由于外部電阻,外部下拉的引腳會(huì)輸出電流。 P3口也用作AT89S52的一個(gè)特殊功能(第二功能),如下表所示。在 Flash 編程和驗(yàn)證過(guò)程中,P3 端口也接收一些控制信號(hào)。針數(shù)秒功能:P3.0 RXD(串行輸入)P3.1 TXD(串行輸出)P3.2

13、INT0(外部中斷 0)P3.3 INT0(外部中斷 0)P3.4 T0(定時(shí)器0外部輸入)P3.5 T1(定時(shí)器 1 外部輸入)P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)RST:復(fù)位輸入。當(dāng)晶振工作時(shí),RST 引腳高電平 2 個(gè)機(jī)器周期將使單片機(jī)復(fù)位。看門(mén)狗定時(shí)器完成后,RST 引腳輸出高電平,持續(xù) 96 個(gè)晶振周期。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以禁用此功能。在 DISRTO 的默認(rèn)狀態(tài)下,復(fù)位為高電平有效。ALE/PROG:地址鎖存控制信號(hào)(ALE)用于在訪(fǎng)問(wèn)外部程序存儲(chǔ)器時(shí)鎖存低8位地址的輸出脈沖。在閃存編程期間,該引腳

14、(PROG) 也用作編程輸入脈沖。一般情況下,ALE以晶體振蕩器六分之一的固定頻率輸出脈沖,可用作外部定時(shí)器或時(shí)鐘。但是,需要強(qiáng)調(diào)的是,每次訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)都會(huì)跳過(guò) ALE 脈沖。如果需要,通過(guò)將地址 8EH 的 SFR 的第 0 位設(shè)置為“1”,ALE 操作將無(wú)效。該位為“1”時(shí),ALE 僅在執(zhí)行 MOVX 或 MOVC 指令時(shí)有效。否則,ALE 會(huì)被弱拉高。當(dāng)微控制器處于外部執(zhí)行模式時(shí),該 ALE 使能標(biāo)志(地址 8EH 處的 SFR 的位 0)的設(shè)置無(wú)效。 PSEN:外部程序存儲(chǔ)器選通信號(hào)(PSEN)是外部程序存儲(chǔ)器選通信號(hào)。當(dāng)AT89S52從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí), PSEN

15、每個(gè)機(jī)器周期被激活兩次,當(dāng)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí), PSEN不會(huì)被激活。EA/VPP :訪(fǎng)問(wèn)外部程序存儲(chǔ)器控制信號(hào)。 EA必須連接到GND 以啟用從0000H到FFFFH的外部程序存儲(chǔ)器讀取指令。為了執(zhí)行部分程序指令, EA應(yīng)該連接到VCC 。在閃存編程期間, EA還接收12伏VPP 。XTAL1 :振蕩器反相放大器和部分時(shí)鐘產(chǎn)生電路的輸入端。XTAL2 :振蕩器反相放大器的輸出。3 LCD1602的原理及應(yīng)用3.1 LCD1602簡(jiǎn)介L(zhǎng)CD1602已經(jīng)很常見(jiàn)了,我就不贅述了。市面上大部分字符液晶都是基于HD44780液晶芯片,控制原理完全一樣。因此,HD44780編寫(xiě)的控制程序可以很容易地應(yīng)用

16、于市場(chǎng)。大多數(shù)字符液晶顯示器。字符型LCD通常有14腳線(xiàn)或16腳線(xiàn)LCD ,額外的2線(xiàn)是背光電源線(xiàn)VCC ( 15腳)和地線(xiàn)GND ( 16腳)??刂圃硗?4針。液晶顯示器完全一樣。3.2 LCD1602的引腳1602LCD采用標(biāo)準(zhǔn)14針(不帶背光)或16針(帶背光)接口。各管腳接口說(shuō)明如表3.1所示:表3.1 LCD1602管腳說(shuō)明編號(hào)象征引腳說(shuō)明編號(hào)象征引腳說(shuō)明1VSS電源地9D2數(shù)據(jù)2VDD正電源10D3數(shù)據(jù)3VL液晶偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5讀/寫(xiě)讀/寫(xiě)選項(xiàng)13D6數(shù)據(jù)6乙使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光正極8D1數(shù)據(jù)16黑色背光負(fù)極表 3.1:引

17、腳接口說(shuō)明表引腳 1:VSS 為地電源。引腳 2:VDD 接 5V 正電源。3腳:VL為液晶顯示器的對(duì)比度調(diào)節(jié)端。連接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高。當(dāng)對(duì)比度過(guò)高時(shí),會(huì)產(chǎn)生“鬼影”。使用過(guò)程中可通過(guò)10K電位器調(diào)節(jié)對(duì)比度。4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器,低電平時(shí)選擇指令寄存器。5腳:R/W為讀寫(xiě)信號(hào)線(xiàn),讀操作為高電平,寫(xiě)操作為低電平。當(dāng) RS 和 R/W 都為低時(shí),可以寫(xiě)入命令或顯示地址。當(dāng) RS 為低電平時(shí),R/W 為高電平,可以讀取忙信號(hào)。當(dāng) RS 為高時(shí),R/W 為低??梢詫?xiě)入數(shù)據(jù)。引腳 6:E 端為使能端。當(dāng)E端從高電平跳到低電平時(shí),液晶模塊執(zhí)行指令。引腳 7 到

18、 14:D0 到 D7 是 8 位雙向數(shù)據(jù)線(xiàn)。Pin 15:背光燈正極。第16腳:背光源負(fù)極。3.3 LCD1602指令1602液晶模組的控制器共有11條控制指令,如表3.2所示:表3. 2 LCD1602使用說(shuō)明編號(hào)操作說(shuō)明RS讀/寫(xiě)D7D6D5D4D3D2D1D01清晰的顯示00000000012光標(biāo)返回000000001*3設(shè)置輸入模式00000001ID小號(hào)4顯示開(kāi)/關(guān)控制0000001DC乙5光標(biāo)或字符移位000001S/C右/左*6設(shè)置功能00001深度學(xué)習(xí)F*7設(shè)置字符生成內(nèi)存地址0001字符生成內(nèi)存地址8設(shè)置數(shù)據(jù)存儲(chǔ)器地址001顯示數(shù)據(jù)存儲(chǔ)器地址9讀取繁忙標(biāo)志或地址01高爐柜臺(tái)

19、地址10將數(shù)據(jù)寫(xiě)入 CGRAM 或 DDRAM)10要寫(xiě)入的數(shù)據(jù)11從 CGRAM 或 DDRAM 讀取11讀取數(shù)據(jù)內(nèi)容表 3.2:控制命令列表1602液晶模塊的讀寫(xiě)操作、屏幕操作和光標(biāo)操作都是通過(guò)指令編程實(shí)現(xiàn)的。 (注:1為高電平,0為低電平)命令1 :清除顯示,命令代碼為 01H,光標(biāo)復(fù)位到地址 00H。命令2:光標(biāo)復(fù)位,光標(biāo)返回地址00H。命令 3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平向右,低電平向左 S:屏幕上的所有文字是向左還是向右移動(dòng)。高電平有效,低電平無(wú)效。命令 4:顯示開(kāi)關(guān)控制。 D:控制整體顯示的開(kāi)啟和關(guān)閉,高電平表示開(kāi)啟,低電平表示關(guān)閉顯示 C:控制光標(biāo)開(kāi)啟和關(guān)

20、閉,高電平表示有光標(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位總線(xiàn),低電平時(shí)8位總線(xiàn) N:低電平時(shí)單行顯示,高電平時(shí)雙行顯示 F:低電平時(shí)5x7點(diǎn)陣字符,5x10點(diǎn)陣級(jí)別高時(shí)顯示矩陣字符。指令 7:字符發(fā)生器 RAM 地址設(shè)置。指令 8:DDRAM 地址設(shè)置。命令 9:讀忙信號(hào)和光標(biāo)地址 BF:是忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或數(shù)據(jù),低電平表示不忙。指令 10:寫(xiě)入數(shù)據(jù)。指令11 :讀取數(shù)據(jù)。兼容芯片時(shí)序表如下:表3.3 LCD1602基本操

21、作時(shí)序說(shuō)明讀取狀態(tài)進(jìn)入RS=L,R/W=H,E=H輸出D0D7=狀態(tài)字寫(xiě)命令進(jìn)入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出沒(méi)有任何讀取數(shù)據(jù)進(jìn)入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫(xiě)入數(shù)據(jù)進(jìn)入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出沒(méi)有任何LCD1602的RAM地址映射及標(biāo)準(zhǔn)字體表液晶顯示模塊是慢速顯示設(shè)備,所以在執(zhí)行每條命令之前,請(qǐng)確保模塊的busy標(biāo)志為低,表示不忙,否則命令無(wú)效。當(dāng)要顯示字符時(shí),首先要輸入顯示字符地址,即告訴模塊在哪里顯示字符。圖3.1顯示了1602的部分顯示地址。圖3.1 LCD1602部分地址比如第二行第一個(gè)字符的地址是40H,那么直接

22、寫(xiě)40H可以將光標(biāo)定位到第二行第一個(gè)字符的位置嗎?這樣不行,因?yàn)閷?xiě)顯示地址時(shí)要求最高位D7為恒定高電平1,所以實(shí)際寫(xiě)入的數(shù)據(jù)應(yīng)該是01000000B (40H)+10000000B(80H)=11000000B(C0H)。在液晶模組的初始化中,首先要設(shè)置它的顯示模式。當(dāng)液晶模組顯示字符時(shí),光標(biāo)會(huì)自動(dòng)向右移動(dòng),無(wú)需人工干預(yù)。在輸入每條命令之前,需要判斷液晶模塊是否處于忙碌狀態(tài)。1602液晶模組的字符生成存儲(chǔ)器(CGROM)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如表3.4所示,這些字符分別是:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用符號(hào)、日文假名等,每個(gè)字符都有一個(gè)固定的編碼,比如大寫(xiě)英文字母“A”編碼為0

23、1000001B(41H),當(dāng)模塊在地址41H顯示點(diǎn)陣字符圖形時(shí),我們可以看到字母“A” .表3.4 CGROM 和CGRAM中字符碼與字符圖形的對(duì)應(yīng)關(guān)系4 整體設(shè)計(jì)4.1設(shè)計(jì)方法本電路設(shè)計(jì)以AT89S52單片機(jī)為核心,利用晶振產(chǎn)生頻率為1HZ的時(shí)鐘脈沖信號(hào),利用液晶屏LCD1602顯示計(jì)算及其時(shí)間信息,控制液晶屏的顯示LCD1602通過(guò)AT89S52單片機(jī)編程。顯示計(jì)算和簡(jiǎn)單計(jì)算的信息在LCD1602上,可以通過(guò)切換按鍵來(lái)選擇。外部鍵可用于設(shè)置或調(diào)整時(shí)間或計(jì)算信息。4.2硬件設(shè)計(jì)本系統(tǒng)以AT89S52單片機(jī)為核心,系統(tǒng)選用1個(gè)2兆赫晶振,使單片機(jī)具有合理的運(yùn)行速度。啟動(dòng)電容 22 pF適用于

24、振蕩器的頻率、振蕩器的穩(wěn)定性和啟動(dòng)的快速性。復(fù)位電路是按鍵的高電平復(fù)位。4.2.1按鍵調(diào)節(jié)電路圖4.1 獨(dú)立按鍵S0為調(diào)秒按鈕,按下S0時(shí),秒加1; S1為分鐘調(diào)整按鈕,按下S1,分鐘加1; S2鍵為調(diào)節(jié),按下S2時(shí)加1; S3按鈕是調(diào)整日期,當(dāng)按下S3時(shí),日期加1;按下 S4 時(shí),月份加 1;按下 S4 時(shí),月份加 1;按下 S5 時(shí),年份加 1;按下S6時(shí),顯示時(shí)間;當(dāng)按下 S7 時(shí),顯示計(jì)算。4.2.2 復(fù)位電路圖4.2 復(fù)位電路51 MCU 被高電平復(fù)位。所以本設(shè)計(jì)采用上電復(fù)位和手動(dòng)復(fù)位相結(jié)合的方式。4.2.3 LCD1602顯示電路圖4.3 顯示部分本設(shè)計(jì)采用液晶屏LCD1602顯示

25、輸出數(shù)據(jù),通過(guò) D0-D7 引腳向 LCD 寫(xiě)入命令字或數(shù)據(jù),使 LCD 實(shí)現(xiàn)不同的功能或顯示相應(yīng)的數(shù)據(jù)。4.2.4 電源電路圖4.4 電源部分三端穩(wěn)壓集成電路LM 7805是指用于電壓調(diào)節(jié)的集成電路。它只有三個(gè)引腳輸出,即輸入端、接地端和輸出端。如圖4.4所示,這是一個(gè)輸出+ 5V直流電壓的穩(wěn)壓電源電路。采用集成穩(wěn)壓器LM 7805,二極管D S1 起保護(hù)作用, C4為輸出濾波電容。當(dāng)輸出電流較大時(shí), LM 7805應(yīng)加裝散熱片。在這種設(shè)計(jì)中,功率很小,沒(méi)有使用。 78/79系列集成穩(wěn)壓IC中78或79后面的數(shù)字代表三端集成穩(wěn)壓電路的輸出電壓,如780 5表示輸出電壓為+5V 。4.2.5

26、鍵盤(pán)設(shè)計(jì)圖4.5 矩陣鍵盤(pán)計(jì)算器使用很多鍵來(lái)輸入數(shù)字和其他功能鍵。如果使用獨(dú)立鍵,這種情況下編程會(huì)很簡(jiǎn)單,但是會(huì)占用大量的I/O口資源,所以很多情況下是沒(méi)有必要的。這樣就改用矩陣鍵盤(pán)方案了。矩陣鍵盤(pán)采用四根I/O線(xiàn)作為行線(xiàn),四根I/O線(xiàn)作為列線(xiàn)組成鍵盤(pán),在行列線(xiàn)的每個(gè)交叉點(diǎn)設(shè)置一個(gè)鍵。這樣,鍵盤(pán)上的按鍵數(shù)為4*4。這種行列式鍵盤(pán)結(jié)構(gòu)可以有效提高單片機(jī)系統(tǒng)中I/O端口的利用率。4.3軟件設(shè)計(jì)電路軟件設(shè)計(jì)采用C語(yǔ)言編寫(xiě)程序(具體程序見(jiàn)附件)。編程主要包括簡(jiǎn)單計(jì)算編程、按鍵編程、時(shí)間控制編程、 LCD1602液晶屏顯示編程。4.4軟件仿真硬件設(shè)計(jì)完成后,用軟件進(jìn)行仿真,以減少硬件制作時(shí)的誤差,使之更

27、加準(zhǔn)確。這次我使用Proteus軟件模擬。圖4.1 ,簡(jiǎn)易計(jì)算器的時(shí)間顯示。如圖 4.2 所示,簡(jiǎn)易計(jì)算器的計(jì)算顯示。本次軟件仿真后,仿真結(jié)果正常,可以順利進(jìn)行硬件生產(chǎn)。圖4.6 時(shí)間顯示圖4.7 計(jì)算顯示4.5硬件調(diào)試前期工作都是為了最后一步,也就是自己焊接,做成一個(gè)完整的對(duì)象。確保焊接無(wú)誤后,再將之前編譯好的程序燒錄到單片機(jī)中進(jìn)行最后的硬件調(diào)試。結(jié)束語(yǔ)AT89 S 52 , LCD1602及其4 * 4鍵盤(pán)的使用單片機(jī)簡(jiǎn)單計(jì)算的設(shè)計(jì) 在設(shè)計(jì)過(guò)程中,我通過(guò)網(wǎng)上查閱資料收集了有關(guān)單片機(jī)和LCD1602顯示器的資料,圖書(shū)館。通過(guò)對(duì)這些資料的學(xué)習(xí),我了解了單片機(jī)的基本結(jié)構(gòu)以及單片機(jī)在生活和生產(chǎn)中的

28、作用。作用與液晶屏LCD1602的原理和使用有關(guān)。本設(shè)計(jì)完成的主要任務(wù)和任務(wù)如下:設(shè)計(jì)方案的理論研究、單片機(jī)的合理選型、硬件電路設(shè)計(jì)、電路板制作、元器件焊接、軟件編寫(xiě)和調(diào)試編寫(xiě)。通過(guò)設(shè)計(jì)一個(gè)簡(jiǎn)單計(jì)算器的過(guò)程,掌握了單片機(jī)的基本原理和基本應(yīng)用,對(duì)其各種硬件接口和軟件設(shè)計(jì)方法有了一定的了解。通過(guò)繪制電路原理圖和PCB圖,深化Protel DXP的使用,電路仿真和電路板制作掌握了Proteus仿真軟件的使用。本論文的設(shè)計(jì)是為了鞏固之前所學(xué)的理論知識(shí),加深理解,提高應(yīng)用能力,提高發(fā)現(xiàn)、分析和解決問(wèn)題的能力。從最初的選題、硬件設(shè)計(jì)、軟件設(shè)計(jì)到最終仿真結(jié)果的出現(xiàn),在一定程度上提高了對(duì)該專(zhuān)業(yè)的理解和興趣。就

29、我而言,這對(duì)未來(lái)的就業(yè)有重大影響。至也很感謝學(xué)校和老師給我們提供了這樣一個(gè)平臺(tái),可以提升我們的動(dòng)手能力;感謝老師們的幫助和他們帶給我的知識(shí),讓我能夠完成這個(gè)畢業(yè)設(shè)計(jì)。同時(shí),也感謝同學(xué)們對(duì)我的支持!參考1 田力.田清。戴方振。 51 單片機(jī)C語(yǔ)言編程。人民郵電. 2008 年:132-148 。2 儀和.例51單片機(jī)(C語(yǔ)言版)(第三版) .人民郵電 2010:374-392 。3 譚浩強(qiáng). C 編程(第三版) 。清華大學(xué)。 2003:140-150 。4溫子琪志峰。賢安生。林志謙。 _5 于希村.單片機(jī)原理與接口技術(shù).中國(guó)電子科技大學(xué)。 2000:80-95 。.附錄一、硬件電路原理圖2. 軟

30、件編程流程#include #define uchar 無(wú)符號(hào)字符#define uint 無(wú)符號(hào)整數(shù)位rs=P00;sbit rw=P01;位 e=P02;位 k0=P10;位 k1=P11;位 k2=P12;位 k3=P13;位 k4=P14;位 k5=P15;位 k6=P16;位 k7=P17;無(wú)符號(hào)字符碼 digit =0123456789; /定義字符數(shù)組來(lái)顯示數(shù)字無(wú)符號(hào)字符 s,m,h,day,month,year,count;無(wú)效 write_dat(uchar dat);無(wú)效寫(xiě)_(uchar);無(wú)效鍵掃描();/ *功能說(shuō)明:顯示代碼,加0 x30,分別為 1 , 2 , 3

31、, + , 4 , 5 , 6 , - 等* * /uchar 碼表1=1,2,3,0 x2b-0 x30, 4,5,6,0 x2d-0 x30, 7,8,9,0 x2a-0 x30, 0,0 x3d-0 x30,0 x01-0 x30,0 x2f-0 x30;uchar k=0,flag=0,num,fuhao,i;長(zhǎng) a,b,c;無(wú)效延遲(單位 z) 單位 x,y;對(duì)于(x=z;x0;x-)for(y=110;y0;y-);/ *功能作用:指定字符顯示的實(shí)際地址 入口參數(shù):x * /無(wú)效寫(xiě)入地址(無(wú)符號(hào)字符 x) write_(x|0 x80); /顯示位置的確定方法指定為“80H+地址碼

32、x”/ *功能功能:顯示小時(shí)* /無(wú)效的顯示小時(shí)() 無(wú)符號(hào)字符 i,j;i=h/10; /四舍五入得到十位數(shù)j=h%10; /取數(shù)字的余數(shù)運(yùn)算寫(xiě)地址(0 x45); /寫(xiě)入顯示地址,顯示第2行第0列的十位數(shù)字write_dat(數(shù)字i); /將十位字符常量寫(xiě)入LCDwrite_dat(數(shù)字j); /將一位字符常量寫(xiě)入LCD/ *功能功能:顯示分鐘* /無(wú)效顯示分鐘() 無(wú)符號(hào)字符 i,j;我=米/10; /四舍五入得到十位數(shù)j=m%10; /取數(shù)字的余數(shù)運(yùn)算寫(xiě)地址(0 x48); /寫(xiě)入顯示地址,顯示第2行第3列的十位數(shù)字write_dat(數(shù)字i); /將十位字符常量寫(xiě)入LCDwrite_

33、dat(數(shù)字j); /將一位字符常量寫(xiě)入LCD/*功能:顯示秒數(shù)*/無(wú)效的 DisplaySecond() 無(wú)符號(hào)字符 i,j; i=s/10; /四舍五入得到十位數(shù)j=s%10; /取數(shù)字的余數(shù)運(yùn)算寫(xiě)地址(0 x4b); /寫(xiě)入顯示地址,顯示第2行第6列的十位數(shù)字write_dat(數(shù)字i); /將十位字符常量寫(xiě)入LCDwrite_dat(數(shù)字j); /將一位字符常量寫(xiě)入LCD/*功能:顯示年份*/無(wú)效顯示年() 無(wú)符號(hào)字符 i,j;我=年/10; /四舍五入得到十位數(shù)j=年%10; /取每個(gè)數(shù)的余數(shù)操作寫(xiě)地址(0 x07); /寫(xiě)入顯示地址,顯示第2行第0列的十位數(shù)字write_dat(數(shù)

34、字i); /將十位字符常量寫(xiě)入LCDwrite_dat(數(shù)字j); /將一位字符常量寫(xiě)入LCD/* 功能:顯示月份*/無(wú)效顯示月() 無(wú)符號(hào)字符 i,j;我=月/10; /四舍五入得到十位數(shù)j=月%10; /取數(shù)字的余數(shù)運(yùn)算寫(xiě)地址(0 x0a); /寫(xiě)入顯示地址,顯示第2行第3列的十位數(shù)字write_dat(數(shù)字i); /將十位字符常量寫(xiě)入LCDwrite_dat(數(shù)字j); /將一位字符常量寫(xiě)入LCD/*功能函數(shù):顯示日期*/無(wú)效顯示日() 無(wú)符號(hào)字符 i,j; 我=天/10; /四舍五入得到十位數(shù)j=天%10; /取數(shù)字的余數(shù)運(yùn)算寫(xiě)地址(0 x0d); /寫(xiě)入顯示地址,在第2行第6列顯示十

35、位數(shù)字write_dat(數(shù)字i); /將十位字符常量寫(xiě)入LCDwrite_dat(數(shù)字j); /將一位字符常量寫(xiě)入LCD無(wú)效鍵掃描2()如果(k0=0)延遲(5);如果(k0=0) s+; 如果(s=60)s=0; 如果(k1=0)延遲(5);如果(k1=0)m+;如果(米=60)米=0; 如果(k2=0)延遲(5);如果(k2=0)h+;如果(h=60)h=0; 如果(k3=0)延遲(5);如果(k3=0)天+;如果(天=30)天=0; 如果(k4=0)延遲(5);如果(k4=0)月+;如果(月=13)月=0; 如果(k5=0)延遲(5);如果(k5=0)年+;如果(年=99)年=0; 無(wú)

36、效鍵掃描() uchar 溫度;P3=0 xfe;溫度=P3;溫度=溫度&0 xf0;而(溫度!= 0 xf0)延遲(5);溫度=P3;溫度=溫度&0 xf0;而(溫度!= 0 xf0)溫度=P3;開(kāi)關(guān)(溫度) 案例 0 xee:num=0;休息;案例 0 xde:num=1;休息;案例 0 xbe:num=2;休息;案例 0 x7e:num=3;休息;而(溫度!= 0 xf0)溫度=P3;溫度=溫度&0 xf0; /* *當(dāng)你按下 1,2,3 并松開(kāi)時(shí),執(zhí)行以下語(yǔ)句* * /如果(數(shù)=0|數(shù)=1|數(shù)=2) 如果(標(biāo)志=0)a=a*10+table1num;/如果符號(hào)鍵沒(méi)有按下,則符號(hào)前的值為

37、a否則如果(標(biāo)志=1)b=b*10+table1數(shù)量; /如果符號(hào)鍵被按下,符號(hào)后面的值為bif(k=1) /如果之前按了=號(hào),再按一次按鈕清屏,進(jìn)行下一次計(jì)算k=0;寫(xiě)_(0 x01); else if(num=3) /判斷按+標(biāo)志=1;福好=1;i=table1數(shù)字; /顯示按下的鍵write_dat(0 x30+i);P3=0 xfd;溫度=P3;溫度=溫度&0 xf0;而(溫度!= 0 xf0)延遲(5);溫度=P3;溫度=溫度&0 xf0;而(溫度!= 0 xf0)溫度=P3;開(kāi)關(guān)(溫度) 案例 0 xed:num=4;休息;案例 0 xdd:num=5;休息;案例 0 xbd:nu

38、m=6;休息;案例 0 x7d:num=7;休息;而(溫度!= 0 xf0)溫度=P3; temp=temp&0 xf0; if(num=4|num=5|num=6) /判斷是否按下4,5,6 if(k=1) k=0; write_(0 x01); if(flag=0) a=a*10+table1num; else if(flag=1) b=b*10+table1num; else if(num=7) flag=1; fuhao=2; i=table1num; /顯示按下的鍵 write_dat(0 x30+i); P3=0 xfb;溫度=P3;溫度=溫度&0 xf0;而(溫度!= 0 xf0

39、)延遲(5);溫度=P3;溫度=溫度&0 xf0;而(溫度!= 0 xf0)溫度=P3;開(kāi)關(guān)(溫度) / 案例 0 xeb:num=8;休息;案例 0 xdb:num=9;休息;案例 0 xbb:num=10;休息;案例 0 x7b:num=11;休息;而(溫度!= 0 xf0)溫度=P3;溫度=溫度&0 xf0; if(num=8|num=9|num=10) /判斷是否按7,8,9 如果(k=1)k=0;寫(xiě)_(0 x01); 如果(標(biāo)志=0)a=a*10+table1數(shù)量;否則如果(標(biāo)志=1)b=b*10+table1數(shù)量; else if(num=11) /判斷是否點(diǎn)擊標(biāo)志=1;福好=3;

40、 i=table1數(shù)字;write_dat(0 x30+i); P3=0 xf7;溫度=P3;溫度=溫度&0 xf0;而(溫度!= 0 xf0)延遲(5);溫度=P3;溫度=溫度&0 xf0;而(溫度!= 0 xf0)溫度=P3;開(kāi)關(guān)(溫度) 案例 0 xe7:num=12; / 0鍵休息;案例 0 xd7:num=13; /=休息;案例 0 xb7:num=14; /清0鍵休息;案例 0 x77:num=15; /休息; 而(溫度!= 0 xf0)溫度=P3;溫度=溫度&0 xf0; 開(kāi)關(guān)(數(shù)量)案例12: 如果(k=1)k=0; write_(0 x01); 如果(標(biāo)志=0)a=a*10;

41、否則如果(標(biāo)志=1)b=b*10;write_dat(0 x30); 休息;案例 13: /按下 = 鍵k=1;if(fuhao=1) /如果符號(hào)鍵為+,則執(zhí)行+操作 write_(0 x80+0 x4f);寫(xiě)_(0 x04);c=a+b;而(c!= 0) write_dat(0 x30+c%10);c=c/10; write_dat(0 x3d);福好=0;a=0;b=0;標(biāo)志=0; 如果(福豪=2) write_(0 x80+0 x4f);寫(xiě)_(0 x04);如果(a=b) c=ab;而(c!= 0) write_dat(0 x30+c%10);c=c/10; 否則如果(ab) c=ba;

42、而(c!= 0) write_dat(0 x30+c%10);c=c/10; write_dat(0 x2d);write_dat(0 x3d);a=0;b=0;flag=0;fuhao=0;if(fuhao=3) /如果符號(hào)鍵是* write_(0 x80+0 x4f);寫(xiě)_(0 x04);c=a*b;而(c!= 0) write_dat(0 x30+c%10);c=c/10; write_dat(0 x3d);a=0;b=0;flag=0;fuhao=0; if(fuhao=4) /如果符號(hào)鍵是/我=0;write_(0 x80+0 x4f);寫(xiě)_(0 x04);c=(long)(浮點(diǎn)數(shù))a/b)*1000000); /結(jié)果保留6位小數(shù)而(c!= 0) write_dat(0 x30+c%10);c=c/10;我+;if(i=6) /顯示六位小數(shù)后,顯示write_dat(0 x2e); 如果(a/b=0)write_dat(0 x30); write_dat(0 x3d);a=0;b=0;flag=0;fuhao=0; 休息;案例 14: write_(0 x01);a=0;b=0;flag=0;fuhao=0;休息;案例 15:標(biāo)志=1;富豪=4;write_dat(0 x30+table1num); 休息; /*led16

溫馨提示

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

評(píng)論

0/150

提交評(píng)論