濟(jì)南大學(xué)通信工程大四生產(chǎn)實(shí)習(xí)綜合實(shí)訓(xùn)報(bào)告2015_第1頁(yè)
濟(jì)南大學(xué)通信工程大四生產(chǎn)實(shí)習(xí)綜合實(shí)訓(xùn)報(bào)告2015_第2頁(yè)
濟(jì)南大學(xué)通信工程大四生產(chǎn)實(shí)習(xí)綜合實(shí)訓(xùn)報(bào)告2015_第3頁(yè)
濟(jì)南大學(xué)通信工程大四生產(chǎn)實(shí)習(xí)綜合實(shí)訓(xùn)報(bào)告2015_第4頁(yè)
濟(jì)南大學(xué)通信工程大四生產(chǎn)實(shí)習(xí)綜合實(shí)訓(xùn)報(bào)告2015_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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、生產(chǎn)實(shí)習(xí)綜合實(shí)訓(xùn)學(xué) 院 信息科學(xué)與工程學(xué)院 專 業(yè) 通信工程 班 級(jí) 學(xué) 生 指導(dǎo)老師 趙國(guó)毅、李念強(qiáng)、崔世耀、溫宇 二一五年九月十日一、 實(shí)習(xí)目的1. 通過(guò)課程設(shè)計(jì)的教學(xué)實(shí)踐,將課本所學(xué)應(yīng)用于實(shí)際中,縮小理論與實(shí)際的差距,進(jìn)一步學(xué)習(xí)掌握單片機(jī)應(yīng)用系統(tǒng)的有關(guān)知識(shí),加深了解單片機(jī)的工作原理。2. 初步掌握簡(jiǎn)單單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì),制作,調(diào)試的方法。使自己的設(shè)計(jì)水平和對(duì)所學(xué)的知識(shí)的應(yīng)用能力以及分析問(wèn)題解決問(wèn)題的能力得到全面提高。二、 內(nèi)容要求1、實(shí)習(xí)要求 認(rèn)識(shí)Altium_Designer軟件并且熟練使用。 根據(jù)實(shí)驗(yàn)原理畫(huà)出最小系統(tǒng)和電源控制板模型。 使用相關(guān)工具對(duì)電路板進(jìn)行焊接。 對(duì)焊接完成的電

2、路板進(jìn)行調(diào)試。 根據(jù)實(shí)驗(yàn)原理畫(huà)出萬(wàn)年歷的電路板模型。2、實(shí)習(xí)內(nèi)容最小系統(tǒng) 實(shí)驗(yàn)原理圖重點(diǎn)元器件介紹:1單片機(jī):選取AT89S51/52兼容單片機(jī)。2晶振電路:晶振選取11.0592MHz,用于有串口通訊的場(chǎng)合。3復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,結(jié)合電容電壓不能突變的性質(zhì),當(dāng)系統(tǒng)一上電RST腳將會(huì)出現(xiàn)高電平,該最小系統(tǒng)的51單片機(jī)當(dāng)RST腳的高電平持續(xù)2個(gè)周期以上,就將復(fù)位。用 Altium_Designer軟件仿真并封裝:打開(kāi)Altium Designer軟件,首先建立一個(gè)工程,然后在建立一個(gè)Schematic,在建立的頁(yè)面中花電路圖。打開(kāi)Libraries,導(dǎo)入存儲(chǔ)元器件的“庫(kù)”,根據(jù)電路圖,

3、通過(guò)Search工具,尋找需要的元器件,把元器件拖入窗口,根據(jù)原理圖將其連線并修改其參數(shù)。連好電路圖之后,運(yùn)行Project檢查電路圖的連線以及元器件屬性的正確性,保存在桌面位置。運(yùn)行PCB Board Wizard,進(jìn)行封裝,并保存在與電路圖相同的位置。將封裝后的元器件拖入電路板內(nèi),并進(jìn)行布線,然后自動(dòng)走線,設(shè)計(jì)圖完成。最小系統(tǒng)仿真圖:焊接電路板實(shí)物圖:電源控制板實(shí)驗(yàn)原理圖用 Altium_Designer軟件仿真并封裝:使用原件:原件數(shù)量(個(gè))電容1049電阻10uF7大電容5電阻1K1電阻10K2電阻4723芯片11171散熱板5開(kāi)關(guān)1插針若干LED燈6插頭3焊接:根據(jù)仿真原理圖做好的板

4、子進(jìn)行焊接,焊接圖片如下:III萬(wàn)年歷本設(shè)計(jì)是基于51系列的單片機(jī)進(jìn)行的電子萬(wàn)年歷設(shè)計(jì),采用八位數(shù)碼管顯示年月日時(shí)分秒及溫度信息,具有可調(diào)整日期和時(shí)間功能。時(shí)間、日期調(diào)整由三個(gè)按鍵來(lái)實(shí)現(xiàn),并可對(duì)鬧鈴開(kāi)關(guān)進(jìn)行設(shè)置。日歷能顯示陽(yáng)歷和陰歷年、月、日以及星期、時(shí)、分、秒。設(shè)計(jì)以AT89S52單片機(jī)為核心,構(gòu)成單片機(jī)控制電路;以DS1302時(shí)鐘芯片作為萬(wàn)年歷信號(hào)發(fā)生器;以DS18B20作為檢測(cè)溫度的傳感器。(原理圖如下;)單片機(jī)芯片采用AT89S52,片內(nèi)ROM全都采用Flash ROM;能以3V的超低壓工作;同時(shí)也與MCS-51系列單片機(jī)完全相同,該芯片內(nèi)部存儲(chǔ)器為8KB ROM 存儲(chǔ)空間,同樣具有8

5、9C51的功能,且具有在線編程可擦除技術(shù),當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),不需要對(duì)芯片多次拔插,不會(huì)對(duì)芯片造成損壞。所以選擇采用AT89S52作為主控制系統(tǒng).(單片機(jī)芯片圖如下)時(shí)鐘芯片采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì)秒、分、時(shí)、日、周、月計(jì)數(shù),而且精度高,8位的RAM做為數(shù)據(jù)暫存區(qū),工作電壓2.5V5.5V范圍內(nèi),2.5V時(shí)耗電小于300nA。DS1302在每次進(jìn)行讀、寫(xiě)程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖。DS1302的控制字,此控制字的位7必

6、須置1,若為0則不能把對(duì)DS1302進(jìn)行讀寫(xiě)數(shù)據(jù)。對(duì)于位6,若對(duì)程序進(jìn)行讀/寫(xiě)時(shí)RAM=1,對(duì)時(shí)間進(jìn)行讀/寫(xiě)時(shí),CK=0。位1至位5指操作單元的地址。位0是讀/寫(xiě)操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的是寫(xiě)操作。控制字節(jié)總是從最低位開(kāi)始輸入/輸出的。DS1302的日歷、時(shí)間寄存器內(nèi)容:“CH”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開(kāi)始運(yùn)行?!癢P”是寫(xiě)保護(hù)位,在任何的對(duì)時(shí)鐘和RAM的寫(xiě)操作之前,WP必須為0。當(dāng)“WP”為1時(shí),寫(xiě)保護(hù)位防止對(duì)任一寄存器的寫(xiě)操作。(時(shí)鐘芯片圖如下)測(cè)溫傳感器測(cè)溫可以采用熱敏電阻加上模數(shù)轉(zhuǎn)換得到電壓

7、,然后將測(cè)到的電壓送到單片機(jī),由單片機(jī)處理得到溫度值。但是這種方法實(shí)現(xiàn)起來(lái)復(fù)雜,且精度難以達(dá)到很高,所以本設(shè)計(jì)沒(méi)有采用這種方式。DHT11是一種數(shù)字溫度傳感器,一根線就可以與單片機(jī)IO聯(lián)接,將測(cè)到的溫度以數(shù)字形式傳送到單片機(jī),所以使用簡(jiǎn)單;它的測(cè)溫誤差為+-0.5度,可以達(dá)到較好的精度,在日常的應(yīng)用中足夠。這種芯片應(yīng)用廣泛,所以本設(shè)計(jì)也采用了這種測(cè)溫方式。(測(cè)溫傳感器圖如下;)蜂鳴器我們采用的有源蜂鳴器,由于單片機(jī)的輸出電流較小所以我們采用PNP形的三極管作為驅(qū)動(dòng)電路,來(lái)驅(qū)動(dòng)蜂鳴器發(fā)聲,當(dāng)單片機(jī)給低電平時(shí)蜂鳴器響。(蜂鳴器圖如下;)鍵盤(pán)控制電路該設(shè)計(jì)采用的是獨(dú)立按鍵,S1為時(shí)間設(shè)置,S2為時(shí)間

8、或者日期調(diào)整,S3為確定鍵,S4為鬧鐘設(shè)置。(鍵盤(pán)控制電路圖如下;)74HC595芯片介紹74HC164、74HCT164 是高速硅門(mén) CMOS 器件,與低功耗肖特基型 TTL (LSTTL) 器件的引腳兼容。74HC164、74HCT164 是 8 位邊沿觸發(fā)式移位寄存器,串行輸入數(shù)據(jù),然后并行輸出。數(shù)據(jù)通過(guò)兩個(gè)輸入端(DSA 或 DSB)之一串行輸入;任一輸入端可以用作高電平使能端,控制另一輸入端的數(shù)據(jù)輸入。兩個(gè)輸入端或者連接在一起,或者把不用的輸入端接高電平,一定不要懸空。 時(shí)鐘 (CP) 每次由低變高時(shí),數(shù)據(jù)右移一位,輸入到 Q0, Q0 是兩個(gè)數(shù)據(jù)輸入端(DSA 和 DSB)的邏輯與

9、,它將上升時(shí)鐘沿之前保持一個(gè)建立時(shí)間的長(zhǎng)度。主復(fù)位 (MR) 輸入端上的一個(gè)低電平將使其它所有輸入端都無(wú)效,同時(shí)非同步地清除寄存器,強(qiáng)制所有的輸出為低電平。8位串行輸入/輸出或者并行輸出移位寄存器,具有高阻關(guān)斷狀態(tài)。將串行輸入的8位數(shù)字,轉(zhuǎn)變?yōu)椴⑿休敵龅?位數(shù)字,例如控制一個(gè)8位數(shù)碼管,將不會(huì)有閃爍。仿真軟件介紹Proteus 與其它單片機(jī)仿真軟件不同的是,它不僅能仿真單片機(jī)CPU 的工作情況,也能仿真單片機(jī)外圍電路或沒(méi)有單片機(jī)參與的其它電路的工作情況。因此在仿真和程序調(diào)試時(shí),關(guān)心的不再是某些語(yǔ)句執(zhí)行時(shí)單片機(jī)寄存器和存儲(chǔ)器內(nèi)容的改變,而是從工程的角度直接看程序運(yùn)行和電路工作的過(guò)程和結(jié)果。對(duì)于這

10、樣的仿真實(shí)驗(yàn),從某種意義上講,是彌補(bǔ)了實(shí)驗(yàn)和工程應(yīng)用間脫節(jié)的矛盾和現(xiàn)象。(1)proteus 的工作過(guò)程 運(yùn)行proteus 的ISIS 程序后,進(jìn)入該仿真軟件的主界面。在工作前,要設(shè)置view 菜單下的捕捉對(duì)齊和system下的顏色、圖形界面大小等項(xiàng)目。通過(guò)工具欄中的p(從庫(kù)中選擇元件命令)命令,在pick devices 窗口中選擇電路所需的元件,放置元件并調(diào)整其相對(duì)位置,元件參數(shù)設(shè)置,元器件間連線,編寫(xiě)程序;在source 菜單的Definecode generation tools 菜單命令下,選擇程序編譯的工具、路徑、擴(kuò)展名等項(xiàng)目;在source 菜單的Add/removesourc

11、e files 命令下,加入單片機(jī)硬件電路的對(duì)應(yīng)程序;通過(guò)debug 菜單的相應(yīng)命令仿真程序和電路的運(yùn)行情況。 (2)Proteus 軟件所提供的元件資源Proteus 軟件所提供了30 多個(gè)元件庫(kù),數(shù)千種元件。元件涉及到數(shù)字和模擬、交流和直流等。 (4)Proteus 軟件所提供的調(diào)試手段 Proteus 提供了比較豐富的測(cè)試信號(hào)用于電路的測(cè)試。這些測(cè)試信號(hào)包括模擬信號(hào)和數(shù)字信號(hào)。對(duì)于單片機(jī)硬件電路和軟件的調(diào)試,只需要執(zhí)行debug 菜單下的execute 菜單項(xiàng)或F12 快捷鍵啟動(dòng)執(zhí)行,用debug菜單下的pause animation 菜單項(xiàng)或pause 鍵暫停系統(tǒng)的運(yùn)行;或用debug

12、 菜單下的stop animation 菜單項(xiàng)或shift-break 組合鍵停止系統(tǒng)的運(yùn)行。其運(yùn)行方式也可以選擇工具欄中的相應(yīng)工具進(jìn)行。軟件調(diào)試過(guò)程1、仿真:打開(kāi)KEIL 4,輸入所編寫(xiě)的源程序并對(duì)程序進(jìn)行編譯,在軟件的幫助下檢查其中的錯(cuò)誤并進(jìn)行反復(fù)修改,知道編譯正確后運(yùn)行,確保沒(méi)有錯(cuò)誤以后對(duì)正確的源程序進(jìn)行保存,保存時(shí)給其命名,以便將來(lái)載入程序時(shí)容易找到。2、打開(kāi)PROTEUS軟件,并出畫(huà)單片機(jī)電子萬(wàn)年歷具體運(yùn)行電路圖。3、檢查所畫(huà)電路運(yùn)行圖,確保沒(méi)有錯(cuò)誤以后,在PROTEUS下對(duì)原理圖進(jìn)行加載KEIL 4下的源程序。4、加載完成后,單擊電路圖框下的開(kāi)始按鈕,進(jìn)行仿真。軟件調(diào)試一般包括分塊

13、調(diào)試和聯(lián)機(jī)調(diào)試兩個(gè)階段。程序的分塊調(diào)試一般在單片機(jī)開(kāi)發(fā)裝置上進(jìn)行,可根據(jù)所調(diào)程序功能塊的入口參量初值編制一個(gè)特殊的程序段,并連同被調(diào)程序功能塊一起在開(kāi)發(fā)裝置上運(yùn)行;也可配合對(duì)應(yīng)硬件電路單獨(dú)運(yùn)行某程序功能塊,然后檢查是否正確,如果執(zhí)行結(jié)果與預(yù)想的不一致,可以通過(guò)單步運(yùn)行或設(shè)置斷點(diǎn)的方法,查出原因并加以改正,直到運(yùn)行結(jié)果正確為止。這時(shí)該 程序功能塊已調(diào)試完畢,可去掉附加程序段。其它程序功能塊可按此法進(jìn)行調(diào)試。程序聯(lián)機(jī)調(diào)試就是將已調(diào)試好的各程序功能塊按總體結(jié)構(gòu)聯(lián)成一個(gè)完整程序,在所研制的硬件電路上運(yùn)行。從而試驗(yàn)程序整體運(yùn)行的完整性、正確性和與硬件電路的配合情況。在聯(lián)調(diào)中可能會(huì)有某些支路上的程序、功能

14、塊因受條件制約而得不到相應(yīng)的輸入?yún)?shù),這時(shí),調(diào)試人員應(yīng)創(chuàng)造條件進(jìn)行模擬調(diào)試。在聯(lián)調(diào)中如發(fā)現(xiàn)硬件問(wèn)題也應(yīng)及時(shí)修正,直到單片機(jī)系統(tǒng)的軟件、硬件全部調(diào)試成功為止。系統(tǒng)調(diào)試完成后,還要進(jìn)行一段時(shí)間的試運(yùn)行,從而檢驗(yàn)系統(tǒng)的穩(wěn)定性和抗干擾能力,驗(yàn)證系統(tǒng)功能是否達(dá)到設(shè)計(jì)要求,是否達(dá)到預(yù)期的效果。軟件調(diào)試過(guò)程1、仿真:打開(kāi)KEIL 4,輸入所編寫(xiě)的源程序并對(duì)程序進(jìn)行編譯,在軟件的幫助下檢查其中的錯(cuò)誤并進(jìn)行反復(fù)修改,知道編譯正確后運(yùn)行,確保沒(méi)有錯(cuò)誤以后對(duì)正確的源程序進(jìn)行保存,保存時(shí)給其命名,以便將來(lái)載入程序時(shí)容易找到。2、打開(kāi)PROTEUS軟件,并出畫(huà)單片機(jī)電子萬(wàn)年歷具體運(yùn)行電路圖。3、檢查所畫(huà)電路運(yùn)行圖,確保

15、沒(méi)有錯(cuò)誤以后,在PROTEUS下對(duì)原理圖進(jìn)行加載KEIL 4下的源程序。4、加載完成后,單擊電路圖框下的開(kāi)始按鈕,進(jìn)行仿真。軟件調(diào)試一般包括分塊調(diào)試和聯(lián)機(jī)調(diào)試兩個(gè)階段。程序的分塊調(diào)試一般在單片機(jī)開(kāi)發(fā)裝置上進(jìn)行,可根據(jù)所調(diào)程序功能塊的入口參量初值編制一個(gè)特殊的程序段,并連同被調(diào)程序功能塊一起在開(kāi)發(fā)裝置上運(yùn)行;也可配合對(duì)應(yīng)硬件電路單獨(dú)運(yùn)行某程序功能塊,然后檢查是否正確,如果執(zhí)行結(jié)果與預(yù)想的不一致,可以通過(guò)單步運(yùn)行或設(shè)置斷點(diǎn)的方法,查出原因并加以改正,直到運(yùn)行結(jié)果正確為止。這時(shí)該 程序功能塊已調(diào)試完畢,可去掉附加程序段。其它程序功能塊可按此法進(jìn)行調(diào)試。程序聯(lián)機(jī)調(diào)試就是將已調(diào)試好的各程序功能塊按總體結(jié)

16、構(gòu)聯(lián)成一個(gè)完整程序,在所研制的硬件電路上運(yùn)行。從而試驗(yàn)程序整體運(yùn)行的完整性、正確性和與硬件電路的配合情況。在聯(lián)調(diào)中可能會(huì)有某些支路上的程序、功能塊因受條件制約而得不到相應(yīng)的輸入?yún)?shù),這時(shí),調(diào)試人員應(yīng)創(chuàng)造條件進(jìn)行模擬調(diào)試。在聯(lián)調(diào)中如發(fā)現(xiàn)硬件問(wèn)題也應(yīng)及時(shí)修正,直到單片機(jī)系統(tǒng)的軟件、硬件全部調(diào)試成功為止。系統(tǒng)調(diào)試完成后,還要進(jìn)行一段時(shí)間的試運(yùn)行,從而檢驗(yàn)系統(tǒng)的穩(wěn)定性和抗干擾能力,驗(yàn)證系統(tǒng)功能是否達(dá)到設(shè)計(jì)要求,是否達(dá)到預(yù)期的效果。程序見(jiàn)附錄三、 實(shí)習(xí)總結(jié) 1通過(guò)本次歷時(shí)兩周的生產(chǎn)實(shí)習(xí)課程設(shè)計(jì)以及自己親自動(dòng)手焊接電路,我發(fā)現(xiàn)原來(lái)焊接電路板是一件這么有趣的事情。它不僅要求我們?cè)诤附与娐钒鍟r(shí)有足夠的耐心和細(xì)

17、心,更要求我們要有發(fā)現(xiàn)問(wèn)題解決問(wèn)題的能力,同時(shí)要與老師和同學(xué)多交流合作,這樣才能更快更好地完成任務(wù)。2這次學(xué)習(xí)了Altium_Designer的使用,我發(fā)現(xiàn)這是一個(gè)非常有用的軟件,我們可以根據(jù)實(shí)驗(yàn)原理先做出實(shí)驗(yàn)原理圖,然后進(jìn)行仿真。 3后期調(diào)試過(guò)程中,因?yàn)椴僮鞯囊恍┰?,因此有時(shí)候結(jié)果有些地方不盡如人意,需要我們多次調(diào)試和修改,所以我們?cè)诿鎸?duì)問(wèn)題是不應(yīng)該逃避,應(yīng)該滿懷信心冷靜分析判斷,并且與同學(xué)交流學(xué)習(xí),最終完成開(kāi)始設(shè)定的目標(biāo)。4單片機(jī)理論的學(xué)習(xí)是為課程的設(shè)計(jì)作準(zhǔn)備的,但有時(shí)學(xué)習(xí)的理論也解決不了實(shí)踐中的問(wèn)題。實(shí)踐中獲得的知識(shí)能讓我對(duì)單片機(jī)的知識(shí)有更好的認(rèn)識(shí)和理解。雖然這次的課程設(shè)計(jì)我參考了一些

18、文獻(xiàn)資料,沒(méi)有做到創(chuàng)新,但在對(duì)程序的讀寫(xiě)過(guò)程中我明白了許多。這次生產(chǎn)實(shí)習(xí)的最大收獲是只有把理論用到實(shí)踐中我們才能真正掌握好所學(xué)知識(shí)。5這次設(shè)計(jì)讓我學(xué)到了許多知識(shí),同時(shí)看到自己的設(shè)計(jì)順利完成時(shí)有滿滿的成就感,我們要不斷學(xué)習(xí),不斷進(jìn)步,讓自己的人生變得更加充實(shí)有意義。附實(shí)驗(yàn)源程序:#include #include #include #define uint unsigned int#define uchar unsigned charsbit IO= P10; /DS1302數(shù)據(jù)線sbit SCLK = P11; /DS130時(shí)鐘線sbit RST = P12; /DS1302復(fù)位線sbit R

19、S = P20; /LCD數(shù)據(jù)/命令選擇端sbit RW = P21; /LCD讀/寫(xiě)控制sbit EN = P22; /LCD使能端sbit K1=P34;/選擇sbit K2=P35;/加sbit K3=P36;/減sbit K4=P37; /確定uchar tCount=0;uchar MonthsDays=0,31,0,31,30,31,30,31,31,30,31,30,31;uchar *WEEK=SUN,MON,TUS,WEN,THU,FRI,SAT;uchar LCD_DSY_BUFFER1=DATE 00-00-00 ; /顯示格式uchar LCD_DSY_BUFFER2=

20、TIME 00:00:00 ;uchar DateTime7; /所讀取的日期時(shí)間char Adjust_Index=-1; /當(dāng)前調(diào)節(jié)的時(shí)間對(duì)象:,分,是,日,月,年(1,2,3,4,6)uchar Change_Flag= -MHDM-Y; /(分,時(shí),日,月,年)(不調(diào)節(jié)秒與周)/*-延時(shí)程序-*/void DelayMS(uint ms) uchar i;while(ms-)for(i=0;i120;i+);/-向DS1302寫(xiě)入一字節(jié)-/void Write_A_Byte_TO_DS1302(uchar x)uchar i;for(i=0;i=1; / 右移/-從DS1302讀取一字

21、節(jié)-/uchar Get_A_Byte_FROM_DS1302()uchar i,b=0x00;for(i=0;i8;i+) b |= _crol_(uchar)IO,i);SCLK=1;SCLK=0; /每一個(gè)高脈沖讀取一位數(shù)據(jù)return b/16*10+b%16; /返回BCD碼/-從DS1302指定位置讀數(shù)據(jù)-/uchar Read_Data(uchar addr) uchar dat;RST = 0;SCLK=0;RST=1; /RST高電平時(shí)讀/寫(xiě) Write_A_Byte_TO_DS1302(addr); /先寫(xiě)入地址dat = Get_A_Byte_FROM_DS1302();

22、 SCLK=1;RST=0;return dat;/-向DS1302某地址寫(xiě)入數(shù)據(jù)-/void Write_DS1302(uchar addr,uchar dat)SCLK=0;RST=1;Write_A_Byte_TO_DS1302(addr);Write_A_Byte_TO_DS1302(dat);SCLK=0;RST=0; /高脈沖寫(xiě)入數(shù)據(jù)/-設(shè)置時(shí)間-/void SET_DS1302()uchar i;/寫(xiě)控制字,取消寫(xiě)保護(hù)Write_DS1302(0x8E,0x00);/分時(shí)日月年依次寫(xiě)入for(i=1;i7;i+) /分的起始地址(0x82),后面依次是時(shí),日,月,周,年,寫(xiě)入地址

23、每次遞增2Write_DS1302(0x80+2*i,(DateTimei/104)|(DateTimei%10); Write_DS1302(0x8E,0x80); /加保護(hù)/-讀取當(dāng)前日期時(shí)間-/void GetTime()uchar i;for(i=0;i7;i+)DateTimei=Read_Data(0X81+2*i);/-讀LCD狀態(tài)-/uchar Read_LCD_State()uchar state;RS=0;RW=1;EN=1; /輸出:D0D7=狀態(tài)字DelayMS(1);state=P0; /從P0口讀LCD狀態(tài)EN = 0;DelayMS(1);return state

24、; /-忙等待-/void LCD_Busy_Wait() while(Read_LCD_State()&0x80)=0x80);DelayMS(5);/-向LCD寫(xiě)數(shù)據(jù)-/void Write_LCD_Data(uchar dat) LCD_Busy_Wait();RS=1;EN=0;RW=0; /寫(xiě)數(shù)據(jù),EN為高脈沖,P0=dat;EN=1;DelayMS(1);EN=0;/-寫(xiě)LCD指令-/void Write_LCD_Command(uchar cmd) LCD_Busy_Wait();RS=0;EN=0;RW=0; /寫(xiě)指令,EN高脈沖,輸出:D0D7=數(shù)據(jù)P0=cmd;EN=1;D

25、elayMS(1);EN=0;/-LCD初始化-/void Init_LCD() Write_LCD_Command(0x38); /設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口DelayMS(1);Write_LCD_Command(0x01); /顯示清零,數(shù)據(jù)指針清零DelayMS(1);Write_LCD_Command(0x06); /寫(xiě)一個(gè)字符后地址指針自動(dòng)加1DelayMS(1);Write_LCD_Command(0x0c); /設(shè)置開(kāi)顯示,不顯示光標(biāo)DelayMS(1);/-/設(shè)置液晶顯示位置/-void Set_LCD_POS(uchar p)Write_LCD_Comman

26、d(p|0x80);/相當(dāng)于在0x80基礎(chǔ)上加入位置量/-在LCD上顯示字符串-/void Display_LCD_String(uchar p,uchar *s)uchar i;Set_LCD_POS(p);for(i=0;i16;i+)Write_LCD_Data(si); /在固定位置顯示時(shí)間日期DelayMS(1);/-日期與時(shí)間值轉(zhuǎn)換為數(shù)字字符-/void Format_DateTime(uchar d,uchar *a)a0=d/10+0;a1=d%10+0;/判斷是否為閏年uchar isLeapYear(uint y)return (y%4=0&y%100!=0)|(y%400

27、=0);/求自2000.1.1開(kāi)始的任何一天是星期幾/函數(shù)沒(méi)有通過(guò),求出總天數(shù)后再求星期幾/因?yàn)榍罂偺鞌?shù)可能會(huì)超出uint的范圍void RefreshWeekDay()uint i,d,w=5; /已知1999.12.31是周五for(i=2000;i2000+DateTime6;i+)d=isLeapYear(i)?366:365;w=(w+d)%7;d=0;for(i=1;iDateTime4;i+)d+=MonthsDaysi;d+=DateTime3;/保存星期,06表示星期日,星期一,二,.,六,為了與DS1302的星期格式匹配,返回值需要加1DateTime5=(w+d)%7+1

28、;/*年月日時(shí)分+/-*/void DateTime_Adjust(char x)switch(Adjust_Index)case 6: /年00-99if(x=1&DateTime60) DateTime6-;/獲取2月天數(shù)MonthsDays2=isLeapYear(2000+DateTime6)?29:28;/如果年份變化后當(dāng)前月份的天數(shù)大于上限則設(shè)為上限if(DateTime3MonthsDaysDateTime4)DateTime3=MonthsDaysDateTime4;RefreshWeekDay(); /刷新星期break;case 4: /月01-12if(x=1&DateT

29、ime41) DateTime4-;MonthsDays2=isLeapYear(2000+DateTime6)?29:28;if(DateTime3MonthsDaysDateTime4)DateTime3=MonthsDaysDateTime4;RefreshWeekDay();break;case 3: /日00-28、29、30、31,調(diào)節(jié)之前首先根據(jù)年份得出該年中斷二月 天數(shù)MonthsDays2=isLeapYear(2000+DateTime6)?29:28;/根據(jù)當(dāng)前月份決定調(diào)節(jié)日期的上限if(x=1&DateTime30) DateTime3-;RefreshWeekDay(

30、);break;case 2: /時(shí)if(x=1&DateTime20) DateTime2-;break;case 1:/分if(x=1&DateTime10) DateTime1-;break;/-定時(shí)器0每秒刷新LCD顯示-/void T0_INT() interrupt 1TH0=-50000/256;TL0=-50000%256;if(+tCount !=2)return;tCount=0;/按指定格式生成待顯示的日期時(shí)間串Format_DateTime(DateTime6,LCD_DSY_BUFFER1+5);Format_DateTime(DateTime4,LCD_DSY_BUFFER1+8);Format_DateTime(DateTime3,LCD_DSY_BUFFER1+11);/星期strcpy(LCD_DSY_BUFFER1+13,WEEKDateTime5-1);/時(shí)分秒Format_DateTime(DateTime2,LCD_DSY_BUFFER2+5);For

溫馨提示

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