版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)-畢業(yè)論文
- 基于51單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文 基于51單片機(jī)簡(jiǎn)易計(jì)算器的設(shè)計(jì)
- 基于單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)
- 基于單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)
- 畢業(yè)論文--基于51單片機(jī)簡(jiǎn)易計(jì)算器的設(shè)計(jì)
- 基于單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)
- 基于51單片機(jī)的簡(jiǎn)易計(jì)算器畢業(yè)論文
- 基于單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 單片機(jī)簡(jiǎn)易計(jì)算器設(shè)計(jì)
- 基于51單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)
- 計(jì)算器畢業(yè)論文_——基于單片機(jī)的計(jì)算器設(shè)計(jì)
- 單片機(jī)計(jì)算器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的計(jì)算器設(shè)計(jì)
- 簡(jiǎn)易計(jì)算器(單片機(jī)原理)
- 基于51單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器
- 計(jì)算器畢業(yè)論文-- 基于單片機(jī)的電子計(jì)算器設(shè)計(jì)
- 基于51單片機(jī)計(jì)算器的設(shè)計(jì)畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論