版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 畢業(yè)設(shè)計(jì)項(xiàng)目: 基于單片機(jī)萬(wàn)年歷的設(shè)計(jì) </p><p> 設(shè) 計(jì) 時(shí) 間: 2012 .06 .28 </p><p> 專(zhuān) 業(yè): 信息電子工程技術(shù) </p><p> 年 級(jí): <
2、;/p><p> 學(xué) 號(hào): </p><p> 姓 名: </p><p> 指 導(dǎo) 老 師: xx </p><p><b> 摘 要&l
3、t;/b></p><p> 本設(shè)計(jì)以數(shù)字集成電路技術(shù)為基礎(chǔ),單片機(jī)技術(shù)為核心。軟件設(shè)計(jì)采用模塊化結(jié)構(gòu),C語(yǔ)言編程。系統(tǒng)通過(guò)LCD顯示數(shù)據(jù),可以顯示日期(年、月、日、時(shí)、分、秒)以及溫度。在內(nèi)容安排上首先描述系統(tǒng)硬件工作原理,著重介紹了各硬件接口技術(shù)和各個(gè)接口模塊的功能;其次,詳細(xì)的闡述了程序的各個(gè)模塊和實(shí)現(xiàn)過(guò)程。</p><p><b> 目 錄</b&g
4、t;</p><p><b> 摘要2</b></p><p> 前沿……………………………………………………………………………………………………..........4</p><p><b> 1設(shè)計(jì)要求5</b></p><p><b> 2 設(shè)計(jì)方案5</b>
5、;</p><p> 2.1 控制器選用5</p><p> 2.2 顯示部分設(shè)計(jì)6</p><p> 2.3 數(shù)字溫度采集設(shè)計(jì)6</p><p> 2.4 系統(tǒng)設(shè)計(jì)7</p><p> 2.4.1 晶體振蕩器電路…………………………………………………………………7</p><p&
6、gt; 2.4.3 時(shí)間計(jì)數(shù)器電路…………………………………………………………………7</p><p> 2.4.4 時(shí)鐘電路…………………………………………………………………………7</p><p> 2.4.5 復(fù)位電路…………………………………………………………………………8</p><p> 2.4.6復(fù)位電路的可靠性設(shè)計(jì)……………………………………
7、……………………8</p><p> 2.4.7 按鍵部分……………………………………………………………………………9</p><p> 3各硬件介紹…………………………………………………………………………………..9</p><p> 3.1 AT89S51的引腳說(shuō)明.............................................
8、.....9</p><p> 3.2 LCD1602簡(jiǎn)介10</p><p> 3.3 DS1302 簡(jiǎn)介………………………………………………………………………….10</p><p> 3.4 DS18B20 簡(jiǎn)介12</p><p> 4 系統(tǒng)硬件設(shè)計(jì)所需的器材15</p><p> 5 系統(tǒng)軟
9、件總體設(shè)計(jì)15</p><p><b> 6電路原理仿真圖</b></p><p> 7 主程序流程圖15</p><p> 8 完整程序編寫(xiě)16</p><p><b> 前言</b></p><p> 電子時(shí)鐘是實(shí)現(xiàn)對(duì)年,月,日,時(shí),分,秒數(shù)字顯示的計(jì)時(shí)裝
10、置,廣泛用于個(gè)人家庭,車(chē)站, 碼頭,辦公室,銀行大廳等場(chǎng)所,成為人們?nèi)粘I钪械谋匦杵贰?shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度遠(yuǎn)遠(yuǎn)超過(guò)老式鐘表。鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,在此基礎(chǔ)上完成的電子時(shí)鐘精度高,功能易于擴(kuò)展??蓴U(kuò)展成為諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開(kāi)關(guān)烘箱、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等電路。所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。
11、因此,研究數(shù)字時(shí)鐘及擴(kuò)大其應(yīng)用有著非?,F(xiàn)實(shí)的意義。本設(shè)計(jì)就是數(shù)字時(shí)鐘簡(jiǎn)單的擴(kuò)展應(yīng)用。</p><p><b> 1 設(shè)計(jì)要求</b></p><p> 本設(shè)計(jì)利用DS1302;DS18B20;LCD1602實(shí)現(xiàn)以下功能:</p><p> (1) 顯示日期功能(年、月、日、時(shí)、分、秒以及星期) </p><p>
12、 (2) 可通過(guò)按鍵切換年、月、日及時(shí)、分、秒的顯示狀態(tài)</p><p> (3) 可隨時(shí)調(diào)校年、月、日或時(shí)、分、秒</p><p> (4) 可每次增減一進(jìn)行時(shí)間調(diào)節(jié)</p><p> (5) 可動(dòng)態(tài)完整顯示年份,實(shí)現(xiàn)真正的萬(wàn)年歷顯示</p><p><b> (6) 可顯示溫度</b></p>
13、<p><b> 2 設(shè)計(jì)方案</b></p><p> 2.1 控制器的選用</p><p> 凌陽(yáng)16位單片機(jī)有豐富的中斷源和時(shí)基。它的準(zhǔn)確度相當(dāng)高,并且C語(yǔ)言和匯編兼容的編程環(huán)境也很方便來(lái)實(shí)現(xiàn)一些遞歸調(diào)用。I/O口功能也比較強(qiáng)大,方便使用。用凌陽(yáng)16位單片機(jī)做控制器最有特色的就是它的可編程音頻處理,可完成語(yǔ)音的錄制播放和識(shí)別。這些都方便對(duì)設(shè)計(jì)進(jìn)行
14、擴(kuò)展,使設(shè)計(jì)更加完善。成本也相對(duì)低一些。但是,在控制與顯示的結(jié)合上有些復(fù)雜,顯示模組資源相對(duì)有限,而且單片機(jī)的穩(wěn)定性不是很高,而且就需要完成萬(wàn)年歷這個(gè)不太復(fù)雜的設(shè)計(jì)可以不必用凌陽(yáng)16位單片機(jī)來(lái)完成,采用51單片機(jī)既能夠?qū)崿F(xiàn)既定功能,成本也不高。綜合考慮最后選擇用51單片機(jī)來(lái)作為中心控制器件。</p><p> 硬件控制電路主要用了AT89S51芯片處理器、LCD顯示器等。根據(jù)各自芯片的功能互相連接成電子萬(wàn)年歷的
15、控制電路。軟件控制程序主要有主控程序、電子萬(wàn)年歷的時(shí)間控制程序、時(shí)間顯示及星期顯示和溫度采集程序等組成。主控程序中對(duì)整個(gè)程序進(jìn)行控制,進(jìn)行了初始化程序及計(jì)數(shù)器、還有鍵盤(pán)功能程序、以及顯示程序等工作,時(shí)間控制程序是電子萬(wàn)年歷中比較重要的部分。時(shí)間控制程序體現(xiàn)了年、月、日、時(shí)、分、秒及星期的計(jì)算方法。時(shí)間控制程序主要是定時(shí)器0計(jì)時(shí)中斷程序每隔10ms中斷一次當(dāng)作一個(gè)計(jì)數(shù),每中斷一次則計(jì)數(shù)加1,當(dāng)計(jì)數(shù)100次時(shí),則表示1秒到了,秒變量加1,同
16、理再判斷是否1分鐘到了,再判斷是否1小時(shí)到了,再判斷是否1天到了,再判斷是否1月到了,再判斷是否1年到了,若計(jì)數(shù)到了則相關(guān)變量清除0。先給出一般年份的每月天數(shù)。如果是閏年,第二個(gè)月天數(shù)不為28天,而是29天。再用公式s=v-1 +〔(y-1/4〕-〔(y-1/100〕+〔(y-1/400〕+ d計(jì)算當(dāng)前顯示日期是星期幾,當(dāng)調(diào)節(jié)日期時(shí),星期自動(dòng)的調(diào)整過(guò)來(lái)。閏年的判斷規(guī)則為,如果該年份是4或100的整數(shù)倍或者是400的整數(shù)倍,則為閏年;否則
17、為非閏年。在我們的</p><p><b> 2.2顯示部分設(shè)計(jì)</b></p><p> 本設(shè)計(jì)采用液晶顯示方式。液晶顯示效果出眾,可以運(yùn)用菜單項(xiàng)來(lái)方便操作,比較簡(jiǎn)單。</p><p> 2.3 數(shù)字溫度采集設(shè)計(jì)</p><p> 本設(shè)計(jì)中的溫度采集部分考慮用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,
18、所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿(mǎn)足設(shè)計(jì)要求。</p><p> 溫度采集電路設(shè)計(jì)如下圖所示,控制器采用單片機(jī)AT89S51,溫度傳感器采用DS18B20,用LCD1602顯示溫度</p><p><b> 2.4 系統(tǒng)設(shè)計(jì)</b></p><p>
19、 2.4.1 晶體振蕩器電路 </p><p> 晶體振蕩器電路給數(shù)字鐘提供一個(gè)頻率穩(wěn)定準(zhǔn)確的32768Hz的方波信號(hào),可保證數(shù)</p><p> 字鐘的走時(shí)準(zhǔn)確及穩(wěn)定。不管是指針式的電子鐘還是數(shù)字顯示的電子鐘都使用晶體蕩器電路。</p><p> 圖3 DS1302電路</p><p> 2.4.2 分頻器電路</p>
20、<p> 分頻器電路將高頻方波信號(hào)經(jīng)分頻后得到1Hz的方波信號(hào)供秒計(jì)數(shù)器進(jìn)行計(jì)數(shù),分頻器實(shí)際上也就是計(jì)數(shù)器。</p><p> 2.4.3 時(shí)間計(jì)數(shù)器電路 </p><p> 時(shí)間計(jì)數(shù)電路由秒個(gè)位和秒十位計(jì)數(shù)器,分個(gè)位和分十位計(jì)數(shù)器及時(shí)個(gè)位和時(shí)十位計(jì)數(shù)器電路構(gòu)成,其中秒個(gè)位和秒十位計(jì)數(shù)器,分個(gè)位和分十位計(jì)數(shù)器為60進(jìn)制計(jì)數(shù)器而根據(jù)設(shè)計(jì)要求,時(shí)個(gè)位和時(shí)十位計(jì)數(shù)器為12進(jìn)制
21、計(jì)數(shù)器。</p><p> 2.4.4 時(shí)鐘電路</p><p> 內(nèi)部時(shí)鐘電路如圖所示,在XTAL1和XTAL2引腳上外接定時(shí)元件,內(nèi)部振蕩電路就產(chǎn)生自激振蕩。定時(shí)元件通常石英晶體和電容組成的并聯(lián)諧振回路,晶體振蕩器選擇12MHZ,電容采用30PF。</p><p><b> 圖4 時(shí)鐘電路</b></p><p&
22、gt; 2.4.5 復(fù)位電路 影響單片機(jī)系統(tǒng)運(yùn)行穩(wěn)定性的因素可大體分為外因和內(nèi)因兩部分: (1)外因 射頻干擾,它是以空間電磁場(chǎng)的形式傳遞在機(jī)器內(nèi)部的導(dǎo)體(引線(xiàn)或零件引腳)感生出相應(yīng)的干擾,可通過(guò)電磁屏蔽和合理的布線(xiàn)/器件布局衰減該類(lèi)干擾; 電源線(xiàn)或電源內(nèi)部產(chǎn)生的干擾,它是通過(guò)電源線(xiàn)或電源內(nèi)的部件耦合或直接傳導(dǎo),可通過(guò)電源濾波、隔離等措施來(lái)衰減該類(lèi)干擾 。</p><p> ?。?/p>
23、2)內(nèi)因 振蕩源的穩(wěn)定性,主要由起振時(shí)間頻率穩(wěn)定度和占空比穩(wěn)定度決定 起振時(shí)間可由電路參數(shù)整定穩(wěn)定度受振蕩器類(lèi)型溫度和電壓等參數(shù)影響復(fù)位電路的可靠性。2.4.6復(fù)位電路的可靠性設(shè)計(jì)</p><p> 復(fù)位是單片機(jī)的初始化操作。單片機(jī)啟運(yùn)運(yùn)行時(shí),都需要先復(fù)位,其作用是使CPU和系統(tǒng)中其他部件處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作。因而,復(fù)位是一個(gè)很重要的操作方式。但單片機(jī)本身是不能自動(dòng)進(jìn)行復(fù)位的,
24、必須配合相應(yīng)的外部電路才能實(shí)現(xiàn)。 復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷(xiāo)復(fù)位信號(hào)。為可靠起見(jiàn),電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷(xiāo)復(fù)位信號(hào),以防電源開(kāi) 關(guān)或電源插頭分-合過(guò)程中引起的抖動(dòng)而影響復(fù)位。</p><p> 2.4.7 按鍵部分</p><p> 本設(shè)計(jì)總的用了三個(gè)按扭開(kāi)關(guān)作為鍵盤(pán),其中一個(gè)是選擇調(diào)時(shí)鍵,另兩個(gè)分別為加和減鍵。</p&
25、gt;<p><b> 圖6 按鍵電路</b></p><p><b> 3各硬件介紹</b></p><p> 3.1 AT89S51的引腳說(shuō)明</p><p> AT89S51系列單片機(jī)中有PDIP,PLCC,TQFP多種封裝形式。本設(shè)計(jì)采用的是PDIP封裝40管腳的單片機(jī),各引腳如圖2-2所示
26、。</p><p> 圖9 AT89S51的PDIP封裝引腳圖</p><p> 3.2 LCD1602簡(jiǎn)介 </p><p> 圖11 LCM1602</p><p> Fig.11 LCM1602</p><p> LCM1602采用標(biāo)準(zhǔn)的16腳接口,其中: 第1腳:VSS為地電源 第2腳:VD
27、D接5V正電源 第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。 第5腳:RW為讀寫(xiě)信號(hào)線(xiàn),高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RSRW共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時(shí)可讀忙信號(hào),當(dāng)RS為高電平RW為低電平時(shí)可以寫(xiě)入
28、數(shù)據(jù).第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線(xiàn)。 第15~16腳:空腳 </p><p> 3.3 DS1302 簡(jiǎn)介</p><p> 1 DS1302 的結(jié)構(gòu)及工作原理</p><p> DS1302[1]是美國(guó)DALLAS 公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以
29、對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償功能,工作電壓寬達(dá)2.5~5.5V。采用三線(xiàn)接口與CPU 進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302</p><p> 內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM 寄存器。DS1302 是DS1202 的升級(jí)產(chǎn)品,與DS1202 兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充
30、電的能力。</p><p> 1.1 引腳功能表及內(nèi)部結(jié)構(gòu)圖</p><p> DS1302 的引腳及內(nèi)部結(jié)構(gòu)如圖1 所示,</p><p> 引腳功能如表1 所示。</p><p> 1.2 DS1302 的控制字節(jié)說(shuō)明</p><p> DS1302 的控制字如圖2 所示。</p><
31、p> 控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入到DS1302 中位6 如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1 表示存取RAM數(shù)據(jù);位5至位1 指示操作單元的地址;最低有效位(位0)如為0 表示要進(jìn)行寫(xiě)操作,為1 表示進(jìn)行讀操作,控制字節(jié)總是從最低位開(kāi)始輸出。</p><p><b> 1.3 復(fù)位</b></p><p> 通
32、過(guò)把 輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。 輸入有兩種功能:首先,接通控制邏輯,允許地址/命令序列送入移位寄存器;其次, 提供了終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng) 為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中置 為低電平,則會(huì)終止此次數(shù)據(jù)傳送,并且I/O 引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V 之前, 必須保持低電平。只有在SCLK 為低電平時(shí),才能將RST 置為高電平。</p>
33、;<p> 1.4 數(shù)據(jù)輸入輸出</p><p> 在控制指令字輸入后的下一個(gè)SCLK 時(shí)鐘的上升沿時(shí)數(shù)據(jù)被寫(xiě)入DS1302,數(shù)據(jù)輸入從低位即位0 開(kāi)始。同樣,在緊跟8 位的控制指令字后的下一個(gè)SCLK 脈沖的下降沿讀出DS1302 的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0 位至高位7,數(shù)據(jù)讀寫(xiě)時(shí)序見(jiàn)圖3。</p><p> 1.5 DS1302 的寄存器</p>&l
34、t;p> DS1302 共有12 個(gè)寄存器,其中有7 個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD 碼形式。其日歷、時(shí)間寄存器及其控制字見(jiàn)表2。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充電寄存器外的所有寄存器內(nèi)容。DS1302 與RAM 相關(guān)的寄存器分為兩類(lèi),一類(lèi)是單個(gè)RAM單元,共31 個(gè),每個(gè)單元組態(tài)為一個(gè)8 位的字節(jié),其命令控制字
35、為COH~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;再一類(lèi)為突發(fā)方式下的RAM 寄存器,此方式下可一次性讀寫(xiě)所有的RAM 的31 個(gè)字節(jié),命令控制字為FEH(寫(xiě))、FFH(讀)。</p><p> 3.4 DS18B20 簡(jiǎn)介</p><p> 3.4.1.溫度傳感器DS18B20</p><p> DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的
36、一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。 </p><p> TO-92封裝的DS18B20的引腳排列見(jiàn)下圖,其引腳功能描述見(jiàn)表1。</p><p> DS18B20底視圖</p><p> 表1 DS18B20詳細(xì)引腳功能描述</p><
37、;p> DS18B20的性能特點(diǎn)如下:</p><p> ●獨(dú)特的單線(xiàn)接口僅需要一個(gè)端口引腳進(jìn)行通信;</p><p> ●多個(gè)DS18B20可以并聯(lián)在惟一的三線(xiàn)上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;</p><p><b> ●無(wú)須外部器件;</b></p><p> ●可通過(guò)數(shù)據(jù)線(xiàn)供電,電壓范圍為3.0~5.5V;&
38、lt;/p><p><b> ●零待機(jī)功耗;</b></p><p> ●溫度以9或12位數(shù)字;</p><p> ●用戶(hù)可定義報(bào)警設(shè)置;</p><p> ●報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;</p><p> ●負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒
39、毀,但不能正常工作; </p><p> DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖2所示。</p><p> 圖2 DS18B20內(nèi)部結(jié)構(gòu)</p><p> 64位ROM的結(jié)構(gòu)開(kāi)始8位是產(chǎn)品類(lèi)型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線(xiàn)進(jìn)行通信的原因
40、。溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫(xiě)入戶(hù)報(bào)警上下限。</p><p> DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖3所示。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器
41、中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠(chǎng)時(shí)該位被設(shè)置為0,用戶(hù)要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率。</p><p> 圖3 DS18B20字節(jié)定義</p><p> 由表1可見(jiàn),DS18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫
42、度數(shù)</p><p> 據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。</p><p> 高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來(lái)檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。</p><p> 當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開(kāi)始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)
43、制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可以通過(guò)單線(xiàn)接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。</p><p> 當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表2是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。</p><p> 表1
44、 DS18B20溫度轉(zhuǎn)換時(shí)間表</p><p> DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。</p><p> 在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)ROM的前56位來(lái)計(jì)算C
45、RC值,并和存入DS18B20的CRC值作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。</p><p> DS18B20的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門(mén),當(dāng)計(jì)數(shù)門(mén)打開(kāi)時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而
46、完成溫度測(cè)量。計(jì)數(shù)門(mén)的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55℃所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。</p><p> 減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如
47、此循環(huán)直到減法計(jì)數(shù)器計(jì)數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門(mén)仍未關(guān)閉就重復(fù)上述過(guò)程,直到溫度寄存器值大致被測(cè)溫度值。</p><p> 4 系統(tǒng)硬件設(shè)計(jì)所需的器材</p><p> 5V電源 3V電源</p><p> AT89S51單片機(jī)1個(gè)</p><p&g
48、t;<b> 液晶顯示器1個(gè)</b></p><p> DS1302 1個(gè)</p><p> DS18B20 一個(gè)</p><p> 電阻 1 K的2個(gè)、4.7K的2個(gè)4.7歐排阻</p><p><b> 8550三極管</b></p><p> 晶振12
49、M的一個(gè) 32768K的一個(gè)</p><p> 電容(30P的兩個(gè))</p><p><b> LED二極管1個(gè)</b></p><p><b> 22μf電容1個(gè)</b></p><p><b> 輕觸開(kāi)關(guān)4個(gè)</b></p><p> 5
50、系統(tǒng)軟件總體設(shè)計(jì) </p><p> 系統(tǒng)的軟件設(shè)計(jì)采用C語(yǔ)言,對(duì)單片機(jī)進(jìn)行編程實(shí)現(xiàn)各項(xiàng)功能。程序在WindowsXP環(huán)境下采用Keil軟件編寫(xiě)。軟件控制程序主要有主控程序、電子時(shí)鐘的時(shí)間控制程序h和溫度顯示程序組成。主控程序中對(duì)整個(gè)程序進(jìn)行控制,進(jìn)行了初始化程序還有鍵盤(pán)功能程序、以及顯示程序和時(shí)間控制程序是電子時(shí)鐘中比較重要的部分。時(shí)間控制程序體現(xiàn)了年、月、日、時(shí)、分、秒的計(jì)算方法。</p>&
51、lt;p> 6 電路原理仿真圖:</p><p><b> 7 主程序流程圖</b></p><p><b> 圖16 主流程框圖</b></p><p><b> 8 完整程序編寫(xiě)</b></p><p> #include<reg51.h><
52、;/p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;</p><p> #define yh 0x80 </p>
53、;<p> #define er 0x80+0x40 </p><p> sbit DQ = P3^5; </p><p> sbit RS=P1^7;</p><p> sbit E=P2^4;</p><p> sbit RW=P1^6; </p><p> sbit IO=P1^5;&l
54、t;/p><p> sbit SCLK=P1^4;</p><p> sbit RST=P2^2;</p><p> sbit ACC0=ACC^0;</p><p> sbit ACC7=ACC^7;</p><p> sbit key1=P1^0; </p><p> sbit k
55、ey2=P1^2; </p><p> sbit key3=P1^3; </p><p> uchar code tab1[]={"20 - - "}; </p><p> uchar code tab2[]={" : : "};</p><p> void delay(uin
56、t xms)</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=xms;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b>
57、 }</b></p><p> //液晶寫(xiě)入指令函數(shù)</p><p> write_1602com(uchar com)</p><p><b> {</b></p><p><b> RS=0;</b></p><p><b> RW=0;
58、</b></p><p><b> P0=com;</b></p><p><b> delay(1);</b></p><p><b> E=1;</b></p><p><b> delay(1);</b></p>&
59、lt;p><b> E=0;</b></p><p><b> }</b></p><p> //液晶寫(xiě)入數(shù)據(jù)函數(shù)</p><p> write_1602dat(uchar dat)</p><p><b> {</b></p><p>
60、<b> RS=1;</b></p><p><b> RW=0; </b></p><p><b> P0=dat;</b></p><p><b> delay(1);</b></p><p><b> E=1; </b>
61、;</p><p><b> delay(1);</b></p><p><b> E=0; </b></p><p><b> }</b></p><p><b> //液晶初始化函數(shù)</b></p><p> lcd_
62、init()</p><p><b> {</b></p><p> write_1602com(0x38);</p><p> write_1602com(0x0c);</p><p> write_1602com(0x06);</p><p> write_1602com(0x01)
63、;</p><p> write_1602com(yh+1);</p><p> for(a=0;a<14;a++)</p><p><b> {</b></p><p> write_1602dat(tab1[a]);</p><p><b> delay(3);<
64、;/b></p><p><b> }</b></p><p> write_1602com(er+2);</p><p> for(a=0;a<8;a++)</p><p><b> {</b></p><p> write_1602dat(tab2[
65、a]);</p><p><b> delay(3);</b></p><p><b> }</b></p><p><b> }</b></p><p> /***************DS1302有關(guān)子函數(shù)********************/</p&g
66、t;<p><b> //寫(xiě)一個(gè)字節(jié)</b></p><p> void write_byte(uchar dat)</p><p><b> {</b></p><p><b> ACC=dat;</b></p><p><b> RST=1
67、;</b></p><p> for(a=8;a>0;a--)</p><p><b> {</b></p><p><b> IO=ACC0;</b></p><p><b> SCLK=0;</b></p><p><
68、b> SCLK=1;</b></p><p> ACC=ACC>>1;</p><p><b> }</b></p><p><b> }</b></p><p><b> //讀一個(gè)字節(jié)</b></p><p>
69、 uchar read_byte()</p><p><b> {</b></p><p><b> RST=1;</b></p><p> for(a=8;a>0;a--)</p><p><b> {</b></p><p><
70、b> ACC7=IO;</b></p><p><b> SCLK=1;</b></p><p><b> SCLK=0;</b></p><p> ACC=ACC>>1;</p><p><b> }</b></p>&l
71、t;p> return (ACC);</p><p><b> }</b></p><p> //向1302芯片寫(xiě)函數(shù),指定寫(xiě)入地址,數(shù)據(jù)</p><p> void write_1302(uchar add,uchar dat)</p><p><b> {</b></p&g
72、t;<p><b> RST=0;</b></p><p><b> SCLK=0;</b></p><p><b> RST=1;</b></p><p> write_byte(add);</p><p> write_byte(dat);</
73、p><p><b> SCLK=1;</b></p><p><b> RST=0;</b></p><p><b> }</b></p><p> //從1302讀數(shù)據(jù)函數(shù),指定讀取數(shù)據(jù)來(lái)源地址</p><p> uchar read_1302(
74、uchar add)</p><p><b> {</b></p><p> uchar temp;</p><p><b> RST=0;</b></p><p><b> SCLK=0;</b></p><p><b> RST=
75、1;</b></p><p> write_byte(add);</p><p> temp=read_byte();</p><p><b> SCLK=1;</b></p><p><b> RST=0;</b></p><p> return(te
76、mp);</p><p><b> }</b></p><p> //BCD碼轉(zhuǎn)十進(jìn)制函數(shù),輸入BCD,返回十進(jìn)制</p><p> uchar BCD_Decimal(uchar bcd)</p><p><b> {</b></p><p> uchar Dec
77、imal;</p><p> Decimal=bcd>>4;</p><p> return(Decimal=Decimal*10+(bcd&=0x0F));</p><p><b> }</b></p><p> //1302芯片初始化子函數(shù)(2012-06-26,00:00:00,week
78、2)</p><p> void ds1302_init() </p><p><b> {</b></p><p><b> RST=0;</b></p><p><b> SCLK=0;</b></p><p> write_1302(0x
79、8e,0x00); </p><p> write_1302(0x80,0x00);</p><p> write_1302(0x82,0x00);</p><p> write_1302(0x84,0x00);</p><p> write_1302(0x8a,0x02);</p><p> write_1
80、302(0x86,0x26);</p><p> write_1302(0x88,0x06);</p><p> write_1302(0x8c,0x12);</p><p> write_1302(0x8e,0x80);</p><p><b> }</b></p><p><b&
81、gt; //溫度顯示子函數(shù)</b></p><p> //向LCD寫(xiě)溫度數(shù)據(jù),并指定顯示位置</p><p> void write_temp(uchar add,uchar dat)</p><p><b> {</b></p><p> uchar gw,sw;</p><p
82、> gw=dat%10;</p><p> sw=dat/10;</p><p> write_1602com(er+add);</p><p> write_1602dat(0x30+sw);</p><p> write_1602dat(0x30+gw);</p><p> write_1602d
83、at(0xdf);</p><p> write_1602dat(0x43);</p><p><b> }</b></p><p> //時(shí)分秒顯示子函數(shù)</p><p> void write_sfm(uchar add,uchar dat)</p><p><b>
84、{</b></p><p> uchar gw,sw;</p><p> gw=dat%10;</p><p> sw=dat/10;</p><p> write_1602com(er+add);</p><p> write_1602dat(0x30+sw);</p><p
85、> write_1602dat(0x30+gw);</p><p><b> }</b></p><p> //年月日顯示子函數(shù)</p><p> void write_nyr(uchar add,uchar dat)</p><p><b> {</b></p>&l
86、t;p> uchar gw,sw;</p><p> gw=dat%10;</p><p> sw=dat/10;</p><p> write_1602com(yh+add);</p><p> write_1602dat(0x30+sw);</p><p> write_1602dat(0x30+
87、gw);</p><p><b> }</b></p><p><b> //寫(xiě)星期函數(shù)</b></p><p> void write_week(uchar week)</p><p><b> {</b></p><p> write_16
88、02com(yh+0x0c);</p><p> switch(week)</p><p><b> {</b></p><p> case 1:write_1602dat('M');</p><p> write_1602dat('O');</p><p>
89、; write_1602dat('N');</p><p><b> break;</b></p><p> case 2:write_1602dat('T');</p><p> write_1602dat('U');</p><p> write_1602da
90、t('E');</p><p><b> break;</b></p><p> case 3:write_1602dat('W');</p><p> write_1602dat('E');</p><p> write_1602dat('D');
91、</p><p><b> break;</b></p><p> case 4:write_1602dat('T');</p><p> write_1602dat('H');</p><p> write_1602dat('U');</p><
92、;p><b> break;</b></p><p> case 5:write_1602dat('F');</p><p> write_1602dat('R');</p><p> write_1602dat('I');</p><p><b>
93、 break;</b></p><p> case 6:write_1602dat('S');</p><p> write_1602dat('T');</p><p> write_1602dat('A');</p><p><b> break;</b&
94、gt;</p><p> case 7:write_1602dat('S');</p><p> write_1602dat('U');</p><p> write_1602dat('N');</p><p><b> break;</b></p>
95、<p><b> }</b></p><p><b> }</b></p><p> //*鍵盤(pán)掃描有關(guān)函數(shù)</p><p> void keyscan()</p><p><b> {</b></p><p> if(key1==
96、0)</p><p><b> {</b></p><p><b> delay(9);</b></p><p> if(key1==0)</p><p><b> {</b></p><p> delay(20);</p>&l
97、t;p> while(!key1);</p><p><b> key1n++;</b></p><p> if(key1n==9)</p><p><b> key1n=1;</b></p><p> switch(key1n)</p><p><b&
98、gt; {</b></p><p> case 1: TR0=0;</p><p> write_1602com(er+0x09);</p><p> write_1602com(0x0f);</p><p> temp=(miao)/10*16+(miao)%10;</p><p> writ
99、e_1302(0x8e,0x00);</p><p> write_1302(0x80,0x80|temp);</p><p> write_1302(0x8e,0x80);</p><p><b> break;</b></p><p> case 2: write_1602com(er+6);</p&
100、gt;<p><b> break;</b></p><p> case 3: write_1602com(er+3);</p><p><b> break;</b></p><p> case 4: write_1602com(yh+0x0e);</p><p><b
101、> break;</b></p><p> case 5: write_1602com(yh+0x0a);</p><p><b> break;</b></p><p> case 6: write_1602com(yh+0x07);</p><p><b> break;<
102、/b></p><p> case 7: write_1602com(yh+0x04);</p><p><b> break;</b></p><p><b> case 8:</b></p><p> write_1602com(0x0c);</p><p>
103、;<b> TR0=1;</b></p><p> temp=(miao)/10*16+(miao)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x80,0x00|temp);</p><p> write_1302(0x8e,0x80);&
104、lt;/p><p> break;</p><p><b> }}}</b></p><p> if(key1n!=0)</p><p><b> {</b></p><p> if(key2==0) </p><p
105、><b> {</b></p><p> delay(10);</p><p> if(key2==0)</p><p><b> {</b></p><p> delay(20);</p><p> while(!key2);</p><
106、;p> switch(key1n)</p><p><b> {</b></p><p> case 1:miao++;</p><p> if(miao==60)</p><p><b> miao=0;</b></p><p> write_sfm(0x
107、08,miao);</p><p> temp=(miao)/10*16+(miao)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x80,temp); </p><p> write_1302(0x8e,0x80); </p><p>
108、write_1602com(er+0x09);</p><p><b> break;</b></p><p> case 2:fen++;</p><p> if(fen==60)</p><p><b> fen=0;</b></p><p> write_sf
109、m(0x05,fen);</p><p> temp=(fen)/10*16+(fen)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x82,temp);</p><p> write_1302(0x8e,0x80);</p><p> w
110、rite_1602com(er+6);</p><p><b> break;</b></p><p> case 3:shi++;</p><p> if(shi==24)</p><p><b> shi=0;</b></p><p> write_sfm(2,
111、shi);</p><p> temp=(shi)/10*16+(shi)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x84,temp);</p><p> write_1302(0x8e,0x80);</p><p> write_16
112、02com(er+3);</p><p><b> break;</b></p><p> case 4:week++;</p><p> if(week==8)</p><p><b> week=1;</b></p><p> write_1602com(yh+
113、0x0C);</p><p> write_week(week);</p><p> temp=(week)/10*16+(week)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x8a,temp);</p><p> write_1302
114、(0x8e,0x80);</p><p> write_1602com(yh+0x0e);</p><p><b> break;</b></p><p> case 5:ri++;</p><p> if(ri==32)</p><p><b> ri=1;</b>
115、;</p><p> write_nyr(9,ri);</p><p> temp=(ri)/10*16+(ri)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x86,temp);</p><p> write_1302(0x8e,0x80
116、);</p><p> write_1602com(yh+10);</p><p><b> break;</b></p><p> case 6:yue++;</p><p> if(yue==13)</p><p><b> yue=1;</b></p&g
117、t;<p> write_nyr(6,yue);</p><p> temp=(yue)/10*16+(yue)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x88,temp);</p><p> write_1302(0x8e,0x80);<
118、/p><p> write_1602com(yh+7);</p><p><b> break;</b></p><p> case 7:nian++;</p><p> if(nian==100)</p><p><b> nian=0;</b></p>
119、<p> write_nyr(3,nian);</p><p> temp=(nian)/10*16+(nian)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x8c,temp);</p><p> write_1302(0x8e,0x80);<
120、/p><p> write_1602com(yh+4);</p><p><b> break;</b></p><p><b> }}}</b></p><p> if(key3==0)</p><p><b> {</b></p>
121、;<p> delay(10);</p><p> if(key3==0)</p><p><b> {</b></p><p> delay(20);</p><p> while(!key3);</p><p> switch(key1n)</p>&l
122、t;p><b> {</b></p><p> case 1:miao--;</p><p> if(miao==-1)</p><p><b> miao=59;</b></p><p> write_sfm(0x08,miao);</p><p> te
123、mp=(miao)/10*16+(miao)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x80,temp);</p><p> write_1302(0x8e,0x80);</p><p> write_1602com(er+0x09);</p>&
124、lt;p><b> break;</b></p><p> case 2:fen--;</p><p> if(fen==-1)</p><p><b> fen=59;</b></p><p> write_sfm(5,fen);</p><p> tem
125、p=(fen)/10*16+(fen)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x82,temp);</p><p> write_1302(0x8e,0x80);</p><p> write_1602com(er+6);</p><p&g
126、t;<b> break;</b></p><p> case 3:shi--;</p><p> if(shi==-1)</p><p><b> shi=23;</b></p><p> write_sfm(2,shi);</p><p> temp=(shi
127、)/10*16+(shi)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x84,temp);</p><p> write_1302(0x8e,0x80);</p><p> write_1602com(er+3);</p><p><
128、b> break;</b></p><p> case 4:week--;</p><p> if(week==0)</p><p><b> week=7;</b></p><p> write_1602com(yh+0x0C);</p><p> write_we
129、ek(week);</p><p> temp=(week)/10*16+(week)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x8a,temp);</p><p> write_1302(0x8e,0x80);</p><p> wr
130、ite_1602com(yh+0x0e);</p><p><b> break;</b></p><p> case 5:ri--;</p><p><b> if(ri==0)</b></p><p><b> ri=31;</b></p><p
131、> write_nyr(9,ri);</p><p> temp=(ri)/10*16+(ri)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x86,temp);</p><p> write_1302(0x8e,0x80);</p><
132、p> write_1602com(yh+10);</p><p><b> break;</b></p><p> case 6:yue--;</p><p> if(yue==0)</p><p><b> yue=12;</b></p><p> wri
133、te_nyr(6,yue);</p><p> temp=(yue)/10*16+(yue)%10;</p><p> write_1302(0x8e,0x00);</p><p> write_1302(0x88,temp);</p><p> write_1302(0x8e,0x80);</p><p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)萬(wàn)年歷的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)萬(wàn)年歷的設(shè)計(jì)
- 基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 單片機(jī)萬(wàn)年歷系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的測(cè)溫萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)的萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的電子萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---單片機(jī)控制的萬(wàn)年歷設(shè)計(jì)
- 基于單片機(jī)的電子萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于51單片機(jī)的萬(wàn)年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于51單片機(jī)的萬(wàn)年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的數(shù)字萬(wàn)年歷設(shè)計(jì)
- 基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì).doc
- 51單片機(jī)萬(wàn)年歷畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)----基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)
- 基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)的液晶萬(wàn)年歷畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 51基于單片機(jī)的電子萬(wàn)年歷畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論