基于avr單片機(jī)的花樣時(shí)鐘顯示 -_第1頁(yè)
已閱讀1頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  畢業(yè)設(shè)計(jì)題目:基于AVR單片機(jī)的花樣時(shí)鐘顯示</p><p><b>  畢</b></p><p><b>  業(yè)</b></p><p><b>  設(shè)</b></p><p><b>  計(jì)</b></p><

2、;p><b>  類別:三年制高職</b></p><p>  專業(yè):電子信息工程技術(shù)</p><p>  班級(jí):電子信息1001</p><p><b>  姓名:李全軍</b></p><p>  學(xué)校:河南工業(yè)職業(yè)技術(shù)學(xué)院</p><p>  基于AVR單片機(jī)的花

3、樣時(shí)鐘顯示</p><p><b>  摘要</b></p><p>  LED點(diǎn)陣顯示屏作為信息傳播的一種重要手段,具有亮度高、工作電壓低、功耗小、小型化、壽命長(zhǎng)、耐沖擊和性能穩(wěn)定等優(yōu)點(diǎn)。再加上集成電路的使用,LED點(diǎn)陣顯示屏的外圍電路變得越來(lái)越簡(jiǎn)單,性價(jià)比不斷攀升,舍得LED點(diǎn)陣顯示屏廣泛用于各行各業(yè)以及公共場(chǎng)所,成為了信息化時(shí)代不可缺少的信息發(fā)布工具。數(shù)字時(shí)鐘是

4、現(xiàn)代社會(huì)應(yīng)用廣泛的計(jì)時(shí)工具,在航天、電子等科研單位,工廠、醫(yī)院、學(xué)校等企事業(yè)單位,各種體育賽事及至我們每個(gè)人的日常生活中都發(fā)揮著重要的作用。LED點(diǎn)陣作為電子時(shí)鐘的顯示屏,最大的優(yōu)點(diǎn)在于其顯示內(nèi)容的多樣性,為用戶提供了靈活的人機(jī)交互界面。</p><p>  本文研究的是以ATmega16為核心控制器,從時(shí)鐘芯片中讀取實(shí)現(xiàn)信息,然后通過(guò)74HC595所控制的LED屏顯示出來(lái),在顯示的過(guò)程中添加了多種花樣效果,使得

5、顯示效果比較個(gè)性化。</p><p>  關(guān)鍵字:LED點(diǎn)陣;ATmega16;74HC595;花樣顯示</p><p>  Based on AVR MCU clock display pattern</p><p><b>  Abstract</b></p><p>  LED dot matrix display

6、 screen as the information transmission is a kind of important means, with high brightness, working voltage, low consumption, miniaturization, long service life, impact resistance and stable performance etc. Coupled with

7、 the use of integrated circuit, LED dot matrix display of the peripheral circuit is becoming more and more simple, price rising, be willing to part with or use of LED dot matrix display screen is widely used in all walks

8、 of life and public places, become the</p><p>  This paper studies on ATmega16 as the core controller, read from the clock chip to realize information, and then through the 74 hc595 control LED screen displa

9、y, in the process of display added a variety of pattern effect, make display effect more personalized. </p><p>  Key words: LED lattice; ATmega16; 74 hc595; Figure shows </p><p><b>  目錄<

10、;/b></p><p><b>  1 緒 論1</b></p><p>  2 硬件設(shè)計(jì)及功能介紹2</p><p>  2.1 功能介紹2</p><p>  2.2 硬件設(shè)計(jì)的電路2</p><p>  2.2.1 主控制電路圖2</p><p>

11、  2.2.2 32*64點(diǎn)陣顯示屏電路4</p><p>  3 各元器件的介紹8</p><p>  3.1各個(gè)模塊所需的元器件8</p><p>  3.2 ATmega16單片機(jī)的介紹8</p><p>  3.3 DS18B20溫度傳感器的介紹12</p><p>  3.3.1 DS18B20簡(jiǎn)介

12、12</p><p>  3.3.2 DS18B20的操作指令和溫度值寄存器14</p><p>  3.3.3 DS18B20的時(shí)序圖及部分代碼15</p><p>  3.4 DS1302時(shí)鐘芯片的介紹18</p><p>  3.4.1 DS1302簡(jiǎn)介18</p><p>  3.4.2 DS1302

13、的寄存器19</p><p>  3.4.3 DS1302的讀和寫時(shí)序以及部分代碼20</p><p>  3.5 74HC595的簡(jiǎn)介21</p><p>  4 軟件的設(shè)計(jì)23</p><p>  4.1 軟件設(shè)計(jì)的流程圖23</p><p>  4.2 DS18B20讀取負(fù)溫度時(shí)流程圖24</p

14、><p><b>  5 結(jié)論25</b></p><p><b>  6 參考文獻(xiàn)26</b></p><p><b>  7 附錄27</b></p><p>  7.1程序代碼27</p><p>  7.1.1 各I/O端口定義.h函數(shù):2

15、7</p><p>  7.1.2 74HC595定義的.h代碼和.c代碼:28</p><p>  7.1.3 DS1302時(shí)鐘芯片的.h和.c代碼:29</p><p>  7.1.4 DS18B20溫度傳感器.h和.c代碼:34</p><p>  7.1.5 主程序main()碼:........................

16、........45</p><p><b>  1 緒 論</b></p><p>  LED顯示屏(LED display):又叫電子顯示屏或者飄字屏幕。是由LED點(diǎn)陣組成,通過(guò)紅色或綠色燈珠的亮滅來(lái)顯示文字、圖片、動(dòng)畫、視頻,內(nèi)容可以隨時(shí)更換,各部分組件都是模塊化結(jié)構(gòu)的顯示器件。通常由顯示模塊、控制系統(tǒng)及電源系統(tǒng)組成。顯示模塊由LED燈組成的點(diǎn)陣構(gòu)成,負(fù)責(zé)發(fā)光

17、顯示;控制系統(tǒng)通過(guò)控制相應(yīng)區(qū)域的亮滅,可以讓屏幕顯示文字、圖片、視頻等內(nèi)容,恒舞動(dòng)卡主要是播放動(dòng)畫的;電源系統(tǒng)負(fù)責(zé)將輸入電壓電流轉(zhuǎn)為顯示屏需要的電壓電流。在目前的電子市場(chǎng)上的大部分的顯示設(shè)備都是這種產(chǎn)品,其最主要的特點(diǎn)是節(jié)能環(huán)保,而且畫質(zhì)清晰,符合閑著的消費(fèi)需求和理念。</p><p>  本次設(shè)計(jì)的顯示電路是由32個(gè)8*8LED點(diǎn)陣模塊組成的32*64點(diǎn)陣屏,可以同時(shí)顯示8個(gè)中文文字,做成時(shí)鐘顯示可以同時(shí)顯示時(shí)

18、間和年月日。由于單片機(jī)的工作速度相當(dāng)?shù)目?,尤其是高性能的ATmega16單片機(jī),速度為普通的AT89C51的12倍,所以為了節(jié)省其I\O口,該模塊的的驅(qū)動(dòng)芯片采用串行輸入并行輸出的74hc595,74HC595的工作頻率可達(dá)100M,所以完全可以滿足單片機(jī)的速度,及不影響顯示效果有節(jié)省的單片機(jī)的寶貴I\O端口。</p><p>  控制系統(tǒng)為atmel公司研制的ATmega16型單片機(jī),ATmega16是基于增強(qiáng)

19、的AVR RISC結(jié)構(gòu)的低功耗8 位CMOS微控制器。由于其先進(jìn)的指令集以及單時(shí)鐘周期指令執(zhí)行時(shí)間,ATmega16 的數(shù)據(jù)吞吐率高達(dá)1 MIPS/MHz,從而可以減緩系統(tǒng)在功耗和處理速度之間的盾。</p><p>  2 硬件設(shè)計(jì)及功能介紹</p><p><b>  2.1 功能介紹</b></p><p>  本電路利用Atmel公司生產(chǎn)

20、的ATmega16型單片機(jī)作為控制核心,DS1302時(shí)鐘芯片作為時(shí)鐘輸入,DS18B20溫度傳感器作為溫度輸入,然后經(jīng)ATmega16綜合的運(yùn)算送入由74HC595控制的32*64點(diǎn)陣屏上顯示。32*64點(diǎn)陣屏分上下兩部分顯示:上半部分顯示年月日、星期和溫度字樣;下半部分顯示時(shí)分秒和溫度值。</p><p>  功能效果為:在開(kāi)始時(shí)刻,年月日不顯示,時(shí)分秒由右邊移出,隨后上半屏顯示年月日,過(guò)8秒之后,上半屏切換至

21、星期,下半屏的時(shí)分秒照常顯示,再過(guò)8秒,上半屏的星期和下半屏的時(shí)分秒消失,溫度字樣和溫度數(shù)值緩慢移入,其中溫度字樣自上到下移入,溫度值自下到上移入,在移入的過(guò)程中,溫度字樣和溫度值同步移動(dòng)。隨后3秒之后溫度移出,溫度字樣自下到上移出,溫度值自上到下移出,在移出過(guò)程中,溫度字樣和溫度值同步移動(dòng)。溫度的顯示范圍為--9.9~+99.9。</p><p>  2.2 硬件設(shè)計(jì)的電路</p><p&g

22、t;  本設(shè)計(jì)硬件電路分4部分介紹:圖3.2.1為主控制電路,主要功能是負(fù)責(zé)從溫度傳感器和時(shí)鐘芯片中讀取信息,通過(guò)刷新點(diǎn)陣屏顯示出來(lái)時(shí)間、溫度信息;圖3.2.2(a)為32*64點(diǎn)陣模塊行掃描的74HC595的連接電路圖;圖3.2.2(b)為32*64點(diǎn)陣屏列數(shù)據(jù)傳送的74HC595的連接電路圖,主要傳送要每行要顯示的字模信息;圖3.2.2(c)為32*64點(diǎn)陣上半屏的插槽排列及行控三極管的排列及連接圖;圖3.2.2(d)為32*64點(diǎn)

23、陣下半屏的插槽排列及行控三極管的排列及連接圖;</p><p>  2.2.1 主控制電路圖</p><p>  在本設(shè)計(jì)中所用到控制單元有:ds18b20、ds1302、ATmega16單片機(jī)及其復(fù)位電路、SPI下載接口及電源接口,具體各部分連接如下圖所示:</p><p>  2.2.2 32*64點(diǎn)陣顯示屏電路</p><p>  點(diǎn)陣

24、屏電路由20塊74HC595控制,其中16塊控制列,用于給點(diǎn)陣屏送顯示數(shù)據(jù),總共有128列,每列串聯(lián)一個(gè)100歐的電阻,總共128個(gè)電阻。剩下的4塊控制行,32行,每行接一個(gè)S8550PNP三極管,用于擴(kuò)大電流,然后32個(gè)S8550三極管由剩下這四個(gè)74HC595送數(shù)據(jù),來(lái)輪流導(dǎo)通每一行。控制行的74HC595的接法如圖所示:</p><p>  控制列的16塊74HC595的接法如下圖所示:</p>

25、<p>  每個(gè)74HC595的SCLR(10腳)接VCC;OE(13腳)接GND;20塊74HC595連接好之后,最終的接口為8個(gè),1為電源、2為電源地、3、下半屏列數(shù)據(jù)輸入端4、列數(shù)據(jù)輸入時(shí)鐘線5、輸出數(shù)據(jù)時(shí)鐘線6、上半屏列數(shù)據(jù)輸入端7、行數(shù)據(jù)輸入端8、行數(shù)據(jù)輸入時(shí)鐘線。</p><p>  圖2.2.2(c)、2.2.2(d)分別是上半屏數(shù)據(jù)傳送的電路圖及各個(gè)8*8點(diǎn)陣模塊的排列順序,其中PN

26、P三極管控制行,例如Q1:當(dāng)r1為低電平0時(shí),該三極管導(dǎo)通,即第一行選通,然后刷新數(shù)據(jù),其余三極管工作方法與其相同,各自在基極來(lái)低電平時(shí)選通所對(duì)應(yīng)的行。</p><p><b>  3 各元器件的介紹</b></p><p>  3.1各個(gè)模塊所需的元器件</p><p>  3.2 ATmega16單片機(jī)的介紹</p><

27、p>  ATmega16 AVR 內(nèi)核具有豐富的指令集和32 個(gè)通用工作寄存器。所有的寄存器都直接與運(yùn)算邏單元(ALU) 相連接,使得一條指令可以在一個(gè)時(shí)鐘周期內(nèi)同時(shí)訪問(wèn)兩個(gè)獨(dú)立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的CISC 微控制器最高至10 倍的數(shù)據(jù)吞吐率。 ATmega16 有如下特點(diǎn):16K字節(jié)的系統(tǒng)內(nèi)可編程Flash(具有同</p><p>  時(shí)讀寫的能力,即RWW),

28、512字節(jié)EEPROM,1K字節(jié)SRAM,32 個(gè)通用I/O口線,32個(gè)通用工作寄存器,用于邊界掃描的JTAG接口,支持片內(nèi)調(diào)試與編程,三個(gè)具有比較模式的靈活的定時(shí)器/計(jì)數(shù)器(T/C),片內(nèi)/外中斷,可編程串行USART,有起始條件檢測(cè)器的通用串行接口,8路10位具有可選差分輸入級(jí)可編程增益(TQFP 封裝)的ADC ,具有片內(nèi)振蕩器的可編程看門狗定時(shí)器,一個(gè)SPI串行端口,以及六個(gè)可以通過(guò)軟件進(jìn)行選擇的省電模式。 工作于空閑模式時(shí)CP

29、U停止工作,而USART、兩線接口、A/D轉(zhuǎn)換器、SRAM、T/C、SPI端口以及中斷系統(tǒng)繼續(xù)工作;掉電模式時(shí)晶體振蕩器停止振蕩,所有功能除了中斷和硬件復(fù)位之外都停止工作;在省電模式下,異步定時(shí)器繼續(xù)運(yùn)行,允許用戶保持一個(gè)時(shí)間基準(zhǔn),而其余功能模塊處于休眠狀態(tài);ADC噪聲抑制模式時(shí)終止CPU 和除了異步定時(shí)器與ADC以外所有I/O模塊的工作,以降低ADC轉(zhuǎn)換時(shí)的開(kāi)關(guān)噪聲;Standby模式下只有晶體或諧振振蕩器運(yùn)行,其余功能模塊處于休眠狀

30、態(tài),使得器件只消耗極少的電流,同時(shí)具有快速啟動(dòng)能力;擴(kuò)展Standby模式下則允許振蕩器和異步</p><p>  工作于空閑模式時(shí)CPU 停止工作,而USART、兩線接口、A/D 轉(zhuǎn)換器、SRAM、T/C、SPI 端口以及中斷系統(tǒng)繼續(xù)工作;掉電模式時(shí)晶體振蕩器停止振蕩,所有功能除了中斷和硬件復(fù)位之外都停止工作;在省電模式下,異步定時(shí)器繼續(xù)運(yùn)行,允許用戶保持一個(gè)時(shí)間基準(zhǔn),而其余功能模塊處于休眠狀態(tài); ADC 噪聲

31、抑制模式時(shí)終止CPU 和除了異步定時(shí)器與ADC 以外所有I/O 模塊的工作,以降低ADC 轉(zhuǎn)換時(shí)的開(kāi)關(guān)噪聲; Standby 模式下只有晶體或諧振振蕩器運(yùn)行,其余功能模塊處于休眠狀態(tài),使得器件只消耗極少的電流,同時(shí)具有快速啟動(dòng)能力;擴(kuò)展Standby 模式下則允許振蕩器和異步定時(shí)器繼續(xù)工作。 </p><p>  本芯片是以Atmel 高密度非易失性存儲(chǔ)器技術(shù)生產(chǎn)的。片內(nèi)ISP Flash 允許程序存儲(chǔ)器通過(guò)IS

32、P 串行接口,或者通用編程器進(jìn)行編程,也可以通過(guò)運(yùn)行于AVR 內(nèi)核之中的引導(dǎo)程序進(jìn)行編程。引導(dǎo)程序可以使用任意接口將應(yīng)用程序下載到應(yīng)用Flash存儲(chǔ)區(qū)(ApplicationFlash Memory)。在更新應(yīng)用Flash存儲(chǔ)區(qū)時(shí)引導(dǎo)Flash區(qū)(Boot Flash Memory)的程序繼續(xù)運(yùn)行,實(shí)現(xiàn)了RWW 操作。 通過(guò)將8 位RISC CPU 與系統(tǒng)內(nèi)可編程的Flash 集成在一個(gè)芯片內(nèi), ATmega16 成為一個(gè)功能強(qiáng)大的單片

33、機(jī),為許多嵌入式控制應(yīng)用提供了靈活而低成本的解決方案</p><p>  ATmega16引腳圖ATmega16各端口的功能</p><p><b>  端口A的第二功能</b></p><p>  3.3 DS18B20溫度傳感器的介紹</p><p>  3.3.1 DS18B20簡(jiǎn)介</p><

34、p>  DS18B20是DALLAS公司生產(chǎn)的一種“單總線”溫度傳感器,它采用獨(dú)特的單線接口方式,僅需要一個(gè)端口引腳來(lái)發(fā)送或接收信息,在MCU和DS18B20之間僅需一條數(shù)據(jù)線。</p><p>  每一個(gè)DSl820包括一個(gè)唯一的64位長(zhǎng)的序號(hào)該序號(hào)值存放在DSl820內(nèi)部的ROM(只讀存貯器)中開(kāi)始8位是產(chǎn)品類型編碼(DSl820編碼均為10H)接著的48位是每個(gè)器件唯一的序號(hào)最后8位是前面56位的CR

35、C(循環(huán)冗余校驗(yàn))碼。所以可以將多個(gè)DS18B20同時(shí)連在一根總線上,進(jìn)行簡(jiǎn)單的多點(diǎn)分布測(cè)量不同點(diǎn)的溫度值。</p><p>  DS18B20極為小巧,大小和一個(gè)普通的三極管相當(dāng),所以在溫度測(cè)量方面有著比較廣泛的應(yīng)用,包括溫度的控制,工業(yè)系統(tǒng),消費(fèi)電子,溫度計(jì)以及其他的熱感應(yīng)系統(tǒng)。</p><p>  DS18B20內(nèi)部有三個(gè)主要數(shù)字部件:64位激光ROM,溫度傳感器,非易失性溫度報(bào)警觸

36、發(fā)器TH和TL。</p><p>  DS18B20可以采用寄生電源方式工作,從單總線上汲取能量,在信號(hào)線處于高電平期間把能量?jī)?chǔ)存在內(nèi)部電容里,在信號(hào)線處于低電平期間利用電容上的電能工作,直到高電平到來(lái)再給寄生電源充電,DS18B20也可以用外部電源,電壓為3~5.5V電源供電。采用外部電源供電的標(biāo)準(zhǔn)接法為</p><p>  3.3.2 DS18B20的操作指令和溫度值寄存器</p

37、><p>  DS18B20依靠一個(gè)單總線端口通信,必須先建立ROM操作協(xié)議才能進(jìn)行存儲(chǔ)器和控制器的操作。因此主機(jī)(MCU)必須先提供以下5個(gè)ROM操作指令:</p><p>  讀出ROM,代碼為33H,用于讀出DS18B20的序列號(hào),即64位激光ROM代碼。</p><p>  匹配ROM,代碼為55H,用于識(shí)別或選中某一特定的DS18B20進(jìn)行操作。</p&

38、gt;<p>  搜索ROM,代碼為F0H,用于確定總線上的節(jié)點(diǎn)數(shù)以及所有節(jié)點(diǎn)的序列號(hào)。</p><p>  跳過(guò)ROM,代碼為CCH,命令發(fā)出后系統(tǒng)將對(duì)所有的DS18B20進(jìn)行操作,通常用于啟動(dòng)所有DS18B20轉(zhuǎn)換之前或系統(tǒng)中僅有一個(gè)DS18B20時(shí)。</p><p>  報(bào)警搜索,代碼為ECH,主要用于鑒別和定位系統(tǒng)中超出程序設(shè)定的報(bào)警溫度界限的節(jié)點(diǎn)。</p>

39、;<p>  溫度轉(zhuǎn)換,代碼為44H,用于啟動(dòng)DS18B20進(jìn)行溫度測(cè)量,溫度轉(zhuǎn)換命令被執(zhí)行后,DS18B20保持等待狀態(tài)。如果主機(jī)在這條命令之后跟著發(fā)出讀時(shí)間隙,而DS18B20又忙于做溫度轉(zhuǎn)換的話,DS18B20將在總線上輸出“0”,若溫度轉(zhuǎn)換完成,則輸出“1”。</p><p>  讀暫存器,代碼為BEH,用于讀取暫存器中的內(nèi)容,從字節(jié)0開(kāi)始最多可以讀取9個(gè)字節(jié),如果不想讀完所有字節(jié),主機(jī)可以

40、在任何時(shí)間發(fā)出復(fù)位命令來(lái)終止讀取。</p><p>  寫暫存器,代碼為4EH,用于將數(shù)據(jù)寫入到DS18B20暫存器的地址2和地址3(TH和TL字節(jié))??梢栽谌魏螘r(shí)刻發(fā)出復(fù)位命令來(lái)終止寫入。</p><p>  復(fù)制暫存器,代碼為48H,用于將暫存器的內(nèi)容復(fù)制到DS18B20的非易失性EERAM,即把溫度報(bào)警觸發(fā)字節(jié)存入到非易失性存儲(chǔ)器里。</p><p>  重讀

41、EERAM,代碼為B8H,用于將存儲(chǔ)器在非易失性EERAM中的內(nèi)容重新讀入到暫存器中。</p><p>  讀電源,代碼為B4H,用于將DS18B20的供電方式信號(hào)發(fā)送到主機(jī)。若在這條命令發(fā)出之后發(fā)出讀時(shí)間隙,DS18B20將返回它的供電方式:“0”=寄生電源,“1”=外部電源。</p><p>  DS18B20的溫度寄存器如圖所示</p><p>  其中中高字

42、節(jié)MSB中的前5位位溫度符號(hào)位,S全為0表示正溫度,全為1表示負(fù)溫度。</p><p>  3.3.3 DS18B20的時(shí)序圖及部分代碼</p><p>  DS18B20的初始化時(shí)序圖</p><p>  DS18B20的寫“0”和寫“1”時(shí)序圖</p><p><b>  寫代碼為:</b></p>&

43、lt;p>  DS18B20的讀 “0”和讀“1”時(shí)序圖</p><p><b>  讀代碼為</b></p><p>  3.4 DS1302時(shí)鐘芯片的介紹</p><p>  3.4.1 DS1302簡(jiǎn)介</p><p>  DS1302是美國(guó)DALLAS公司推出了一種串行接口實(shí)時(shí)時(shí)鐘芯片。芯片內(nèi)部具有可編程日

44、歷時(shí)鐘和31個(gè)字節(jié)的靜態(tài)RAM,日歷時(shí)鐘可自動(dòng)進(jìn)行閏年補(bǔ)償,計(jì)時(shí)準(zhǔn)確,接口簡(jiǎn)單,使用方便,工作電壓范圍寬(2.5---5.5V),</p><p>  功耗低,芯片自身還具有對(duì)備份電池進(jìn)行涓流充電功能,可以有效地延長(zhǎng)備份電池的使用壽命。</p><p>  如圖所示為DS1302的引腳及封裝圖,單片機(jī)與DS1302之間采用3線串行通信方式,CE為通信允許信號(hào),CE=1允許通信,CE=0,禁

45、止通信。I/O為雙向串行數(shù)據(jù)傳送信號(hào)引腳,SCLK為串行數(shù)據(jù)的位同步脈沖信號(hào)引腳,單片機(jī)作為主機(jī)控制CE,SCLK,和I/O信號(hào)實(shí)現(xiàn)兩芯片之間的數(shù)據(jù)傳送。</p><p>  DS1302芯片的X1和X2端外接32.768KHZ的石英晶振,VCC1和VCC2是電源引腳,單電源供電時(shí)接VCC腳,雙電源供電時(shí)主電源接VCC2,備份電池接VCC1,如果采用可充電鎘鎳電池,可啟用內(nèi)部涓流充電器在主電源正常時(shí)向電池充電,以

46、延長(zhǎng)電池的使用時(shí)間。備份電池也可以用1微法以上的超容量電容代替,需要注意備份電池電壓應(yīng)略低于住電源工作電壓。</p><p>  DS1302與單片機(jī)進(jìn)行數(shù)據(jù)交換時(shí),首先由單片機(jī)向電路發(fā)送命令字節(jié),命令字節(jié)最高位Write Protect(D7)必須為邏輯1,如果D7=0,則禁止寫DS1302,即寫保護(hù);D6=0,指定時(shí)鐘數(shù)據(jù),D6=1,指定RAM數(shù)據(jù);D5~</p><p>  D1指定

47、輸入或輸出的特定寄存器;最低位LSB(D0)為邏輯0,指定寫操作(輸入), D0=1,指定讀操作(輸出)。 </p><p>  在DS1302的時(shí)鐘日歷或RAM進(jìn)行數(shù)據(jù)傳送時(shí),DS1302必須首先發(fā)送命令字節(jié)。若進(jìn)行單字節(jié)傳送,8位命令字節(jié)傳送結(jié)束之后,在下2個(gè)SCLK周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8個(gè)SCLK周期的下降沿輸出數(shù)據(jù)字節(jié)。 </p><p>  DS1302與RAM相關(guān)的

48、寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM寄存器,在此方式下可一次性讀、寫所有的RAM的31個(gè)字節(jié)。</p><p>  3.4.2 DS1302的寄存器</p><p>  DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其

49、日歷、時(shí)間寄存器及其控制字見(jiàn)表1。 </p><p>  此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄

50、存器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。</p><p>  DS1302的時(shí)間寄存器</p><p>  3.4.3 DS1302的讀和寫時(shí)序以及部分代碼</p><p>  DS1302的寫時(shí)序圖</p><p>  DS1302寫一個(gè)字節(jié)代碼如下:</p><p&g

51、t;  DS1302的讀時(shí)序圖</p><p>  需要注意的是:在讀的時(shí)候需要往DS1302中寫一個(gè)字節(jié)的數(shù)據(jù),此數(shù)據(jù)為要讀的地址,當(dāng)寫完之后,緊接著的下降沿時(shí)鐘信號(hào)DS1302就開(kāi)始傳出數(shù)據(jù),注意數(shù)據(jù)的接受,不然將會(huì)漏掉數(shù)據(jù)。</p><p>  DS1302的讀字節(jié)代碼如下</p><p>  需要注意的的是:DS1302寫一個(gè)字節(jié)和讀一個(gè)字節(jié)都是低位在前高位

52、在后;</p><p>  3.5 74HC595的簡(jiǎn)介</p><p>  74HC595芯片是一種串入并出的芯片,在電子顯示屏制作當(dāng)中有廣泛的應(yīng)用。 74HC595是8位串行輸入/輸出或者并行輸出移位寄存器,具有高阻、關(guān)、斷狀態(tài)。 三態(tài)。特點(diǎn) 8位串行輸入 8位串行或并行輸出 存儲(chǔ)狀態(tài)寄存器,三種狀態(tài) 輸出寄存器可以直接清除 100MHz的移位頻率 輸出能力 并行輸出,總線驅(qū)動(dòng) 串行輸

53、出; 標(biāo)準(zhǔn) 中等規(guī)模集成電路應(yīng)用 串行到并行的數(shù)據(jù)轉(zhuǎn)換 Remote control holding register. 描述 595是告訴的硅結(jié)構(gòu)的CMOS器件, 兼容低電壓TTL電路,遵守JEDEC標(biāo)準(zhǔn)。 595是具有8位移位寄存器和一個(gè)存儲(chǔ)器,三態(tài)輸出功能。 移位寄存器和存儲(chǔ)器是分別的時(shí)鐘。數(shù)據(jù)在SCHcp的上升沿輸入,在STcp的上升沿進(jìn)入的存儲(chǔ)寄存器中去。如果兩個(gè)時(shí)鐘連在一起,則移位寄存器總是比存儲(chǔ)寄存器早一個(gè)脈沖。 移位寄

54、存器有一個(gè)串行移位輸入(Ds),和一個(gè)串行輸出(Q7’),和一個(gè)異步的低電平復(fù)位,存儲(chǔ)寄存器有一個(gè)并行8位的,具備三態(tài)的總線輸出,當(dāng)使能OE時(shí)(為低電平),存儲(chǔ)寄存器的數(shù)據(jù)輸出到總線</p><p>  74HC595引腳圖:</p><p><b>  4 軟件的設(shè)計(jì)</b></p><p>  4.1 軟件設(shè)計(jì)的流程圖4.2 DS18B20

55、讀取負(fù)溫度時(shí)流程圖</p><p>  該部分為溫度算法判斷子程序流程圖,根據(jù)高位(j&0xf8)是否為0xf8來(lái)選擇具體的算法程序。</p><p><b>  5 結(jié)論</b></p><p>  本文研究了以ATmega16作為控制核心的32*64點(diǎn)陣屏,用于時(shí)間和溫度的顯示。剛開(kāi)始時(shí)準(zhǔn)備用AT89C52來(lái)做控制單元,但經(jīng)過(guò)實(shí)踐發(fā)

56、現(xiàn),由于刷新32*64點(diǎn)陣屏要求單片機(jī)的運(yùn)算頻率較高,只要刷新速率夠快才能不產(chǎn)生閃動(dòng)的現(xiàn)象,AT89C52型單片機(jī)并不能勝任這項(xiàng)任務(wù),因?yàn)樗總€(gè)指令周期是經(jīng)過(guò)時(shí)鐘的12分頻所得到的,而且它最高支持24M晶振,這就大大限制的它的工作速率。況且要實(shí)現(xiàn)這些功能,程序代碼頁(yè)比較多,AT95C52的內(nèi)存也不夠,經(jīng)過(guò)查資料得知,發(fā)現(xiàn)ATmega16這款A(yù)VR型單片機(jī)可以勝任這項(xiàng)任務(wù)。經(jīng)過(guò)這幾個(gè)月的努力學(xué)習(xí)和研究,加上老師的指導(dǎo),基本上學(xué)會(huì)了使用AT

57、mega16這款單片機(jī),使用它對(duì)點(diǎn)陣屏的刷新、對(duì)DS1302時(shí)鐘芯片的讀取和對(duì)DS18B20溫度傳感器的讀取相當(dāng)輕松,為何使它的速率更高,本設(shè)計(jì)給ATmega16單片機(jī)使用了12M的晶振,使它擁有每秒可以執(zhí)行12x106次方條指令。但是由于刷新點(diǎn)陣屏所需的程序比較大,還有顯示需要的字模比較多,加上DS1302、DS18B20的讀取程序,最后使得ATmega16單片機(jī)的內(nèi)存也被用完,導(dǎo)致本設(shè)計(jì)沒(méi)能夠加上調(diào)時(shí)鬧鐘功能。還有就</p&g

58、t;<p>  在本設(shè)計(jì)即將完成之際,我首先要感謝我的指導(dǎo)老師劉彥華老師,感謝老師對(duì)我的耐心幫助和指導(dǎo)。從論文的選題、理論的研究、硬件的設(shè)計(jì),軟件的設(shè)計(jì)思路和論文的編寫、修改及定稿等各個(gè)環(huán)節(jié)嚴(yán)格要求,使我在學(xué)習(xí)過(guò)程中受益匪淺。</p><p><b>  6 參考文獻(xiàn)</b></p><p>  [1] 鄒益民 《單片機(jī)C語(yǔ)言教程》 中國(guó)石化出版社。&l

59、t;/p><p>  [2] 劉志民 《電路分析》(第三版) 西安電子科技大學(xué)出版社。</p><p>  [3] 胡宴如 《模擬電子技術(shù)》(第三版) 高等教育出版社。</p><p>  [4] 張大彪 《電子測(cè)量技術(shù)與儀器》 電子工業(yè)出版社。</p><p>  [5] 張文濤 《PROTEUS仿真軟件應(yīng)用》 華中科技大學(xué)出版社。</p

60、><p>  [6] 楊志忠 《數(shù)字電子技術(shù)》 高等教育出版社。</p><p>  [7] 王川 《實(shí)用電源技術(shù)》 重慶大學(xué)出版社。</p><p>  [8] 霖風(fēng) 51單片機(jī)到ARM征服嵌入式之AVR篇。</p><p>  [9] 胡應(yīng)占 《Altium Designer 6 電路設(shè)計(jì)實(shí)用教程》 河南科學(xué)技術(shù)出版社。</p>

61、<p>  [10] 杜橫 《C語(yǔ)言程序設(shè)計(jì)》(理實(shí)一體化教程) 機(jī)械工業(yè)出版社。</p><p>  [11] 百度文庫(kù) Baidu Library。</p><p>  [12] 百度百科 Baidu Encyclopedia。</p><p><b>  7 附錄</b></p><p>  7.1

62、.1 程序代碼</p><p>  由于程序代碼比較長(zhǎng),所以本設(shè)計(jì)采用模塊化編程,各模塊的代碼如下</p><p>  7.1.1 各I/O端口定義.h函數(shù):</p><p>  7.1.2 74HC595定義的.h代碼和.c代碼:</p><p><b>  .h代碼</b></p><p>&

63、lt;b>  .c代碼:</b></p><p>  }else{ser0;}srcl0;srcl1;DATA=DATA>>1;}} void write_595s(uchar DATA) //向點(diǎn)陣屏上部分595寫一個(gè)字節(jié)的數(shù)據(jù){uchar i;for(i=0;i<8;i++){if(DATA&0

64、x01){serl1;}else{serl0;}srcl0;srcl1;DATA=DATA>>1;}}</p><p>  7.1.3 DS1302時(shí)鐘芯片的.h和.c代碼:</p><p><b>  .h代碼</b></p><p>  #ifndef __DS1

65、302_H__ #define __DS1302_H__ #include"definition.h"</p><p>  uchar shi,fen,miao,ri,yue,nian,xingqi; uint num; void write_ds1302_byte(uchar Dat); uchar read_ds1302(uchar add); void write_ds130

66、2(uchar add,uchar Dat); void set_sz(void); extern void read_sz(void); void write_suffx(uchar *q,uchar (*p)[16]); void zuoyix(uchar (*a)[16],uchar *b); extern void shua1(uchar (*p)[16]); extern void shua2(uchar (*q)

67、[16],uchar (*p)[16]); extern void timein(uchar *suf,uchar (*shuj)[16]); #endif</p><p><b>  .c代碼</b></p><p>  7.1.4 DS18B20溫度傳感器.h和.c代碼:</p><p><b>  .h代碼</b&

68、gt;</p><p>  #ifndef __DS18B20_H__ #define __DS18B20_H__ #include"definition.h" uint temperature; uchar j0,j1,flag; void delay_1us(void);</p><p>  void delay_nus(uint n); uc

69、har ds18b20_reset(void); void ds18b20_write_byte(uchar dat); uchar ds18b20_read_byte(void); uint read_temp(void); void wsuff(uchar *q,uchar (*p)[16],uchar (*w)[48]); void shangyi(uchar (*w)[48],uchar *q); void shan

70、gyi1(uchar (*w)[48],uchar *q); extern void wendushua(uchar (*w)[48],uchar (*p)[16]); extern void wenduin(uchar *suf,uchar (*shuj)[16],uchar (*wend)[48]); extern void wenduout(uchar *suf,uchar (*shuj)[16],uchar (*wend)

71、[48]); #endif</p><p><b>  .c代碼:</b></p><p>  i=DQr;delay_nus(500);return i;}void ds18b20_write_byte(uchar dat){ uchar i; for(i=0;i<8;i++) { DQout; DQ0; delay_nus(10

72、); if(dat&0x01) { DQ1; } delay_nus(100); DQ1; dat=dat>>1; }}uchar ds18b20_read_byte(void){ uchar i,value; for(i=0;i<8;i++) { value=value>>1;DQout; DQ0; delay_nus(10); DQ1; DQ

73、in; NOP(); if(DQr) { value|=0x80; } delay_nus(50); } return value;}uint read_temp(void){uchar i,j;uint temp; ds18b20_reset(); ds18b20_write_byte(</p><p>  bai=temperature/100;if((bai=

74、=0)&&(flag==0)) bai=11;for(i=0;i<16;i++){ q[j0]=0xff; if(flag==1) { q[j1]=(*(*(p+11)+i)); }else {if((temperature/100)==0) { q[j1]=(0xff);}else{ q[j1]=(*(*(p+(temperature/10

75、0))+i)); } }</p><p>  q[j0+32]=0xff; q[j1+32]=(*(*(p+(temperature%100/10))+i)); q[j0+64]=0xff; q[j1+64]=(*(*(p+12)+i));; q[j0+96]=0xff; q[j1+96]=(*(*(p+(temperature%10))+i));; q[j0+128]=0

76、xff; q[j1+128]=(*(*(w+4)+(i+16))); q[j0+160]=0xff; q[j1+160]=(*(*(w+4)+(i+32))); j0++; j1++;}}void shangyi(uchar (*w)[48],uchar *q){ uchar i,j,a,num1,num2; num1=0;num2=32; for(a=0;a<16;a++) {for(j=0;j&l

77、t;5;j++){serh0; for(i=0;i<16;i++) { srch0; srch1; write_595s(0xff); write_595s(0xff); write_595s(*(*(w</p><p>  write_595x(q[i+num1+64]); write_595x(q[i+num1+96]); write_595x(q[i+num1+128])

78、; write_595x(q[i+num1+160]); write_595x(0xff); rc0; rc1; delay(1); serh1; }}num1--;num2++;}}void wendushua(uchar (*w)[48],uchar (*p)[16]){uchar i, bai;bai=temperature/100; serh0; for(i=0;i<16;i++)

79、{ srch0; srch1; write_595s(0xff); write_595s(0xff); write_595s(*(*(w+0)+(i+16))); write_595s(*(*(w+1)+(i+16))); write_595s(*(*(w+2)+(i+16)));</p><p>  write_595s(*(*(w+3)+(i+16))); write_595s(0xf

80、f); write_595s(0xff); rc0; rc1; delay(5); serh1; } for(i=0;i<16;i++) { srch0; srch1; write_595x(0xff); if(flag==1){ write_595x(*(*(p+11)+i)); }else{ if(bai==0) { write_595x(0xff);

81、}else{ write_595x(*(*(p+(bai))+i));} } write_595x(*(*(p+(temperature%100/10))+i)); write_595x(*(*(p+12)+i)); write_595x(*(*(p+(temperature%10))+i)); write_595x(*(*(w+4)+(i+16))); write_595x(*(*(w+4)+

82、(i+32))); write_5</p><p>  for(l=0;l<100;l++)</p><p>  {read_sz();for(k=0;k<6;k++)shua1(shuju);}for(l=0;l<100;l++){read_sz();for(k=0;k<6;k++)shua2(week,shuju);}wenduin(s

溫馨提示

  • 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ù)僅提供信息存儲(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)論