畢業(yè)設(shè)計(jì)(論文)基于AT89C51單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于AT89C51單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于AT89C51單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于AT89C51單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于AT89C51單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 引言計(jì)算器(calculator)是微型電子計(jì)算機(jī)的一種特殊類型。它與一般通用計(jì)算機(jī)的主要區(qū)別在于程序輸入方式的不同。計(jì)算器的程序一般都已經(jīng)固定,只需按鍵輸入數(shù)據(jù)和運(yùn)算符號(hào)就會(huì)得出結(jié)果,很容易就能掌握。而一般計(jì)算機(jī)的程序可以根據(jù)需要隨時(shí)改動(dòng),或重新輸入新的程序。簡(jiǎn)易計(jì)算器主要用于加減乘除;科學(xué)計(jì)算器,又增添了初等函數(shù)運(yùn)算(有的還帶有數(shù)據(jù)總加、求平均值等統(tǒng)計(jì)運(yùn)算)?,F(xiàn)代電子計(jì)算器首次問(wèn)世是1963年。那時(shí)的計(jì)算器是臺(tái)式的,在美國(guó)波士頓的電子博覽會(huì)上展出過(guò)。與計(jì)算機(jī)相比,它小巧玲瓏,計(jì)算迅捷,一般問(wèn)題不必事先編寫復(fù)雜的程序。 隨著微電子技術(shù)的不斷發(fā)展,微處理器芯片的集成程度越來(lái)越高,單片機(jī)已可以

2、在一塊芯片上同時(shí)集成cpu、存儲(chǔ)器、定時(shí)器計(jì)數(shù)器、并行和串行接口、看門狗、前置放大器、ad轉(zhuǎn)換器、da轉(zhuǎn)換器等多種電路,這就很容易將計(jì)算機(jī)技術(shù)與測(cè)量控制技術(shù)結(jié)合,組成智能化測(cè)量控制系統(tǒng)。這種技術(shù)促使機(jī)器人技術(shù)也有了突飛猛進(jìn)的發(fā)展,目前人們已經(jīng)完全可以設(shè)計(jì)并制造出具有某些特殊功能的簡(jiǎn)易智能機(jī)器人。隨著社會(huì)需求,計(jì)算器也從原有單一的數(shù)字加減計(jì)算演變?yōu)閺?fù)雜的多種運(yùn)算。現(xiàn)在不在單一的在某一方面而是涉及到生活的方方面面.由于我對(duì)知識(shí)掌握的不夠熟練,重點(diǎn)不夠清楚,導(dǎo)致在重點(diǎn)與非重點(diǎn)處花費(fèi)的時(shí)間不成比例,進(jìn)度緩慢,這是設(shè)計(jì)沒(méi)能全部完成的部分原因。目前只做到按鍵與顯示的結(jié)合(即在顯示器上可以顯示數(shù)字鍵還有命令

3、鍵+-*/ =清零);加法子程序已經(jīng)編寫成功并嚴(yán)整無(wú)誤,但在整體調(diào)試中未能圓滿實(shí)現(xiàn),本部分正在調(diào)試中。等調(diào)試成功后,其它運(yùn)算子程序的問(wèn)題將迎刃而解。目錄引言1目錄21.簡(jiǎn)易計(jì)算器的設(shè)計(jì)方案31.1硬件部分設(shè)計(jì)方案31.2軟件部分設(shè)計(jì)31.3 硬件設(shè)計(jì)原理圖42. 簡(jiǎn)易計(jì)算器部分電路設(shè)計(jì)52.1 at89c51常用指令52.2 顯示及顯示接口112.3 鍵盤、液晶顯示的組合接口182.4 算術(shù)邏輯運(yùn)算處理213.總設(shè)計(jì)電路及調(diào)試24致謝30參考文獻(xiàn)311.簡(jiǎn)易計(jì)算器的設(shè)計(jì)方案1.1硬件部分設(shè)計(jì)方案1 單片機(jī)部分 單片機(jī)以at89c51來(lái)做為核心元器件。2 按鍵部分 方案一:采用4*4行列式鍵盤,

4、分別設(shè)定數(shù)字鍵和功能鍵,采用查詢方式,每次有鍵按下時(shí),先判斷是實(shí)數(shù)字鍵還是功能鍵。但是這種方式采用了大量的i/o口線。 方案二:采用獨(dú)立式按鍵。獨(dú)立式按鍵接口電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單. 但是在本實(shí)驗(yàn)中根據(jù)實(shí)際的需要19個(gè)按鍵,所以我們采用方案二。3 顯示部分在單片機(jī)應(yīng)用系統(tǒng)中,使用的顯示器主要有l(wèi)ed(發(fā)光二極管顯示器)、lcd液晶顯示器以及crt接口。方案一:使用8位led數(shù)碼管來(lái)做顯示。led顯示器是是由發(fā)光二極管顯示字段組成的顯示器件,在單片機(jī)應(yīng)用系統(tǒng)中通常使用的是七段led,這種顯示器有共陰極和共陽(yáng)極兩種,它具有成本低廉、配置靈活和單片機(jī)接口方便等特點(diǎn)。方案二:使用液晶顯示器來(lái)顯示。

5、液晶是介于固態(tài)和液態(tài)間的有機(jī)化合物,將其加熱會(huì)變成透明液態(tài),冷卻后變成結(jié)晶的混濁固態(tài)。在電機(jī)的作用下,產(chǎn)生冷熱變化,從而影響它的透光性,來(lái)達(dá)到顯示的目的。lcd還具有以下幾個(gè)優(yōu)點(diǎn)(1)低壓、微功耗(2)顯示信息量大(3)長(zhǎng)壽命(4)無(wú)輻射,無(wú)污染。1.2軟件部分設(shè)計(jì)軟件部分的設(shè)計(jì)思路是將整個(gè)程序劃分為鍵盤掃描部分,顯示部分,運(yùn)算程序部分,清屏顯示部分。對(duì)于其中的鍵盤掃描部分在編寫時(shí)又分為動(dòng)態(tài)掃描和靜態(tài)掃描;運(yùn)算程序部分包括加、減、乘、除四個(gè)子程序。軟件流程大致如下:開(kāi)始,然后是系統(tǒng)的初始化,進(jìn)行鍵盤掃描,對(duì)掃描的鍵值進(jìn)行判斷(分為數(shù)字鍵和功能鍵),如果是數(shù)字鍵,執(zhí)行數(shù)字鍵處理子程序,即顯示數(shù)字

6、并將數(shù)值存儲(chǔ);如果是命令鍵,即先判斷是否為清屏,如為清屏鍵,則執(zhí)行清屏子程序,若為+-*/運(yùn)算鍵則顯示相應(yīng)的符號(hào)并存儲(chǔ)結(jié)果,若都不是則為=鍵,即要先判斷上個(gè)符號(hào)位,然后調(diào)用對(duì)應(yīng)的運(yùn)算子程序運(yùn)算,就可以得到需要的結(jié)果。1.3 硬件設(shè)計(jì)原理圖簡(jiǎn)易計(jì)算器大致分為:?jiǎn)纹瑱C(jī)、液晶顯示、鍵盤三大部分。因此,總的電路設(shè)計(jì)方案以單片機(jī)at89c51來(lái)做為核心元器件,外圍采用4*4行列式鍵盤作為輸入,采用lcm1602液晶顯示器來(lái)做輸出控制部分單片機(jī)輸入部分鍵盤輸出部分液晶 圖 1.1 硬件設(shè)計(jì)框圖2. 簡(jiǎn)易計(jì)算器部分電路設(shè)計(jì)2.1 at89c51常用指令at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器

7、(fperomfalsh programmable and erasable read only memory)的低電壓,高性能cmos8位微處理器,俗稱單片機(jī)。該器件采用atmel高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲(chǔ)器組合在單個(gè)芯片中,atmel的at89c51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。1主要特性:與mcs-51 兼容4k字節(jié)可編程閃爍存儲(chǔ)器,壽命:1000寫/擦循環(huán), 數(shù)據(jù)保留時(shí)間:10年 。全靜態(tài)工作:0hz-24hz三級(jí)程序存儲(chǔ)器鎖定128*8位內(nèi)部ram32可編程

8、i/o線兩個(gè)16位定時(shí)器/計(jì)數(shù)器5個(gè)中斷源可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時(shí)鐘電路 2 管腳說(shuō)明:如圖2.1 vcc:供電電壓。gnd:接地。p0口:p0口為一個(gè)8位漏級(jí)開(kāi)路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p1口的管腳第一次寫1時(shí),被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時(shí),p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時(shí),p0輸出原碼,此時(shí)p0外部必須被拉高。 p1口:p1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被

9、外部下拉為低電平,將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時(shí),p1口作為第八位地址接收。p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個(gè)ttl門電流,當(dāng)p2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),p2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。p

10、3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個(gè)ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。p3口也可作為at89c51的一些特殊功能口,如下所示: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ǔ)器讀選通) p3口同時(shí)為

11、閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。圖2.1 at89c51芯片管腳圖3. 單片機(jī)的復(fù)位:電路如圖2.2所示.rst:復(fù)位輸入,在reset(圖中表示為rst )輸入端出現(xiàn)高電平時(shí)實(shí)現(xiàn)復(fù)位和初始化.。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間。mcs-51resmcs-51res +5v +5v 圖2.2 復(fù)位電路在振蕩運(yùn)行的情況下,要實(shí)現(xiàn)復(fù)位操作,必須使res 引腳至少保持兩個(gè)機(jī)器周期(24個(gè)振蕩器周期)的高電平。cpu在第二個(gè)機(jī)器周期內(nèi)執(zhí)行內(nèi)部復(fù)位操作,以后每一個(gè)機(jī)器周期重復(fù)一次,直至res端電平變低。復(fù)位期間不產(chǎn)生ale及psen信號(hào)。內(nèi)部復(fù)位操作使堆棧指示器sp為07h

12、,各端口都為1(p0-p3口的內(nèi)容均勻0ffh),特殊功能寄存器都復(fù)位為0,但不影響ram的狀態(tài)。當(dāng)res引腳返回低電平以后,cpu從0地址開(kāi)始執(zhí)行程序。圖2.2(a)為加電自動(dòng)復(fù)位電路。加電瞬間,res 端的電位與vcc相同,隨著rc 電路充電電流的減小res的電位下降,只要rst 端保持10毫秒以上的高電平就能使mcs-51單片機(jī)有效地復(fù)位,復(fù)位電路中的rc 參數(shù)通常由實(shí)驗(yàn)調(diào)整。當(dāng)振蕩頻率選用6mhz時(shí),c選22uf,r選1k,便能可靠地實(shí)現(xiàn)加電自動(dòng)復(fù)位,若采用rc電路接斯密特電路的輸入端,斯密特電路輸出端接mcs-51和外圍電路的復(fù)位端,能使系統(tǒng)可靠地同步復(fù)位。圖2.2(b)為人工復(fù)位電

13、路。 ale/prog:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時(shí),ale端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時(shí), ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無(wú)效。 /psen:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen有

14、效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/psen信號(hào)將不出現(xiàn)。 /ea/vpp:當(dāng)/ea保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000h-ffffh),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。4振蕩器特性:xtal1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。xtal2:來(lái)自反向振蕩器的輸出。xtal1和xtal2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,xtal2應(yīng)不

15、接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。芯片擦除:整個(gè)perom陣列和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ale管腳處于低電平10ms 來(lái)完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。 此外,at89c51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,cpu停止工作。但ram,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存ram的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。

16、5.特殊功能寄存器mcs-51單片機(jī)內(nèi)的鎖存器、定時(shí)器、串行口數(shù)據(jù)緩沖器以及各種控制寄存和狀態(tài)寄存器都是以特殊功能寄存器的形式出現(xiàn)的,它們分散地分布在內(nèi)部ram地址空間范圍,(1)累加器a最常用的特殊功能寄存器,大部分單操作數(shù)指令的操作取自累加器,很多雙操作數(shù)指令的一個(gè)操作數(shù)取自累加器。加、減、乘、除算術(shù)運(yùn)算指令的運(yùn)算結(jié)果都存放在累加器a或a、 b寄存器對(duì)中。指令系統(tǒng)中用a作為累加器的助記符。(2)b寄存器b寄存器是乘除法指令中常用的寄存器。乘法指令的兩個(gè)操作數(shù)分別取自a和b ,其結(jié)果存放在a b寄存器對(duì)中。除法指令中,被除數(shù)取自a,除數(shù)取自b,商數(shù)存在放于a,余數(shù)存放于b。在其它指令中,b寄

17、存器可作為ram中的一個(gè)單元來(lái)使用。(3) 程序狀態(tài)字psw程序狀態(tài)字是一個(gè)8位寄存器,它包含了程序狀態(tài)信息。此寄存器各位的含義參見(jiàn)圖2-8,其中psw1未用。其它各位說(shuō)明如下: 表2.1 寄存器各位含義cyacf0rs1rs0ov-p cy(psw7)進(jìn)位標(biāo)志在執(zhí)行某些算術(shù)和邏輯指令時(shí),可以被硬件或軟件置位或清零。在布爾處理機(jī)中它被認(rèn)為是位累加器,其重要性相當(dāng)于一般中央處理機(jī)中的累加器a。 ac(psw6)輔助進(jìn)位標(biāo)志當(dāng)進(jìn)行加法或減法操作而產(chǎn)生由低4位數(shù)(bcd碼一位)向高4位數(shù)進(jìn)位或借位時(shí),ac將被硬件置位,否則就被清零。ac被用于bcd碼調(diào)整。詳見(jiàn)da a指令。 f0(psw5)用戶標(biāo)志

18、位f0是用戶定義的一個(gè)狀態(tài)標(biāo)記,用軟件來(lái)使它置位或清零。該標(biāo)志位狀態(tài)一經(jīng)設(shè)定,可由軟件測(cè)試f0,以控制程序的流向。 rs1,rs0(psw4,psw3)寄存器區(qū)選擇控制位可以用軟件來(lái)置位或清零以確定工作寄存器區(qū)。rs1,rs0與寄存器區(qū)的對(duì)應(yīng)關(guān)系見(jiàn)表2-3。 ov(psw2)溢出標(biāo)志:當(dāng)執(zhí)行算術(shù)指令時(shí),由硬件置位或清零,以指示溢出狀態(tài)。當(dāng)執(zhí)行加法指令add時(shí),位6向位7有進(jìn)位而位7不向cy進(jìn)位時(shí),或位6不向位7進(jìn)位而位7向cy進(jìn)位時(shí),溢出標(biāo)志ov置位,否則清零。溢出標(biāo)志常用于add和subb指令對(duì)帶符號(hào)數(shù)作加減運(yùn)算時(shí),ov=1表示加減運(yùn)算的結(jié)果超出了目的寄存器a所能表示的帶符號(hào)數(shù)(2的補(bǔ)碼)的

19、范圍(-128-+127),在mcs-51中,無(wú)符號(hào)數(shù)乘法指令mul的執(zhí)行結(jié)果也會(huì)影響溢出標(biāo)志。若置于累加器a和寄存器b的兩個(gè)數(shù)的乘積超過(guò)255時(shí),ov=1,否則ov=0。此積的高8位放在b內(nèi),低8位放在a內(nèi)。因此,ov=0意味著只要從a中取得乘積即可,否則要從b a寄存器對(duì)中取得乘積。除法指令div也會(huì)影響溢出標(biāo)志。當(dāng)除數(shù)為0時(shí),ov=1,否則ov=0。 p(psw0)奇偶標(biāo)志每個(gè)指令周期都由硬件來(lái)置位或清“0”,以表示累加器a 中1的位數(shù)的奇偶數(shù)。若1的位數(shù)為奇數(shù),p置“1”,否則p清“0”。p標(biāo)志位對(duì)串行通信中的數(shù)據(jù)傳輸有重要的意義,在串行通信中常用奇偶校驗(yàn)的辦法來(lái)檢驗(yàn)數(shù)據(jù)傳輸?shù)目煽啃浴?/p>

20、在發(fā)送端可根據(jù)p的值對(duì)數(shù)據(jù)的奇偶置位或清零。通信協(xié)議中規(guī)定采用奇校驗(yàn)的辦法,則p=0時(shí),應(yīng)對(duì)數(shù)據(jù)(假定由a取得)的奇偶位置位,否則就清0。(4)棧指針棧指針sp是一個(gè)8位特殊功能寄存器。它指示出堆棧頂部在內(nèi)部ram中的位置。系統(tǒng)復(fù)位后,sp初始化為07h,使得堆棧事實(shí)上由08h 單元開(kāi)始??紤]到08h-1fh單元分屬于工作寄存器區(qū)1-3,若程序設(shè)計(jì)中要用到這些區(qū),則最好把sp值改置為1fh或更大的值,sp的初始值越小,堆棧深度就可以越深,堆棧指針的值可以由軟件改變,因此堆棧在內(nèi)部ram中的位置比較靈活。除用軟件直接改變sp值外,在執(zhí)行push,pop指令,各種子程序調(diào)用,中斷響應(yīng),子程序返回(

21、ret)和中斷返回(reti)等指令時(shí),sp值將自動(dòng)調(diào)整。(5)數(shù)據(jù)指針數(shù)據(jù)指針dptr是一個(gè)16位特殊功能寄存器,其高位字節(jié)寄存器用dph表示,低位字節(jié)寄器用dpl表示,既可以作為一個(gè)16位寄存器dptr來(lái)處理,也可以作為兩個(gè)獨(dú)立的8位寄存器dpl和dpl來(lái)處理。dptr主要用來(lái)存放16位地址,當(dāng)對(duì)64kb外部存儲(chǔ)器尋址時(shí),可作為間址寄存器用??梢杂孟铝袃蓷l傳送指令:movx a,dptr和movx dptr,a。在訪問(wèn)程序存儲(chǔ)器時(shí),dptr可用作基址寄存器,有一條采用基址+變址尋址方式的指令movc a,a+dptr,常用于讀取存放在程序存儲(chǔ)器內(nèi)的表格常數(shù)。2.2 顯示及顯示接口1 單片機(jī)

22、引腳及常用命令簡(jiǎn)介:本次設(shè)計(jì)在顯示部分采用的是lcm1602b,它是一個(gè)雙行顯示的液晶顯示器。其采用標(biāo)準(zhǔn)的16腳接口,其中:第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ì)比度第4腳:rs為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:rw為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)rs和rw共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)rs為低電平rw為高電平時(shí)可以讀忙信號(hào),當(dāng)rs為高電平rw為低電平時(shí)可以寫入數(shù)據(jù)。

23、第6腳:e端為使能端,當(dāng)e端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:d0d7為8位雙向數(shù)據(jù)線。第1516腳:分別為背光燈正負(fù)極,a接正極, k接負(fù)極。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(cgrom)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如表3-1所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等, 表 2.2 點(diǎn)陣字符圖形表 高位低位00000010001101000101011001110000cgram(1)0pp0001(2)!1aqa q0010(3)“2brb r0011(4)#3csc s0100(5)$4dtd t0101(6)%5eueu0

24、110(7)6fvf v0111(8)7gwgw1000(1)(8hxhx1001(2))9iyiy1010(3)*:jzjz1011(4)+;kk1100(5) nn 。1111(8)/?oo每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“a”的代碼是01000001b(41h),顯示時(shí)模塊把地址41h中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“a”。1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3-2所示,它的讀寫操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)指令1:清顯示,指令碼01h,光標(biāo)復(fù)位到地址00h位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址0

25、0h 。指令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í)為8位總線 n:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 f: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符 (

26、有些模塊是 dl:高電平時(shí)為8位總線,低電平時(shí)為4位總線)。指令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.3 液晶控制指令表指令rsr/wd7d6d5d4d3d2d1d0清顯示000001光標(biāo)返回00001*置輸入模式0001i/ds顯示開(kāi)/關(guān)控制001dcb光標(biāo)或字符移位01s/cr/l*置功能1dlnf*置字符發(fā)生存貯器地址字符發(fā)生存貯器地址(agg)置數(shù)據(jù)存貯器地址顯示數(shù)據(jù)存貯器地址(add)讀忙標(biāo)志或地址

27、bf計(jì)數(shù)器地址(ac) 寫數(shù)到cgram或ddram要寫的數(shù)從cgram或ddram讀數(shù)讀出的數(shù)據(jù)2液晶顯示模塊與單片機(jī)的連接方式單片機(jī)at89c51與lcd模塊(lcm)的接口方式有兩種1. 直接訪問(wèn)方式的接口電路是將液晶顯示模塊lcm掛接在at89c51的總線上,通過(guò)對(duì)數(shù)據(jù)總線的讀寫實(shí)現(xiàn)對(duì)lcd的控制。2. 間接控制方式可分為4位總線和8位總線兩種方式,4位數(shù)據(jù)傳輸時(shí)需傳輸兩遍,相對(duì)比較麻煩,本設(shè)計(jì)采用間接連接方式,在此重點(diǎn)討論8位總線方式。其電路圖如圖2-4所示。對(duì)應(yīng)與2.3圖,lcd的8位數(shù)據(jù)總線與at89c51的p1口相連,三個(gè)控制端口rs、r/w和e分別接at89c51的p3.0、

28、p3.1、p3.3管腳,根據(jù)程序設(shè)計(jì)的不同也可選用p3口的其它管腳。vl是lcd的對(duì)比度調(diào)節(jié)端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,本電路使用1k的電位器來(lái)調(diào)整對(duì)比度,也可直接串接一個(gè)電阻到地。單片機(jī)要寫入指令時(shí)rs為低電平;單片機(jī)要寫入數(shù)據(jù)時(shí)rs為高電平;r/w為高電平時(shí)讀取數(shù)據(jù),r/w為低電平時(shí)寫入數(shù)據(jù)。需要背光時(shí),bla串接一個(gè)限流電阻接vdd,blk接地。9管腳的復(fù)位端分別接10uf極性電容和10k電阻,電容接電源,電阻接地,同時(shí)復(fù)位端通過(guò)按鍵接電源,當(dāng)按鍵按下時(shí)單片機(jī)復(fù)位。lcd初始化是必需的,包括清除顯示,設(shè)置工作方式、光標(biāo)閃爍設(shè)置等。工作方式設(shè)置為:dl=1,為8位數(shù)據(jù)長(zhǎng)度接

29、口;n=1,為兩行顯示;f=0,為5*7點(diǎn)陣字符。 圖 2.3 lcd1602與單片機(jī)的間接連接電路在顯示部分,先設(shè)計(jì)了lcd初始化的程序,其次完成了顯示程序的設(shè)計(jì)。簡(jiǎn)要的介紹lcd顯示過(guò)程中用到的個(gè)子程序(1) 系統(tǒng)初始化(單片機(jī)定義、lcd初始化)2.3 鍵盤、液晶顯示的組合接口在單片機(jī)應(yīng)用系統(tǒng)中為了控制系統(tǒng)的工作狀態(tài),以及向系統(tǒng)輸入數(shù)據(jù),應(yīng)用系統(tǒng)有按鍵或鍵盤。例如復(fù)位用的復(fù)位鍵,功能轉(zhuǎn)換用的功能鍵以及數(shù)據(jù)輸入用的數(shù)字鍵盤等。按鍵或鍵盤中的每一個(gè)鍵都賦予特定的功能,他們通過(guò)借口電路與單片機(jī)相連。通過(guò)軟件了解按鍵的狀態(tài)及鍵信息的輸入,并轉(zhuǎn)去執(zhí)行該功能鍵的功能處理程序,鍵盤的接口方法有多種,但

30、鍵輸入過(guò)程軟件結(jié)構(gòu)基本是一樣的。對(duì)鍵盤上的每一個(gè)鍵,都有一個(gè)編號(hào),(即鍵號(hào)),cpu可采用中斷方式或查詢方式了解有無(wú)按鍵按下,并檢查是哪一個(gè)按鍵按下,確定鍵號(hào),將該鍵號(hào)送如累加器a,然后通過(guò)散轉(zhuǎn)指令轉(zhuǎn)入執(zhí)行該鍵的功能程序。最后返回到原處。2.3.1 鍵盤接口和鍵輸入軟件中應(yīng)解決的幾個(gè)問(wèn)題1.消除鍵抖動(dòng)按鍵的合斷都存在一個(gè)抖動(dòng)的暫態(tài)過(guò)程,。這種抖動(dòng)的暫態(tài)過(guò)程約經(jīng)過(guò)510ms的時(shí)間,人發(fā)肉眼是覺(jué)察不到的,但對(duì)高速的cpu是有反應(yīng)的,可能差生誤差處理,為了按鍵的動(dòng)作一次,僅做一次處理,必須采取措施一消除抖動(dòng)。消除抖動(dòng)的措施有兩種:硬件消抖和軟件消抖。硬件消除抖動(dòng)可用簡(jiǎn)單的r-s觸發(fā)器或單穩(wěn)態(tài)電路構(gòu)成

31、,軟件消除抖動(dòng)是用延時(shí)來(lái)躲過(guò)暫態(tài)抖動(dòng)過(guò)程,執(zhí)行一段大于10ms的延時(shí)程序后,再讀取穩(wěn)定的鍵狀態(tài)。2.鍵編碼及鍵值 一組案件或鍵盤都要通過(guò)i/o口線查詢按鍵的開(kāi)關(guān)狀態(tài)。根據(jù)鍵盤結(jié)構(gòu)不同,采用不同的編碼方法。但無(wú)論有無(wú)編碼,以及采用什么編碼,最后都要轉(zhuǎn)換成為與累加器中的數(shù)值相對(duì)應(yīng)的鍵值,以實(shí)現(xiàn)案件功能程序的散轉(zhuǎn)。順序排列鍵編碼。如圖:采用此種方法,鍵值的形成要根據(jù)i/o線的狀態(tài)來(lái)做相應(yīng)處理。鍵碼可按下式形成: 鍵碼= 行首鍵號(hào) + 列號(hào)3.鍵盤的檢測(cè)方法對(duì)于計(jì)算機(jī)應(yīng)用系統(tǒng),鍵盤掃描只是cpu工作的一部分,鍵盤處理只是在有鍵按下時(shí)才有意義。對(duì)是否有鍵按下的信息輸入方式有中斷方式與查詢方式兩種。2.3

32、.2 行列式鍵盤工作原理 行列式鍵盤又稱矩陣式鍵盤。用i/o線組成行、列結(jié)構(gòu),按鍵設(shè)置行列的交點(diǎn)上,例如4*4的行列結(jié)構(gòu)可組成16個(gè)鍵的鍵盤。因此在案件數(shù)量較多時(shí),可節(jié)省i/o口線。(1) 行列式鍵盤的接口行列式鍵盤的接口方法有許多,例如直接接口與單片機(jī)的i/o上;用擴(kuò)展的并行i/o接口;用串行口擴(kuò)展并行i/o接口;利用一種可編程的鍵盤、顯示接口芯片進(jìn)行接口等。其中,利用擴(kuò)展的并行i/o接口方法方便靈活,在單片機(jī)應(yīng)用系統(tǒng)中比較常用。(2)鍵盤工作原理按鍵設(shè)置在行、列線的交點(diǎn)上,行、列線分別連接到按鍵開(kāi)關(guān)的兩端。行線通過(guò)上拉電阻接+5v,被置位在高電平狀態(tài)。對(duì)鍵盤的工作過(guò)程可分為兩步:第一步是cpu首先檢測(cè)鍵盤上是否有鍵按下;第二步是識(shí)別是哪一個(gè)鍵按下。檢測(cè)鍵盤上有無(wú)按鍵按下可采用查詢工作方式、定時(shí)掃描方式和中斷工作方式。查詢工作方式:鍵盤中有無(wú)鍵按下是有列線送如入全掃描字,讀入行線狀態(tài)來(lái)判別的。其方法是:所有列線置低電平,然后將行線電平狀態(tài)讀入累加器a中。如果有鍵按下,總會(huì)有一根行線電平被拉低至低電平

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論