帶鬧鐘的電子鐘(單片機)_第1頁
帶鬧鐘的電子鐘(單片機)_第2頁
帶鬧鐘的電子鐘(單片機)_第3頁
帶鬧鐘的電子鐘(單片機)_第4頁
帶鬧鐘的電子鐘(單片機)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 課課 程程 設設 計計 帶鬧鐘的電子鐘系系 別別 :計算機科學與技術系專專業(yè)業(yè)(班班級級):計算機科學與技術 2011 級本班作作者者(學學號號) :汪靜(51102012011)指指導導教教師師:張自軍完完成成日日期期: 2013 年 12 月 05 日二一二年 12 月 28 日前前 言言20 世紀末,電子技術獲得了飛速的發(fā)展。在其推動下,現代電子產品幾乎滲透了社會的各個領域,有力地推動了社會生產力的發(fā)展和社會信息化程度的提高。同時也使現代電子產品性能進一步提高,產品更新換代的節(jié)奏也越來越快。 時間對人們來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當前的時間。忘記了要做的事情,當事

2、情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能釀成大禍。例如,許多火災都是由于人們一時忘記了關閉煤氣或是忘記充電時間。所以有必要制作一個定時系統(tǒng)。隨時提醒這些容易忘記時間的人。 而鐘表的數字化給人們生產生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、定時啟閉電路、定時開關烘箱、通斷動力設備,甚至各種定時電氣的自動啟用等等。所有這些,都是以鐘表數字化為基礎的。因此,研究數字鐘及擴大其應用,有著非?,F實的意義。隨著生活水平的提高,人們越來越追求人性化的事物。傳統(tǒng)的時鐘已不能滿足人們的需求。而現代的時鐘不

3、僅需要模擬電路技術和數字電路技術而且更需要單片機技術,增加數字鐘的功能。利用軟件編程盡量做到硬件電路簡單穩(wěn)定,減小電磁干擾和其他環(huán)境干擾,減小因元器件精度不夠引起的誤差,但是數字鐘還是可以改進和提高如選用更精密的元器件。但與機械式時鐘相比已經具有更高的準確性和直觀性,且無機械裝置,具有更長的使用壽命,因此得到了廣泛的使用。數字鐘通過數字電路實現時、分、秒。數字顯示的計時裝置,廣泛用于個人家庭、車站、碼頭辦公室等公共場所成為人們日常生活中不可少的必需品。由于數字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數字鐘的精度遠遠超過老式鐘表。多功能數字鐘的應用非常普遍。由單片機作為數字鐘的核心控制器,

4、通過它的時鐘信號進行實現計時功能,將其時間數據經單片機輸出,利用顯示器顯示出來。通過鍵盤可以進行校時、定時等功能。輸出設備顯示器可以用液晶顯示技術和數碼管來顯示技術。 本系統(tǒng)利用單片機實現具有計時、校時等功能的數字時鐘,是以單片機 AT89C51為核心元件同時采用 LED 數碼管顯示器動態(tài)顯示“時” 、 “分” 、 “秒”的現代計時裝置。另外具有校時功能,秒表功能,和定時器功能,利用單片機實現的數字時鐘具有編程靈活,便于功能的擴充等優(yōu)點。目目 錄錄前前 言言 .1 1摘摘 要要 .I IABSTRACTABSTRACT .IIII第第 1 1 章章 課題的背景課題的背景 .1 11.1 課題的

5、來源 .11.2 課題研究的目的和意義 .11.3 應解決的主要問題及達到的技術要求.1第第 2 2 章章 方案的選擇和論證方案的選擇和論證 .2 22.1 單片機型號的選擇 .22.2 按鍵的選擇 .22.3 顯示器的選擇 .22.4 計時部分的選擇 .22.5 發(fā)音部分的設計 .32.6 顯示器驅動電路 .32.7 電源的選擇 .3第第 3 3 章章 數字電子鐘的設計原理和方法數字電子鐘的設計原理和方法 .4 43.1 設計原理 .43.2 硬件電路的設計 .43.2.1 AT89C51 單片機簡介.43.2.2 鍵盤電路的設計 .43.2.3 段碼驅動電路 .53.2.4 蜂鳴器驅動電路

6、 .53.3 軟件部分的設計 .63.3.1 主程序部分的設計 .63.3.2 中斷定時器的設置 .63.3.3 鬧鐘子函數 .73.3.4 計時函數 .73.3.4 鍵盤掃描函數 .93.3.5 時間和鬧鐘的設置 .9第第 4 4 章章 實驗結果實驗結果 .1111總總 結結 .1212致致 謝謝 .1313參考文獻參考文獻 .1414附附 錄錄 .15150摘摘 要要單片機自 20 世紀 70 年代問世以來,以其極高的性能價格比,受到人們的重視和關注,應用很廣、發(fā)展很快。而 51 單片機是各單片機中最為典型和最有代表性的一種。本設計以 AT89C51 芯片為核心,輔以必要的外圍電路,設計了

7、一個結構簡單,功能齊全的電子時鐘,它由 5V 直流電源供電。在硬件方面,除了 CPU 外,使用六個四段、兩個兩段、一個一段的 LED 數碼管來進行顯示,LED 采用的是動態(tài)掃描顯示,使用 74LS245 芯片進行驅動。通過 LED 能夠較為準確地顯示時、分、秒。四個簡單的按鍵實現對時間的調整。軟件方面采用 C 語言編程。整個電子鐘系統(tǒng)能完成時間的顯示、調時、校時和三組定時鬧鐘并附帶上調節(jié)溫度的功能。選用單片機最小系統(tǒng)應用程序,添加比較程序、時間調整程序及蜂鳴程序,通過時間比較程序觸發(fā)蜂鳴,實現鬧鐘功能,完成設計所需求的軟件環(huán)境。介紹并使用Keil 單片機模擬調試軟件,測試程序的可行性并用 Pr

8、oteus 進行仿真。關鍵詞:關鍵詞:單片機,定時器,中斷,鬧鐘,LED1第第 1 章章 課題的背景課題的背景1.1 課題的來源課題的來源隨著生活水平的提高,人們越來越追求人性化的事物,傳統(tǒng)的時鐘已不能滿足人們的需求?,F代的時鐘不僅需要模擬電路技術而且需要數字電路技術和單片機技術,增加時鐘的功能。數字電子鐘可利用軟件編程盡量做到硬件電路簡單穩(wěn)定,減小電磁干擾和其他環(huán)境干擾,減小因元器件精度不夠引起的誤差;盡管如此數字鐘還是可以改進和提高,比如選用更精密的元器件。但與機械式時鐘相比已經具有更高的準確性和直觀性,且無機械裝置,具有更長的使用壽命,因此得到了廣泛的使用。1.2 課題研究的目的和意義課

9、題研究的目的和意義20 世紀末,電子技術獲得了飛速的發(fā)展,在其推動下,現代電子產品幾乎滲透了社會的各個領域,有力地推動了社會生產力的發(fā)展和社會信息化程度的提高,同時也使現代電子產品性能進一步提高,產品更新換代的節(jié)奏也越來越快。 時間對人們來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當前的時間。忘記了要做的事情,當事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能釀成大禍。例如,許多火災都是由于人們一時忘記了關閉煤氣或是忘記充電時間等造成的。而鐘表的數字化給人們生產生活帶來了極大的方便。數字鐘是通過數字電路實現時,分,秒數字顯示的計時裝置,廣泛用于個人家庭、車站、碼

10、頭辦公室等公共場所,成為人們日常生活中不可少的必需品。由于數字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數字鐘的精度,遠遠超過老式鐘表,鐘表的數字化給人們生產生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能,諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關烤箱、通斷動力設備、甚至各種定時電氣的自動啟用等。所有這些,都是以鐘表數字化為基礎的。因此,研究數字鐘及擴大其應用,有著非?,F實的意義。1.3 應解決的主要問題及達到的技術要求應解決的主要問題及達到的技術要求本設計應解決的主要問題有兩大方面,即硬件電路設計和軟件設計兩大方面。其中硬件電路部分又可分

11、為四個模塊:鍵盤模塊、顯示模塊、計時模塊和發(fā)聲模塊。硬件電路部分致力于低成本、低功耗和易實現性。軟件部分則應做到代碼的精簡、準確、易讀懂。最后通過硬軟件的結合實現數字鐘的精確計時、校時、三組鬧鐘設置和定時報警功能。2第第 2 章章 方案的選擇和方案的選擇和論證論證2.1 單片機型號的選擇單片機型號的選擇通過對多種單片機性能的分析,最終認為 AT89C51 是最理想的電子時鐘開發(fā)芯片。AT89C51 是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能 CMOS8 位微處理器,器件采用 ATMEL 高密度非易失存儲器制造技術制造,與工業(yè)標準的 MCS-51指令集和輸出管腳相兼容。由于將

12、多功能 8 位 CPU 和閃爍存儲器組合在單個芯片中,ATMEL 的 AT89C51 是一種高效微控制器,而且它與 MCS-51 兼容,且具有 4K 字節(jié)可編程序存儲器和 1000 次擦寫循環(huán),數據保留時間為 10 年,是最好的選擇。2.2 按鍵的選擇按鍵的選擇方案一:44 矩陣式鍵盤。如果選擇此方案,那么在修改時鐘或設置鬧鈴時間時就可以直接從鍵盤輸入,方便、快捷,但程序較為復雜。 方案二:獨立式按鍵。如果設置過多按鍵,將會占用較多 I/O 口,而且會給布線帶來不便,因此,此方案適用于按鍵較少的情況。如果選擇此方案,由于按鍵較少,在修改時間或設置鬧鈴時間時就不能直接輸入,只能通過加或減完成,稍

13、為麻煩一些,但其程序簡單。 由于并不需要經常修改時間和設置鬧鈴時間,而且方案二的程序簡單,按鍵少、成本低,因此,選擇方案二。2.3 顯示器的選擇顯示器的選擇方案一:液晶顯示器。如果選擇此方案,將會降低系統(tǒng)的功耗,這樣就可以用電池供電,便于攜帶。但液晶顯示器的驅動電路復雜,使用起來有一定的難度。 方案二:用數碼管作為顯示器。數碼管的驅動電路簡單,使用方便,如果選擇了此方案,那么在夜間看時間的時候就不需要有光源,非常方便。其缺點是功耗較大。由于數碼管使用起來較為方便,在夜間看時間也很方便,因此我選擇了方案二。2.4 計時部分的計時部分的選擇選擇如果使用時鐘芯片,系統(tǒng)就不怕掉電且時間精確。但這種芯片

14、比較貴,況且,設計本系統(tǒng)主要是為了學習單片機程序的編寫和調試以及設計硬件電路的一些方法,因此采用軟件的方法來計時而沒有采用價格較高的時鐘芯片。32.5 發(fā)音部分的設計發(fā)音部分的設計通過三極管放大后驅動蜂鳴器工作,再通過軟件這時產生等時時間方波驅動蜂鳴器發(fā)出間斷嘀聲,這樣就可以省去硬件振蕩電路,降低成本。2.6 顯示器驅動電路顯示器驅動電路由于通過數碼管公共及的電流較大且避免過多地使用分立元件,采用了一片74LS245 來驅動段碼,用 P3 口作位碼驅動。2.7 電源的選擇電源的選擇如果是用電池供電,就比較方便攜帶,但是本系統(tǒng),采用了數碼管作為顯示器,功耗較大,需要經常更換電池。況且,本系統(tǒng)的體

15、積較大,即使使用電池供電也不能隨身攜帶,因此,用電池供電不大合適,所以用 5V 外部穩(wěn)壓電源來供電。4第第 3 章章 數字電子鐘的設計原理和方法數字電子鐘的設計原理和方法3.1 設計原理設計原理 系統(tǒng)原理圖如下;圖 3-1 系統(tǒng)原理圖3.2 硬件電路的設計硬件電路的設計3.2.1 AT89C51 單片機簡介單片機簡介AT89C51 是一款單片封裝的微控制器,適合于許多要求高集成度、低成本的場合。可以滿足多方面的性能要求。AT89C51 采用了高性能的處理器結構,指令執(zhí)行時間只需 2 到 4 個時鐘周期。6 倍于標準 51 單片機器件。AT89C51 集成了許多系統(tǒng)級的功能,這樣可大大減少元件的

16、數目和電路板面積并降低系統(tǒng)的成本。AT89C51 單片機內部主要有以下部件:8031CPU、振蕩電路、總線控制部件、中斷控制部件、片內 Flash 存儲器、并行 I/O 接口、定時器和串行 I/O 接口。圖 3-2 AT89C51 單片機晶振按鍵AT89C51段碼驅動位碼驅動控制器蜂鳴器數碼管53.2.2 鍵盤電路的設計鍵盤電路的設計鍵盤采用 4 個獨立按鍵配以 4 個上拉電阻實現對時鐘和鬧鐘的設定及修改。 圖 3-3 獨立按鍵 圖 3-4 鍵盤輸入電路3.2.3 段碼驅動電路段碼驅動電路由于通過數碼管公共及的電流較大且避免過多地使用分立元件,采用了一片74LS245 來驅動段碼,用 P3 口

17、作位碼驅動。圖 3-5 段碼驅動器 74LS2453.2.4 蜂鳴器驅動電路蜂鳴器驅動電路發(fā)音部分是通過三極管放大驅動蜂鳴器工作,再通過軟件這時產生等時時間方波驅動蜂鳴器發(fā)出間斷嘀聲,這樣就可以省去硬件振蕩電路,降低成本。圖 3-6 蜂鳴器驅動電路63.3 軟件部分的設計軟件部分的設計3.3.1 主程序部分的設計主程序部分的設計程序部分主要采用了程序結構的模塊化設計,避免了一些函數的不必要的重復書寫,使程序變得單間易懂。程序在執(zhí)行時,主程序要須通過調用子函數就可完成相應的功能 。主程序流程圖如下圖 3-7。 圖 3-7 主程序流程圖3.3.2 中斷定時器的設置中斷定時器的設置數字電子鐘設計中主

18、要使用定時器 T0 中斷 ET0,利用 ET0 中斷進行計時時間的自增,從而實現計時功能。AT89C51 有兩個通用定時/計數器。兩者均可配置為定時器或事件計數器。另外增加了定時器 T0/T1,溢出時 T0/T1 腳自動翻轉的功能選項。 用作“定時器”功能時,每經過一個機器周期,寄存器值加 1。 用作“計數器”功能時,寄存器在對應的外部輸入管腳 T0/T1 上每發(fā)生一次 1 到 0 的跳變時加 1。使用該功能時,外部輸入每個機器周期被采樣一次。 圖 3-8 定時器工作原理1設計中采用了中斷方式 1 作為定時中斷,其定時計數初值的設置可由以下公式計cyTtX162開始初始化設置 鬧鈴判斷 顯示時

19、間 鍵盤掃描7算得到,中斷服務流程圖如下圖 3-9。X:計數初值 t:定時時間 :機器周期 1cyT 圖 3-9 中斷服務流程圖3.3.3 鬧鐘子函數鬧鐘子函數鬧鐘時間的判別主要是通過設定時間與實時時間對逐位對比確定是否進行鬧鈴。其工作流程圖如下圖 3-10。圖 3-10 鬧鈴判斷流程圖3.3.4 計時函數計時函數計時函數部分,主要是通過單片機定時中斷來計時,復產生一次中斷標志位 flag加 1,當 flag 加滿 20 次為 1 秒,然后把 flag 清 0 把秒存儲單元加 1。然后再依次判斷分、時。其流程圖如下圖 3-11。T0 中斷鬧鈴時間到? 鬧鈴 顯示時間 按鍵掃描重裝計數器 中斷返

20、回8圖 3-11 計時流程圖3.3.4 鍵盤掃描函數鍵盤掃描函數這些函數主要是判斷是否有按鍵按下,并根據相應按鍵按下的情況調用相關函數執(zhí)行,其相關流程圖如下圖 3-12。圖 3-12 鍵盤掃描流程圖3.3.5 時間和鬧鐘的設置時間和鬧鐘的設置此部分主要是通過判斷 cnt 在不同值時通過調用加 1、減 1 子函數對時間和鬧鐘的時、分、秒進行設置。在鬧鐘設置時,判斷按鍵 S4 按下情況我,進行鬧鐘的開啟與關閉,相關流程圖如下圖 3-13。9圖 3-13 時間/鬧鐘設置流程圖10第第 4 章章 實驗結果實驗結果此電子鬧鐘設計是利用 Proteus 仿真軟件進行仿真,基本上實現了課程設計要求實現的功能

21、。硬件部分設置了的三個按鍵 S1、S2、S3、S4。當按鍵 S1 第一次按下時,停止計時進入鬧鐘 1 的秒設置,當按鍵 S1 第二、第三次按下時,分別進入鬧鐘 1 的分設置和時設置,當按 S1 第四 、第五、第六次按下時分別進入鬧鐘 2 的秒、分、時設置,當按 S1 第七 、第八、第九次按下時分別進入鬧鐘 3 的秒、分、時設置,當按 S1 第十 、第二一、第十二次按下時分別進入時間的秒、分、時設置,在 S1 按下的各階段,可用按鍵 S2、S3 進行時間和鬧鈴時間的時、分、秒進行加減設置;當按鍵 S1 第十三次按下時恢復到時間顯示功能。當顯示的時間和定時設置的時間一致時,蜂鳴器發(fā)出等時間斷蜂鳴聲

22、,鬧鈴時間設置為 60 秒。在各個鬧鐘設置階段,如果有 S4 按下,則相應鬧鐘功能關閉或開啟;如在鬧鈴時有 S4 按下則提前停止鬧鈴。另外,鬧鈴電路有音樂鬧鐘的擴展的功能(可以將蜂鳴器換成揚聲器再加一段音樂程序即可實現)。因時間有限,擴展功能還未能及時實現,比如音樂鬧鈴。圖 3-14 運行仿真圖11總總 結結通過自己的不懈努力,我終于完成了畢業(yè)設計任務書上的任務要求。功能上基本達標:時鐘的顯示,調時功能、校時功能、鬧鈴功能、鬧鐘設功能。其精確度完全可以滿足日常生活顯示時間的需要;調時功能,方便快捷;校時功能保證了時鐘準確和可靠性,鬧鐘響鈴還有擴展成音樂鬧鐘的余地。硬件設施合乎要求,軟件設計可以

23、配合硬件實現要求的功能。但是由于時間比較短,前期設計出現部分不足:如位選閃爍功能不能實現、鬧鐘的開啟與關閉、間斷蜂鳴聲等。這些只是軟件設計時相應功能部分還不完善造成。不過經仔細思考和程序的完善,最終將軟件設計改進,并完全可以很好實現所有要求的功能??梢娂夹g在不斷進步,機械式時鐘已經被淘汰,取而代之的是具有高度準確性和直觀性且無機械裝置,具有更長的使用壽命等優(yōu)點的數字時鐘。數字時鐘更具人性化,更能提高人們的生活質量,更受人們歡迎。 無可否認機械時代已經過去,電子時代已經到來。做為新時代的我們,更應該提高自身能力,適應新時代的發(fā)展。知識來自實踐,多去生活中探詢所需要的。對于上述所提到的研究課題,我

24、們應盡量考慮到人的因素,增強時鐘的實用性和操作性,為使用者提供切實的方便,營造一種舒適的生活氛圍。所以,在設計的時候,應該從多方面、多角度去考慮問題,而且應該進一步提高時鐘的質量。另外,在本次設計的過程中,我發(fā)現很多的問題,雖然以前沒有做過這樣的設計但通過這次設計我學會了很多東西,單片機課程設計重點就在于軟件算法的設計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個程序并不是一件簡單的事,比如寫一個程序看其功能很少認為編寫程序簡單,但到編程的時候才發(fā)現一些細微的知識或低級錯誤經常犯做不到最后常常失敗,所以有些東西只有學精弄懂并且要細心才行,只學習理論有些東西是很難理解的,更談不

25、上掌握。從這次的課程設計中,我們真真正正的意識到,在以后的學習中,要理論聯系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經常的練習的過程中才能提高,我想這就是我在這次課程設計中的最大收獲。12致致 謝謝經過幾個月的實習調查收集數據資料、整理材料、寫作論文,我終于可以順利的完成論文了。 首先要感謝我的指導老師陳老師,他指引我論文的寫作的方向和架構,并對本文初稿進行仔細批閱,指正出其中不當之處,使我有了思考的方向,他的循循善誘的教導和不拘一格的思路給予我無盡的啟迪,他的嚴謹細致、一絲不茍的作風,將一直是我工作、學習中的榜樣。通過此次的論文,我學到了很多知識,在論文的寫作

26、過程中,我不僅收集到了論文所需的資料數據,而且學到了很多書本上沒有的知識。并且由原先的被動的接受知識轉換為主動的尋求知識,我想這可以說是學習方法上的一個很大的突破。 在論文的寫作過程中也學到了做任何事情所要有的態(tài)度和心態(tài),首先做學問要一絲不茍,對于發(fā)展過程中出現的任何問題和偏差都不要輕視,要通過正確的途徑去解決,在做事情的過程中要有耐心和毅力,不要一遇到困難就打退堂鼓,只要堅持下去就可以找到思路去解決問題的。總之,此次論文的寫作過程,我收獲了很多,為大學四年劃上了一個完美的句號,也為將來的人生之路做一個很好的鋪墊。 再次感謝我的大學和所有幫助過我并給我鼓勵的老師和同學,謝謝你們! 2010 年

27、 6 月 13參參考文獻考文獻1李全利、 遲榮強,單片機原理及接口技術M,北京:高等教育出版社,20042凌玉華,單片機原理及應用系統(tǒng)設計M,長沙:中南大學出版社,20063張毅剛,MCS-51 單片機應用設計M,哈爾賓:哈爾賓工業(yè)大學出版社,1997 4胡漢才,單片機原理及應用M,北京:清華大學出版社,20045何立明,單片機應用系統(tǒng)設計M,北京:北京航空航天大學出版社,19906王榮良,計算機接口技術M,北京:電子工業(yè)出版社,20037陳光東,單片機微型計算機原理與接口技術M,武漢:華中理工大學出版社,19988王幸之、鐘愛琴、王雷、王閃,AT89 系列單片機原理與接口技術M,北京:北京航

28、空航天大學出版社,20049張道德,單片機接口技術(C51 版)M,北京:中國水利水電出版社,200710王為青、程國鋼,單片機 Keil CX51 應用開發(fā)技術M,北京:人民郵電出版社,200711張靖武、周靈彬,單片機系統(tǒng)的 Proteus 設計與仿真M,北京:電子工業(yè)出版社,200712ATMEL. 8-bit Microcontroller with 4K Bytes Flash AT89C51.200013ATMEL.8-bit Microcontroller with 32K Bytes Flash AT89C51RC.200014附 錄相關的程序代碼:相關的程序代碼:#inclu

29、de #define uint unsigned int #define uchar unsigned char#define v_s 10#define u_s 49996 /經校準后的 50MS 初值;計算方法如下: sbit wx5=P21; sbit wx6=P20; sbit wx7=P22; sbit LVSE =P35; /綠色運行燈 sbit HONGSE =P36; /紅色停止燈 sbit HUANGSE=P37; /黃色調鬧鐘燈 sbit DQ=P30; uint temp, temp1,temp2, xs; uchar d8; /設置顯示變量暫存區(qū)/*延時程序*/ voi

30、d delay1(unsigned int m) unsigned int i,j; for(i=m;i0;i-) for(j=110;j0;j-); void delay2(unsigned int m) 15 while(m-); void Init_DS18B20() unsigned char x=0; DQ = 1; /DQ 復位 ds18b20 通信端口 delay2(8); /稍做延時 DQ = 0; /單片機將 DQ 拉低 delay2(80); /精確延時大于 480us DQ = 1; /拉高總線 delay2(4); x=DQ; /稍做延時后 如果 x=0 則初始化成功

31、x=1 則初始化失敗 delay2(20); uchar ReadOneChar() unsigned char i=0; unsigned char dat = 0; for (i=8;i0;i-) DQ = 0; / 高電平拉成低電平時讀周期開始 dat=1; DQ = 1; / 給脈沖信號 if(DQ) dat|=0 x80; / delay2(4); return(dat); /*ds18b20 寫一個字節(jié)*/ void WriteOneChar(unsigned char dat)16 unsigned char i=0; for (i=8; i0; i-) DQ = 0; /從高電

32、平拉至低電平時,寫周期的開始 DQ = dat&0 x01; /數據的最低位先寫入 delay2(5); /60us 到 120us 延時 DQ = 1; dat=1; /從最低位到最高位傳入 /*讀取 ds18b20 當前溫度*/void ReadTemperature() unsigned char a=0; unsigned b=0; unsigned t=0; Init_DS18B20(); WriteOneChar(0 xCC); / 跳過讀序號列號的操作 WriteOneChar(0 x44); / 啟動溫度轉換 delay2(10); / this message is

33、very important Init_DS18B20(); WriteOneChar(0 xCC); /跳過讀序號列號的操作 WriteOneChar(0 xBE); /讀取溫度寄存器等(共可讀 9 個寄存器) 前兩個就是溫度 delay2(10); a=ReadOneChar(); /讀取溫度值低位 b=ReadOneChar(); /讀取溫度值高位 temp1=b4; /低 8 位中的高 4 位值加上高 8 位中后三位數的值 temp1 室溫整數值17 temp2=a&0 x0f; /小數的值 temp=(b*256+a)4); /當前采集溫度值除 16 得實際溫度值 void

34、wenduxianshi() /溫度顯示 d5=temp/10; d6=temp%10; d7=13; sbit beep=P10; /鬧鈴音輸出端sbit N1=P17; /調整項選擇sbit N2=P14; /定鬧啟動sbit N3=P16; /加 1 調整sbit N4=P15; /減 1 調整uint i,j; /延時函數用變量uchar z=0,r=0; /按鍵計數變量uchar s,a,u,us,ms,hs,HD,LD,TD; /過渡變量uchar T,b; /加、減鍵值返回變量uchar minute,hour,m_m,h_h; /時間變量uchar count,second=0

35、,n_m=0,n_h=0,q=0; /標志變量/*不顯示小數點的 0-9 顯示段碼+黑屏碼*/低電平有效uchar SEG714= 0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xbf,0 xff,0 x3f,0 xc6;uchar Wei8=0 x80,0 x40,0 x20,0 x10,0 x08,0 x04,0 x02,0 x01;void delay(uchar p) 18for(i=0;ip;i+)for(j=0;j4)r=0; while(!N1); void Alarm_R() if (N2=0)/選擇

36、鍵 delay(20); if(N2=0) z+; if(z1) z=0; while(!N2); 19 uchar Adjustment(b,T) if(N3 = 0) delay(20); if(N3 = 0) /如果按動上調鍵 T+; /數字加 if(b=1)if(T59) T=0;/分鐘設定 if(b=0)if(T23) T=0;/小時設定 while(!N3); if(N4 = 0) delay(20); if(N4 = 0) /如果按動下調鍵 T-; /數字減 if(b=1)if(T0) T=59; /分鐘設定 if(b=0)if(T0)T=23; /小時設定 while(!N4)

37、; return(T);void Display() for(a=0;a0&hour12)h_h=hour%12;m_m=minute;d0=h_h/10;d1=h_h%10;d3=m_m/10;d4=m_m%10;Display();void Normal_t()TR0=1;LVSE=0; HONGSE=1;HUANGSE=1; if(s=0)d2=0 x0a; /中間位 g 段橫杠閃動顯示為正常走時狀態(tài)else d2=0 x0b;zhuan_h();void hh_s(void)TR0=0;LVSE=1; HONGSE=0;HUANGSE=1; second=0;hour=Adjustment(0,hour);d0=hour/10;d1=hour%10;d2=0 x0c;21d3=10;d4=10;Display();void mm_s(void)TR0=0;LVSE=1; HONGSE=0; HUANGSE=1; second=0;minute=Adjustment(1,minute);d0=10;d1=10;d2=0 x0c;d3= minute/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論