版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)設(shè)計(jì)</b></p><p><b> (20 屆)</b></p><p> 基于單片機(jī)控制的LED點(diǎn)陣顯示屏系統(tǒng)</p><p> 所在學(xué)院 </p><p> 專業(yè)班級(jí) 電子信
2、息工程 </p><p> 學(xué)生姓名 學(xué)號(hào) </p><p> 指導(dǎo)教師 職稱 </p><p> 完成日期 年 月 </p><p><b> 摘 要</b>
3、</p><p> LED(Light Emitting Diode)顯示屏由一系列發(fā)光二極管均勻排列組成,通過控制發(fā)光二極管的顏色和亮滅來達(dá)到顯示圖像,文字的效果。因其發(fā)光率高、使用壽命長、性價(jià)比高、色彩豐富以及對(duì)室內(nèi)外環(huán)境適應(yīng)能力強(qiáng)等優(yōu)點(diǎn),在國內(nèi)外得到了廣泛的應(yīng)用。</p><p> 該系統(tǒng)通過使用性價(jià)比較高的STC89C52單片機(jī)作為主控芯片來控制LED點(diǎn)陣屏。它由一塊主控芯
4、片和外圍電路組成。外圍電路有溫度采集器,按鍵,串口下載,I/O口擴(kuò)展,LED點(diǎn)陣屏等。溫度采集器DS18B20將采集的溫度送到單片機(jī)進(jìn)行處理,處理完成后將相應(yīng)的數(shù)據(jù)通過移位寄存器和數(shù)據(jù)選擇器送到LED點(diǎn)陣屏顯示,并可通過按鍵來切換顯示溫度和其他信息。為了在線更新程序,該系統(tǒng)利用PC機(jī)將漢字字符轉(zhuǎn)換為點(diǎn)陣顯示數(shù)據(jù),并通過串行口送給單片機(jī),再由單片機(jī)完成控制和LED點(diǎn)陣屏顯示。該系統(tǒng)具有性價(jià)比高、字符清晰、可靠性高等特點(diǎn)。</p>
5、;<p> 關(guān)鍵詞:STC89C52單片機(jī);LED點(diǎn)陣屏;DS18B20 </p><p><b> Abstract</b></p><p> LED (Light Emitting Diode) display evenly by a series of light-emitting diodes composed of light-emitt
6、ing diodes by controlling the color and light to show off to images, text effect. Because it has the advantages of a high rate of luminous, long service life, cost-effective, rich colors, a strong ability to adapt the en
7、vironment indoor and outdoor and so on.So it has been widely used at home and abroad.</p><p> The system uses the higher cost-effective STC89C52 microcontroller as the Master chip to control LED dot matrix
8、screen. It consists of a master chip and the external circuit. External circuit has temperature logger, key, serial download, I / O port expansion, LED dot matrix display and so on. The temperature logger of DS18B20 will
9、 be send the gathering temperature to the microcontroller, the corresponding data will be processed through the shift register and multiplexer to the LED dot matrix dis</p><p> Key Words: STC89C52 SCM; LED
10、dot matrix display; DS18B20</p><p><b> 目 錄</b></p><p><b> 1 引言1</b></p><p> 1.1 LED顯示屏的定義1</p><p> 1.2 LED顯示產(chǎn)品的發(fā)展1</p><p>
11、 1.3 國內(nèi)外LED顯示產(chǎn)品的比較2</p><p> 1.4本文研究的主要內(nèi)容2</p><p><b> 2 總體設(shè)計(jì)3</b></p><p> 2.1系統(tǒng)設(shè)計(jì)概述3</p><p><b> 2.2工作原理3</b></p><p> 2.3基于
12、各種原理的點(diǎn)陣顯示屏的設(shè)計(jì)4</p><p> 2.3.1 基于FPGA的點(diǎn)陣顯示屏設(shè)計(jì)4</p><p> 2.3.2 基于ARM的點(diǎn)陣顯示屏設(shè)計(jì)4</p><p> 2.3.3 基于單片機(jī)的點(diǎn)陣顯示屏設(shè)計(jì)5</p><p><b> 3 硬件設(shè)計(jì)7</b></p><p>
13、 3.1 微處理器系統(tǒng)7</p><p> 3.1.1 STC89C52單片機(jī)簡介7</p><p> 3.1.2 時(shí)鐘電路8</p><p> 3.1.3 復(fù)位電路9</p><p> 3.1.4 下載電路9</p><p> 3.2 鍵盤和顯示模塊10</p><p>
14、; 3.2.1 鍵盤10</p><p> 3.2.2 LED顯示屏10</p><p> 3.3信號(hào)采集模塊11</p><p> 3.4驅(qū)動(dòng)模塊13</p><p> 3.4.1 掃描及驅(qū)動(dòng)方式13</p><p> 3.4.2 行掃描驅(qū)動(dòng)13</p><p> 3
15、.4.3 列掃描驅(qū)動(dòng)15</p><p><b> 4 軟件設(shè)計(jì)18</b></p><p> 4.1 軟件開發(fā)工具簡介18</p><p> 4.2 軟件流程圖19</p><p> 4.2.1 主函數(shù)19</p><p> 4.2.2 定時(shí)器0中斷函數(shù)21</p&g
16、t;<p> 4.2.3 讀取溫度數(shù)據(jù)函數(shù)24</p><p> 4.2.3溫度數(shù)據(jù)轉(zhuǎn)化為顯示數(shù)據(jù)函數(shù)25</p><p> 5 制作和調(diào)試27</p><p> 5.1硬件制作和調(diào)試27</p><p> 5.2軟件的調(diào)試29</p><p> 5.3 LED點(diǎn)陣顯示屏測試30&
17、lt;/p><p><b> 6 結(jié)論31</b></p><p> 致 謝錯(cuò)誤!未定義書簽。</p><p><b> 參考文獻(xiàn)32</b></p><p> 附錄1 系統(tǒng)實(shí)物圖33</p><p> 附錄2 實(shí)驗(yàn)原理圖34</p>&l
18、t;p> 附錄3 畢業(yè)設(shè)計(jì)作品說明書37</p><p><b> 1 引言</b></p><p> 1.1 LED顯示屏的定義</p><p> LED(Light Emitting Diode)顯示屏由一系列發(fā)光二極管均勻排列組成,通過控制發(fā)光二極管的顏色和亮滅來達(dá)到顯示圖像,文字的效果。點(diǎn)陣式LED組成的漢字顯示屏
19、在公共場所應(yīng)用非常廣泛。例如,車站發(fā)車時(shí)間提示、股票大廳中的股票價(jià)格顯示板、商場的活動(dòng)廣告欄、候機(jī)廳的起飛時(shí)間表。點(diǎn)陣顯示器的特點(diǎn)是可以按照需要的大小、形狀和顏色進(jìn)行組合,用單片機(jī)控制實(shí)行各種文字或圖型的變化,達(dá)到廣告宣傳和提示的目的[1]。</p><p> 如圖1-1所示,該LED顯示屏就是安裝在公路上用于交通提醒,相對(duì)于其它顯示設(shè)備,該設(shè)備可見度高,節(jié)能環(huán)保,使用壽命長,能更好更方便的提醒廣大司機(jī)朋友。&
20、lt;/p><p> 圖1-1 公交提示顯示屏</p><p> 1.2 LED顯示產(chǎn)品的發(fā)展</p><p> 隨著現(xiàn)代科學(xué)技術(shù)的不斷發(fā)展和LED器件的各種優(yōu)越性能,LED產(chǎn)業(yè)得到了各國的高度重視,其規(guī)模也得到了進(jìn)一步的擴(kuò)大和發(fā)展,而LED顯示屏作為LED的一個(gè)重要應(yīng)用產(chǎn)品,也取得了顯著的增長。其中主要的原因有半導(dǎo)體照明的發(fā)展熱潮有力推動(dòng)了LED器件基礎(chǔ)材料的
21、技術(shù)進(jìn)步,LED顯示應(yīng)用產(chǎn)品的性價(jià)比提升,應(yīng)用領(lǐng)域更加廣闊,市場規(guī)模不斷提升。同時(shí),LED顯示產(chǎn)品從大屏幕產(chǎn)品擴(kuò)展到了各種顯示應(yīng)用產(chǎn)品,景觀顯示、廣告顯示等發(fā)展尤其迅速,北京奧運(yùn)會(huì)等重大工程建設(shè)為LED顯示產(chǎn)業(yè)帶來生機(jī)[2]。</p><p> 1.3 國內(nèi)外LED顯示產(chǎn)品的比較</p><p> 國外對(duì)LED顯示屏的研究起步較早,20世紀(jì)80年代就開發(fā)出走字屏、大規(guī)模彩色LED顯示系
22、統(tǒng)。目前,研究較多的集中于LED的色彩、亮度、材料及生產(chǎn)工藝等方面。雖然國內(nèi)LED顯示屏產(chǎn)品生產(chǎn)制造的工藝水平與國外尚有較大差距,但控制技術(shù)是領(lǐng)先于國外的[3]。隨著科技的不斷進(jìn)步,LED點(diǎn)陣屏的控制技術(shù)也在不斷的發(fā)展和進(jìn)步,如單片機(jī)控制,微機(jī)控制,主從控制,無線控制等。</p><p> 1.4本文研究的主要內(nèi)容</p><p> LED顯示屏由于它具有發(fā)光效率高、使用壽命長、組態(tài)靈
23、活、顯示清晰、色彩豐富以及對(duì)室內(nèi)室外環(huán)境適應(yīng)能力強(qiáng)等優(yōu)點(diǎn),現(xiàn)在無論在火車汽車、醫(yī)院銀行還是大樓外墻,大街廣告等公共場所都可以看到點(diǎn)陣LED屏的應(yīng)用[4]。</p><p> 本課題采用單片機(jī)作為主控芯片,通過軟件編程單片機(jī)控制溫度采集器DS18B20并將相應(yīng)的溫度通過點(diǎn)陣屏穩(wěn)定的顯示出來,并可通過按鍵切換顯示模式,溫度誤差不低于0.5℃。該課題必須要熟練掌握單片機(jī)控制程序的編寫方法,仿真軟件的應(yīng)用和硬件的制作,
24、通過該課題可以提高以下幾個(gè)方面的能力或素質(zhì),掌握單片機(jī)的開發(fā)流程,掌握單片機(jī)的應(yīng)用,protues仿真軟件的應(yīng)用和實(shí)際的硬件制作能力。本課題要進(jìn)行原理圖和pcb板圖設(shè)計(jì)和制作,并掌握PROTEL繪制原理圖和PCB板圖的方法,在PCB板上進(jìn)行相關(guān)的硬件制作。</p><p> 全文共分6章,各章的主要內(nèi)容如下:</p><p> 第一章 引言。介紹課題來源,研究意義,國內(nèi)外發(fā)展概況及研
25、究的主要內(nèi)容。</p><p> 第二章 總體設(shè)計(jì)。介紹本課題的總體設(shè)計(jì)思想及方案的論證。</p><p> 第三章 硬件設(shè)計(jì)。主要是硬件設(shè)計(jì)的實(shí)現(xiàn),以模塊為單位分別介紹各個(gè)模塊實(shí)現(xiàn)其功能的原理及過程。</p><p> 第四章 軟件設(shè)計(jì)。軟件實(shí)際的流程和設(shè)計(jì)的實(shí)現(xiàn),以模塊為單位分別介紹各個(gè)模塊實(shí)現(xiàn)其功能的原理及過程</p><p&g
26、t; 第五章 制作與調(diào)試。制作系統(tǒng)的方法及測試、調(diào)試結(jié)果。</p><p> 第六章 結(jié)論。本次設(shè)計(jì)的成果,及不足之處,還需要改進(jìn)的地方。</p><p><b> 2 總體設(shè)計(jì)</b></p><p><b> 2.1系統(tǒng)設(shè)計(jì)概述</b></p><p> 本系統(tǒng)總體框圖如圖2-1。主
27、要有信號(hào)輸入模塊、單片機(jī)控制模塊、按鍵模塊、顯示模塊、驅(qū)動(dòng)模塊。由8片點(diǎn)陣組成16×32點(diǎn)陣屏,用74HC595來控制列移位,74HC154來控制行移位,溫度采集器DS18B20將采集的溫度送到單片機(jī)進(jìn)行處理,處理完成后將相應(yīng)的數(shù)據(jù)送到LED點(diǎn)陣屏顯示。為了在線更新程序,該系統(tǒng)利用PC機(jī)將漢字字符轉(zhuǎn)換為點(diǎn)陣顯示數(shù)據(jù),并通過串行口送給單片機(jī),再由單片機(jī)完成控制和LED點(diǎn)陣屏顯示。</p><p> 圖2
28、-1 系統(tǒng)總體框圖</p><p> 用戶可通過切換按鍵來控制顯示屏的顯示模式,達(dá)到不同的顯示效果。為了方便增加修改控制板功能,防止強(qiáng)電磁干擾丟失處理器程序,通過RS232在線升級(jí)控制板程序使產(chǎn)品不用返廠,現(xiàn)場解決問題。</p><p><b> 2.2工作原理</b></p><p> 介紹了LED點(diǎn)陣屏顯示的原理和軟件、硬件的設(shè)計(jì)實(shí)
29、現(xiàn)。本系統(tǒng)的LED顯示屏由單基色點(diǎn)陣LED組合而成,采用逐行掃描的顯示方式顯示任意點(diǎn)陣信息。其控制系統(tǒng)以單片機(jī)ST89C52為核心[5],由于單片機(jī)管腳有限,所以采用數(shù)據(jù)選擇器74HC154和移位寄存器74HC595來驅(qū)動(dòng)LED顯示模塊.為了顯示,先把需要的數(shù)據(jù)存在單片機(jī)存儲(chǔ)器中,工作時(shí)LED顯示控制板不斷將顯示存儲(chǔ)器中的數(shù)據(jù)以串行移位方式移進(jìn)點(diǎn)陣顯示屏的顯示移位寄存器,并通過相應(yīng)的行選開關(guān)的選擇來實(shí)現(xiàn)顯示屏動(dòng)態(tài)行掃描。需要溫度顯示是通
30、過切換按鈕來顯示溫度。從而實(shí)現(xiàn)顯示屏的多種動(dòng)畫模式顯示。</p><p> 2.3基于各種原理的點(diǎn)陣顯示屏的設(shè)計(jì)</p><p> 2.3.1 基于FPGA的點(diǎn)陣顯示屏設(shè)計(jì)</p><p> 隨著可編程邏輯器件(FPGA)的不斷發(fā)展,基于FPGA的LED顯示屏控制系統(tǒng)技術(shù)愈加成熟,該系統(tǒng)由一片F(xiàn)PGA芯片、LED顯示及接口驅(qū)動(dòng)電路模塊組成[7]。采用Alter
31、a公司的EP2C35F672C8 FPGA芯片并使用Nios II軟核微處理器。PC上位機(jī)與FPGA核心板采用RS232串口通信和JTAG下載線。FPGA核心板的輸出通過顯示驅(qū)動(dòng)模塊點(diǎn)亮LED點(diǎn)陣。串口通信電路接口電路采用MAX232芯片。驅(qū)動(dòng)電路使用4片74HC595移位寄存器。具有外圍電路簡單、升級(jí)容易、穩(wěn)定性好的優(yōu)點(diǎn)[8]。但FPGA成本比較高,一般運(yùn)用在高精度的場合。結(jié)構(gòu)框圖如圖2-2所示:</p><p&g
32、t; 圖2-2 FPGA設(shè)計(jì)基本結(jié)構(gòu)框圖</p><p> 2.3.2 基于ARM的點(diǎn)陣顯示屏設(shè)計(jì)</p><p> 在分析LED顯示控制原理、灰度級(jí)實(shí)現(xiàn)以及彩色顯示實(shí)現(xiàn)原理的基礎(chǔ)上,制定了ARM+FPGA的LED點(diǎn)陣顯示控制方案,采用三星公司S3C2410芯片上的LCD顯示接口,設(shè)計(jì)了顯示數(shù)據(jù)重組、非線性占空比γ反校正等邏輯,結(jié)合FPGA技術(shù)實(shí)現(xiàn)了高性能的LED點(diǎn)陣顯示控制:同時(shí)
33、研究了嵌入式Linux操作系統(tǒng),在實(shí)驗(yàn)基礎(chǔ)上詳細(xì)論述基于Linux操作系統(tǒng)的幀緩存設(shè)備模塊加載模式下的控制技術(shù),并開發(fā)基于ARM平臺(tái)的LED顯示屏播放以及管理應(yīng)用程序[9]。該系統(tǒng)適用于大型場合,成本比較高。結(jié)構(gòu)框圖如圖 2-3所示: </p><p> 圖2-3 ARM設(shè)計(jì)基本結(jié)構(gòu)框圖</p><p> 2.3.3 基于單片機(jī)的點(diǎn)陣顯示屏設(shè)計(jì)</p><p>
34、; 利用單片機(jī)作為主控芯片,通過驅(qū)動(dòng)電路LED點(diǎn)陣進(jìn)行動(dòng)態(tài)掃描,以實(shí)現(xiàn)點(diǎn)陣漢字的分批顯示。設(shè)計(jì)選用的單片機(jī)為STC89C52,是一種低功耗,高性能的 8位單片機(jī),片內(nèi)含8 KB可反復(fù)擦寫的FLASH ROM,內(nèi)置看門狗電路。功能強(qiáng)大的STC89C52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。上電復(fù)位電路可保證單片機(jī)的在程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),重啟運(yùn)行。通過Proteus的前期仿真為LED顯示屏系統(tǒng)的設(shè)計(jì)開發(fā)
35、大大縮短了開發(fā)周期,降低了開發(fā)成本。同時(shí)也為單片機(jī)應(yīng)用系統(tǒng)、電子電路的開發(fā)設(shè)計(jì)等提供了一種嶄新的設(shè)計(jì)方法和有效手段[6]。結(jié)構(gòu)框圖如圖 2-4所示:</p><p> 圖2-4 單片機(jī)設(shè)計(jì)基本結(jié)構(gòu)框圖</p><p> 相對(duì)于前兩種方案,該方案具有電路結(jié)構(gòu)簡潔,可靠性高,成本低且易于實(shí)現(xiàn)等特點(diǎn),而且軟件通過適當(dāng)修改即可實(shí)現(xiàn)其他顯示功能,顯示靈活,適用領(lǐng)域廣泛。通過Proteus的前期
36、仿真使設(shè)計(jì)更加方便靈巧,可大大縮短開發(fā)周期,減少硬件設(shè)計(jì)中的錯(cuò)誤,降低開發(fā)成本。</p><p><b> 3 硬件設(shè)計(jì)</b></p><p> 本系統(tǒng)硬件主要有四大模塊組成:微處理器系統(tǒng)、按鍵和顯示模塊、信號(hào)采集模塊、驅(qū)動(dòng)模塊。</p><p> 3.1 微處理器系統(tǒng)</p><p> 單片機(jī)自1976年問世
37、以來,作為微型計(jì)算機(jī)一個(gè)很重要的分支,以極高的性能價(jià)格比,受到人們的重視和關(guān)注,應(yīng)用廣泛,發(fā)展迅速[10]。目前單片機(jī)已滲透到各個(gè)領(lǐng)域。例如導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了[11]。
38、</p><p> 本系統(tǒng)的微處理器采用STC89C52芯片,實(shí)現(xiàn)了LED陣列顯示以及控制。</p><p> 3.1.1 STC89C52單片機(jī)簡介</p><p> STC89C52單片機(jī)是宏晶科技推出的新一代超強(qiáng)抗干擾/高速/低功耗的單片機(jī),指令完全兼容傳統(tǒng)8051單片機(jī)。內(nèi)部帶 8K 字節(jié)Flash程序存儲(chǔ)器,內(nèi)部Flash擦寫次數(shù)可達(dá)100,000
39、次以上。</p><p> 主要特點(diǎn)有:工作頻率范圍:0—80MHz ,實(shí)際工作頻率可達(dá)48MHz ;用戶應(yīng)用程序空間可達(dá) 8K 字節(jié);片上集成512字節(jié)RAM;ISP(在系統(tǒng)可編程),無需專用編程器/仿真器;E2PROM功能;看門狗;共3個(gè)16為定時(shí)/計(jì)數(shù)器;外部中斷4路等。其封裝圖如圖 3-1所示:</p><p> 圖3-1 STC89C52封裝圖</p><
40、;p> 相對(duì)于AT系列單片機(jī)該單片機(jī)具有在系統(tǒng)可編程(ISP)特性,ISP 的好處是:省去購買通用編程器,單片機(jī)在用戶系統(tǒng)上即可下載/ 燒錄用戶程序,而無須將單片機(jī)從已生產(chǎn)好的產(chǎn)品上拆下,再用通用編程器將程序代碼燒錄進(jìn)單片機(jī)內(nèi)部。有些程序尚未定型的產(chǎn)品可以一邊生產(chǎn),一邊完善,加快了產(chǎn)品進(jìn)入市場的速度,減小了新產(chǎn)品由于軟件缺陷帶來的風(fēng)險(xiǎn)。由于可以將程序直接下載進(jìn)單片機(jī)看運(yùn)行結(jié)果故也可以不用仿真器[12]。而且該單片機(jī)加密性強(qiáng),出廠
41、時(shí)就已加密。相當(dāng)于51單片機(jī),該單片機(jī)具有更多的Flash程序存儲(chǔ)空間和RAM數(shù)據(jù)存儲(chǔ)空間。</p><p> 3.1.2 時(shí)鐘電路</p><p> 如圖3-2 是較為常用的單片機(jī)外圍時(shí)鐘電路,STC89C52中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1 和XTAL2 分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體一起構(gòu)成自激振蕩器。</
42、p><p> 圖3-2 單片機(jī)外圍時(shí)鐘電路圖</p><p> 3.1.3 復(fù)位電路</p><p> 如圖3-3是常用的上電按鈕高電平復(fù)位電路。復(fù)位是單片機(jī)的初始化操作,其主要的作用是使單片機(jī)從0000H單元開始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯(cuò)或者操作失誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,也需要按復(fù)位鍵以重新啟動(dòng)[13]。</p
43、><p> 圖3-3 復(fù)位電路圖</p><p> 3.1.4 下載電路</p><p> 由于電腦串口RS232 電平是-10v,+10v ,而一般的單片機(jī)應(yīng)用系統(tǒng)的信號(hào)電壓是TTL 電平0,+5v,MAX232 接收的是RS232電平,它將接收到的RS232電平轉(zhuǎn)成單片機(jī)需要的TTL電平。然后將單片機(jī)發(fā)送的TTL電平轉(zhuǎn)成232電平發(fā)送出去。從而實(shí)現(xiàn)計(jì)算機(jī)與單
44、片機(jī)的通信,達(dá)到下載功能。下載電路如圖3-4所示。</p><p> 圖3-4 下載電路圖</p><p> 3.2 鍵盤和顯示模塊</p><p><b> 3.2.1 鍵盤</b></p><p> 本課題用使用了一個(gè)按鍵,其主要作用用于切換顯示內(nèi)容:溫度或者文字。其電路圖如圖3-5所示。</p>
45、;<p> 圖3-5 按鍵電路圖</p><p> 基本原理:單片機(jī)采用循環(huán)掃描,在沒有按鍵按下時(shí)單片機(jī)沒有接收信息。當(dāng)檢測到有按鍵按下時(shí),單片機(jī)將接收到一個(gè)低電平,為防止是信號(hào)干擾產(chǎn)生的低電平和按下時(shí)的抖動(dòng),需要有一個(gè)延時(shí)的消除抖動(dòng)的操作,以消除按鍵時(shí)帶有的抖動(dòng)信號(hào);一般延時(shí)在15ms左右即可。延時(shí)后,如果還能檢測到有按鍵按下,則可確定當(dāng)前是有鍵按下,可進(jìn)入獲取鍵值的操作,從而完成切換顯示。
46、</p><p> 3.2.2 LED顯示屏</p><p> LED顯示屏由一系列LED點(diǎn)陣組成。LED點(diǎn)陣顯示屏是一種簡單的顯示器,可以顯示漢字,圖片等。相對(duì)于液晶等顯示器件具有價(jià)廉、易于控制、使用壽命長、清晰度高等特點(diǎn)?,F(xiàn)在被廣泛應(yīng)用于各種公共場合。如圖3-6是一種8x8的LED點(diǎn)陣單色行共陽模塊的內(nèi)部結(jié)構(gòu)圖,其單點(diǎn)工作電壓為1.8 V,正向電流為8~10 mA。當(dāng)某一行線為高電
47、平而某一列線為低時(shí),其行列交叉的點(diǎn)就被點(diǎn)亮;而當(dāng)其某一列線為高時(shí),其行列交叉的點(diǎn)為暗;當(dāng)某一行線為低電平時(shí),無論列線如何,對(duì)應(yīng)這一行的點(diǎn)全部為暗[14]。</p><p> 圖3-6 點(diǎn)陣內(nèi)部結(jié)構(gòu)圖</p><p> 本課題的LED顯示屏由8塊點(diǎn)陣屏組成,其電路圖如圖3-7所示。通過單片機(jī)控制驅(qū)動(dòng)電路從而控制LED顯示屏的顯示。</p><p> 圖3-7
48、 LED顯示屏電路圖</p><p><b> 3.3信號(hào)采集模塊</b></p><p> 本課題的信號(hào)采集選擇溫度采集,并選擇DS18B2O作為采集器。溫度是一種最基本的環(huán)境參數(shù),日常生活和工農(nóng)業(yè)生產(chǎn)中經(jīng)常要檢測溫度。傳統(tǒng)的方式是采用熱電偶或熱電阻,但是由于模擬溫度傳感器輸出為模擬信號(hào),必須經(jīng)過A/D轉(zhuǎn)換環(huán)節(jié)獲得數(shù)字信號(hào)后才能與單片機(jī)等微處理器接口,使得硬件電
49、路結(jié)構(gòu)復(fù)雜,制作成本較高[15]。而采用新型的單總線數(shù)字式溫度傳感器DSl8B20測量溫度則克服了上述缺點(diǎn)。DS18B20數(shù)字溫度計(jì)是美國DALLAS半導(dǎo)體公司推出的一種改進(jìn)型智能溫度傳感器,集溫度測量和A/D轉(zhuǎn)換于一體,可直接輸出數(shù)字量,而且其傳輸距離遠(yuǎn),可以很方便地實(shí)現(xiàn)多點(diǎn)測量,硬件電路結(jié)構(gòu)簡單,可直接與單片機(jī)相連。現(xiàn)在被廣泛使用于倉儲(chǔ)管理、氣象觀測、工農(nóng)業(yè)生產(chǎn)制造及日常生活等。TO-92封裝的DS18B20的引腳排列如圖3-8所示
50、,其引腳功能描述如表3-1所示。</p><p> 圖3-8 DS18B20引腳圖</p><p> 表3-1 DS18B20詳細(xì)引腳功能描述</p><p> 由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)STC89C51單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時(shí)序來
51、完成對(duì)DS18B20芯片的訪問。</p><p> 由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)
52、需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。</p><p><b> 3.4驅(qū)動(dòng)模塊</b></p><p> 3.4.1 掃描及驅(qū)動(dòng)方式</p><p> LED顯示屏驅(qū)動(dòng)電路的設(shè)計(jì)應(yīng)與所用控制系統(tǒng)相配合。驅(qū)動(dòng)通常分為靜態(tài)鎖存型及動(dòng)態(tài)掃描型驅(qū)動(dòng)二大類[14]。靜態(tài)鎖存型驅(qū)動(dòng)是指顯示驅(qū)動(dòng)電路具有輸出鎖存功能,單片機(jī)將要顯示的
53、數(shù)據(jù)發(fā)送出去后就不再需要控制LED,直到下一次顯示時(shí)再重新發(fā)送一次新的數(shù)據(jù)。只要當(dāng)前顯示的數(shù)據(jù)沒有變化,就無須關(guān)心LED顯示內(nèi)容。靜態(tài)鎖存型驅(qū)動(dòng)具有顯示穩(wěn)定,占用的CPU時(shí)間少等特點(diǎn)。但在靜態(tài)鎖存型驅(qū)動(dòng)中,每一個(gè)點(diǎn)陣都要占用單獨(dú)具有瑣存功能的I/O口,但單片機(jī)只有32個(gè)I/O口,明顯不夠用。動(dòng)態(tài)掃描型驅(qū)動(dòng)是指點(diǎn)陣上的16列發(fā)光二極管共用一組列驅(qū)動(dòng)寄存器,然后通過行驅(qū)動(dòng)管的分時(shí)工作.來使每行LED的點(diǎn)亮?xí)r間占總時(shí)間的1/16。只要每行的刷
54、新速率大于50 Hz,利用人眼的視覺暫留效應(yīng)。人們就可以看到一幅完整的文字或畫面[14]??紤]到本課題采用STC89C52單片機(jī),選用電路。</p><p> 采用動(dòng)態(tài)掃描型驅(qū)動(dòng)方式顯示時(shí),行驅(qū)動(dòng)器控制各行,各行的同名列共用一個(gè)驅(qū)動(dòng)器。當(dāng)單片機(jī)將8位數(shù)據(jù)傳送給列驅(qū)動(dòng)器時(shí),有并行傳送和串行傳送2種方式。如果采用并行傳送方式,從控制電路到列驅(qū)動(dòng)器的線路數(shù)量將遠(yuǎn)遠(yuǎn)大于采用串行傳送,而且外圍電路也相應(yīng)的復(fù)雜化??紤]到節(jié)
55、約I/O及將電路簡單化,采用串行的傳輸方式。</p><p> 3.4.2 行掃描驅(qū)動(dòng)</p><p> 本課題的點(diǎn)陣顯示屏有8塊點(diǎn)陣組成,共16行32列。為充分利用單片機(jī)的I/0口,電路的行掃描驅(qū)動(dòng)器選用74HC154譯碼器。74HC154是一款高速CMOS器件,其引腳兼容低功耗肖特基TTL(LSTTL)系列。74HC154譯碼器可接受4位高有效二進(jìn)制地址輸入,并提供16個(gè)互斥的低有
56、效輸出。74HC154的兩個(gè)輸入使能門電路可用于譯碼器選通,以消除輸出端上的通常譯碼“假信號(hào)”,也可用于譯碼器擴(kuò)展。該使能門電路包含兩個(gè)“邏輯與”輸入,必須置為低以便使能輸出端。任選一個(gè)使能輸入端作為數(shù)據(jù)輸入,74HC154可充當(dāng)一個(gè)1-16的多路分配器。當(dāng)其余的使能輸入端置低時(shí),地址輸出將會(huì)跟隨應(yīng)用的狀態(tài)。其引腳排列及邏輯符號(hào)如圖3-9所示,其引腳功能描述如表3-2所示。</p><p> 圖3-9 74H
57、C154引腳及邏輯符號(hào)圖</p><p> 表3-2 74HC154引腳功能描述</p><p> 在電路中將使能E0和E1端接地,當(dāng)單片機(jī)控制A0、A1、A2、A3時(shí),16路輸出端就會(huì)輸出相應(yīng)的一路數(shù)據(jù)。如果一行32點(diǎn)全部點(diǎn)亮,則通過74HCl54的電流大小約320 mA,而實(shí)際上,74HCl54提供不了足夠的吸收電流來同時(shí)驅(qū)動(dòng)32個(gè)LED,所以,應(yīng)該在74HCl54每一路輸出端與
58、點(diǎn)陣對(duì)應(yīng)的每一行之間用一個(gè)三極管來放大電流信號(hào)。最后當(dāng)74HCl54某一輸出腳為低電平時(shí),對(duì)應(yīng)的三極管發(fā)射極為高電平,從而使點(diǎn)陣顯示器對(duì)應(yīng)的行也為高電平。其電路圖如圖3-10所示。</p><p> 圖3-10 74HC154及三極管電流放大電路圖</p><p> 3.4.3 列掃描驅(qū)動(dòng)</p><p> 電路的行掃描驅(qū)動(dòng)器選用74HC595移位寄存器。7
59、4HC595是一款高速CMOS器件,其引腳兼容低功耗肖特基TTL(LSTTL)系列。74HC595遵循JEDEC標(biāo)準(zhǔn)no.7A。 74HC595是8階串行移位寄存器,帶有存儲(chǔ)寄存器和三態(tài)輸出。移位寄存器和存儲(chǔ)寄存器分別采用單獨(dú)的時(shí)鐘。在SH_CP的上升沿,數(shù)據(jù)發(fā)生移位,而在ST_CP的上升沿,數(shù)據(jù)從每個(gè)寄存器中傳送到存儲(chǔ)寄存器。如果兩個(gè)時(shí)鐘信號(hào)被綁定到一起,則移位寄存器將會(huì)一直領(lǐng)先存儲(chǔ)寄存器一個(gè)時(shí)鐘脈沖。移位寄存器帶有一個(gè)串行輸入(D
60、S)端和一個(gè)串行標(biāo)準(zhǔn)輸出(Q7')端,用于級(jí)聯(lián)。它還為移位寄存器的8個(gè)階提供了異步的復(fù)位(低有效)。存儲(chǔ)寄存器帶有8個(gè)三態(tài)總線驅(qū)動(dòng)輸出,當(dāng)輸出使能(OE)端為低時(shí),存儲(chǔ)寄存器中的數(shù)據(jù)可被正常輸出。其引腳排列及邏輯符號(hào)如圖3-10所示,其引腳功能描述如表3-3所示。</p><p> 圖3-10 74HC595引腳及邏輯符號(hào)圖</p><p> 表3-3 74HC595引腳功
61、能描述</p><p> 本設(shè)計(jì)由4片74HC595進(jìn)行級(jí)連,共用一個(gè)移位寄存器時(shí)鐘SHCP及存儲(chǔ)寄存器時(shí)鐘STCP。這樣,當(dāng)每一行的數(shù)據(jù)經(jīng)過8×4=32個(gè)SHCP時(shí)鐘后便可將其全部移入74HC595中,此時(shí)還將產(chǎn)生一個(gè)數(shù)據(jù)鎖存信號(hào)STCP將數(shù)據(jù)鎖存在74HC595中,使數(shù)據(jù)并行輸出。電路中當(dāng)行掃描使第一行有效,則該行LED的亮滅由74HC595決定,依次類推,從而形成一幅完整的文字或圖像。其電路圖如
62、圖3-11所示。</p><p> 圖3-11 74HC595電路圖</p><p><b> 4 軟件設(shè)計(jì)</b></p><p> LED點(diǎn)陣顯示屏軟件系統(tǒng)的主要功能是接收信號(hào)采集器中的溫度數(shù)據(jù),向顯示屏提供顯示數(shù)據(jù)及各種控制信號(hào)。主要由主函數(shù),子函數(shù)及中斷服務(wù)函數(shù)三部分組成。</p><p> 4.1 軟
63、件開發(fā)工具簡介</p><p> Keil C51 µVision3是Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在結(jié)構(gòu)性、可讀性、功能上、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。該集成開發(fā)環(huán)境內(nèi)嵌多種符合當(dāng)前工業(yè)標(biāo)準(zhǔn)的開發(fā)工具,可以完成從工程建立到管理、編譯、鏈接、目標(biāo)代碼的生成、軟件仿真、硬件仿真等完整的開發(fā)流程尤其是C編譯工具在產(chǎn)生代碼的準(zhǔn)確性和效率
64、方面達(dá)到了較高的水平,而且可以附加靈活的控制選項(xiàng),在開發(fā)大型項(xiàng)目時(shí)非常理想??梢哉f它是一個(gè)比較重要的軟件,熟悉他的人很多,其用戶群也極為龐大,要遠(yuǎn)遠(yuǎn)超過偉福等廠家軟件用戶群。Keil C51 µVision3集成開發(fā)環(huán)境如圖4-1所示。</p><p> 圖4-1 Keil C51 µVision3集成開發(fā)環(huán)境</p><p> 為了節(jié)約開發(fā)時(shí)間、制作成本及提高成
65、功率,本設(shè)計(jì)采用Proteus軟件進(jìn)行相關(guān)仿真調(diào)試。Proteus嵌入式系統(tǒng)仿真與開發(fā)平臺(tái)是由英國Labcenter公司開發(fā)的,是目前世界上最先進(jìn)、最完整的嵌入式系統(tǒng)設(shè)計(jì)與仿真平臺(tái)。它是一種可視化的支持多種型號(hào)單片機(jī)(如51、PIC、AVR、Motorola hcll等),并且支持與當(dāng)前流行的單片機(jī)開發(fā)環(huán)境(Keil、MPLAB、IAR)連接調(diào)試的軟硬件仿真系統(tǒng)。Proteus除了具有和其他EDA工具一樣的原理圖、PCB自動(dòng)或人工布線及
66、電路仿真功能外,針對(duì)微控制系統(tǒng)與外設(shè)的混合電路的電路仿真、軟件仿真、系統(tǒng)協(xié)同仿真也做到了一體化和互動(dòng)效果,是目前電子設(shè)計(jì)愛好者廣泛使用的電子線路設(shè)計(jì)與仿真軟件Protel 和Multisim功能的聯(lián)合和進(jìn)一步擴(kuò)展。其軟件平臺(tái)如圖4-2所示。</p><p> 圖4-2 Proteus軟件平臺(tái)</p><p><b> 4.2 軟件流程圖</b></p>
67、;<p><b> 4.2.1 主函數(shù)</b></p><p> 主函數(shù)的主要功能是進(jìn)行系統(tǒng)初始化及合理的調(diào)用子函數(shù)從而達(dá)到顯示效果。其流程圖如圖4-3所示。</p><p> 圖4-3 主函數(shù)流程圖</p><p><b> 其程序如下:</b></p><p> /***
68、*********主函數(shù)***************/</p><p> 首先初始化各函數(shù)及變量,然后通過循環(huán)函數(shù)判斷按鍵值,從而確定顯示模式,有2種顯示模式:漢字顯示,溫度顯示。顯示內(nèi)容通過調(diào)用字庫函數(shù)得到。</p><p> void main()</p><p><b> {</b></p><p><
69、;b> //初始化</b></p><p> temp=ReadTemperature(); //讀取溫度</p><p> delay(15);</p><p> display_tempmain(temp); //把溫度數(shù)據(jù)變?yōu)辄c(diǎn)陣屏顯示數(shù)據(jù)</p><p> delay(15);<
70、/p><p><b> while(1)</b></p><p><b> {</b></p><p> //按鍵掃描并判斷按鍵值從而確定顯示模式</p><p> if(biao==1) //漢字顯示</p><p> {j
71、=0; </p><p> for(i=0;i<16;i++) //行掃描</p><p><b> {</b></p><p><b> P1=i;</b></p><p><b> STTP = 0;</b></p>
72、;<p> for(k=0;k<2;k++) //列掃描</p><p><b> {</b></p><p> out_rxd(&hanzi[k][j+b+1]);</p><p> out_rxd(&hanzi[k][j+b]);</p><p>
73、;<b> }</b></p><p><b> STTP = 1;</b></p><p> delay(15);</p><p> j=j+2; </p><p><b> STTP = 0;</b></p><p> for(k
74、=0;k<2;k++)</p><p><b> {</b></p><p> out_rxd(&hanzi[0][1]); //清除串口中原有數(shù)據(jù),送0xff.</p><p> out_rxd(&hanzi[0][1]);</p><p><b> }</b&g
75、t;</p><p><b> STTP = 1;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(biao==2) //溫度顯示</p>&l
76、t;p><b> { </b></p><p> j=0; </p><p> for(i=0;i<16;i++)</p><p><b> {</b></p><p><b> P1=i;</b></p><p&g
77、t;<b> STTP = 0;</b></p><p> for(k=0;k<2;k++)</p><p> {if(k==1)</p><p><b> k=k+1;</b></p><p> out_rxd(&wendu[k][j+b1+1]);</p>
78、<p> out_rxd(&wendu[k][j+b1]);</p><p><b> }</b></p><p><b> STTP = 1;</b></p><p> delay(15); </p><p><b> STTP = 0;&l
79、t;/b></p><p> for(k=0;k<2;k++)</p><p><b> {</b></p><p> out_rxd(&wendu[0][1]); //清除串口中原有數(shù)據(jù),送0xff.</p><p> out_rxd(&wendu[0][1]);</
80、p><p><b> }</b></p><p> STTP = 1; </p><p><b> j=j+2;</b></p><p><b> }</b></p><p><b> }</b></p><
81、;p><b> }</b></p><p><b> }</b></p><p> 4.2.2 定時(shí)器0中斷函數(shù)</p><p> 定時(shí)器0中斷流程圖如圖4-4所示。</p><p> 圖4-4 定時(shí)器0中斷流程圖</p><p><b> 其程序
82、如下:</b></p><p> //T0中斷-讀取溫度及顯示圖片</p><p> 定時(shí)時(shí)間:T=(216-計(jì)數(shù)初值)×晶振周期×12,因?yàn)榫д裰芷跒椋?/12)×10-6,所以 T=(216-計(jì)數(shù)初值)×10-6 。每隔一段時(shí)間讀取溫度及顯示圖片。</p><p> void T0_1s(void) in
83、terrupt 1</p><p> {int i1,k1,j1,a1,xun;</p><p> TH0=TH_M1;TL0=TL_M1;</p><p> if(++count_T0==3)</p><p> {count_T0=0;</p><p><b> b1=b1-2;</b&
84、gt;</p><p><b> if(b1<=0)</b></p><p> b1=64;</p><p><b> b-=2;</b></p><p> if(b<=0)//顯示到最后一個(gè)字,回頭顯示,判斷值=字?jǐn)?shù)*32</p><p>&l
85、t;b> {</b></p><p><b> b=128;</b></p><p><b> }</b></p><p> temp=ReadTemperature(); //讀取溫度</p><p> delay(15);</p><
86、;p> display_tempmain(temp); //把溫度數(shù)據(jù)變?yōu)辄c(diǎn)陣屏顯示數(shù)據(jù)</p><p> delay(15); </p><p> if(++ji==160) //顯示圖片</p><p><b> {ji=0;</b></p><
87、;p> for(a1=0;a1<20;a1++) </p><p><b> { </b></p><p> for(xun=0;xun<3;xun++)</p><p><b> {j1=0;</b></p><p> for(i1=0;i1<
88、16;i1++)</p><p><b> {</b></p><p><b> P1=i1;</b></p><p><b> STTP = 0;</b></p><p> for(k1=0;k1<2;k1++)</p><p><
89、b> {</b></p><p> out_rxd(&picture[k1][j1+31+1]);</p><p> out_rxd(&picture[k1][j1+31]);</p><p><b> }</b></p><p><b> STTP = 1;&l
90、t;/b></p><p> delay(15);</p><p> j1=j1+2;</p><p><b> STTP = 0;</b></p><p> for(k1=0;k1<2;k1++)</p><p><b> {</b><
91、;/p><p> out_rxd(&picture[0][1]); //清除串口中原有數(shù)據(jù)</p><p> out_rxd(&picture[0][1]);</p><p><b> }</b></p><p><b> STTP = 1;</b></p>
92、<p><b> }</b></p><p><b> }</b></p><p> j1=0; delay(5);</p><p> for(xun=0;xun<3;xun++)</p><p><b> {j1=0;</b></p>
93、<p> for(i1=0;i1<16;i1++)</p><p><b> {</b></p><p><b> P1=i1;</b></p><p><b> STTP = 0;</b></p><p> for(k1=1;k1<3;k1+
94、+)</p><p><b> {</b></p><p> out_rxd(&picture[k1][j1+31+1]);</p><p> out_rxd(&picture[k1][j1+31]);</p><p><b> }</b></p><
95、p><b> STTP = 1;</b></p><p> delay(15);</p><p> j1=j1+2;</p><p><b> STTP = 0;</b></p><p> for(k1=0;k1<2;k1++)</p><p>
96、<b> {</b></p><p> out_rxd(&picture[0][1]); //清除串口中原有數(shù)據(jù) out_rxd(&picture[0][1]);</p><p><b> }</b></p><p><b> STTP = 1;</
97、b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p><b> }&
98、lt;/b></p><p> delay(10);</p><p><b> }</b></p><p> 4.2.3 讀取溫度數(shù)據(jù)函數(shù)</p><p> 根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過以下三個(gè)步驟:每一次讀寫之前都要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條R
99、OM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號(hào)后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號(hào)表示復(fù)位成功。用到的ROM指令為:跳過ROM;指令代碼為:0CCH;功能為: 忽略64位ROM地址,直接向DS1820發(fā)溫度變換命令,適用于單片工作。用到的RAM指令為:溫度變換;指令代碼為:44H;功能為: 啟動(dòng)DS
100、1820進(jìn)行溫度轉(zhuǎn)換,轉(zhuǎn)換時(shí)最長為500ms(典型為200ms),其結(jié)果存入內(nèi)部9字節(jié)RAM中。讀暫存器;指令代碼為:0BEH;功能為: 讀取內(nèi)部RAM中的9字節(jié)的內(nèi)容。</p><p> //=========================溫度函數(shù)================</p><p><b> //延時(shí)函數(shù) </b></p><
101、p> void delay2(unsigned int i)</p><p><b> {</b></p><p> while(i--); </p><p><b> }</b></p><p><b> //初始化函數(shù)</b></p>&
102、lt;p> Init_DS18B20(void)</p><p><b> {</b></p><p> unsigned char x=0;</p><p> DQ = 1; //DQ復(fù)位 </p><p> delay2(8); //稍做延時(shí)</p>
103、<p> DQ = 0; //單片機(jī)將DQ拉低</p><p> delay2(80); //精確延時(shí) 大于 480us</p><p> DQ = 1; //拉高總線</p><p> delay2(14);</p><p> x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗&
104、lt;/p><p> delay2(20);</p><p><b> }</b></p><p><b> //讀一個(gè)字節(jié)</b></p><p> ReadOneChar(void)</p><p><b> {</b></p>
105、<p> unsigned char i=0;</p><p> unsigned char dat = 0; </p><p> for (i=8;i>0;i--)</p><p><b> {</b></p><p> DQ = 0; // 給脈沖信號(hào)</p><p>
106、;<b> dat>>=1;</b></p><p> DQ = 1; // 給脈沖信號(hào)</p><p><b> if(DQ)</b></p><p> dat|=0x80;</p><p> delay2(4);</p><p><b>
107、 }</b></p><p> return(dat);</p><p><b> }</b></p><p><b> //寫一個(gè)字節(jié)</b></p><p> WriteOneChar(unsigned char dat)</p><p><b&
108、gt; {</b></p><p> unsigned char i=0;</p><p> for (i=8; i>0; i--)</p><p><b> {</b></p><p><b> DQ = 0;</b></p><p> DQ
109、= dat&0x01;</p><p> delay2(5);</p><p><b> DQ = 1;</b></p><p><b> dat>>=1;</b></p><p><b> }</b></p><p> d
110、elay2(4);</p><p><b> }</b></p><p><b> //讀取溫度</b></p><p> ReadTemperature(void)</p><p><b> {</b></p><p> unsigned c
111、har aa=0;</p><p> unsigned char bb=0;</p><p> unsigned char tt=0;</p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneCh
112、ar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換</p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度</p><p> aa=ReadOneChar
113、(); //讀取溫度值低位</p><p> bb=ReadOneChar(); //讀取溫度值高位</p><p> cc=aa<<4; //小數(shù)點(diǎn)</p><p> aa=aa>>4; //低位右移4位,舍棄小數(shù)部分</p><p> dd=bb>>4;
114、//符號(hào)</p><p> tt=bb<<4; //高位左移4位,舍棄符號(hào)位</p><p> tt=tt|aa; </p><p> return(tt);</p><p><b> }</b></p><p> 4.2
115、.3溫度數(shù)據(jù)轉(zhuǎn)化為顯示數(shù)據(jù)函數(shù)</p><p> void display_tempmain(unsigned char iit) //溫度數(shù)據(jù)轉(zhuǎn)化為顯示數(shù)據(jù)函數(shù)</p><p> { int i8,lei ;</p><p> uchar gewei,shiwei;</p><p><b> i
116、f(dd<0)</b></p><p><b> {</b></p><p> iit=~iit;cc=~cc; </p><p><b> }</b></p><p> cc=cc*625;</p><p> switch(cc/1000)
117、 //小數(shù)位</p><p><b> {</b></p><p><b> //讀取小數(shù)位的值</b></p><p><b> }</b></p><p> delay(20);</p><p> gewei=(int)iit%10;
118、</p><p> switch(gewei)//個(gè)位</p><p><b> {</b></p><p><b> //讀取個(gè)位數(shù)的值</b></p><p><b> }</b></p><p> delay(20);<
119、;/p><p> shiwei=(int)iit/10;</p><p> switch(shiwei) //十位</p><p><b> {</b></p><p><b> //讀取十位數(shù)的值</b></p><p><b> }<
120、/b></p><p> for(lei=0;lei<16;lei++)</p><p> wendu[0][lei]=kong[lei];</p><p> for(lei=0;lei<16;lei++)</p><p> wendu[1][lei]=kong[lei];</p><p>
121、 for(lei=0;lei<16;lei++)</p><p> wendu[2][lei]=fu[lei];//顯示“C”</p><p> for(lei=0;lei<16;lei++)</p><p> wendu[3][lei]=fen[lei];//顯示“°”</p><p> for(l
122、ei=0;lei<16;lei++)</p><p> wendu[4][lei]=shu1[lei];//顯示“小數(shù)位”</p><p> for(lei=0;lei<16;lei++)</p><p> wendu[5][lei]=dian[lei];//顯示“.”</p><p> for(lei=0;lei
123、<16;lei++)</p><p> wendu[6][lei]=shu2[lei];//顯示“個(gè)位”</p><p> for(lei=0;lei<16;lei++)</p><p> wendu[7][lei]=shu3[lei]; //顯示“十位”</p><p><b> }</b>
124、</p><p><b> 5 制作和調(diào)試</b></p><p> 5.1硬件制作和調(diào)試 </p><p> 硬件制作主要有三部分:電源模塊,單片機(jī)最小開發(fā)系統(tǒng)模塊和LED點(diǎn)陣顯示屏模塊。為了更好的了解掌握整個(gè)系統(tǒng)流程及硬件設(shè)計(jì)方法,整個(gè)硬件制作都由本人親自制作。為了與實(shí)際應(yīng)用接軌,使用PCB板制作完成整個(gè)硬件設(shè)計(jì)。</p>
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于51單片機(jī)的led點(diǎn)陣顯示屏-畢業(yè)論文
- 基于單片機(jī)的led顯示屏畢業(yè)論文
- 基于單片機(jī)控制的led點(diǎn)陣顯示屏系統(tǒng)【文獻(xiàn)綜述】
- 基于51單片機(jī)的led點(diǎn)陣顯示屏
- 基于單片機(jī)的led點(diǎn)陣顯示屏設(shè)計(jì)
- 基于單片機(jī)控制的led點(diǎn)陣顯示屏系統(tǒng)【開題報(bào)告】
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)控制的led點(diǎn)陣顯示屏設(shè)計(jì)論文
- 單片機(jī)畢業(yè)論文--基于單片機(jī)的led顯示屏設(shè)計(jì)
- 基于單片機(jī)的點(diǎn)陣漢字顯示屏的畢業(yè)論文
- 基于單片機(jī)的點(diǎn)陣漢字顯示屏的畢業(yè)論文
- 基于單片機(jī)的led點(diǎn)陣顯示屏設(shè)計(jì)【通信工程畢業(yè)論文】
- 基于單片機(jī)的led顯示屏設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文--基于51單片機(jī)的led點(diǎn)陣顯示屏系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于單片機(jī)的點(diǎn)陣led顯示屏的原理
- 畢業(yè)論文-基于單片機(jī)的led點(diǎn)陣顯示屏設(shè)計(jì)【精校排版】
- 單片機(jī)控制led顯示屏系統(tǒng)
- 基于單片機(jī)控制的led點(diǎn)陣顯示屏系統(tǒng)【任務(wù)書】
- 基于單片機(jī)的led點(diǎn)陣電子顯示屏設(shè)計(jì)
- 基于51單片機(jī)控制的點(diǎn)陣led電子顯示屏設(shè)計(jì)
- 基于單片機(jī)的點(diǎn)陣漢字顯示屏的畢業(yè)論文 (2)
評(píng)論
0/150
提交評(píng)論