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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  學(xué) 士 學(xué) 位 論 文(設(shè) 計(jì))</p><p>  THESIS OF BACHELOR</p><p> ?。?011—2015年)</p><p> 中文題目:基于單片機(jī)的簡(jiǎn)易計(jì)算器</p><p> 英文題目:Simple calculator based on single chip </p>

2、<p> microcomputer </p><p> 學(xué) 院:XX</p><p> 系 別:電子信息工程</p><p> 專業(yè)班級(jí):11級(jí)電子信息工程</p><p><b>  摘 要</b></p><p>  近年來隨著科技的飛速發(fā)展,以單片機(jī)技術(shù)為基礎(chǔ)的電

3、子產(chǎn)品在不斷推廣和應(yīng)用,單片機(jī)技術(shù)的發(fā)展也帶來了傳統(tǒng)計(jì)算方式的改變。在目前市場(chǎng)上采用的計(jì)算器大部分都是基于單片機(jī)技術(shù)設(shè)計(jì)的,采用單片機(jī)結(jié)合軟件編程技術(shù)實(shí)現(xiàn)的電子計(jì)算器,可以控制多種顯示單元,同時(shí)可以根據(jù)需要方便對(duì)產(chǎn)品功能的升級(jí)和完善??紤]到價(jià)格成本的約束,本系統(tǒng)中央處理器由市場(chǎng)上較為成熟的51單片機(jī)來承擔(dān),51單片機(jī)價(jià)格低廉操作簡(jiǎn)單,外圍接口豐富,可以很好的實(shí)現(xiàn)系統(tǒng)的各項(xiàng)功能要求,鍵盤輸入部分采用4*4矩陣鍵盤來實(shí)現(xiàn),16個(gè)按鍵分別完成

4、0-9數(shù)字的輸入和加、減、乘、除、等號(hào)、5個(gè)計(jì)算鍵的功能,最后一個(gè)按鍵實(shí)現(xiàn)清除計(jì)算內(nèi)容的功能,顯示 單元采用LCD1602液晶顯示屏顯示,液晶顯示效果相比數(shù)碼管更加穩(wěn)定,無閃爍同時(shí)顯示字符內(nèi)容豐富。</p><p>  關(guān)鍵詞: 單片機(jī) 計(jì)算器 液晶顯示器 </p><p>  Simple calculator design base on MCU</p><p&

5、gt;  Abstract In recent years with the rapid development of technology, SCM technology-based electronic products continue to spread and the application of SCM technology development has also brought a change in the tradi

6、tional method of calculation. In the current calculator market, most of which are microcontroller-based, which is designed by single-chip combination of software programming technology of electronic calculators, you can

7、control a variety of display units, at the same time also easily </p><p>  Keyword : MCU calculator LCD display</p><p><b>  目 錄</b></p><p>  第一章 前 言5</p><

8、;p>  1.1 課題背景5</p><p>  1.2 課題研究的目的和意義5</p><p>  1.3 計(jì)算器設(shè)計(jì)的任務(wù)和要求6</p><p>  第二章 簡(jiǎn)易計(jì)算器的方案設(shè)計(jì)7</p><p>  2.1 系統(tǒng)設(shè)計(jì)方案論述7</p><p>  2.2 系統(tǒng)設(shè)計(jì)方案比較與論證8</p

9、><p>  2.2 系統(tǒng)設(shè)計(jì)方選擇9</p><p>  第三章 系統(tǒng)硬件電路設(shè)計(jì)10</p><p>  3.1系統(tǒng)電源接口電路設(shè)計(jì)10</p><p>  3.2 單片機(jī)最小系統(tǒng)設(shè)計(jì)11</p><p>  3.2.1系統(tǒng)單片機(jī)選型11</p><p>  3.2.2系統(tǒng)單片機(jī)最小

10、系統(tǒng)電路設(shè)計(jì)12</p><p>  3.3 系統(tǒng)顯示電路設(shè)計(jì)13</p><p>  3.3.1 系統(tǒng)顯示器件選擇13</p><p>  3.3.2 系統(tǒng)顯示電路設(shè)計(jì)14</p><p>  3.4 系統(tǒng)矩陣鍵盤輸入電路設(shè)計(jì)15</p><p>  3.5 系統(tǒng)整體電路設(shè)計(jì)分析16</p>

11、<p>  第四章 計(jì)算器的軟件系統(tǒng)設(shè)計(jì)18</p><p>  4.1系統(tǒng)軟件編程環(huán)境介紹18</p><p>  4.2系統(tǒng)主程序流程圖18</p><p>  4.3系統(tǒng)子程序介紹20</p><p>  第五章 系統(tǒng)的仿真與調(diào)試22</p><p>  5.1系統(tǒng)仿真軟件介紹22&l

12、t;/p><p>  5.2系統(tǒng)仿真結(jié)果分析22</p><p>  第六章 實(shí)物的制作與調(diào)試25</p><p>  6.1電路的安裝過程25</p><p>  6.2系統(tǒng)的調(diào)試及問題25</p><p><b>  總結(jié)27</b></p><p><b

13、>  致 謝27</b></p><p><b>  參考文獻(xiàn)29</b></p><p>  附錄A 系統(tǒng)源程序30</p><p>  附錄B 系統(tǒng)電路圖38</p><p>  附錄C系統(tǒng)仿真圖39</p><p>  附錄D系統(tǒng)實(shí)物圖39</p>

14、<p><b>  第一章 前 言</b></p><p><b>  1.1 課題背景</b></p><p>  在人們的日常生活中,計(jì)算器的使用已經(jīng)和人們的生活密切相關(guān),當(dāng)今人們對(duì)日常生活的便利性要求越來越高,傳統(tǒng)的口算和珠算的計(jì)算方式由于諸多的不便已經(jīng)不能滿足人們對(duì)便利性的要求,攜帶方便,使用便捷的簡(jiǎn)易計(jì)算器是目前市場(chǎng)上最

15、受消費(fèi)者親睞的產(chǎn)品。計(jì)算是我們?nèi)粘I钪胁豢杀苊獾囊粋€(gè)環(huán)節(jié),小到市場(chǎng)買菜,大到買房置家,計(jì)算都會(huì)如影隨形,因而計(jì)算器的開發(fā)具有廣闊的應(yīng)用市場(chǎng),目前市場(chǎng)上的計(jì)算器種類已經(jīng)很多,但是大多數(shù)計(jì)算器功能相對(duì)較多,體積較大,價(jià)格相對(duì)較貴,不利于家庭的推廣和使用。本文正是基于攜帶方便,功能簡(jiǎn)易,成本低廉為應(yīng)用背景進(jìn)行開發(fā)和設(shè)計(jì),最終設(shè)計(jì)完成一款能夠?qū)崿F(xiàn)簡(jiǎn)單計(jì)算功能的廉價(jià)計(jì)算器。</p><p>  1.2 課題研究的目的和意

16、義</p><p>  計(jì)算是伴隨人們?nèi)粘I畹囊粋€(gè)概念,計(jì)算工具是一個(gè)從古至今一直存在而又不斷發(fā)展的。在遙遠(yuǎn)的古代人們用簡(jiǎn)單的數(shù)字的多少來計(jì)算,這種計(jì)算在我們?nèi)缃竦娜粘I钪羞€能看到,當(dāng)我們問三四歲的小孩簡(jiǎn)單的加法運(yùn)算時(shí),我們會(huì)發(fā)現(xiàn)大部分兒童還是會(huì)伸出手指來數(shù)數(shù)的多少來進(jìn)行簡(jiǎn)單的加減運(yùn)算,雖然計(jì)算的方式古老,但是卻簡(jiǎn)單可行。在后來,中國珠算的發(fā)明與使用使得計(jì)算的速度和準(zhǔn)確性得到很大的提高,珠算在中國的計(jì)算領(lǐng)域有

17、這悠久的歷史,直到上個(gè)世紀(jì)80年代之前珠算還是大多從事會(huì)計(jì)與相關(guān)計(jì)算領(lǐng)域方面較為常用的工具,然而隨著科技的進(jìn)步,電子計(jì)算器的發(fā)明與使用是計(jì)算領(lǐng)域內(nèi)的又一次革新,電子計(jì)算器無論在計(jì)算速度還是可靠性方面相比珠算都有了很大的提高,另外電子計(jì)算器操作簡(jiǎn)單,不需要專業(yè)的學(xué)習(xí)和培訓(xùn)即可操作,因而隨著電子計(jì)算器的發(fā)明和使用,珠算很快便從中國一千多年的應(yīng)用歷史中退出了市場(chǎng)。</p><p>  在現(xiàn)實(shí)生活中,我們總是會(huì)被各種繁瑣

18、的計(jì)算問題而煩心,由于生活節(jié)奏的提高,面對(duì)突然來到的計(jì)算問題,我們已經(jīng)沒有足夠的時(shí)間和耐心拿上筆和紙進(jìn)行計(jì)算了,計(jì)算器已經(jīng)成為我們?nèi)粘I钪胁豢苫蛉钡挠?jì)算工具了,在大多的工作場(chǎng)合我們會(huì)發(fā)現(xiàn)每個(gè)人的辦公工具中,計(jì)算器已經(jīng)是必不可少的了,因而如何結(jié)合所學(xué)電子知識(shí),開發(fā)一款價(jià)格低廉,操作簡(jiǎn)單,計(jì)算準(zhǔn)確可靠性高的計(jì)算器具有和好的開發(fā)價(jià)值和應(yīng)用前景,設(shè)計(jì)完成一款價(jià)格低廉、操作方便的簡(jiǎn)易計(jì)算器對(duì)自己不僅具有很好的鍛煉意義,同時(shí)也具有很好的市場(chǎng)需求,

19、適當(dāng)?shù)倪M(jìn)行完善即可推廣到市場(chǎng)上應(yīng)用。</p><p>  1.3 計(jì)算器設(shè)計(jì)的任務(wù)和要求</p><p>  本設(shè)計(jì)采用宏晶科技公司生產(chǎn)的STC89C52單片機(jī)作為系統(tǒng)的核心控制單元,然后以此單片機(jī)為基礎(chǔ)結(jié)合外圍所需的硬件電路,最后在硬件設(shè)計(jì)平臺(tái)上完成軟件代碼的驗(yàn)證,最終完成簡(jiǎn)易數(shù)字計(jì)算器各項(xiàng)功能要求。此簡(jiǎn)易數(shù)字計(jì)算器主要電路模塊包括:?jiǎn)纹瑱C(jī)最小系統(tǒng)、矩陣鍵盤電路、液晶LCD顯示電路、系統(tǒng)

20、電源電路等單元組成。系統(tǒng)所使用的主要元器件包括:STC89C52單片機(jī)、4*4矩陣鍵盤、液晶顯示屏LCD1602、DC直流電源等。</p><p>  本設(shè)計(jì)主要實(shí)現(xiàn)的功能和要求包括:(1)實(shí)現(xiàn)100000000以內(nèi)的加法運(yùn)算功能;(2)實(shí)現(xiàn)100000000以內(nèi)的減法運(yùn)算功能;(3)實(shí)現(xiàn)100000000的乘法運(yùn)算功能;(4)實(shí)現(xiàn)100000000的除法運(yùn)算功能;(5)系統(tǒng)計(jì)算時(shí)輸入數(shù)字和符號(hào)以及運(yùn)算結(jié)果顯示功

21、能;(6)系統(tǒng)輸入錯(cuò)誤時(shí)具有清除的功能。</p><p>  第二章 簡(jiǎn)易計(jì)算器的方案設(shè)計(jì)</p><p>  2.1 系統(tǒng)設(shè)計(jì)方案論述</p><p>  本次設(shè)計(jì)所要實(shí)現(xiàn)的功能主要有加減乘除的運(yùn)算,能夠?qū)崿F(xiàn)上述運(yùn)算的設(shè)計(jì)方案進(jìn)行簡(jiǎn)要的介紹。 </p><p>  方案一:以51單片機(jī)為基礎(chǔ),結(jié)合鍵盤輸入電路、電源轉(zhuǎn)換電路、單片機(jī)復(fù)位電路

22、和晶體振蕩電路以及液晶顯示電路進(jìn)行設(shè)計(jì)完成。其硬件設(shè)計(jì)框圖如圖2-1所示。</p><p><b>  圖2-1 </b></p><p>  方案二:以51單片機(jī)為基礎(chǔ),結(jié)合鍵盤輸入電路、電源轉(zhuǎn)換電路、單片機(jī)復(fù)位電路和晶體振蕩電路以及LED數(shù)碼管顯示電路進(jìn)行設(shè)計(jì)完成。其硬件設(shè)計(jì)框圖如圖2-2所示。</p><p><b>  圖2-

23、2</b></p><p>  方案三:以ARM為平臺(tái),結(jié)合電源轉(zhuǎn)換電路以及液晶LCD顯示電路進(jìn)行設(shè)計(jì)完成。其硬件設(shè)計(jì)框圖如圖2-3所示。</p><p><b>  圖2-3 </b></p><p>  2.2 系統(tǒng)設(shè)計(jì)方案比較與論證</p><p>  方案一以51單片機(jī)為核心結(jié)合液晶顯示電路來實(shí)現(xiàn)具有

24、以下優(yōu)點(diǎn):</p><p>  STC89C52單片機(jī)是目前市場(chǎng)上主流的51單片機(jī)型號(hào),其價(jià)格低廉、IO端口豐</p><p>  富,在很多中低端的電子產(chǎn)品上具有很廣泛的應(yīng)用。</p><p>  以STC89C52單片機(jī)作為方案設(shè)計(jì)的控制核心,開發(fā)相對(duì)容易,開發(fā)周期相對(duì)較</p><p>  短,可以有效的節(jié)約開發(fā)時(shí)間。</p>

25、;<p>  采用液晶LCD作為系統(tǒng)的顯示界面,液晶顯示效果穩(wěn)定,顯示字符數(shù)相對(duì)較多,</p><p>  而且能夠很好的顯示運(yùn)算符號(hào)。</p><p>  方案二相比方案一來講,采用LED數(shù)碼管顯示界面代替LCD液晶,相比方案一成本</p><p>  價(jià)格更為低廉,開發(fā)費(fèi)用和周期更短,不足之處是數(shù)碼管顯示效果存在一定的閃爍現(xiàn)象,同時(shí)顯示字符數(shù)有限,

26、如果計(jì)算的位數(shù)較多就需要級(jí)聯(lián)較多個(gè)數(shù)的數(shù)碼管才能實(shí)現(xiàn),同時(shí)市場(chǎng)上通用的數(shù)碼管一般不能直接顯示運(yùn)算符,如需要直觀的顯示運(yùn)算符則需要單獨(dú)定做,這樣又會(huì)使得設(shè)計(jì)成本得到提高。</p><p>  方案三相比前兩個(gè)方案講,外圍電路更加簡(jiǎn)單,由于ARM芯片內(nèi)部已經(jīng)集成了晶體振蕩電路和看門狗復(fù)位電路,因而不需要在單獨(dú)外接復(fù)位電路和晶振電路,這樣使得外圍電路更加簡(jiǎn)單,可以有效的縮減線路板的體積,使得整個(gè)設(shè)計(jì)體積更小,攜帶更為方

27、便,除此之外,ARM處理器處理速度相比51單片機(jī)更為快捷,以ARM為控制核心的計(jì)算器反應(yīng)靈敏度更高;方案三的不足之處是ARM處理器價(jià)格相對(duì)較高,開發(fā)難度大、開發(fā)周期長(zhǎng)。</p><p>  2.2 系統(tǒng)設(shè)計(jì)方選擇</p><p>  基于本文是以價(jià)格低廉、開發(fā)容易和使用方便為開發(fā)背景的前提下,經(jīng)過對(duì)上述3種方案的論證和比較,方案一更能符合課題開發(fā)的背景,因而本文設(shè)計(jì)方案最終以方案一為基礎(chǔ)進(jìn)

28、行設(shè)計(jì)。</p><p>  第三章 系統(tǒng)硬件電路設(shè)計(jì)</p><p>  3.1系統(tǒng)電源接口電路設(shè)計(jì)</p><p>  系統(tǒng)電源電路主要完成供電系統(tǒng)的穩(wěn)壓濾波和開關(guān)控制功能,此部分電路如圖3-1所示。</p><p>  圖3-1系統(tǒng)電源管理電路</p><p>  圖3-1為系統(tǒng)5V輸出電壓管理電路,其中J1為

29、DC005電源輸入接口,用于連接DC9V直流電源,SW1為系統(tǒng)電源開關(guān),用于控制整個(gè)系統(tǒng)的電源的開啟與關(guān)閉,C1為電解電容,一般取值在220uf到680uf之間,此電解電容是用于濾除電源線上存在的高頻干擾,U1為三端穩(wěn)壓芯片LM7805,LM7805輸入電壓范圍在7-16V情況下,穩(wěn)定輸出直流5V電壓,輸出穩(wěn)定度在5V正負(fù)0.05mv的波動(dòng)內(nèi)變化,能夠很好的保證單片機(jī)系統(tǒng)電壓的穩(wěn)定性,電容C1和C4分別用于濾除輸出電壓上存下的低頻干擾和

30、高頻干擾,LED為電源指示燈,當(dāng)系統(tǒng)電源輸出正常的情況下LED燈點(diǎn)亮,電阻R1為1K阻值的限流電阻,保證LED在允許的工作電流下工作,避免LED被電流過高造成的損壞,D0為整理二極管,在此是為了防止輸入電源極性反接造成后續(xù)電路器件的燒壞,當(dāng)電源極性反接時(shí),二極管D0的反向截止功能可以對(duì)后續(xù)電路進(jìn)行有效的保護(hù)。</p><p>  3.2 單片機(jī)最小系統(tǒng)設(shè)計(jì)</p><p>  3.2.1系

31、統(tǒng)單片機(jī)選型</p><p>  單片機(jī)為整個(gè)系統(tǒng)的控制核心,單片機(jī)型號(hào)的選擇好壞直接會(huì)影響到整個(gè)系統(tǒng)設(shè)計(jì)的成敗,因而選擇一款合適的單片機(jī)對(duì)整個(gè)系統(tǒng)設(shè)計(jì)的成功與否起著至關(guān)重要的作用,目前市場(chǎng)上單片機(jī)種類型號(hào)千差萬別,從基礎(chǔ)的8位單片機(jī)到高端的64位單片機(jī),價(jià)格從幾元到上百元不等,選擇單片機(jī)要首先要考慮價(jià)格因素,由于本系統(tǒng)設(shè)計(jì)是簡(jiǎn)易型計(jì)算器,因而功能相對(duì)較少,不需要較多的IO端口以及強(qiáng)大的存儲(chǔ)空間,所以不需要選擇價(jià)

32、位較高的高端的單片機(jī),考慮到目前市場(chǎng)上應(yīng)用較為廣泛的51位單片機(jī)完全能夠達(dá)到設(shè)計(jì)的功能要求,因而本設(shè)計(jì)首選單片機(jī)是51單片機(jī)。宏晶科技公司生產(chǎn)的STC89C52單片機(jī)是目前國產(chǎn)單片機(jī)中性價(jià)比較高的型號(hào),此單片機(jī)價(jià)格低廉,端口豐富完全兼容國外大品牌Atmel公司的AT89S52單片機(jī),價(jià)格相比Atmel公司的單片機(jī)只有其價(jià)格的一般,鑒于以上分析,本文最終選擇宏晶科技的STC89C52單片機(jī)作為簡(jiǎn)易計(jì)算器的主控單片機(jī),STC89C52單片機(jī)

33、的引腳圖如圖3-2所示。</p><p>  圖3-2 STC89C52引腳圖</p><p>  STC89C52單片機(jī)具有以下標(biāo)準(zhǔn)功能: </p><p>  ??與MCS-51單片機(jī)產(chǎn)品兼容</p><p>  ??8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器</p><p>  ??1000次擦寫周期</p>

34、;<p>  ??全靜態(tài)操作:0Hz~33Hz</p><p>  ??三級(jí)加密程序存儲(chǔ)器</p><p>  ??32個(gè)可編程I/O口線</p><p>  ??三個(gè)16位定時(shí)器/計(jì)數(shù)器</p><p><b>  ??八個(gè)中斷源</b></p><p>  ??全雙工UART串行

35、通道</p><p>  ??低功耗空閑和掉電模式</p><p>  ??掉電后中斷可喚醒</p><p><b>  ??看門狗定時(shí)器</b></p><p><b>  ??雙數(shù)據(jù)指針</b></p><p><b>  ??掉電標(biāo)識(shí)符</b>&l

36、t;/p><p>  3.2.2系統(tǒng)單片機(jī)最小系統(tǒng)電路設(shè)計(jì)</p><p>  單片機(jī)最小系統(tǒng)電路是整個(gè)計(jì)算器系統(tǒng)的核心,單片機(jī)最小系統(tǒng)電路設(shè)計(jì)的好壞直接決定整個(gè)系統(tǒng)的設(shè)計(jì)成敗,因而在設(shè)計(jì)單片機(jī)最小系統(tǒng)電路之前一定要對(duì)單片機(jī)的工作原理有一個(gè)系統(tǒng)的學(xué)習(xí),要知道單片機(jī)正常工作所需的必備條件,要了解單片機(jī)系統(tǒng)電路的組成以及各部分的主要功能。單片機(jī)最小系統(tǒng)電路一般由單片機(jī)、晶振電路、復(fù)位電路組成,此部

37、分設(shè)計(jì)完成的電路如圖3-3所示。</p><p>  圖3-3 單片機(jī)最小系統(tǒng)電路圖</p><p>  如圖3-3所示,其中Y1為11.0592M的晶體振蕩器,選擇11.0592M是為了便于計(jì)算單片機(jī)運(yùn)行的周期,Y1兩端的電容 C7,C8 接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。電容C7和C8應(yīng)選擇瓷片電容,至于電容容值的大小沒有嚴(yán)格的限定,只是電容容量的大小會(huì)輕微影響振蕩頻率的高低、振

38、蕩器工作的穩(wěn)定性、起振的難易程度及溫度的穩(wěn)定性。如果使用石英晶體,推薦電容使用30pF士l0pF。</p><p>  STC89C52單片機(jī)為高電平復(fù)位使能,在單片機(jī)最小系統(tǒng)電路設(shè)計(jì)中需要保證上電的時(shí)候能夠復(fù)位單片機(jī),同時(shí)當(dāng)系統(tǒng)運(yùn)行 過程中出現(xiàn)跑飛或者進(jìn)入死循環(huán)的時(shí)候能夠通過相應(yīng)的按鍵實(shí)現(xiàn)單片機(jī)的復(fù)位,因而單片機(jī)復(fù)位需要有上電復(fù)位和按鍵復(fù)位兩種復(fù)位方式,復(fù)位電路設(shè)計(jì)如圖3-3所示,其中 S0為復(fù)位按鍵。上電復(fù)位

39、的工作原理為:通電時(shí),電容兩端相當(dāng)于短路,于是單片機(jī)的復(fù)位引腳上為高電平,然后電源通過電阻對(duì)電容C6充電,單片機(jī)復(fù)位引腳端電壓慢慢下降,降到一定程度,即為低電平,單片機(jī)開始正常工作;按鍵復(fù)位的工作原理為:當(dāng)S0被按下后,電容C6迅速放電,使單片機(jī)復(fù)位引腳為高電平,從而實(shí)現(xiàn)復(fù)位。當(dāng)S0彈起后,電源通過10KΩ的電阻R5放電,電平變?yōu)榈碗娖?,?fù)位停止。</p><p>  3.3 系統(tǒng)顯示電路設(shè)計(jì)</p>

40、<p>  3.3.1 系統(tǒng)顯示器件選擇</p><p>  目前市場(chǎng)上的計(jì)算器顯示屏主要包括以下幾種:</p><p>  OLED段碼液晶屏,此種液晶屏只能顯示固定的數(shù)字和字符,由于簡(jiǎn)易計(jì)算器的</p><p>  運(yùn)算符號(hào)種類較少,因而考慮到OLED段碼液晶屏的價(jià)格相對(duì)較低,在一些簡(jiǎn)單的計(jì)算器上應(yīng)用較多。</p><p>

41、  LED數(shù)碼管顯示屏,近年來隨著LED技術(shù)的發(fā)展,LED數(shù)碼管應(yīng)用場(chǎng)合也逐漸增</p><p>  多,LED數(shù)碼管顯示亮度較高,同時(shí)LED顏色種類較多,客戶可以根據(jù)自己的喜好選擇自己喜歡的顏色,不足之處是LED數(shù)碼管功耗較高,顯示效果會(huì)有輕微的閃爍,長(zhǎng)時(shí)間觀看不利于眼睛的保護(hù)。</p><p>  LCD液晶屏,目前市場(chǎng)上主要用到的液晶屏分為字符型液晶屏和中文漢字液晶</p>

42、;<p>  屏, 字符型 LCD 液晶顯示,液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等特點(diǎn),現(xiàn)在字符型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件;中文漢字液晶屏體積尺寸較大,同時(shí)價(jià)格較貴,考慮到價(jià)格和體積因素,字符型LCD液晶更適合本系統(tǒng)設(shè)計(jì)的需要,采用LCD液晶顯示價(jià)格適中,顯示效果穩(wěn)定,不足是亮度效果會(huì)相對(duì)降低。</p><p>  綜合以上幾種顯示器件的優(yōu)缺點(diǎn),系統(tǒng)最終采用L

43、CD液晶顯示器做系統(tǒng)的顯示器件,系統(tǒng)選用字符型LCD1602作為顯示部分。</p><p>  3.3.2 系統(tǒng)顯示電路設(shè)計(jì)</p><p>  系統(tǒng)顯示電路主要包括單片機(jī)控制器、單片機(jī)P0口上拉電阻、LCD1602液晶顯示器和對(duì)比度調(diào)節(jié)電阻器組成,此部分電路如圖3-4所示。</p><p>  圖3-4 系統(tǒng)顯示器件電路圖</p><p>

44、  由圖3-4所示:液晶LCD1602的1腳為接地端,2腳為電源引腳,此款液晶顯示器采用DC5V電壓供電,此處VCC接5V電壓,3腳為液晶顯示器的對(duì)比度調(diào)節(jié)引腳,通過電阻R6接地,R6阻值可以選擇2.2K到4.7K之間的電阻,也可以接4.7K的可調(diào)電位器接地,可通過改變此電阻的阻值大小來調(diào)節(jié)液晶的對(duì)比度;4腳、5腳、6腳為液晶片選控制引腳,分別連接到單片機(jī)的P25、P26、P27端口,7~14腳為數(shù)據(jù)接口,與單片機(jī)的P0口相連實(shí)現(xiàn)數(shù)據(jù)的

45、傳輸,15、16、腳為液晶的背光控制腳,分別接到電源和地,如果懸空不接則不使用背光。</p><p>  3.4 系統(tǒng)矩陣鍵盤輸入電路設(shè)計(jì)</p><p>  按鍵輸入電路用來完成密碼的輸入和修改,按鍵輸入電路采用4*4矩陣鍵盤實(shí)現(xiàn),矩陣鍵盤電路如圖3-5所示。</p><p>  圖3-5系統(tǒng)矩陣鍵盤輸入電路</p><p>  系統(tǒng)矩陣鍵

46、盤對(duì)應(yīng)按鍵功能如圖3-6所示。</p><p>  圖3-6系統(tǒng)矩陣鍵盤按鍵功能說明</p><p>  如上表所示,0-9位數(shù)字鍵,當(dāng)運(yùn)算時(shí)按下對(duì)應(yīng)數(shù)字的按鍵即可輸入相應(yīng)數(shù)字,符號(hào)鍵“+”“-”“*”“/”“=”號(hào)對(duì)應(yīng)計(jì)算器的運(yùn)算功能鍵,當(dāng)輸入完相應(yīng)的數(shù)字后按下對(duì)應(yīng)的運(yùn)算符后即可執(zhí)行相應(yīng)的計(jì)算操作,清除鍵指的是當(dāng)運(yùn)算過程中如果操作錯(cuò)誤可以按下清除鍵完成對(duì)本次運(yùn)算的清除功能,按下清除鍵以后

47、即可進(jìn)行再次運(yùn)算操作。</p><p>  3.5系統(tǒng)整體電路設(shè)計(jì)分析</p><p>  當(dāng)系統(tǒng)各部分電路設(shè)計(jì)完成后,需要對(duì)各部分電路進(jìn)行總體匯總,然后對(duì)完整的電路進(jìn)行可行性分析論證,在保證系統(tǒng)電路的完整性和可靠性的前提下方可進(jìn)行下一步的軟件設(shè)計(jì)以及成品組裝,系統(tǒng)匯總完成的總體電路如圖3-7所示。</p><p>  圖3-7 系統(tǒng)整體電路圖</p>

48、<p>  圖3-7為系統(tǒng)整體電路圖,主要包括電源部分電路,矩陣鍵盤輸入電路,單片機(jī)最小系統(tǒng)電路以及液晶顯示電路4大部分組成,系統(tǒng)電源電路用了完成系統(tǒng)電壓的穩(wěn)壓和濾波作用,因?yàn)閱纹瑱C(jī)系統(tǒng)需要在比較穩(wěn)定的5V電壓系統(tǒng)下工作,因而要想保證整個(gè)系統(tǒng)能夠穩(wěn)定可靠的運(yùn)行,首先要保證系統(tǒng)電源電路穩(wěn)定可靠,所以增加穩(wěn)壓濾波電路是必不可少的環(huán)節(jié);考慮到計(jì)算器輸入鍵盤部分由0-9共10個(gè)數(shù)字鍵,5個(gè)運(yùn)算符號(hào)鍵,一個(gè)清除鍵,共需要16個(gè)按鍵,因

49、而系統(tǒng)設(shè)計(jì)鍵盤輸入部分采用4*4的矩陣鍵盤,共16個(gè)按鍵完成;顯示界面采用LCD1602字符型液晶顯示屏,LCD1602液晶能夠顯示2行32個(gè)字符,可以很好的滿足系統(tǒng)設(shè)計(jì)的要求。</p><p>  第四章 計(jì)算器的軟件系統(tǒng)設(shè)計(jì)</p><p>  4.1系統(tǒng)軟件編程環(huán)境介紹</p><p>  系統(tǒng)軟件設(shè)計(jì)采用C語言編程,編譯環(huán)境為Keil。</p>

50、<p>  Keil c51 是美國Keil Software 公司出品的51 系列兼容單片機(jī)C 語言軟件開發(fā)系統(tǒng),和匯編相比,C 在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。</p><p>  Keil c51 軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows 界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil c51 生成的目標(biāo)代碼效

51、率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。</p><p>  Keil C51 可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE 本身或其它編輯器編輯C 或匯編源文件,然后分別有C51 及A51 編輯器編譯連接生成單片機(jī)可執(zhí)行的二進(jìn)制文件(.HEX),然后通過單片機(jī)的燒寫軟件將HEX 文件燒入單片機(jī)內(nèi)。軟件主要三個(gè)方面:一是初始化系統(tǒng);二是

52、數(shù)據(jù)采集;三是數(shù)據(jù)處理并進(jìn)行顯示。這三個(gè)方面的操作分別在主程序中來進(jìn)行。程序采用模塊化的結(jié)構(gòu),這樣程序結(jié)構(gòu)清楚,易編程和易讀性好,也便于調(diào)試和修改。</p><p>  4.2系統(tǒng)主程序流程圖</p><p>  系統(tǒng)主程序主要包括系統(tǒng)的初始化、鍵盤掃描、運(yùn)算的執(zhí)行以及液晶的顯示等,系統(tǒng)主程序流程圖如圖4-1所示。</p><p>  圖4-1 系統(tǒng)主程序流程圖&l

53、t;/p><p>  系統(tǒng)主程序流程如圖4-1所示,當(dāng)系統(tǒng)上電后首先完成各個(gè)組件的初始化,一個(gè)系統(tǒng)的初始化是程序運(yùn)行必不可少的環(huán)節(jié),系統(tǒng)初始化部分主要包括:?jiǎn)纹瑱C(jī)初始化、液晶顯示初始化、矩陣鍵盤初始化等;初始化完成以后系統(tǒng)首先要掃描矩陣鍵盤,通過判斷矩陣鍵盤對(duì)應(yīng)的單片機(jī)IO端口是否發(fā)生變化來判斷是否進(jìn)入有效的運(yùn)算操作,當(dāng)按鍵掃描到有按鍵輸入時(shí),單片機(jī)通過鍵盤鍵值的判斷來確定輸入的是數(shù)字還是運(yùn)算符,同時(shí)通過控制液晶屏實(shí)

54、時(shí)顯示輸入的運(yùn)算數(shù)字和運(yùn)算符,當(dāng)單片機(jī)判斷到有“=”鍵按下后開始執(zhí)行運(yùn)算符前后數(shù)字的相應(yīng)運(yùn)算,然后把運(yùn)算的結(jié)果顯示在液晶屏的“=”符之后。此時(shí)如果系統(tǒng)檢測(cè)到清除功能鍵按下則系統(tǒng)返回到按鍵掃描狀態(tài),如果沒有清除鍵按下,則一直保留此次運(yùn)算的狀態(tài)。</p><p>  4.3系統(tǒng)子程序介紹</p><p>  系統(tǒng)子程序主要包括按鍵掃描子程序和液晶顯示子程序,按鍵掃描子程序是通過檢測(cè)矩陣鍵盤所接

55、的單片機(jī)IO端口的電平變化來實(shí)現(xiàn)。矩陣鍵盤電路設(shè)計(jì)成4X4矩陣式,在程序中可以先判斷按鍵編碼,然后根據(jù)編碼將鍵盤代表的數(shù)值送到相應(yīng)的存儲(chǔ)單元,再進(jìn)行功能選擇或數(shù)據(jù)處理。液晶顯示子程序主要完成在顯示字符發(fā)生變化時(shí),通過單片機(jī)控制液晶的讀寫操作來完成顯示字符的更新。按鍵掃描子程序流程圖如圖4-2所示。</p><p>  圖4-2 系統(tǒng)按鍵掃描子程序流程圖</p><p>  系統(tǒng)按鍵掃描是通

56、過對(duì)矩陣鍵盤行列掃描的方式實(shí)現(xiàn)的,系統(tǒng)首先對(duì)行進(jìn)行掃描,檢測(cè)出4行當(dāng)中是否有一行對(duì)應(yīng)的端口電平發(fā)生變化,如果有則進(jìn)行列的掃描,同樣如果4列中的一列端口電平發(fā)生了變化,則電平發(fā)生變化的行列交叉處的按鍵碼值即可檢測(cè)出來,此時(shí)單片機(jī)就可以通過對(duì)端口電平的變化來判斷出所按下的按鍵具體位置,然后即可記錄下對(duì)應(yīng)按鍵所對(duì)應(yīng)的數(shù)字或者符號(hào),如此循環(huán)檢測(cè)即可完成按鍵的掃描工作。</p><p>  第五章 系統(tǒng)的仿真與調(diào)試<

57、;/p><p>  5.1系統(tǒng)仿真軟件介紹</p><p>  Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件。Proteus不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前比較好的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。<

58、/p><p>  Proteus是世界上著名的EDA仿真工具,從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真。它是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等多種型號(hào)的單片機(jī)。</p><p>  5.2系統(tǒng)仿真結(jié)果分析&l

59、t;/p><p>  系統(tǒng)完成加法運(yùn)算的仿真運(yùn)行效果圖如圖5-1所示。</p><p>  圖5-1系統(tǒng)運(yùn)行仿真效果圖</p><p>  系統(tǒng)完成加法運(yùn)算的運(yùn)行效果圖5-1所示,加數(shù)分別為123和56,完成運(yùn)算符為加法運(yùn)算,運(yùn)算得出的結(jié)果為179,經(jīng)驗(yàn)證運(yùn)算結(jié)果正確,液晶顯示內(nèi)容和實(shí)際運(yùn)算輸出數(shù)字及運(yùn)算符完全一致,系統(tǒng)加法運(yùn)算仿真運(yùn)行正確無誤。</p>

60、<p>  系統(tǒng)完成減法運(yùn)算的仿真運(yùn)行效果圖如圖5-2所示。</p><p>  圖5-2 系統(tǒng)減法運(yùn)算仿真效果圖</p><p>  系統(tǒng)完成減法運(yùn)算的運(yùn)行效果圖5-2所示,減數(shù)和被減數(shù)分別為456和123,完成運(yùn)算符為減法運(yùn)算,運(yùn)算得出的結(jié)果為333,經(jīng)驗(yàn)證運(yùn)算結(jié)果正確,液晶顯示內(nèi)容和實(shí)際運(yùn)算輸出數(shù)字及運(yùn)算符完全一致,系統(tǒng)減法運(yùn)算仿真運(yùn)行正確無誤。</p>&l

61、t;p>  系統(tǒng)完成乘法運(yùn)算的仿真運(yùn)行效果圖如圖5-3所示。</p><p>  圖5-3 系統(tǒng)乘法運(yùn)算仿真效果圖</p><p>  系統(tǒng)完成乘法運(yùn)算的運(yùn)行效果圖5-3所示,乘數(shù)和被乘數(shù)分別為45和2,完成運(yùn)算符為乘法運(yùn)算,運(yùn)算得出的結(jié)果為90,經(jīng)驗(yàn)證運(yùn)算結(jié)果正確,液晶顯示內(nèi)容和實(shí)際運(yùn)算輸出數(shù)字及運(yùn)算符完全一致,系統(tǒng)乘法運(yùn)算仿真運(yùn)行正確無誤。</p><p>

62、;  系統(tǒng)完成除法運(yùn)算的仿真運(yùn)行效果圖如圖5-4所示。</p><p>  圖5-4 系統(tǒng)除法運(yùn)算運(yùn)行仿真圖</p><p>  系統(tǒng)完成除法運(yùn)算的運(yùn)行效果圖5-4所示,除數(shù)和被除數(shù)分別為10000和5,完成運(yùn)算符為除法運(yùn)算,運(yùn)算得出的結(jié)果為2000,經(jīng)驗(yàn)證運(yùn)算結(jié)果正確,液晶顯示內(nèi)容和實(shí)際運(yùn)算輸出數(shù)字及運(yùn)算符完全一致,系統(tǒng)除法運(yùn)算仿真運(yùn)行正確無誤。</p><p>

63、  第六章 實(shí)物的制作與調(diào)試</p><p>  6.1電路的安裝過程</p><p>  元件在安裝時(shí),注意事項(xiàng)如下:</p><p>  晶振要緊挨單片機(jī)的晶振引腳,晶振引線的太長(zhǎng)會(huì)直接影響到晶振的起震效果,</p><p>  引線太長(zhǎng)會(huì)造成晶振不起震的情況出現(xiàn)。</p><p>  裝配時(shí),應(yīng)該先安裝那些需要

64、安裝底座的器件,比如說單片機(jī)、液晶顯示屏等,</p><p>  由于這些器件價(jià)格較貴,如果直接裝配到板子上,一旦系統(tǒng)安裝出現(xiàn)意外情況不得不重新焊接的時(shí)候,這些主要器件就沒法再次利用了。</p><p>  各種元器件的安裝時(shí)應(yīng)盡量留出較大的空間,這樣既可以避免器件太近存在的短</p><p>  路隱患也利于元器件的散熱。</p><p>

65、  4)在元器件焊接之前應(yīng)該先用紗布將元器件的引腳打磨一遍,這樣可以將元件引腳氧化的部分去除掉,以便于焊接;在焊接過程中還要注意焊錫的量要得當(dāng),過多可能造成電路短路,過少有可能造成虛焊;最后可以在板子的四個(gè)角上安裝四個(gè)固定柱,一方面可以增加整個(gè)結(jié)構(gòu)的美觀,另一方面也可以使避免電路板放在導(dǎo)電體上發(fā)生短路的危險(xiǎn)。</p><p>  通過以上步驟,一個(gè)完整的電路硬件部分就制作完成了,這時(shí)可以再檢查一下是否有元器件漏焊

66、、焊錯(cuò)的情況,以確保電路的正確。</p><p>  6.2系統(tǒng)的調(diào)試及問題</p><p>  在調(diào)試過程中,曾遇到以下問題:</p><p>  1) 當(dāng)硬件連接無誤,在系統(tǒng)啟動(dòng)后液晶不顯示,系統(tǒng)沒有反應(yīng),經(jīng)過分析這種情況有以下幾種可能:第一,硬件電路中存在虛焊,或電路接線焊錯(cuò);第二,芯片插反了導(dǎo)致電路短路;第三,液晶電路焊接錯(cuò)誤。</p><

67、;p>  遇到這種情況首先要用萬用表檢查芯片的供電電壓是否為5V,如果不是就檢查供電電路有沒有問題。如果兩端有電壓就檢查一下單片機(jī)有沒有插反,通過逐步排查最終找到問題是因?yàn)閱纹瑱C(jī)供電引腳虛焊造成的。</p><p>  2) 鍵盤輸入顯示亂碼,和設(shè)計(jì)的鍵值不符,經(jīng)檢查發(fā)現(xiàn)矩陣鍵盤的行列端口定義與仿真接口定義不一致引起的,后重新修改端口問題得以解決。</p><p>  3) 初期系統(tǒng)

68、顯示不穩(wěn)定,這有可能是系統(tǒng)電壓不穩(wěn)定,或者STC89C52芯片的31引腳EA引腳沒有接高電平,經(jīng)過排查發(fā)現(xiàn)系統(tǒng)電源電路中未加濾波電容,由于仿真電路不存在電源干擾問題,所以在仿真中可以穩(wěn)定運(yùn)行的情況下,根據(jù)仿真電路制作出的實(shí)物可能會(huì)出現(xiàn)由于外界干擾帶來的系統(tǒng)工作不穩(wěn)定情況,這種情況一般是由電源的干擾造成,可以通過增加電源端的濾波電容來解決這種問題。</p><p><b>  總結(jié)</b>&l

69、t;/p><p>  本文采用STC89C52單片機(jī)設(shè)計(jì)完成了一款簡(jiǎn)易計(jì)算器的制作, 經(jīng)過實(shí)際測(cè)試,功能穩(wěn)定操作方便,能夠達(dá)到計(jì)算器的基本功能要求,通過適當(dāng)?shù)陌b和完善即可得到很好的推廣和應(yīng)用,此次設(shè)計(jì)對(duì)我具有很好的鍛煉效果,同時(shí)也是對(duì)自己所學(xué)知識(shí)的一次綜合檢驗(yàn)。在整個(gè)畢業(yè)設(shè)計(jì)過程中,我對(duì)大學(xué)四年所學(xué)的知識(shí)有了一個(gè)系統(tǒng)的認(rèn)識(shí)和理解,尤其是對(duì)本課題所用到的單片機(jī)及其相關(guān)知識(shí)有了進(jìn)一步的掌握,對(duì)單片機(jī)相關(guān)軟件的使用水平得

70、到了提高,為今后的工作奠定了堅(jiān)實(shí)的基礎(chǔ)。</p><p>  本課題軟件和硬件相結(jié)合,有相當(dāng)大的難度,同時(shí)也有很大的實(shí)用性。在做畢業(yè)設(shè)計(jì)的過程中,我的理論和實(shí)踐水平都有了較大的提高。在課題的設(shè)計(jì)與制作過程中,遇到了不少問題,在老師和同學(xué)的指導(dǎo)和幫組下最終得到逐一的解決,通過此次畢業(yè)設(shè)計(jì)制作不僅使我的實(shí)際動(dòng)手能力得帶了提高,也使我和同學(xué)老師之間的溝通和協(xié)作能力得到了提高,這些都為我今后進(jìn)入公司工作打下了很好的基礎(chǔ),

71、為我今后的生活和工作積累了寶貴的財(cái)富,同時(shí)由于時(shí)間和費(fèi)用的限制,此款計(jì)算器只是實(shí)現(xiàn)了計(jì)算器的基礎(chǔ)功能,諸如開方等一些常用功能未能夠?qū)崿F(xiàn)。</p><p><b>  致 謝</b></p><p>  四年的本科學(xué)習(xí)生涯即將結(jié)束,在本人做畢業(yè)設(shè)計(jì)中,得到了我的導(dǎo)師的悉心指導(dǎo)和無私幫助。他嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和謙和的為人給我留下了深刻的印象。</p><

72、p>  本課題在選題及研究過程中得到XX老師的悉心指導(dǎo)。XX老師多次詢問研究進(jìn)程,并為我指點(diǎn)迷津,幫助我開拓研究思路,精心點(diǎn)撥、熱忱鼓勵(lì)。XX老師一絲不茍的作風(fēng),嚴(yán)謹(jǐn)求實(shí)的態(tài)度,踏踏實(shí)實(shí)的精神,讓我受益終身。</p><p>  通過這次畢業(yè)設(shè)計(jì),使我得到了一次用專業(yè)知識(shí)、專業(yè)技能分析和解決問題全面系統(tǒng)的鍛煉。使我對(duì)單片機(jī)的基本原理以及單片機(jī)編程技巧的掌握方面都能向前邁了一大步,為日后邁入職場(chǎng)打下了良好的基

73、礎(chǔ)。在我畢業(yè)設(shè)計(jì)的過程中,我在XX老師的精心指導(dǎo)和嚴(yán)格要求下,獲得了豐富的理論知識(shí),極大地提高了實(shí)踐能力,并對(duì)當(dāng)前電了領(lǐng)域的研究狀況和發(fā)展方向有了一定的了解,這對(duì)我今后進(jìn)一步學(xué)習(xí)傳感器方面的知識(shí)有極人的幫助。在此,我衷心感謝XX老師的指導(dǎo)和支持。在未來的工作和學(xué)習(xí)中,我將以更好的成績(jī)來回報(bào)老師。</p><p>  在此,我還要感謝在一起愉快的度過我大學(xué)生活的全體老師和同學(xué)們,正是由于你們的幫助和支持,我才能克服

74、一個(gè)一個(gè)的困難和疑惑,直至本文的順利完成。最后再次對(duì)各位評(píng)委老師表示衷心的感謝,感謝你們能給我提出寶貴的指導(dǎo)意見,讓我順利通過畢業(yè)答辯,謝謝!</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2005.</p><p>  [2] 康華光.電子技術(shù)基礎(chǔ)模

75、擬部分(第五版) [M].北京:高等教育出版社, 2005.</p><p>  [3] 閻石.?dāng)?shù)字電子技術(shù)基礎(chǔ)(第四版)[M].北京:高等教育出版社,2005.</p><p>  [4] 白延敏.51單片機(jī)典型系統(tǒng)開發(fā)實(shí)例精講[M].北京:電子工業(yè)出版社,2009.</p><p>  [5] 張齊,杜群貴. 單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)[M]. 北京:電子工業(yè)出版社

76、,2007.</p><p>  [6] 楊金巖等. 8051單片機(jī)數(shù)據(jù)傳輸接口擴(kuò)展技術(shù)與應(yīng)用實(shí)例[M].北京:人民郵電出版社,2005.</p><p>  [7] 求是科技.單片機(jī)通信技術(shù)與工程實(shí)踐[M].北京:人民郵電出版社,2005.</p><p>  [8] 郭永貞主編. 數(shù)字電子技術(shù)[M]. 西安電子科技大學(xué)出版社,2000.</p>

77、<p>  [9] 李廣弟. 單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2001.</p><p>  [10] 張洪潤(rùn). 電子線路與電子技術(shù)[M].清華大學(xué)出版社[M],2005.</p><p>  [11] 張齊,杜群貴. 單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)[M].電子工業(yè)出版社,2004.</p><p>  [12] 張偉.基于8051單片機(jī)的無線

78、溫控系統(tǒng)設(shè)計(jì)[J].北京:中國高新技術(shù)企業(yè),2010,34(7)</p><p>  [13]徐愛鈞.智能化測(cè)量控制儀表原理與設(shè)計(jì)(第二版).北京航天航空大學(xué)出版社,2004.9</p><p>  [14]孫育才等.MCS-51系列單片微型計(jì)算機(jī)及其應(yīng)用(第4版).東南大學(xué)出版社,2004.3 </p><p>  [15]李萍等.智能儀器實(shí)驗(yàn)指導(dǎo)書.大連交通大

79、學(xué),2007.9 </p><p>  [16]單片機(jī)應(yīng)用技術(shù)(C語言).中國勞動(dòng)社會(huì)保障出版社,2006.6 </p><p>  [17]武慶生,仇梅等著.單片機(jī)原理與應(yīng)用.電子科技大學(xué)出版,1998.12 </p><p>  [18]朱定華著.單片機(jī)原理與接口技術(shù).電子工業(yè)出版社,2001.4 </p><p>  [19]王宜

80、懷,劉曉升等著.嵌入式應(yīng)用技術(shù)基礎(chǔ)教程.北京清華大學(xué)出版社,2005.7 </p><p>  [20]王威著.HCS12微控制器原理及應(yīng)用.北京航空航天大學(xué)出版社,2007.10</p><p><b>  附錄A 系統(tǒng)源程序</b></p><p>  #include <reg51.h></p><p&

81、gt;  #include <stdio.h></p><p>  #include <stdlib.h></p><p>  #include <string.h></p><p>  #include <math.h></p><p>  #include "LCD1602.h&q

82、uot;</p><p>  void shortdelay(uchar i)//短延時(shí)</p><p><b>  {</b></p><p>  for(;i>0;i--);</p><p><b>  }</b></p><p>  void longdelay(

83、uint i) //長(zhǎng)延時(shí)</p><p><b>  {</b></p><p><b>  uint j;</b></p><p>  for(;i>0;i--)</p><p>  {for(j=100;j>0;j--);}</p><p><b>

84、;  }</b></p><p>  void delay(int i) //延時(shí)程序</p><p><b>  {int j;</b></p><p>  for(;i>0;i--)</p><p>  for(j=0;j<100;j++);</p><p><b

85、>  }</b></p><p>  void io_init()//初試狀態(tài)</p><p><b>  {P1=0xff;</b></p><p><b>  }</b></p><p>  //?---------------------------鍵盤掃描部分-------

86、----------------------//</p><p>  unsigned char key_scan()</p><p>  { unsigned char key;</p><p>  unsigned char temp;</p><p>  uint flag;</p><p>  io_init(

87、);</p><p><b>  P1=0xf0;</b></p><p><b>  flag=0;</b></p><p>  loop: temp=P1^0xf0;</p><p>  while(temp)</p><p><b>  {</b>

88、</p><p><b>  P1=0xfe;</b></p><p><b>  delay(1);</b></p><p>  if((P1&0xfe)!=0xfe)</p><p>  switch(P1)</p><p><b>  {</b&

89、gt;</p><p>  case 0xee: key=0x11;flag=1;break;</p><p>  case 0xde: key=0x12;flag=1;break;</p><p>  case 0xbe: key=0x13;flag=1;break;</p><p>  case 0x7e: key=0x14;flag=1

90、;break;</p><p><b>  }</b></p><p><b>  if(flag)</b></p><p>  goto exit;</p><p><b>  else</b></p><p><b>  P1=0xfd;&

91、lt;/b></p><p><b>  delay(1);</b></p><p>  if((P1&0xfd)!=0xfd)</p><p>  switch(P1)</p><p><b>  {</b></p><p>  case 0xed: key=

92、0x21;flag=1;break;</p><p>  case 0xdd: key=0x22;flag=1;break;</p><p>  case 0xbd: key=0x23;flag=1;break;</p><p>  case 0x7d: key=0x24;flag=1;break;</p><p><b>  }&

93、lt;/b></p><p><b>  if(flag)</b></p><p>  goto exit;</p><p><b>  else</b></p><p><b>  P1=0xfb;</b></p><p><b>  

94、delay(1);</b></p><p>  if((P1&0xfb)!=0xfb)</p><p>  switch(P1)</p><p><b>  {</b></p><p>  case 0xeb: key=0x31;flag=1;break;</p><p>  

95、case 0xdb: key=0x32;flag=1;break;</p><p>  case 0xbb: key=0x33;flag=1;break;</p><p>  case 0x7b: key=0x34;flag=1;break;</p><p><b>  }</b></p><p><b>  

96、if(flag)</b></p><p>  goto exit;</p><p><b>  else</b></p><p><b>  P1=0xf7;</b></p><p><b>  delay(1);</b></p><p> 

97、 if((P1&0xf7)!=0xf7)</p><p>  switch(P1)</p><p><b>  {</b></p><p>  case 0xe7: key=0x41;flag=1;break;</p><p>  case 0xd7: key=0x42;flag=1;break;</p&g

98、t;<p>  case 0xb7: key=0x43;flag=1;break;</p><p>  case 0x77: key=0x44;flag=1;break;</p><p><b>  }</b></p><p>  exit: return key;</p><p><b>  }

99、</b></p><p>  if(temp==0)</p><p>  goto loop;</p><p><b>  }</b></p><p>  //---------------------------------鍵盤掃描完-------------------------------------

100、-------//</p><p>  //---------------------------------顯示初始化?----------------------------------------//</p><p>  void initpindata(bit i) //P0口初始化</p><p><b>  {</b></p&

101、gt;<p>  if(i==1) pindata=0xff;</p><p>  else pindata=0X00;</p><p><b>  }</b></p><p>  void setRS(bit i) //寄存器選擇信號(hào)</p><p><b>  {</b></

102、p><p>  if(i==1) pinRS=1;</p><p>  else pinRS=0;</p><p><b>  }</b></p><p>  void setRW(bit i) //讀寫操作控制</p><p><b>  {</b></p>&l

103、t;p>  if(i==1) pinRW=1;</p><p>  else pinRW=0;</p><p><b>  }</b></p><p>  void setE(bit i) //使能信號(hào)</p><p><b>  {</b></p><p>  if(

104、i==1) pinE=1;</p><p>  else pinE=0;</p><p><b>  }</b></p><p>  uint read_BF_AC()//讀BF以及AC的值</p><p><b>  {</b></p><p>  uint temp;&l

105、t;/p><p>  initpindata(1);</p><p><b>  setRS(0);</b></p><p><b>  setRW(1);</b></p><p><b>  setE(1);</b></p><p>  shortdela

106、y(1);</p><p>  temp=pindata;</p><p>  shortdelay(10);</p><p><b>  setE(0);</b></p><p>  return(temp);</p><p><b>  }</b></p>

107、<p>  bit statuscheck()//判忙</p><p><b>  {</b></p><p>  return((bit)(read_BF_AC()&0x80));</p><p><b>  }</b></p><p>  void writeinstruc(u

108、int instruc) //寫指令函數(shù)</p><p><b>  {</b></p><p>  while(statuscheck());</p><p>  initpindata(0);</p><p><b>  setRS(0);</b></p><p><

109、;b>  setRW(0);</b></p><p><b>  setE(0);</b></p><p>  pindata=instruc;</p><p><b>  setE(1);</b></p><p>  shortdelay(10);</p><

110、p><b>  setE(0);</b></p><p><b>  }</b></p><p>  void writedata(uint data1) //寫數(shù)據(jù)到RAM</p><p><b>  {</b></p><p>  initpindata(0);<

111、;/p><p><b>  setRS(1);</b></p><p><b>  setRW(0);</b></p><p><b>  setE(0);</b></p><p>  pindata=data1;</p><p><b>  se

112、tE(1);</b></p><p>  shortdelay(10);</p><p><b>  setE(0);</b></p><p><b>  }</b></p><p>  uint readdata(void) //從RAM中讀數(shù)據(jù)函數(shù)</p><p&

113、gt;<b>  {</b></p><p>  uint temp;</p><p>  initpindata(1);</p><p><b>  setRS(1);</b></p><p><b>  setRW(1);</b></p><p>&

114、lt;b>  setE(1);</b></p><p>  shortdelay(1);</p><p>  temp=pindata;</p><p>  shortdelay(10);</p><p><b>  setE(0);</b></p><p>  return(t

115、emp);</p><p><b>  }</b></p><p>  //顯示程序 X為行號(hào),Y為列號(hào),date為要顯示的數(shù)據(jù)</p><p>  void dispcharacter(int x,uint y,uint data1)</p><p><b>  {</b></p>

116、<p>  uint temp;</p><p>  while(statuscheck());</p><p>  temp=y&0x0f;</p><p><b>  x&=0x01;</b></p><p>  if(x) temp|=0x40;</p><p> 

117、 setDDRAM_Add(temp);</p><p>  writedata(data1);</p><p><b>  }</b></p><p>  vod LCDreset()//LCD復(fù)位函數(shù)</p><p><b>  {</b></p><p>  clear

118、screen();</p><p>  cursorreturn();</p><p><b>  }</b></p><p>  void initLCD()//LCD初始化</p><p><b>  {</b></p><p>  LCDreset();</p&g

119、t;<p>  inputmode(0x06);//增量方式,不移位</p><p>  dispcontrol(0x0c);//顯示開,光標(biāo)關(guān),閃爍關(guān)</p><p>  functionset(0x38);//8位,2行,5*7</p><p><b>  }</b></p><p>  //-----

120、------------------------------初始化工作完成-----------------------------------//</p><p>  //-----------------------------------計(jì)算器程序-----------------------------------------//</p><p>  compute(char ke

121、y1,i)</p><p><b>  {</b></p><p>  signed char m,n,c,act;</p><p>  long int num1,num2,result;</p><p>  signed char str[4][4]={{'7','8','9&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論