2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

5、顯示效果比較個性化。</p><p>  關(guān)鍵字:LED點陣;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è)計及功能介紹2</p><p>  2.1 功能介紹2</p><p>  2.2 硬件設(shè)計的電路2</p><p>  2.2.1 主控制電路圖2</p><p>

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

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

13、的寄存器19</p><p>  3.4.3 DS1302的讀和寫時序以及部分代碼20</p><p>  3.5 74HC595的簡介21</p><p>  4 軟件的設(shè)計23</p><p>  4.1 軟件設(shè)計的流程圖23</p><p>  4.2 DS18B20讀取負(fù)溫度時流程圖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時鐘芯片的.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點陣組成,通過紅色或綠色燈珠的亮滅來顯示文字、圖片、動畫、視頻,內(nèi)容可以隨時更換,各部分組件都是模塊化結(jié)構(gòu)的顯示器件。通常由顯示模塊、控制系統(tǒng)及電源系統(tǒng)組成。顯示模塊由LED燈組成的點陣構(gòu)成,負(fù)責(zé)發(fā)光

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

18、間和年月日。由于單片機(jī)的工作速度相當(dāng)?shù)目?,尤其是高性能的ATmega16單片機(jī),速度為普通的AT89C51的12倍,所以為了節(jié)省其I\O口,該模塊的的驅(qū)動芯片采用串行輸入并行輸出的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)的指令集以及單時鐘周期指令執(zhí)行時間,ATmega16 的數(shù)據(jù)吞吐率高達(dá)1 MIPS/MHz,從而可以減緩系統(tǒng)在功耗和處理速度之間的盾。</p><p>  2 硬件設(shè)計及功能介紹</p><p><b>  2.1 功能介紹</b></p><p>  本電路利用Atmel公司生產(chǎn)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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位移位寄存器和一個存儲器,三態(tài)輸出功能。 移位寄存器和存儲器是分別的時鐘。數(shù)據(jù)在SCHcp的上升沿輸入,在STcp的上升沿進(jìn)入的存儲寄存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。 移位寄

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

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

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

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

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

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

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

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

62、.1 程序代碼</p><p>  由于程序代碼比較長,所以本設(shè)計采用模塊化編程,各模塊的代碼如下</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) //向點陣屏上部分595寫一個字節(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時鐘芯片的.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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論