版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、東北石油大學(xué)畢業(yè)設(shè)計(jì)(論文)任務(wù)書(shū)題目 基于單片機(jī)工程運(yùn)算系統(tǒng)的設(shè)計(jì)主要內(nèi)容、基本要求、主要參考資料等:主要內(nèi)容:工程運(yùn)算系統(tǒng)是一種能夠進(jìn)行加(+),減(-),乘(),除(),百分?jǐn)?shù)(%),倒數(shù)(1/x),開(kāi)方(sqrt),百分比(%),正弦函數(shù)(sin),余弦函數(shù)(cos),正切函數(shù)(tan)和余切函數(shù)(cot)等計(jì)算的電子器件,但組成卻是麻雀雖小,五臟俱全,由運(yùn)算器、控制器、存儲(chǔ)器、鍵盤、顯示器、電源和一些外圍設(shè)備組成。本設(shè)計(jì)的主要內(nèi)容是用8051單片機(jī)實(shí)現(xiàn)計(jì)算要求,通過(guò)自己編寫(xiě)的程序下載到單片機(jī)中,從而實(shí)現(xiàn)單片機(jī)可以進(jìn)行的算術(shù)運(yùn)算?;疽螅?. 以單片機(jī)為主體來(lái)實(shí)現(xiàn);2. 能夠進(jìn)行加(
2、+),減(-),乘(),除(),百分?jǐn)?shù)(%),倒數(shù)(1/x),開(kāi)方(sqrt)等計(jì)算;3. 具有獨(dú)立按鍵,復(fù)位鍵,通過(guò)鍵盤輸入;4. 用lm016l液晶顯示屏顯示計(jì)算結(jié)果;主要參考資料:1 單片微型計(jì)算機(jī)與接口技術(shù),李群芳、黃建編著,電子工業(yè)出版社;2 單片機(jī)原理及應(yīng)用,張毅剛編著,高等教育出版社;3 51系列單片機(jī)及c51程序設(shè)計(jì),王建校,楊建國(guó)等編著,科學(xué)出版社;4 單片機(jī)原理及接口技術(shù),李朝青編著,北京航空航天大學(xué)出版社;完成期限: 2012.6.17指導(dǎo)教師簽名: 專業(yè)負(fù)責(zé)人簽名: 2012 年 3 月 11 日 摘 要隨著社會(huì)的發(fā)展,科學(xué)的進(jìn)步,工程運(yùn)算系統(tǒng)在生活中應(yīng)用越來(lái)越廣泛,將
3、來(lái)會(huì)出現(xiàn)使用攜帶更加方便、功能更加強(qiáng)大的工程運(yùn)算系統(tǒng)?;谶@樣的理念,本次設(shè)計(jì)是設(shè)計(jì)基于單片機(jī)的工程運(yùn)算系統(tǒng)。該系統(tǒng)是以at89c51 為核心器件的單片機(jī)運(yùn)算系統(tǒng),其外圍電路包括:1. 58 的鍵盤矩陣作為運(yùn)算系統(tǒng)的輸入,通過(guò)鍵盤掃描來(lái)對(duì)輸入數(shù)的控制;2. 時(shí)鐘電路和復(fù)位電路,3. 液晶顯示屏lm016l作為運(yùn)算系統(tǒng)的輸出顯示。使用c語(yǔ)言編寫(xiě)運(yùn)算系統(tǒng)軟件,在keil uvision4編譯環(huán)境下調(diào)試運(yùn)行,利用proteus仿真軟件進(jìn)行軟硬件綜合仿真和調(diào)試。本次設(shè)計(jì)實(shí)現(xiàn)了加,減,乘,除,求倒數(shù),開(kāi)方,百分比,正弦函數(shù),余弦函數(shù),正切函數(shù)和余切函數(shù)等運(yùn)算功能,該工程運(yùn)算系統(tǒng)在protues仿真平臺(tái)上
4、能夠正常運(yùn)行。 關(guān)鍵詞:工程運(yùn)算;lm016l液晶顯示屏;單片機(jī);protuesabstractwith the development of society, the progress of science, engineering, computing systems in their lives more and more widely, and now being developed in the future, there will be more powerful engineering computing systems. based on this concept, the d
5、esign is the design engineering and computing systems with mcu. the design system is based on at89c51 microcontroller, p2 port as input, external 5x8 keyboard, the keyboard scan control to enter the number, p 0 the output port, through lm016l lcd display. keil programming software, programming in c,
6、 proteus simulation software simulation and debugging, and finally run out of results. function of the design will be completed, subtraction, multiplication, division, seeking reciprocal, square root, percentage of the sine function, cosine function, the tangent and cotangent functions such as engin
7、eering calculations.keywords: engineering operations; lm016l screen; microconrroller 目 錄 第1章 概述11.1 工程運(yùn)算系統(tǒng)的簡(jiǎn)介11.2 工程運(yùn)算系統(tǒng)的目的和意義1第2章 總體設(shè)計(jì)思路22.1 單片機(jī)的選取22.2 液晶顯示屏的選取42.3 工程運(yùn)算系統(tǒng)總體設(shè)計(jì)思路62.4 本章小結(jié)8第3章 系統(tǒng)設(shè)計(jì)93.1 硬件設(shè)計(jì)93.2 軟件設(shè)計(jì)133.3 本章小結(jié)27第4章 工程運(yùn)算系統(tǒng)的編譯和仿真284.1 工程運(yùn)算系統(tǒng)的keil軟件編譯284.2 工程運(yùn)算系統(tǒng)的proteus仿真304.3 本章小結(jié)36第5章
8、 工程運(yùn)算系統(tǒng)的調(diào)試375.1 keil軟件調(diào)試375.2 proteus調(diào)試375.3 本章小結(jié)37總結(jié)38參考文獻(xiàn)39致謝40附錄一41第1章 概 述1.1 工程運(yùn)算系統(tǒng)的簡(jiǎn)介工程運(yùn)算系統(tǒng)一般由運(yùn)算器、控制器、存儲(chǔ)器、鍵盤、顯示器、電源和一些可選外圍設(shè)備及電子配件通過(guò)人工或機(jī)器設(shè)備組成。低檔工程運(yùn)算系統(tǒng)的運(yùn)算器、控制器由數(shù)字邏輯電路實(shí)現(xiàn)簡(jiǎn)單的串行運(yùn)算,其隨機(jī)存儲(chǔ)器只有一、二個(gè)單元,供累加存儲(chǔ)用。高檔工程運(yùn)算系統(tǒng)由微處理器和只讀存儲(chǔ)器實(shí)現(xiàn)各種復(fù)雜的運(yùn)算程序,有較多的隨機(jī)存儲(chǔ)單元以存放輸入程序和數(shù)據(jù)。鍵盤是工程運(yùn)算系統(tǒng)的輸入部件,一般采用接觸式或傳感式。為減小系統(tǒng)的尺寸,一鍵常常有多種功能。顯
9、示器是工程運(yùn)算系統(tǒng)的輸出部件,有發(fā)光二極管顯示器和液晶顯示器等。除顯示計(jì)算結(jié)果外,還常有溢出指示、錯(cuò)誤指示等。工程運(yùn)算系統(tǒng)電源采用交流轉(zhuǎn)換器或電池,電池可用交流轉(zhuǎn)換器或太陽(yáng)能轉(zhuǎn)換器再充電。為節(jié)省電能,工程運(yùn)算系統(tǒng)都采用cmos工藝制作的大規(guī)模集成電路(見(jiàn)互補(bǔ)金屬-氧化物-半導(dǎo)體集成電路),并在內(nèi)部裝有定時(shí)不操作自動(dòng)斷電電路。工程運(yùn)算系統(tǒng)可選用的外圍設(shè)備有微型打印機(jī)、盒式磁帶機(jī)和磁卡機(jī)等。1.2 工程運(yùn)算系統(tǒng)的目的和意義當(dāng)今社會(huì),隨著人們物質(zhì)生活的不斷提高,電子產(chǎn)品已經(jīng)走進(jìn)了家家戶戶,無(wú)論是生活或?qū)W習(xí),還是娛樂(lè)和消遣幾乎樣樣都離不開(kāi)電子產(chǎn)品。工程運(yùn)算系統(tǒng)作為一種快速通用的計(jì)算工具方便了用戶的使用
10、,可謂是我們最親密的電子伙伴之一。本次設(shè)計(jì)著重在于分析工程運(yùn)算系統(tǒng)軟件和開(kāi)發(fā)過(guò)程中的環(huán)節(jié)和步驟,并從實(shí)踐經(jīng)驗(yàn)出發(fā)對(duì)工程運(yùn)算系統(tǒng)設(shè)計(jì)做了詳細(xì)的分析和研究。單片機(jī)3由于其微小的體積和極低的成本,廣泛的應(yīng)用于家用電器、工業(yè)控制等領(lǐng)域中。在工業(yè)生產(chǎn)中。單片微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,也是頗具生命力的機(jī)種。本系統(tǒng)就是充分利用了8051芯片的i/o引腳。系統(tǒng)以采用at89c51單片機(jī)中心器件來(lái)設(shè)計(jì)計(jì)算器控制器,實(shí)現(xiàn)了能根據(jù)實(shí)際輸入值顯示并存儲(chǔ)的功能。通過(guò)本次設(shè)計(jì)的訓(xùn)練,可以使我在基本思路和基本方法上對(duì)基于at89c5151單片機(jī)系統(tǒng)設(shè)計(jì)有一個(gè)比較感性的認(rèn)識(shí),并具備一定程度的設(shè)計(jì)能力。第2章 總體
11、設(shè)計(jì)思路2.1 單片機(jī)的選取工程運(yùn)算系統(tǒng)的單片機(jī)主要用at89c51,因?yàn)閍t89c511是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(fperomfalsh programmable and erasable read only memory)的低電壓,高性能cmos8位微處理器。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。具有128字節(jié)內(nèi)部ram,32 個(gè)i/o 口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),at89c51可降至0hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止cpu的工作,但允許ram,定時(shí)/計(jì)數(shù)
12、器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存ram中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。at89c51單片機(jī)為很多系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。at89c51芯片如圖2-1所示:圖2-1 at89c51芯片圖1. 主要特性2(1) 與mcs-51 兼容 (2) 4k字節(jié)可編程閃爍存儲(chǔ)器 (3) 全靜態(tài)工作:0hz-24hz(4) 三級(jí)程序存儲(chǔ)器鎖定(5) 128*8位內(nèi)部ram(6) 32可編程i/o線(7) 兩個(gè)16位定時(shí)器/計(jì)數(shù)器(8) 5個(gè)中斷源 (9) 可編程串行通道(10) 低功耗的閑置和掉電模式(11) 片內(nèi)振蕩器和時(shí)鐘電路 2. at89c5
13、1單片機(jī)引腳介紹(1) vcc: 供電電壓。 (2) gnd:接地。 (3) p0口:p0口為一個(gè)8位漏級(jí)開(kāi)路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p0口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時(shí),p0口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時(shí),p0輸出原碼,此時(shí)p0外部必須被拉高。 (4) p1口:p1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和
14、校驗(yàn)時(shí),p1口作為第八位地址接收。 (5) p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個(gè)ttl門電流,當(dāng)p2口被寫(xiě)“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)行讀寫(xiě)時(shí),p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 (6) p3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向i/o口,
15、可接收輸出4個(gè)ttl門電流。當(dāng)p3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。p3口也可作為at89c51的一些特殊功能口: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ǔ)器寫(xiě)選通) p3.7 /rd(外部數(shù)據(jù)存儲(chǔ)器讀選通) p3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。(7) rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保
16、持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間。 (8) 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ú)效。 (9) /psen:外部程序存儲(chǔ)器的選通信號(hào)。在由外部
17、程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/psen信號(hào)將不出現(xiàn)。 (10) /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)。 (11) xtal1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 (12) xtal2:來(lái)自反向振蕩器的輸出。2.2 液晶顯示屏的選取液晶顯示屏選用lm016l,因?yàn)閘m016l液晶模塊采用hd4
18、4780控制器,hd44780具有簡(jiǎn)單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動(dòng),閃爍等功能,lm016l與單片機(jī)mcu通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個(gè)8位寄存器,指令寄存器(ir)和數(shù)據(jù)寄存器(dr)忙標(biāo)志(bf),顯示數(shù)ram(ddram),字符發(fā)生器roma(cgorom)字符發(fā)生器ram(cgram),地址計(jì)數(shù)器ram(ac)。ir用于寄存指令碼,只能寫(xiě)入不能讀出,dr用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫(xiě)入ddram和cgram, 或者暫存從ddram和cgram讀出的數(shù)據(jù),bf為1時(shí),液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),ddtam用來(lái)存儲(chǔ)顯示的
19、字符,能存儲(chǔ)80個(gè)字符碼,cgrom由8位字符碼生成5*7點(diǎn)陣字符160中和5*10點(diǎn)陣字符32種。8位字符編碼和字符的對(duì)應(yīng)關(guān)系。cgram是為用戶編寫(xiě)特殊字符留用的,它的容量?jī)H64字節(jié),可以自定義8個(gè)5*7點(diǎn)陣字符或者4個(gè)5*10點(diǎn)陣字符,ac可以存儲(chǔ)ddram和cgram的地址,如果地址碼隨指令寫(xiě)入ir, 則ir自動(dòng)把地址碼裝入ac,同時(shí)選擇ddram或cgram。 lm016l液晶顯示屏如圖2-2所示:圖2-2 lm016l液晶顯示屏圖lm016l液晶模塊的引腳功能如下表所示: 表2-1 lm016l引腳功能引腳符號(hào)功能說(shuō)明1vss一般接地2vdd接電源(+5v)3v0液晶顯示器對(duì)比度調(diào)
20、整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10k的電位器調(diào)整對(duì)比度)。4rsrs為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。5r/wr/w為讀寫(xiě)信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫(xiě)操作。6ee(或en)端為使能(enable)端,下降沿使能。7db0底4位三態(tài)、 雙向數(shù)據(jù)總線 0位(最低位)8db1底4位三態(tài)、 雙向數(shù)據(jù)總線 1位9db2底4位三態(tài)、 雙向數(shù)據(jù)總線 2位10db3底4位三態(tài)、 雙向數(shù)據(jù)總線 3位11db4高4位三態(tài)、 雙向數(shù)據(jù)總線 4位12db5高4位三態(tài)、 雙向數(shù)據(jù)總線 5位13db
21、6高4位三態(tài)、 雙向數(shù)據(jù)總線 6位14db7高4位三態(tài)、 雙向數(shù)據(jù)總線 7位(最高位)(也是busy flang)15bla背光電源正極16blk背光 電源負(fù)極2.3 工程運(yùn)算系統(tǒng)總體設(shè)計(jì)思路本系統(tǒng)選用at89c51單片機(jī)為主控機(jī)。通過(guò)擴(kuò)展必要的外圍接口電路,實(shí)現(xiàn)對(duì)工程運(yùn)算系統(tǒng)的設(shè)計(jì)。分別對(duì)鍵盤輸入模塊、lcd顯示模塊和算術(shù)運(yùn)算模塊進(jìn)行設(shè)計(jì),并用visio畫(huà)系統(tǒng)方框圖,keil編寫(xiě)程序與protues仿真分析調(diào)試并計(jì)算結(jié)果。 工程運(yùn)算系統(tǒng)是一種能夠進(jìn)行加(+),減(-),乘(),除(),百分?jǐn)?shù)(%),倒數(shù)(1/x),開(kāi)方(sqrt),百分比(%),正弦函數(shù)(sin),余弦函數(shù)(cos),正切函
22、數(shù)(tan)和余切函數(shù)(cot)等計(jì)算的電子器件,主要以at89c51單片機(jī)為主體,由運(yùn)算器、控制器、存儲(chǔ)器、鍵盤、顯示器、電源和一些外圍設(shè)備組成。本設(shè)計(jì)的主要內(nèi)容是用單片機(jī)實(shí)現(xiàn)計(jì)算要求,c語(yǔ)言編寫(xiě)程序,用keil調(diào)試程序,通過(guò)proteus仿真軟件仿真,再將編好的程序下載到單片機(jī)中,仿真出結(jié)果,從而實(shí)現(xiàn)單片機(jī)可以進(jìn)行簡(jiǎn)單的算術(shù)運(yùn)算。工程運(yùn)算系統(tǒng)整體模塊由單片機(jī)、輸入模塊、運(yùn)算模塊和顯示模塊組成。手動(dòng)按鍵輸入數(shù)字,lm016llcd液晶顯示屏顯示,通過(guò)單片機(jī)進(jìn)行運(yùn)算,最后結(jié)果再由lcd液晶顯示屏顯示。1. 系統(tǒng)框圖如圖2-3所示:?jiǎn)纹瑱C(jī)運(yùn)算模塊顯示模塊輸入模塊圖2-3 系統(tǒng)框圖系統(tǒng)框圖按照硬件
23、的原理圖畫(huà),運(yùn)算模塊在單片機(jī)的內(nèi)部,加上外部時(shí)鐘電路和復(fù)位電路2. 系統(tǒng)總流程圖如圖2-4所示:開(kāi)始初始化參數(shù)初始化lcd顯示有鍵輸入?讀取鍵碼lcd顯示數(shù)字鍵清零鍵功能鍵狀態(tài)清零輸入數(shù)值數(shù)值送顯示緩沖yn等待數(shù)值輸入結(jié)果送顯示緩沖功能鍵和輸入的數(shù)據(jù)計(jì)算、處理鍵盤掃描圖2-4 系統(tǒng)流程圖2.4 本章小結(jié)本章對(duì)本設(shè)計(jì)所需的主要芯片at89c51單片機(jī)和lm160l液晶顯示屏的功能和使用方法做了詳盡的介紹,并闡述了本工程運(yùn)算系統(tǒng)的總體設(shè)計(jì)思路和最終實(shí)現(xiàn)的功能,給出了硬件實(shí)現(xiàn)的原理框圖和軟件編程的流程框圖。第3章 系統(tǒng)設(shè)計(jì)3.1 硬件設(shè)計(jì)硬件系統(tǒng)是指構(gòu)成微機(jī)系統(tǒng)5的實(shí)體和裝置,通常由運(yùn)算器、控制器、
24、存儲(chǔ)器、輸入接口電路和輸入設(shè)備、輸出接口電路和輸出設(shè)備等組成。單片機(jī)實(shí)質(zhì)上是一個(gè)硬件的芯片,在實(shí)際應(yīng)用中,通常很難直接和被控對(duì)象進(jìn)行電氣連接,必須外加各種擴(kuò)展接口電路、外部設(shè)備、被控對(duì)象等硬件和軟件,才能構(gòu)成一個(gè)單片機(jī)應(yīng)用系統(tǒng)。本設(shè)計(jì)選用以at89c51單片機(jī)為主控單元。顯示部分:采用lcd靜態(tài)顯示。按鍵部分,采用5*8鍵盤。硬件電路原理圖如圖3-1所示:圖3-1 部分硬件電路原理圖3.1.1 手動(dòng)上電復(fù)位電路復(fù)位4是單片機(jī)的初始化操作,只需給at89c51的復(fù)位引腳rst加上大于2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩周期)的高電平就可得單片機(jī)復(fù)位.復(fù)位時(shí),pc初始化為0000h,使單片機(jī)從out單元
25、開(kāi)始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤而使系統(tǒng)處于死鎖狀態(tài)11。為擺脫死鎖狀態(tài),也需按復(fù)位鍵使得rst腳為高電平,使單片機(jī)重新啟動(dòng)。復(fù)位電路如圖3-2所示圖3-2 復(fù)位電路在系統(tǒng)中,有時(shí)會(huì)出現(xiàn)顯示不正常。為了調(diào)試方便,需要設(shè)計(jì)一個(gè)復(fù)位電路。at89c51單片機(jī)復(fù)位電路共有上電復(fù)位、按鍵電平復(fù)位和按鍵脈沖復(fù)位。本系統(tǒng)的復(fù)位電路主要完成系統(tǒng)的上電復(fù)位和系統(tǒng)在運(yùn)行時(shí)用戶的按鍵復(fù)位功能。復(fù)位電路可由簡(jiǎn)單的rc電路構(gòu)成,也可使用其它的相對(duì)復(fù)雜,但功能更完善的電路。本系統(tǒng)采用的電路工作原理是:上電瞬間,rc電路充電,reset引腳端出現(xiàn)正脈沖,只要reset保持10ms以上
26、高電平,就能使單片機(jī)有效的復(fù)位。當(dāng)時(shí)鐘頻率選用12mhz時(shí),c取10uf,r取10k,上電自動(dòng)復(fù)位電路由上電瞬間c與r構(gòu)成充電電路,reset端的電位與電源vcc相同,隨著充電電流的減少,reset的電位逐漸下降。rc時(shí)間常數(shù)越大,上電時(shí)reset端保持高電平的時(shí)間越長(zhǎng),這組參數(shù)足以保證復(fù)位操作。若復(fù)位電路失效,加電后cpu從一個(gè)隨機(jī)的狀態(tài)開(kāi)始工作,系統(tǒng)就不能正常運(yùn)行。按鍵的功能是按鍵復(fù)位,按下按鍵時(shí)rst為高電平,只要保持10ms以上的高電平,就可以使單片機(jī)復(fù)位。按鍵復(fù)位用在系統(tǒng)運(yùn)行時(shí)的復(fù)位,使系統(tǒng)重新運(yùn)行。3.1.2 內(nèi)部時(shí)鐘模式電路時(shí)鐘是單片機(jī)的心臟,單片機(jī)各功能部件的運(yùn)行都是以時(shí)鐘頻率
27、為基準(zhǔn)有條不紊地一拍一拍地工作的。因此,時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)得穩(wěn)定性。常用的時(shí)鐘電路有兩種方式:一種是內(nèi)部時(shí)鐘方式,另一種是外部時(shí)鐘方式。單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作。在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只要外界一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。本系統(tǒng)使用的是內(nèi)部時(shí)鐘方式。一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在xtal2引腳產(chǎn)生幅度為3v左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容的作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。時(shí)鐘電
28、路如圖3-3所示圖3-3 時(shí)鐘電路當(dāng)單片機(jī)工作于內(nèi)部時(shí)鐘模式的時(shí)候,只需在xtal1和xtal2引腳連接一個(gè)晶體振蕩器或者陶瓷振蕩器,并接兩個(gè)電容后接地即可,在使用時(shí)對(duì)于電容的選擇有一定的要求:當(dāng)外接晶體振蕩器的時(shí)候,電容值一般選擇c1=c2=30+10pf或30-10pf;當(dāng)外接陶瓷振蕩器的時(shí)候,電容值一般選擇c1=c2=40+10pf或40-10pf;3.1.3 鍵盤接口電路計(jì)算器輸入數(shù)字和其他功能按鍵2要用到很多按鍵,如果采用獨(dú)立按鍵的方式,在這種情況下,編程會(huì)很簡(jiǎn)單,但是會(huì)占用大量的i/o 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用八條i/o 線作為
29、行線,五條i/o 線作為列線組成鍵盤,在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤上按鍵的個(gè)數(shù)就為58個(gè)。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中i/o 口的利用率。矩陣鍵盤內(nèi)部電路圖如圖3-4所示:圖3-4 矩陣鍵盤內(nèi)部電路圖3.1.4 lcd液晶顯示器電路本設(shè)計(jì)采用lcd液晶顯示器來(lái)顯示輸出數(shù)據(jù)。通過(guò)d0-d7引腳向lcd寫(xiě)指令字或?qū)憯?shù)據(jù)以使lcd實(shí)現(xiàn)不同的功能或顯示相應(yīng)數(shù)據(jù)。如圖3-5所示:圖3-5 lcd液晶顯示圖3.1.5 運(yùn)算模塊(單片機(jī)控制)at89c51 單片機(jī)是在一塊芯片中集成了cpu、ram、rom、定時(shí)器/計(jì)數(shù)器和多功能i/o等一臺(tái)計(jì)算機(jī)所需要的基本功能部件。如果按
30、功能劃分,它由如下功能部件組成,即微處理器(cpu)、數(shù)據(jù)存儲(chǔ)器(ram)、程序存儲(chǔ)器(rom/eprom)、并行i/o 口、串行口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)及特殊功能寄存器(sfr)。單片機(jī)是靠程序運(yùn)行的,并且可以修改。通過(guò)不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能,通過(guò)使用單片機(jī)編寫(xiě)的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性!因此我們采用單片機(jī)作為計(jì)算器的主要功能部件,可以很快地實(shí)現(xiàn)運(yùn)算功能。3.2軟件設(shè)計(jì)3.2.1匯編語(yǔ)言和c語(yǔ)言的特點(diǎn)及選擇本設(shè)計(jì)是硬件電路和軟件編程相結(jié)合的設(shè)計(jì)6方案,選擇合適的編程語(yǔ)言是一個(gè)重要的環(huán)節(jié)。在單片機(jī)的應(yīng)用系統(tǒng)程序設(shè)計(jì)時(shí),常用的是匯編語(yǔ)言和c語(yǔ)言。
31、機(jī)硬件,程序可讀性和可移植性比較差。而c語(yǔ)言雖然執(zhí)行效率沒(méi)有匯編語(yǔ)言高,但語(yǔ)言簡(jiǎn)潔,使用方便,靈活,運(yùn)算豐富,表達(dá)式類型多樣化,數(shù)據(jù)結(jié)構(gòu)類型豐富,具有結(jié)構(gòu)化的控制語(yǔ)句,程序設(shè)計(jì)自由度大,有很好的可重用性,可移植性等特點(diǎn)。由于現(xiàn)在單片機(jī)的發(fā)展已經(jīng)達(dá)到了很高的水平,內(nèi)部的各種資源相當(dāng)?shù)呢S富,cpu的處理速度非常的快。用c語(yǔ)言來(lái)控制單片機(jī)無(wú)疑是一個(gè)理想的選擇。所以在本設(shè)計(jì)中采用c語(yǔ)言編寫(xiě)軟件程序。 3.2.2主程序void main()lcdinit(); tmod = 0x01;/定時(shí)器0,方式1 th0 = 0x3c;/50us,晶振頻率為12m tl0 = 0x0b0; ea = 1;/允許溢
32、出中斷設(shè)置 et0 = 1; tr0 = 1; /開(kāi)始計(jì)時(shí)displaycharat(15,2,0);while(1)selectkey=scankeyboard();if(selectkey!=0)if(selectkey!=)preprocess(selectkey);/按鍵預(yù)處理elseif(isequal=0)/ 如果已經(jīng)有等號(hào)按下,則忽略operatekey();/按等號(hào)后結(jié)果處理if(isequal!=1)/當(dāng)輸出結(jié)果時(shí)不顯示提示信息displaymessage();/顯示相關(guān)信息 3.2.3 矩陣鍵盤程序設(shè)計(jì)鍵掃描程序的過(guò)程為:開(kāi)始時(shí),先掃描第一行,掃描完后,去抖動(dòng),對(duì)第一行按鍵
33、賦值,然后釋放。掃描第二行到第八行時(shí)重復(fù)以上操作,若釋放按鍵完畢,則返回,若沒(méi)有釋放按鍵,則返回繼續(xù)釋放。uchar scankeyboard() /鍵盤掃描程序 uchar tmp1,tmp2,key; lcd_key_p3=0xff;/掃描第一行 lcd_key_p2=0xfe; tmp1=lcd_key_p3; tmp2=tmp1; if(tmp2!=0xff) delay1ms(); /鍵抖動(dòng)處理 tmp1=lcd_key_p3; if(tmp1=tmp2) switch(tmp2) case 0xfe:key=0x80;break;/shift case 0xfd:key=0x81;
34、break;/drg case 0xfb:key=0x82;break;/abs case 0xf7:key=0x83;break;/del case 0xef:key=0x84;break;/ac default: break; while(tmp2!=0xff) /鍵釋放處理 tmp2=lcd_key_p3; return(key); lcd_key_p3=0xff;/掃描第二行 lcd_key_p2=0xfd; tmp1=lcd_key_p3; tmp2=tmp1; if(tmp2!=0xff) delay1ms(); /鍵抖動(dòng)處理 tmp1=lcd_key_p3; if(tmp1=tm
35、p2) switch(tmp2) case 0xfe: if(shift=1) key=0x86;/m-shift=0;elsekey=0x85;/m+break; case 0xfd: if(shift=1)key=0x88;/mcshift=0;elsekey=0x87;/mrbreak; default:break; while(tmp2!=0xff) /鍵釋放處理 tmp2=lcd_key_p3; return(key); lcd_key_p3=0xff;/掃描第四行 lcd_key_p2=0xf7; tmp1=lcd_key_p3; tmp2=tmp1; if(tmp2!=0xff)
36、 delay1ms(); /鍵抖動(dòng)處理 tmp1=lcd_key_p3; if(tmp1=tmp2) switch(tmp2) case 0xfe:key=(;break; /( case 0xfd:key=);break; /) case 0xfb: key=0x93;/sinbreak; case 0xf7: key=0x95;/cosbreak; default:break; while(tmp2!=0xff) /鍵釋放處理 tmp2=lcd_key_p3; return(key); lcd_key_p3=0xff;/掃描第五行 lcd_key_p2=0xef; tmp1=lcd_key
37、_p3; tmp2=tmp1; if(tmp2!=0xff) delay1ms(); /鍵抖動(dòng)處理 tmp1=lcd_key_p3; if(tmp1=tmp2) switch(tmp2) case 0xfe:key=7;break; /7 case 0xfd:key=8;break; /8 case 0xfb:key=9;break; /9 case 0xf7:key=;break; / case 0xef:key=0x99;break; /x-1 default:break; while(tmp2!=0xff) /鍵釋放處理 tmp2=lcd_key_p3; return(key); lcd
38、_key_p3=0xff; /掃描第六行 lcd_key_p2=0xdf; tmp1=lcd_key_p3; tmp2=tmp1; if(tmp2!=0xff) delay1ms(); /鍵抖動(dòng)處理 tmp1=lcd_key_p3; if(tmp1=tmp2) switch(tmp2) case 0xfe:key=4;break; / 4 case 0xfd:key=5;break; /5 case 0xfb:key=6;break; /6 case 0xf7:key=*;break; /* case 0xef:key=/;break; / default:break; while(tmp2!
39、=0xff) /鍵釋放處理 tmp2=lcd_key_p3; return(key); lcd_key_p3=0xff; /掃描第七行 lcd_key_p2=0xbf; tmp1=lcd_key_p3; tmp2=tmp1; if(tmp2!=0xff) delay1ms(); /鍵抖動(dòng)處理 tmp1=lcd_key_p3; if(tmp1=tmp2) switch(tmp2) case 0xfe:key=1;break; / 1 case 0xfd:key=2;break; / 2 case 0xfb:key=3;break; / 3 case 0xf7:key=+;break; / + c
40、ase 0xef:key=-;break; / - default:break; while(tmp2!=0xff) /鍵釋放處理 tmp2=lcd_key_p3; return(key); lcd_key_p3=0xff;/ 掃描第八行 lcd_key_p2=0x7f; tmp1=lcd_key_p3; tmp2=tmp1; if(tmp2!=0xff) delay1ms(); / 鍵抖動(dòng)處理 tmp1=lcd_key_p3; if(tmp1=tmp2) switch(tmp2) case 0xfe:key=0;break; / 0 case 0xfd:key=.;break; / case
41、 0xfb: if(shift=1)key=0x9b;/pishift=0;elsekey=0x9a;/expbreak; case 0xf7:key=0x9c;break;/ans case 0xef: if(shift=1)key=%;/%shift=0;elsekey=;/ =break; case 0xdf:break; case 0xbf:break; case 0x7f:break; /0xfd除號(hào)在液晶中的代碼 while(tmp2!=0xff) /鍵釋放處理 tmp2=lcd_key_p3; return(key); return(0);3.2.4 算術(shù)運(yùn)算程序設(shè)計(jì)算術(shù)運(yùn)算程序
42、5的過(guò)程為:先存放數(shù)據(jù)的數(shù)據(jù)棧,節(jié)點(diǎn)bolani為運(yùn)算符,則從數(shù)據(jù)棧datastact彈出數(shù)據(jù)進(jìn)行計(jì)算,并將結(jié)果壓入數(shù)據(jù)棧datastact中在計(jì)算中若除數(shù)為0,返回-1。然后進(jìn)行取模、取負(fù)、正弦、余弦、開(kāi)方等9運(yùn)算,計(jì)算正確,返回。計(jì)算錯(cuò)誤,返回-1。int compvalue(void)double datastackmax/2; /存放中間數(shù)據(jù)的數(shù)據(jù)棧int top=0,i; /數(shù)據(jù)棧datastact的棧頂 /數(shù)組bolan的下標(biāo)for(i=0;bolani.oper!=#;i+)/節(jié)點(diǎn)bolani為數(shù)值,則如數(shù)據(jù)棧datastactif(bolani.flag=0)top+;data
43、stacktop=bolani.value;continue;/*節(jié)點(diǎn)bolani為運(yùn)算符,則從數(shù)據(jù)棧datastact彈出數(shù)據(jù)進(jìn)行計(jì)算,并將結(jié)果壓入數(shù)據(jù)棧datastact中在計(jì)算中若除數(shù)為,返回*/if(bolani.flag=1)switch(bolani.oper)case +:datastacktop-1=datastacktop-1+datastacktop;top-;break;case -:datastacktop-1=datastacktop-1-datastacktop;top-;break;case %:if(datastacktop!=0) datastacktop-1=fmod(datastacktop-1,datastacktop); top-; break;else / 取模x%y函數(shù)mod(x,y)中y為,返回return 5;case *: datastacktop-1=datastacktop-1*datastacktop;top-;break;case /:if(datastacktop!=0.0)datastacktop-1=datastacktop-1/datastacktop; top-; break;else /除數(shù)為0,返回return 1;case : /取負(fù)datastacktop=0-datastacktop;break;c
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省A10聯(lián)盟2025屆高三上學(xué)期11月段考語(yǔ)文試卷(含答案)
- 《創(chuàng)意中國(guó)龍》課件2024:弘揚(yáng)民族精神傳承文化根脈
- 美容院財(cái)務(wù)主管聘用協(xié)議
- 保安工作總結(jié)計(jì)劃成人用品行業(yè)保安工作的隱私保護(hù)
- 2024年折疊筷子:課堂演示與環(huán)保的完美結(jié)合
- 2023年9月15日中級(jí)注冊(cè)安全工程師-安全生產(chǎn)法律法規(guī)真題
- 人教部編版《道德與法治》二年級(jí)上冊(cè)第3課《歡歡喜喜慶國(guó)慶》精美課件(第2課時(shí))
- 紅色扁平化抗美援朝精神冰雕精神黨課課件教育(冰雕連)
- 智能衛(wèi)浴用品制造業(yè)的賬務(wù)處理-記賬實(shí)操
- 老舊小區(qū)安裝電梯后費(fèi)用分擔(dān)協(xié)議-物業(yè)管理
- 軟件供應(yīng)鏈安全風(fēng)險(xiǎn)
- 上海無(wú)障礙設(shè)施設(shè)計(jì)標(biāo)準(zhǔn)
- 大數(shù)據(jù)處理和分析服務(wù)合同
- 生物制劑在腎病綜合征中的應(yīng)用和思考
- 申請(qǐng)工程工期順延的函(聯(lián)系單)
- 《第二單元 影視金曲 眺望你的路途》教學(xué)設(shè)計(jì)教學(xué)反思-2023-2024學(xué)年初中音樂(lè)人音版七年級(jí)下冊(cè)
- 2024年支部書(shū)記廉潔談話記錄內(nèi)容篇
- 心肺復(fù)蘇+AED技術(shù)
- 國(guó)家開(kāi)放大學(xué)《心理健康教育》形考任務(wù)1-9參考答案
- 20S805-1 雨水調(diào)蓄設(shè)施-鋼筋混凝土雨水調(diào)蓄池
- MOOC 法理學(xué)-西南政法大學(xué) 中國(guó)大學(xué)慕課答案
評(píng)論
0/150
提交評(píng)論