版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 南 昌 工 程 學(xué) 院</p><p> 課 程 設(shè) 計(jì)(論 文)</p><p> 機(jī)械與電氣工程學(xué)院 系(院) 自動(dòng)化 專業(yè)</p><p> 論 文 題 目 基于單片機(jī)的多功能電子鐘 </p><p> 學(xué)生姓名 方 結(jié) 云 </p><p> 班
2、 級(jí) 07自 動(dòng) 化 </p><p> 學(xué) 號(hào) 2007100230 </p><p> 指導(dǎo)教師 于 禎 </p><p> 完成日期 2011年 01月 07 日</p><p> 課程設(shè)計(jì)(論文)任務(wù)書(shū)</p><p
3、> 機(jī)械與電氣工程學(xué)院 07自動(dòng)化 專業(yè)類 班</p><p><b> 學(xué)生:方結(jié)云</b></p><p> 日期: 自2010 年 12 月 27 日至2011 年 1 月 7 日</p><p><b> 指導(dǎo)教師:于禎</b><
4、/p><p> 助理指導(dǎo)教師(并指出所負(fù)責(zé)的部分):</p><p><b> 教研室主任:</b></p><p> 附注:任務(wù)書(shū)應(yīng)該附在已完成的課程設(shè)計(jì)說(shuō)明書(shū)首頁(yè)。</p><p><b> 目錄</b></p><p><b> 第一章 前言4<
5、/b></p><p> 第二章 總體方案設(shè)計(jì)5</p><p> 2.1 設(shè)計(jì)內(nèi)容5</p><p> 2.2 設(shè)計(jì)內(nèi)容5</p><p> 2.3 方案論證6</p><p> 2.4 方案選擇7</p><p> 第三章 單元模塊設(shè)計(jì)8</p>
6、<p> 3.1各單元模塊功能介紹及電路設(shè)計(jì)8</p><p> 3.1.1 溫度采集電路8</p><p> 3.1.2 DS1302時(shí)鐘電路8</p><p> 3.1.3 串行通信接口電路9</p><p> 3.1.4 USB連接電路9</p><p> 3.1.5 按鍵電路1
7、0</p><p> 3.1.6液晶顯示顯示電路10</p><p> 3.2 特殊器件介紹11</p><p> 3.2.1 STC89C52單片機(jī)芯片11</p><p> 3.2.2 DS1302介紹11</p><p> 3.2.3 溫度傳感器DS18B2012</p>&l
8、t;p> 3. 2. 4 報(bào)警模塊12</p><p> 3.2.5液晶顯示LCD160213</p><p> 第四章 軟件設(shè)計(jì)14</p><p> 4.1 軟件選擇14</p><p> 4.2軟件設(shè)計(jì)流程14</p><p> 4.2.1 溫度采集流程15</p>&
9、lt;p> 4.2.2 日期數(shù)據(jù)處理流程16</p><p> 第五章 系統(tǒng)的仿真及調(diào)試17</p><p> 5.1 系統(tǒng)仿真17</p><p> 5.2 硬件調(diào)試17</p><p> 5.3 軟件調(diào)試18</p><p> 第六章 總結(jié)與體會(huì)20</p><p
10、> 6.1 設(shè)計(jì)小結(jié)20</p><p> 6.2 設(shè)計(jì)收獲及改進(jìn)20</p><p><b> 6.3 致謝20</b></p><p> 6.4參考文獻(xiàn)21</p><p><b> 附錄:22</b></p><p><b> 第一
11、章 前言</b></p><p> 單片機(jī)是指一個(gè)集成在一塊芯片上的完整計(jì)算機(jī)系統(tǒng)。盡管他的大部分功能集成在一塊小芯片上,但是它具有一個(gè)完整計(jì)算機(jī)所需要的大部分部件:CPU、內(nèi)存、內(nèi)部和外部總線系統(tǒng),目前大部分還會(huì)具有外存。同時(shí)集成諸如通訊接口、定時(shí)器,實(shí)時(shí)時(shí)鐘等外圍設(shè)備。而現(xiàn)在最強(qiáng)大的單片機(jī)系統(tǒng)甚至可以將聲音、圖像、網(wǎng)絡(luò)、復(fù)雜的輸入輸出系統(tǒng)集成在一塊芯片上。單片機(jī)也被稱為微控制器(Microcon
12、troller),它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開(kāi)發(fā)提供了便利條件。單片機(jī)誕生于20世紀(jì)70年代末,經(jīng)歷了SCM、MCU、SOC三大階段。</p><p> STC單片機(jī)完全兼容51單片機(jī),并有其獨(dú)到之處,其抗干擾性強(qiáng),加密性強(qiáng),超低功耗,可以遠(yuǎn)程升級(jí),內(nèi)部有專用復(fù)位電路,價(jià)格也較便宜,由于這
13、些特點(diǎn)使得 STC 系列單片機(jī)的應(yīng)用日趨廣泛。本文設(shè)計(jì)了一種基于STC公司的STC89C52單片機(jī),使用Dallas的一線制數(shù)字溫度計(jì)DS18B20作為溫度傳感器,實(shí)時(shí)時(shí)鐘芯片DS1302提供當(dāng)前日期和時(shí)間數(shù)據(jù),并將實(shí)時(shí)的日期和溫度數(shù)據(jù)字符型液晶顯示器LCD1602上顯示,本次設(shè)計(jì)的多功能數(shù)字鐘采用數(shù)字電路對(duì)日期和溫度進(jìn)行控制設(shè)置,我們采用LCD液晶顯示,以24小時(shí)的計(jì)時(shí)方式,根據(jù)LCD顯示原理進(jìn)行顯示,定時(shí)器計(jì)數(shù)。在本次設(shè)計(jì)中,電路具
14、有顯示日期、時(shí)間、溫度的基本功能,還可以實(shí)現(xiàn)對(duì)它們的調(diào)整。本次設(shè)計(jì)要達(dá)到的目的是:具有時(shí)間顯示和手動(dòng)校對(duì)功能,24小時(shí)制;具有年、月、日顯示和手動(dòng)校對(duì)功能;具有顯示當(dāng)前星期的功能;具有鬧鈴功能;具有環(huán)境溫度采集功能;掉電后無(wú)需重新設(shè)置時(shí)間和日期;系統(tǒng)不但接口設(shè)計(jì)簡(jiǎn)單、便于控制,而且具有很好的人機(jī)界面,可以對(duì)當(dāng)前的時(shí)間進(jìn)行調(diào)整。</p><p> 第二章 總體方案設(shè)計(jì)</p><p>&l
15、t;b> 2.1 設(shè)計(jì)內(nèi)容</b></p><p> 完成基于LCD液晶顯示的多功能數(shù)字鐘的設(shè)計(jì)。要求該電路具有顯示日期、時(shí)間、溫度的基本功能,還可以實(shí)現(xiàn)對(duì)它們的調(diào)整。本次設(shè)計(jì)要達(dá)到的目的是:具有時(shí)間顯示和手動(dòng)校對(duì)功能,24小時(shí)制;具有年、月、日顯示和手動(dòng)校對(duì)功能;具有顯示當(dāng)前星期的功能;具有鬧鈴功能;具有環(huán)境溫度采集功能;掉電后無(wú)需重新設(shè)置時(shí)間和日期;</p><p&g
16、t;<b> 2.2 設(shè)計(jì)內(nèi)容</b></p><p> 方案一:利用QuartusII軟件設(shè)計(jì)一個(gè)數(shù)字鐘,對(duì)設(shè)計(jì)電路進(jìn)行功能仿真,并下載SOPC實(shí)驗(yàn)系統(tǒng)中,可以完成00:00:00到23:59:59的計(jì)時(shí)功能,并在控制電路的作用下具有保持、清零、快速校時(shí)、快速校分、整點(diǎn)報(bào)時(shí)等功能。能進(jìn)行正常的時(shí)、分、秒計(jì)時(shí)功能;鎖死功能--鎖死狀態(tài)下時(shí)鐘保持不變;清零功能—-時(shí)鐘計(jì)時(shí)電路和萬(wàn)年歷電路;
17、鬧表功能—鬧鐘蜂鳴器先鳴響5秒,然后停2秒,如果無(wú)人干預(yù),蜂鳴器再鳴響5秒。蜂鳴過(guò)程中,按任意鍵,本次鬧鐘結(jié)束;相應(yīng)的電路圖如下圖2.1所示:</p><p> 圖2.1 QuartusII軟件設(shè)計(jì)數(shù)字鐘電路圖</p><p> 方案二:采用單片機(jī)STC89C52RC芯片以及相關(guān)的芯片來(lái)實(shí)現(xiàn)多功能的數(shù)字鐘。該設(shè)計(jì)選用一線制溫度計(jì)DS18B20 作為溫度傳感器,實(shí)時(shí)時(shí)鐘芯片DS1302提
18、供當(dāng)前日期和時(shí)間數(shù)據(jù),并將實(shí)時(shí)的日期和溫度數(shù)據(jù)在字符型液晶顯示器LCD1602上顯示出來(lái)。本文設(shè)計(jì)了一種基于STC公司的ST89C52單片機(jī),使用Dallas的一線制數(shù)字溫度計(jì)DS18B20作為溫度傳感器,實(shí)時(shí)時(shí)鐘芯片DS1302提供當(dāng)前日期和時(shí)間數(shù)據(jù),并將實(shí)時(shí)的日期和溫度數(shù)據(jù)字符型液晶顯示器LCD1602上顯示,本次設(shè)計(jì)的多功能數(shù)字鐘采用數(shù)字電路對(duì)日期和溫度進(jìn)行控制設(shè)置,我們采用LCD液晶顯示,以24小時(shí)的計(jì)時(shí)方式,根據(jù)LCD顯示原理
19、進(jìn)行顯示,定時(shí)器計(jì)數(shù)。在本次設(shè)計(jì)中,電路具有顯示日期、時(shí)間、溫度的基本功能,還可以實(shí)現(xiàn)對(duì)它們的調(diào)整。本次設(shè)計(jì)要達(dá)到的目的是:具有時(shí)間顯示和手動(dòng)校對(duì)功能,24小時(shí)制;具有年、月、日顯示和手動(dòng)校對(duì)功能;具有顯示當(dāng)前星期的功能;具有鬧鈴功能;具有環(huán)境溫度采集功能;掉電后無(wú)需重新設(shè)置時(shí)間和日期。</p><p> 系統(tǒng)不但接口設(shè)計(jì)簡(jiǎn)單、便于控制,而且具有很好的人機(jī)界面,可以通過(guò)幾個(gè)按鍵對(duì)當(dāng)前的時(shí)間進(jìn)行調(diào)整,對(duì)鬧鐘進(jìn)行隨
20、意設(shè)置,以及溫度超過(guò)上下限會(huì)自動(dòng)進(jìn)行報(bào)警(LED亮)等功能。其原理框圖如下圖2.2所示:</p><p> 圖2.2 數(shù)字鐘原理框圖</p><p><b> 2.3 方案論證</b></p><p> 我們可以看到,方案一使用的基于Altera公司出品QuartusII軟件以及相應(yīng)的實(shí)驗(yàn)平臺(tái)完成的多功能數(shù)字計(jì)時(shí)器,由于時(shí)鐘的計(jì)時(shí)范圍是0
21、0:00:00---23:59:59,所以我們需要設(shè)計(jì)模六十和模二十四的計(jì)數(shù)器組成時(shí)鐘計(jì)時(shí)電路。校分、校時(shí)、清零電路需要輸入一些控制信號(hào)給時(shí)鐘計(jì)時(shí)電路,當(dāng)然這些控制信號(hào)是由開(kāi)關(guān)提供的。要實(shí)現(xiàn)整點(diǎn)報(bào)時(shí)功能,一個(gè)報(bào)時(shí)控制電路是必不可少的。萬(wàn)年歷電路需要由計(jì)時(shí)電路提供計(jì)時(shí)脈沖,脈沖輸送給一個(gè)由模30、模12、模100級(jí)聯(lián)而成計(jì)時(shí)電路。整個(gè)過(guò)程不僅涉及到的分頻計(jì)數(shù)器較多,還要用到大量的開(kāi)關(guān)控制顯得相當(dāng)復(fù)雜且容易出錯(cuò)。而方案二是采用最近幾年比較普
22、遍的STC89C52RC單片機(jī)芯片實(shí)現(xiàn)?;赟TC公司的ST89C52單片機(jī),使用Dallas的一線制數(shù)字溫度計(jì)DS18B20作為溫度傳感器,實(shí)時(shí)時(shí)鐘芯片DS1302提供當(dāng)前日期和時(shí)間數(shù)據(jù),并將實(shí)時(shí)的日期和溫度數(shù)據(jù)字符型液晶顯示器LCD1602上顯示。之所以選擇這個(gè)芯片,是因?yàn)镾TC 單片機(jī)降低成本,提升性能,原有程序直接使用,硬件無(wú)需改動(dòng)。并且其抗干擾性強(qiáng),加密性強(qiáng),超低功耗,可以遠(yuǎn)程升級(jí),內(nèi)部有專用復(fù)位電路,價(jià)格也較</p&g
23、t;<p><b> 2.4 方案選擇</b></p><p> 在現(xiàn)代SOC技術(shù)的引領(lǐng)下,人們對(duì)低故障、高實(shí)時(shí)、高可靠、高穩(wěn)定的性能更加青睞,其抗干擾性強(qiáng),加密性強(qiáng),超低功耗,可以遠(yuǎn)程升級(jí),內(nèi)部有專用復(fù)位電路,價(jià)格也較便宜,結(jié)合本設(shè)計(jì)的要求及綜合以上比較的情況,我們選擇用STC89C52RC單片機(jī)芯片來(lái)實(shí)現(xiàn)本次設(shè)計(jì)。</p><p> 第三章 單
24、元模塊設(shè)計(jì)</p><p> 3.1各單元模塊功能介紹及電路設(shè)計(jì)</p><p> 3.1.1 溫度采集電路</p><p> DS18B20是美國(guó)Dallas半導(dǎo)體公司生產(chǎn)的一線制數(shù)字溫度傳感器。測(cè)量范圍為- 55℃~ + 125℃,在-10℃~8℃范圍內(nèi),精度為0.5℃,不需A /D 轉(zhuǎn)換電路,直接將溫度值轉(zhuǎn)換成數(shù)字量。溫度數(shù)據(jù)的傳輸,只需要一根數(shù)據(jù)線,直
25、接將數(shù)據(jù)線與單片機(jī)的P3.6口相連接。其圖如下3.1所示:</p><p><b> 圖3.1溫度采集 </b></p><p> 3.1.2 DS1302時(shí)鐘電路</p><p> DS1302是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí)。DS1302用于數(shù)據(jù)記錄,
26、特別是對(duì)某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄上,能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄。DS1302提供2個(gè)電源引腳:一個(gè)(VCC2)接主電源;另一個(gè)(VCC1)接備用電源。</p><p> 圖3.2 DS1302時(shí)鐘電路</p><p> 3.1.3 串行通信接口電路</p><p> MAX232是電壓轉(zhuǎn)換芯片,將TTL電平轉(zhuǎn)換成可以和電腦串口匹配的電壓。DB
27、9通過(guò)下載線纜與電腦連接,可以將程序下載到單片機(jī)上。</p><p> 圖3.3 RS232串行通信</p><p> 3.1.4 USB連接電路</p><p> USB接口通用性好、實(shí)時(shí)性強(qiáng)、傳輸方式多樣、成本低、支持即插即用、易于擴(kuò)展且便于使用。本次設(shè)計(jì)的USB連接線路,為單片機(jī)提供5V電壓。</p><p> 圖3.4 US
28、B連接線路</p><p> 3.1.5 按鍵電路</p><p> 本次設(shè)計(jì)中用到了4*4的矩陣鍵盤列陣,通過(guò)賦低電平選中其中一列,以便來(lái)控制時(shí),分,秒,年,月,日,以及鬧鐘的調(diào)整。其電路如圖所示:</p><p> 圖3.5 按鍵控制電路</p><p> 鍵盤處理針對(duì)二級(jí)以上任務(wù),該最小系統(tǒng)共設(shè)有8個(gè)按鍵:運(yùn)行鍵、暫停鍵、上升鍵
29、、下降鍵、切換健、定鬧鍵、校準(zhǔn)鍵及保留功能鍵。下面分別說(shuō)明各鍵功能。(1)運(yùn)行鍵:當(dāng)系統(tǒng)上電、暫停鍵按下過(guò)、校準(zhǔn)鍵按下過(guò)或定鬧鍵按下過(guò)等上述情況之一發(fā)生時(shí),只有按下運(yùn)行鍵,時(shí)鐘才能正常顯示。否則,顯示內(nèi)容與上述各鍵功能相關(guān)。當(dāng)系統(tǒng)上電,需從0點(diǎn)0分0秒開(kāi)始顯示;暫停和鬧鐘定時(shí),須從實(shí)際時(shí)間開(kāi)始顯示;時(shí)間校準(zhǔn)時(shí),需從校準(zhǔn)時(shí)間開(kāi)始顯示。(2)暫停鍵:當(dāng)按下暫停鍵,時(shí)鐘顯示固定在當(dāng)前值,但內(nèi)部軟件定時(shí)正常累計(jì)。(3)上升、下降鍵:用于時(shí)間校準(zhǔn)
30、和鬧鐘定時(shí),對(duì)于時(shí)、分、秒的調(diào)整。(4)切換鍵:用于時(shí)間校準(zhǔn)和鬧鐘定時(shí),用于選擇時(shí)、分、秒哪個(gè)被調(diào)整。按第一下時(shí),選擇小時(shí)被調(diào)整;按第二下時(shí),選擇分鐘被調(diào)整;按第三下時(shí),選擇秒被調(diào)整;按第四下時(shí),重復(fù)第一下的選擇,以此類推。</p><p> 選擇小時(shí),按第二下;選擇分鐘,按第三下;選擇秒,按第一下;重復(fù)按下</p><p> 標(biāo)準(zhǔn)鍵:用于對(duì)時(shí)間的校準(zhǔn)。該鍵只要被按下,則時(shí)間固定顯示,
31、由切換鍵選擇時(shí)、分、秒,選定后,用上升、下降鍵調(diào)整相應(yīng)值。(6)定鬧鍵:用于鬧鐘定時(shí)功能。該鍵只要被按下,則時(shí)間固定顯示,但內(nèi)部繼續(xù)定時(shí),由切換鍵選擇時(shí)、分、秒,選定后,用上升、下降鍵調(diào)整相應(yīng)值。(7)保留功能鍵:用于以后功能擴(kuò)展。</p><p> 3.1.6液晶顯示顯示電路</p><p> 本設(shè)計(jì)中會(huì)將時(shí)分秒,年月日周以及鬧鐘的設(shè)置,溫度全部都會(huì)顯示到液晶LCD1602上面,其具
32、有16×2能夠顯示所有英文大小寫字母,0到9十個(gè)數(shù)字以及一些常用的符號(hào)。該液晶在4.5V到5.5V電壓范圍內(nèi)都能正確工作,平均工作電流為2mA。液晶HS162共16個(gè)管腳。但是由于原理圖中電路很簡(jiǎn)單并且只用到接插件所以此處沒(méi)有給出原理圖。</p><p> 3.2 特殊器件介紹</p><p> 3.2.1 STC89C52單片機(jī)芯片</p><p>
33、 STC89C52是STC公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含4kbytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和128bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,可靈活應(yīng)用于各種控制領(lǐng)域。其主要功能有:與MCS-51產(chǎn)品指令系統(tǒng)完全兼容;4k字節(jié)可重擦寫Flash閃速存儲(chǔ)器;1
34、000次擦寫周期;全靜態(tài)操作:0Hz-24MHz;三級(jí)加密程序存儲(chǔ)器;128×8字節(jié)內(nèi)部RAM;32個(gè)可編程I/O口線;2個(gè)16位定時(shí)/計(jì)數(shù)器;6個(gè)中斷源;可編程串行UART通道;低功耗空閑和掉電模式。其引腳圖如下圖所示:</p><p> 圖3.6 STC89C52引腳圖</p><p> 3.2.2 DS1302介紹</p><p> DS13
35、02是美國(guó)DALLAS公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片,附加31字節(jié)靜態(tài)RAM,采用SPI三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和RAM數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月、年,一個(gè)月小于31天時(shí)可自動(dòng)進(jìn)行調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.5~5.5V。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力,因此廣泛應(yīng)用于測(cè)量系統(tǒng)中。
36、DS1302是由DS1202改進(jìn)而來(lái)的,增加了以下的特性:雙電源管腳用于主電源和備份電源供應(yīng),Vcc1為課編程涓流充電電源,附加七個(gè)字節(jié)存儲(chǔ)器。它廣泛應(yīng)用于電話、傳真、便攜式儀器以及電池供電的儀器儀表等產(chǎn)品領(lǐng)域。其外部引腳分配如圖所示:</p><p> 圖3.7 DS1302的外部時(shí)鐘引腳分配</p><p> 3.2.3 溫度傳感器DS18B20</p><p
37、> 采用獨(dú)特的一線接口,可用數(shù)據(jù)總線供電,電壓范圍為3.0 V至5.5 V 無(wú)需備用電源。測(cè)量溫度范圍為-55℃至+125℃ ,-10 °C至+85 °C范圍內(nèi)精度為±0.5℃。溫度傳感器可編程的分辨率為9~12位 溫度轉(zhuǎn)換為12位數(shù)字格式最大值為750毫秒 用戶可定義的非易失性溫度報(bào)警設(shè)置應(yīng)用范圍包括恒溫控制,工業(yè)系統(tǒng),消費(fèi)電子產(chǎn)品溫度計(jì),或任何熱敏感系統(tǒng)。DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:
38、64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。該裝置信號(hào)線高的時(shí)候,內(nèi)部電容器儲(chǔ)存能量通由1線通信線路給片子供電,而且在低電平期間為片子供電直至下一個(gè)高電平的到來(lái)重新充電。</p><p> 圖3.8 DS18B20的管腳</p><p> 3. 2. 4 報(bào)警模塊</p><p> 報(bào)警模塊為單片機(jī)P2.0驅(qū)動(dòng)蜂鳴器,用于溫度
39、上限到達(dá)時(shí),單片機(jī)驅(qū)動(dòng),提供報(bào)警。蜂鳴器驅(qū)動(dòng),成本低,效率高,反映直觀。其電路圖如下:</p><p> 3.2.5液晶顯示LCD1602</p><p> HS1602是目前最常用的字符液晶之一。具有16×2能夠顯示所有英文大小寫字母,0到9十個(gè)數(shù)字以及一些常用的符號(hào)。該液晶在4.5V到5.5V電壓范圍內(nèi)都能正確工作,平均工作電流為2mA。液晶HS162共16個(gè)管腳.RS為
40、寄存器選擇信號(hào),RW為讀寫選擇信號(hào),通過(guò)這兩種信號(hào)的不同組合可對(duì)液晶進(jìn)行讀寫命令和讀寫數(shù)據(jù)的操作。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)HS162是目前最常用的字符液晶之一。具有16ⅹ2能夠顯示所有英文大小寫字母,0不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的
41、點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。在操作液晶時(shí),先要對(duì)液晶進(jìn)行初始化,即進(jìn)行最初是的命令設(shè)置。要設(shè)置液晶的工作方式設(shè)置,顯示狀態(tài)設(shè)置,輸入方式設(shè)置等。最后再向液晶寫入數(shù)據(jù),即寫入想要顯示字符的ASCII碼。</p><p><b> 第四章 軟件設(shè)計(jì)</b></p><p><b> 4.1 軟件選擇</b></p>
42、<p> 本次設(shè)計(jì)選擇的軟件主要是Keil uVision3。 Keil公司成立于1986年,主要開(kāi)發(fā)、制造和銷售嵌入式8051、251、ARM、XC16x/C16x/ST10等微控制器軟件開(kāi)發(fā)工具,提供ANSI C編譯器、宏匯編程序、實(shí)時(shí)管理、調(diào)試和模擬器、綜合評(píng)估板等。Keil公司的uVision把編輯、編譯、鏈接和仿真等模式打包成集成開(kāi)發(fā)環(huán)境,當(dāng)然其集成的C51編譯器肯定跟Franklin公司的相關(guān)模塊肯定有交叉性,
43、uVision還包含項(xiàng)目管理和調(diào)試器等非常有用的功能。</p><p> 而軟件仿真部分就用的是仿真軟件PROTUES。PROTUES軟件是英國(guó)Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛(ài)好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開(kāi)發(fā)應(yīng)用的科技工作者的青睞,是目前世界上唯一將電路仿真軟
44、件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。在PROTUES繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,可以在PROTUES的原理圖中看到模
45、擬的實(shí)物運(yùn)行狀態(tài)和過(guò)程。</p><p> PROTUES 是單片機(jī)課堂教學(xué)的先進(jìn)助手。 PROTUES不僅可將許多單片機(jī)實(shí)例功能形象化,也可將許多單片機(jī)實(shí)例運(yùn)行過(guò)程形象化。前者可在相當(dāng)程度上得到實(shí)物演示實(shí)驗(yàn)的效果,后者則是實(shí)物演示實(shí)驗(yàn)難以達(dá)到的效果。它的元器件、連接線路等卻和傳統(tǒng)的單片機(jī)實(shí)驗(yàn)硬件高度對(duì)應(yīng)。這在相當(dāng)程度上替代了傳統(tǒng)的單片機(jī)實(shí)驗(yàn)教學(xué)的功能,例:元器件選擇、電路連接、電路檢測(cè)、電路修改、軟件調(diào)試、運(yùn)
46、行結(jié)果等。 </p><p><b> 4.2軟件設(shè)計(jì)流程</b></p><p> 本次設(shè)計(jì)的系統(tǒng)軟件設(shè)計(jì)主要包括主程序設(shè)計(jì)和溫度采集子模塊程序設(shè)計(jì)、日歷日期數(shù)據(jù)子模塊程序、按鍵控制子模塊程序和LCD液晶顯示子模塊程序設(shè)計(jì)等。主程序主要完成器件的初始化,并判斷有無(wú)按鍵按下,并根據(jù)判斷的結(jié)果調(diào)用相應(yīng)的子模塊程序;而溫度采集子模塊程序和日歷日期數(shù)據(jù)子模塊程序完成相
47、應(yīng)的數(shù)據(jù)采集、處理和保存,按鍵處理子模塊程序完成日期和鬧鐘的設(shè)置,而液晶顯示子模塊只要把上述子模塊儲(chǔ)存的數(shù)據(jù)送去顯示即可。系統(tǒng)總的流程圖如下圖所示:</p><p> 圖4.1 主程序流程</p><p> 4.2.1 溫度采集流程</p><p> DS18B20在進(jìn)行溫度采集時(shí),必須首先進(jìn)行初始化,然后發(fā)ROM操作指令,再發(fā)存儲(chǔ)器操作指令,最后才能傳輸數(shù)據(jù)
48、。每次對(duì)器件進(jìn)行讀寫操作時(shí), 必須嚴(yán)格按照DS18B20 的時(shí)序要求。因?yàn)闇囟葦?shù)據(jù)在DS18B20中是以2的補(bǔ)碼形式存放的,且低4位為小數(shù)部分, 4位到10位為整數(shù)部分,其余為符號(hào)位,因此在讀出2個(gè)字節(jié)的溫度數(shù)據(jù)后,首先求一次補(bǔ)碼得到原碼,再將數(shù)據(jù)分離為整數(shù)溫度值和小數(shù)溫度值,整數(shù)部分的值可通過(guò)數(shù)據(jù)交換指令得到,而小數(shù)溫度值部分可通過(guò)查表得到。因?yàn)樵谝壕э@示器上顯示的是字符的ASCII碼,因而還要轉(zhuǎn)換為BCD,在加30H轉(zhuǎn)換為ASCⅡ碼
49、。其流程圖如下所示:</p><p> 圖4.3 溫度采集流程</p><p> 4.2.2 日期數(shù)據(jù)處理流程</p><p> 對(duì)時(shí)鐘芯片的操作主要包括2個(gè)方面:一是將芯片中的日期等數(shù)據(jù)讀出來(lái),二是在進(jìn)行日期等設(shè)置時(shí)將設(shè)置的數(shù)據(jù)寫入芯片,這也是按鍵處理時(shí)的主要內(nèi)容。無(wú)論是讀數(shù)據(jù)還是寫數(shù)據(jù),都要滿足DS1302 對(duì)時(shí)序的要求。而對(duì)芯片各個(gè)數(shù)據(jù)部分的訪問(wèn)是通過(guò)
50、地址進(jìn)行的,且讀和寫的地址不一樣。讀出的數(shù)據(jù)同樣要轉(zhuǎn)為ASC II碼,然后儲(chǔ)存起來(lái),等待送去顯示。其流程圖如下圖所示:</p><p> 圖4.4 日期數(shù)據(jù)處理</p><p> 第五章 系統(tǒng)的仿真及調(diào)試</p><p><b> 5.1 系統(tǒng)仿真</b></p><p> 軟件的仿真部分采用的是仿真軟件PROT
51、UES,前面已經(jīng)作過(guò)介紹。整個(gè)設(shè)計(jì)的仿真效果如下圖所示。</p><p> 此時(shí)顯示的時(shí)間日期是實(shí)時(shí)的時(shí)間。顯示的溫度是DS18B20上面所示的溫度。按鍵第三列為設(shè)計(jì)中所涉及到的按鍵。我們只用到這個(gè)矩陣鍵盤中的4個(gè)按鍵。第一個(gè)按鍵按下時(shí)可調(diào)節(jié)液晶所在的第二行所示的時(shí)間。按1,2,3,下,光標(biāo)分別到秒,分,時(shí)處閃動(dòng)。第二個(gè)按鍵是控制液晶顯示的第一行的日期顯示。也是一次按下1,2,3,4可分別設(shè)置年月日以及周。最上
52、面的LED是用于溫度超過(guò)所設(shè)置的溫度門限值報(bào)警,此時(shí)LED亮是代表溫度超過(guò)了下限溫度值。</p><p> 圖5.1 系統(tǒng)仿真圖</p><p><b> 5.2 硬件調(diào)試</b></p><p> 單片機(jī)系統(tǒng)調(diào)試之前首先應(yīng)該確認(rèn)電源電壓是否正常。用萬(wàn)用表測(cè)量接地引腳跟電源引腳之間的電壓,看是否是電源電壓,常用的5V。接下來(lái)就是檢查復(fù)位引
53、腳電壓是否正常。分別測(cè)量按下復(fù)位按鈕和放開(kāi)復(fù)位按鈕的電壓值,看是否正確。然后再檢查晶振是否起振了,一般用示波器來(lái)看晶振引腳的波形。另一個(gè)辦法是測(cè)量復(fù)位狀態(tài)下的IO口電平,按住復(fù)位鍵不放,然后測(cè)量IO口(沒(méi)接外部上拉的P0口除外)的電壓,看是否是高電平,如果不是高電平,則多半是因?yàn)榫д駴](méi)有起振。經(jīng)過(guò)上面幾點(diǎn)的檢查,一般即可排除故障了。</p><p> 顯示電路的調(diào)試:在這里主要是HS1602液晶顯示器。檢查它與
54、單片機(jī)的連線:設(shè)計(jì)是RS接的P07口,要保證它為高電平。EN接口接單片機(jī)的P05端,也要保證它為高電平;讀寫信號(hào)低電平有效;編寫一段顯示程序,燒錄到單片機(jī)看是否能正常顯示。</p><p> DS1302電路調(diào)試:該電路包含DS1302芯片,主電源、備用電源、晶振等部分。在與單片機(jī)連接的過(guò)程中需要注意以下幾點(diǎn):1.清楚DS1302與單片機(jī)連接的管腳,本設(shè)計(jì)定義為:DS1302的SCLK連接P1.0,I/O口連接
55、P1.1,RST連接P1.2;2.注意電源正負(fù)極的連接;3. DS1302接32.768KHZ的晶振,該晶振體型比較小,在焊接時(shí)要小心,同時(shí)也要盡量使晶振離DS1302是X1、X2引腳近距離焊接。4.編寫DS1302的時(shí)鐘程序看是否能夠正確顯示時(shí)間。</p><p> 按鍵電路調(diào)試:按鍵電路比較簡(jiǎn)單,故調(diào)試起來(lái)也很容易。如果確保按鍵焊接正確,只需把DS1302的程序?qū)戇M(jìn)單片機(jī),再按下P3.0,如果在秒的位置有光
56、標(biāo)出現(xiàn),則說(shuō)明P3.0可用,如果按下P3.1,在日的位置有光標(biāo)閃爍,則說(shuō)明P3.1的按鍵可用,同時(shí)按下P3.2,如果日的位置有加的操作,則P3.2按鍵可用如果按P3.3有減的操作則也可用。</p><p> 溫度傳感器的調(diào)試:溫度傳感器的調(diào)試只需在確保電路焊接正確的情況下,把顯示溫度的程序?qū)戇M(jìn)單片機(jī),然后看液晶顯示器上顯示的溫度是否是當(dāng)前的室溫,如果能夠正確顯示當(dāng)前室溫,那么說(shuō)明電路一切完好。</p>
57、;<p> 我們?cè)谟布{(diào)試的過(guò)程中遇到很多問(wèn)題。</p><p> 首先是按鍵掃描加入程序的時(shí)候按鍵會(huì)光標(biāo)亂飛。針對(duì)這個(gè)問(wèn)題我們?cè)诎存I程序中加入while語(yǔ)句以及標(biāo)志位控制,解決了這個(gè)問(wèn)題。然后就是按鍵只能加一減一,后來(lái)在一步一步屏蔽一比一部調(diào)試過(guò)后發(fā)現(xiàn)了問(wèn)題,原來(lái)是DS1302這個(gè)頭文件周寫數(shù)據(jù)部分寫錯(cuò)了。還遇到一個(gè)問(wèn)題,就是18B20溫度傳感器加上以后,只會(huì)出現(xiàn)一個(gè)初始值,檢查后發(fā)現(xiàn)寫溫度的
58、頭文件中出現(xiàn)一點(diǎn)小錯(cuò)誤。然后整個(gè)板子就在我們不停地出現(xiàn)錯(cuò)誤然后慢慢調(diào)試改正中實(shí)現(xiàn)了我們初步的功能。</p><p><b> 5.3 軟件調(diào)試</b></p><p> 軟件調(diào)試一般是在仿真圖上進(jìn)行,這樣比較方便,可以及時(shí)發(fā)現(xiàn)錯(cuò)誤,分析錯(cuò)誤,以便快捷的在程序上進(jìn)行修改,再進(jìn)行仿真,直到結(jié)果正確了,才把程序下到開(kāi)發(fā)板上去看是否符合我們的要求,有時(shí)雖然仿真完全正確了,
59、但到開(kāi)發(fā)板上就不一定了,有時(shí)是因?yàn)榉抡鎴D和開(kāi)發(fā)板的端口不對(duì),所以需要檢查后修改端口,有時(shí)是因?yàn)殚_(kāi)發(fā)板上需要連線的端口連錯(cuò)了,也造成不能正確顯示,這些雖然看似小問(wèn)題,但檢錯(cuò)起來(lái)一點(diǎn)都不容易,需要反復(fù)的分析,不斷的試驗(yàn)。就這樣不斷的試驗(yàn),再修改,在試驗(yàn),直到程序完全正確,可以顯示出我們想要的答案為止。</p><p> 本次設(shè)計(jì)在剛開(kāi)始調(diào)試的時(shí)候,會(huì)發(fā)現(xiàn)液晶顯示器上顯示的位置不對(duì),或者干脆不顯示,通過(guò)找原因發(fā)現(xiàn)是從
60、DS1302上讀出的字符在液晶顯示器上的對(duì)應(yīng)位置寫錯(cuò)了,造成不能正常顯示,相應(yīng)的改過(guò)之后就可以了;有時(shí)顯示正確了,但按鍵的加減沒(méi)作用,不能進(jìn)行正常的加或減,這時(shí)又得修改程序中相關(guān)的部分,有時(shí)是因?yàn)镃語(yǔ)言掌握得不牢固,造成寫程序的語(yǔ)法錯(cuò)誤,這種錯(cuò)誤很難找,邏輯上看似很簡(jiǎn)單的幾句程序也要反復(fù)的找很久。軟件調(diào)試一般是在仿真圖上進(jìn)行,這樣比較方便,可以及時(shí)發(fā)現(xiàn)錯(cuò)誤,分析錯(cuò)誤,以便快捷的在程序上進(jìn)行修改,再進(jìn)行仿真,直到結(jié)果正確了,才把程序下到開(kāi)
61、發(fā)板上去看是否符合我們的要求,有時(shí)雖然仿真完全正確了,但到開(kāi)發(fā)板上就不一定了,有時(shí)是因?yàn)榉抡鎴D和開(kāi)發(fā)板的端口不對(duì),所以需要檢查后修改端口,有時(shí)是因?yàn)殚_(kāi)發(fā)板上需要連線的端口連錯(cuò)了,也造成不能正確顯示,這些雖然看似小問(wèn)題,但檢錯(cuò)起來(lái)一點(diǎn)都不容易,需要反復(fù)的分析,不斷的試驗(yàn)。就這樣不斷的試驗(yàn),再修改,在試驗(yàn),直到程序完全正確,可以顯示出我們想要的答案為止。</p><p> 我們需要對(duì)每一個(gè)模塊進(jìn)行調(diào)試,在這里包括:
62、顯示年、月、日,時(shí)、分、秒,星期,溫度和鬧鐘的模塊。先分別調(diào)試,直到所有分模塊都調(diào)試出來(lái)了,再進(jìn)行統(tǒng)調(diào),這樣更容易檢錯(cuò),可以及時(shí)查找出錯(cuò)誤,減小調(diào)試的難度。</p><p><b> 第六章 總結(jié)與體會(huì)</b></p><p><b> 6.1 設(shè)計(jì)小結(jié)</b></p><p> 在本次設(shè)計(jì)中,我們最終完成本次智能化
63、電子系統(tǒng)設(shè)計(jì)系的基本要求及功能,并在此基礎(chǔ)了對(duì)系統(tǒng)功能作了擴(kuò)展,增加了鬧鐘設(shè)置以及溫度報(bào)警部分。在設(shè)計(jì)開(kāi)始前我們對(duì)各個(gè)模塊進(jìn)行了詳細(xì)的分析和設(shè)計(jì)準(zhǔn)備工作,設(shè)計(jì)過(guò)程中,并且在胡兵老師的指導(dǎo)下,在實(shí)驗(yàn)室?guī)孜煌瑢W(xué)耐心的幫助下,我們組的成員相互協(xié)調(diào),積極參與完成各個(gè)技術(shù)實(shí)現(xiàn)的難點(diǎn),更進(jìn)一步地熟悉了芯片的結(jié)構(gòu)及掌握了各芯片的工作原理和具體的使用方法。</p><p> 6.2 設(shè)計(jì)收獲及改進(jìn)</p><
64、;p> 通過(guò)本次設(shè)計(jì),我們對(duì)單片機(jī)有了更深刻的認(rèn)識(shí),也從實(shí)踐的例子中去感受到了單片機(jī)設(shè)計(jì)給我們?cè)O(shè)計(jì)帶來(lái)的改變與進(jìn)步。我們不僅掌握Keil uVision3軟件的使用,與此同時(shí),我們還對(duì)電子設(shè)計(jì)的思路有了更多的認(rèn)識(shí)。這次對(duì)多功能數(shù)字鐘的設(shè)計(jì)與制作,讓我了解設(shè)計(jì)電路的程序,也了解了關(guān)于多功能數(shù)字鐘的原理與設(shè)計(jì)理念。在此次的多功能數(shù)字鐘設(shè)計(jì)過(guò)程中,更進(jìn)一步地熟悉了芯片的結(jié)構(gòu)及掌握了各芯片的工作原理和具體的使用方法??傊鞘芤娣藴\。這為
65、自己今后進(jìn)一步深化學(xué)習(xí),積累了一定寶貴經(jīng)驗(yàn),撰寫設(shè)計(jì)的過(guò)程也是專業(yè)知識(shí)的學(xué)習(xí)過(guò)程,它使我運(yùn)用已有的專業(yè)知識(shí),對(duì)其進(jìn)行設(shè)計(jì),分析和解決問(wèn)題,把知識(shí)轉(zhuǎn)化為能力的訓(xùn)練。</p><p> 本設(shè)計(jì)在功能上基本上完成了本次智能化電子系統(tǒng)設(shè)計(jì)的要求。將年月日周以及時(shí)間在液晶上顯示,對(duì)溫度的采集以及對(duì)鬧鐘的設(shè)置,按鍵對(duì)顯示的控制等功能。但由于時(shí)間倉(cāng)促和我們自身水平有限,對(duì)于溫度報(bào)警的門限值我們沒(méi)有完成按鍵對(duì)其的控制和調(diào)整,很
66、遺憾。并且對(duì)于電路的可靠性,穩(wěn)定性等參數(shù)還未做過(guò)詳細(xì)的測(cè)試。還可以通過(guò)修改程序,完成字符或數(shù)字的滾動(dòng)顯示。</p><p><b> 6.3 致謝</b></p><p> 此次課程設(shè)計(jì)中,我要特別感謝我的指導(dǎo)老師于禎的熱情關(guān)懷和悉心指導(dǎo)。在完成這次的設(shè)計(jì)過(guò)程中,于禎老師傾注了大量的心血和汗水,無(wú)論是在從一開(kāi)始的學(xué)習(xí)上還是后來(lái)的選題、構(gòu)思和資料的收集方面,我都得到
67、了于禎老師悉心細(xì)致的教誨和無(wú)私的幫助,特別是他廣博的學(xué)識(shí)、深厚的學(xué)術(shù)素養(yǎng)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和一絲不茍的工作作風(fēng)使我終身受益,在此表示真誠(chéng)地感謝和深深的謝意。</p><p> 在整個(gè)課程設(shè)計(jì)中,也得到了許多實(shí)驗(yàn)室同學(xué)的支持和幫助,他們?cè)谧约簳r(shí)間很寶貴的情況下,給我們講解模塊電路的知識(shí)以及編程方法,并且耐心為我們解答設(shè)計(jì)過(guò)程遇到的所有問(wèn)題。給予了我們?cè)S多寶貴的意見(jiàn),在此一并致以誠(chéng)摯的謝意。</p>&
68、lt;p><b> 6.4參考文獻(xiàn)</b></p><p> 1、陳梓城《實(shí)用電子電路設(shè)計(jì)與調(diào)試》中國(guó)電力出版社2006</p><p> 2、曹薇《單片機(jī)原理及應(yīng)用》 中國(guó)實(shí)力水電出版社 2004.8</p><p> 3、高吉祥《全國(guó)大學(xué)生電子設(shè)計(jì)大賽培訓(xùn)教程》電子工業(yè)出版社2007.5</p><p>
69、; 4、DS12887 DATASHEET www.datasheet5.com</p><p> 5、DS18B20 DATASHEET www.datasheet5.com</p><p> 6、張洪潤(rùn).蘭清華.單片機(jī)應(yīng)用技術(shù)教程[M].北京:清華大學(xué)出版社,1997.11</p><p> 7、何力民.單片機(jī)應(yīng)用技術(shù)選編5[M].北京:北京航空航天大學(xué)
70、出版社1997.10</p><p> 8、潘永雄.新編單片機(jī)原理與應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2003.2</p><p> 9、付家才.單片機(jī)控制工程實(shí)踐技術(shù)[M].北京:化學(xué)工業(yè)出版社,2004.3</p><p><b> 附錄:</b></p><p><b> 設(shè)計(jì)原理圖:&l
71、t;/b></p><p><b> 實(shí)現(xiàn)程序:</b></p><p> //介紹整個(gè)程序所包含的頭文件</p><p> #include<reg52.h></p><p> #include<intrins.h></p><p> #include&l
72、t;ds1302.h></p><p> #include<lcd1602.h></p><p> #include<1820.h></p><p><b> //定義</b></p><p> #define uchar unsigned char</p>&l
73、t;p> #define uint unsigned int</p><p> Uchar u,u1,u2,u3,u4,u5,u6,u7,u8,</p><p><b> alarmOn;</b></p><p> uint fen,miao,shi,nian,yue,ri,anshu,</p><p&
74、gt;<b> zh;</b></p><p> uchar linshi,a,a1,a2,a3,a4,a5,a6;</p><p> uint tab[3];</p><p> sbit rd=P3^5;</p><p> sbit P30=P3^0;</p><p> sbit P
75、31=P3^1;</p><p> sbit P32=P3^2;</p><p> sbit P33=P3^3;</p><p> sbit beep=P3^3;</p><p> sbit ds1302_rst=P1^2;</p><p> sbit ds1302_sclk=P1^0;</p>
76、<p> sbit ds1302_io=P1^1;</p><p> sbit ACC7=ACC^7;</p><p> sbit B1=B^0;</p><p> sbit lcd1602_en=P0^5;</p><p> sbit lcd1602_rw=P0^6;</p><p> sbi
77、t lcd1602_rs=P0^7;</p><p> #define lcd1602_data P2</p><p> uchar low,high; //存儲(chǔ)溫度的高位值和低位值</p><p> sbit DQ=P3^6; // -- 定義通信端口</p><p> sbit D1=P0^0;</p>&l
78、t;p> uchar gw,sw,w4,tpl,tph;</p><p> uint bai,b;</p><p><b> //主函數(shù)部分</b></p><p> void fenjia (uchar rddr,uchar wddr,uchar yddr,uchar fenjiajian)//鍵盤掃描</p>&
79、lt;p><b> {</b></p><p> u=ds1302_read(rddr);</p><p> fen=((u&0x70)>>4)*10+(u&0x0f);//進(jìn)制轉(zhuǎn)換</p><p> if(fenjiajian==1)</p><p><b> {&
80、lt;/b></p><p><b> fen++;</b></p><p> if(fen==60)</p><p><b> {</b></p><p><b> fen=0;</b></p><p><b> }</
81、b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> fen--;</b></p><p> if((fen+1)==
82、0)</p><p><b> {</b></p><p><b> fen=59;</b></p><p><b> }</b></p><p><b> }</b></p><p> ds1302_write(wddr
83、,((fen/10)<<4)|(fen%10));</p><p> write_sfm(yddr,fen);</p><p> lcd1602_writecom(0x80+0x40+yddr);</p><p> lcd1602_writecom(0x0f);</p><p> lcd1602_writecom(0x80
84、+0x40+yddr);</p><p><b> }</b></p><p> void shijia (uchar rddr,uchar wddr,uchar yddr,uchar shijiajian)//鍵盤掃描</p><p><b> {</b></p><p> a4=ds13
85、02_read(rddr);</p><p> shi=((a4&0x70)>>4)*10+(a4&0x0f);//進(jìn)制轉(zhuǎn)換</p><p> if(shijiajian==1)</p><p><b> {</b></p><p><b> shi++;</b>
86、</p><p> if(shi==24)</p><p><b> {</b></p><p><b> shi=0;</b></p><p><b> }</b></p><p><b> }</b></p>
87、;<p><b> else</b></p><p><b> {</b></p><p><b> shi--;</b></p><p> if((shi+1)==0)</p><p><b> {</b></p>
88、<p><b> shi=23;</b></p><p><b> }</b></p><p> }ds1302_write(wddr,(shi/10)<<4|(shi%10));</p><p> write_sfm(yddr,shi);</p><p> lcd1
89、602_writecom(0x80+0x40+yddr)</p><p> lcd1602_writecom(0x0f);</p><p> lcd1602_writecom(0x80+0x40+yddr);</p><p><b> }</b></p><p> void sfmset()</p>
90、<p><b> {</b></p><p> uchar linshi;</p><p><b> do</b></p><p><b> {</b></p><p> if(P30==0)</p><p><b>
91、{</b></p><p><b> delay(5);</b></p><p> if(P30==0)</p><p><b> {</b></p><p> while(!(P30));</p><p><b> linshi=1;<
92、/b></p><p><b> anshu++;</b></p><p> if(anshu==1)</p><p><b> {</b></p><p> a=ds1302read(0x81);</p><p> miao=((a&0x70)>
93、;>4)*10+(a&0x0f);/</p><p> write_sfm(6,miao)lcd1602_writecom(0x80+0x40+6);lcd1602_writecom(0x0f);lcd1602_writecom(0x80+0x40+6);</p><p><b> }</b></p><p>
94、if(anshu==2)</p><p><b> {</b></p><p> u1=ds1302_read(0x83)fen=((u1&0x70)>>4)*10+(u1&0x0f);</p><p> write_sfm(3,fen);lcd1602_writecom(0x80+0x40+3);&l
95、t;/p><p> lcd1602_writecom(0x0f);lcd1602_writecom(0x80+0x40+3);</p><p><b> }</b></p><p> if(anshu==3)</p><p><b> {</b></p><p>
96、u2=ds1302_read(0x85);</p><p> shi=((u2&0x70)>>4)*10+(u2&0x0f);</p><p> write_sfm(0,shi);lcd1602_writecom(0x80+0x40+0);</p><p> lcd1602_writecom(0x0f);lcd1602_wr
97、itecom(0x80+0x40+0);</p><p><b> }</b></p><p> if(anshu==4)</p><p><b> {</b></p><p> lcd1602_writecom(0x0c); lcd1602_writecom(0x80 + 0x40+1
98、4);lcd1602_writedata('s');</p><p> lcd1602_writedata('t'); lcd1602_writecom(0x0f);</p><p><b> }</b></p><p> if(anshu==5)</p><p>&
99、lt;b> {</b></p><p> u7=ds1302_read(0x83)tab[0]=((u7&0x70)>>4)*10+(u7&0x0f); write_sfm(3,tab[0]);//table[0]為分存儲(chǔ)器lcd1602_writecom(0x80+0x40+3);lcd1602_writecom(0x0f);l
100、cd1602_writecom(0x80+0x40+3);</p><p><b> }</b></p><p> if(anshu==6)</p><p> {u8=ds1302_read(0x85);tab[1]=((u8&0x70)>>4)*10+(u8&0x0f);write_s
101、fm(0,tab[1]);//table[1]為時(shí)存儲(chǔ)器lcd1602_writecom(0x80+0x40+0);lcd1602_writecom(0x0f);lcd1602_writecom(0x80+0x40+0);</p><p><b> }</b></p><p> if(anshu==7)</p><p>
102、<b> {</b></p><p> lcd1602_writecom(0x0c);</p><p> lcd1602_writecom(0x80 + 0x40+14);</p><p> lcd1602_writedata('O'); //顯示"On",提示鬧鐘已開(kāi)啟
103、 lcd1602_writedata('n');</p><p><b> linshi=0;</b></p><p><b> }</b></p><p> if(anshu==8)</p><p><b> {</b></p><
104、p><b> linshi=0;</b></p><p> anshu = 0;</p><p> beep=1; lcd1602_writecom(0x80 + 0x40+14); //第二次按下清除 "On"標(biāo)記</p><p> lcd1602_writedata('&
105、#39;); lcd1602_writedata(' ');</p><p><b> }</b></p><p> if(anshu==9)</p><p><b> {</b></p><p><b> linshi=0;</
106、b></p><p> anshu=0;ds1302_write(0x80,0x00);</p><p> lcd1602_writecom(0x38);</p><p> lcd1602_writecom(0x0c);//不出現(xiàn)光標(biāo)</p><p><b> }</b></p>&l
107、t;p><b> }</b></p><p><b> }</b></p><p> if (anshu==2)</p><p><b> {</b></p><p> if(P32==0)</p><p><b> {<
108、;/b></p><p><b> delay(5);</b></p><p> if(P32==0)</p><p><b> {</b></p><p> while(!P32);</p><p> fenjia(0x83,0x82,3,1);</p
109、><p><b> }</b></p><p><b> }</b></p><p> if(P33==0)</p><p><b> {</b></p><p><b> delay(5);</b></p>&
110、lt;p> if(P33==0)</p><p><b> {</b></p><p> while(!P33);</p><p> fenjia(0x83,0x82,3,0);</p><p><b> }</b></p><p><b> }&
111、lt;/b></p><p><b> }</b></p><p> if (anshu==3)</p><p><b> {</b></p><p> if(P32==0)</p><p><b> {</b></p>&
112、lt;p> while(!P32);</p><p> shijia(0x85,0x84,0,1);</p><p><b> }</b></p><p> if(P33==0)</p><p><b> {</b></p><p><b> de
113、lay(5);</b></p><p> if(P33==0)</p><p><b> {</b></p><p> while(!P33);</p><p> shijia(0x85,0x84,0,0);</p><p><b> }</b><
114、/p><p><b> }</b></p><p><b> }</b></p><p> if (anshu==5)</p><p><b> {</b></p><p> if(P32==0)</p><p><b
115、> {</b></p><p><b> delay(5);</b></p><p> if(P32==0)</p><p><b> {</b></p><p> while(!P32);</p><p><b> tab[0]++;
116、</b></p><p> write_sfm(3,tab[0]);</p><p> if(tab[0]==60)</p><p><b> {</b></p><p><b> tab[0]=0;</b></p><p><b> }<
117、;/b></p><p><b> }</b></p><p><b> }</b></p><p> if(P33==0)</p><p><b> {</b></p><p><b> delay(5);</b>
118、</p><p> if(P33==0)</p><p><b> {</b></p><p> while(!P33);</p><p><b> tab[0]--;</b></p><p> write_sfm(3,tab[0]);</p><
119、;p> if(tab[0]==0)</p><p><b> {</b></p><p> tab[0]=59;</p><p><b> }</b></p><p><b> }</b></p><p><b> }<
120、/b></p><p><b> }</b></p><p> if (anshu==6)</p><p><b> {</b></p><p> if(P32==0)</p><p><b> {</b></p><
121、p> while(!P32);</p><p><b> tab[1]++;</b></p><p> write_sfm(0,tab[1]);</p><p> if(tab[1]==24)</p><p><b> {</b></p><p><b&
122、gt; tab[1]=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(P33==0)</p><p><b> {</b></p><p> while(!P32)
123、;</p><p><b> tab[1]--;</b></p><p> write_sfm(0,tab[1]);</p><p> if(tab[1]==0)</p><p><b> {</b></p><p> tab[1]=23;</p>&
124、lt;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if (anshu==7) //設(shè)置好鬧鐘返回時(shí)鐘界面并開(kāi)啟鬧鐘</p><p><b> {</b></p
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)--多功能數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)— 多功能數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)-基于單片機(jī)的多功能電子鐘的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---多功能電子鐘
- 單片機(jī)數(shù)字時(shí)鐘課程設(shè)計(jì)--單片機(jī)多功能電子鐘設(shè)計(jì)
- 單片機(jī)微型機(jī)課程設(shè)計(jì)---多功能電子鐘
- 電子鐘課程設(shè)計(jì)--基于單片機(jī)的電子鐘設(shè)計(jì)
- 基于51單片機(jī)的多功能電子鐘設(shè)計(jì)
- 基于單片機(jī)的電子鐘課程設(shè)計(jì)
- 電子鐘單片機(jī)課程設(shè)計(jì)
- 基于單片機(jī)的電子鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--電子鐘
- 單片機(jī)課程設(shè)計(jì)(電子鐘)
- 《單片機(jī)技術(shù)》電子鐘課程設(shè)計(jì)---數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的電子鐘的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)---基于51單片機(jī)的電子鐘設(shè)計(jì)
- 電子鐘課程設(shè)計(jì)--多功能電子鐘
- 單片機(jī)多功能電子鐘畢業(yè)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——數(shù)字電子鐘
評(píng)論
0/150
提交評(píng)論