版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 交通與汽車工程學(xué)院</b></p><p><b> 課程設(shè)計(jì)說明書</b></p><p> 課 程 名 稱: 微機(jī)原理及應(yīng)用課程設(shè)計(jì) </p><p> 課 程 代 碼: 8234570 </p><p>
2、題 目: 帶LCD顯示的定時(shí)鬧鐘 </p><p> 年級(jí)/專業(yè)/班: 09級(jí)汽電三班 </p><p> 學(xué) 生 姓 名: 楊宇 </p><p> 學(xué) 號(hào): 312009080605223 </p><p&
3、gt; 開 始 時(shí) 間: 2012 年 07 月 02 日</p><p> 完 成 時(shí) 間: 2012 年 07 月 06 日</p><p><b> 課程設(shè)計(jì)成績(jī):</b></p><p> 指導(dǎo)教師簽名: 年 月 日</p><p&g
4、t;<b> 目 錄</b></p><p><b> 摘 要2</b></p><p><b> 1 引 言3</b></p><p> 1.1 問題的提出3</p><p> 1.2任務(wù)與分析4</p><p> 2 系
5、統(tǒng)方案設(shè)計(jì)5</p><p> 2.1 系統(tǒng)設(shè)計(jì)方案5</p><p> 2.2 系統(tǒng)總體框圖6</p><p> 3 系統(tǒng)硬件電路設(shè)計(jì)7</p><p> 3.1 89C51單片機(jī)7</p><p> 3.2 1602LCD9</p><p> 3.3 鍵盤12&l
6、t;/p><p> 4 系統(tǒng)軟件設(shè)計(jì)13</p><p> 4.1 proteus軟件環(huán)境介紹13</p><p> 4.2 Protel軟件環(huán)境介紹13</p><p> 4.3系統(tǒng)軟件分析14</p><p> 4.3.1 系統(tǒng)時(shí)鐘電路設(shè)計(jì)14</p><p> 4.3.2
7、系統(tǒng)復(fù)位電路的設(shè)計(jì)14</p><p> 4.3.3 鬧鐘指示電路設(shè)計(jì)15</p><p> 4.3.4 電子鬧鐘的顯示電路設(shè)計(jì)15</p><p> 4.4 程序流程圖15</p><p> 5.系統(tǒng)調(diào)試過程21</p><p><b> 結(jié) 論24</b></p&
8、gt;<p><b> 致 謝25</b></p><p><b> 參考文獻(xiàn)26</b></p><p> 附表(本設(shè)計(jì)所有程序)38</p><p><b> 摘 要</b></p><p> 本設(shè)計(jì)是基于AT89C51單片機(jī)為控制核心的定
9、時(shí)鬧鐘設(shè)計(jì)。系統(tǒng)采用了美國(guó)DALLAS公司的DS1302實(shí)時(shí)時(shí)鐘芯片構(gòu)成了計(jì)時(shí)電路,實(shí)現(xiàn)了時(shí)間和日期的顯示。T89C51單片機(jī)結(jié)合七段顯示器設(shè)計(jì)的簡(jiǎn)易定時(shí)鬧鈴時(shí)鐘,可以設(shè)置現(xiàn)在的時(shí)間及顯示鬧鈴設(shè)置時(shí)間,若時(shí)間到則發(fā)出一陣聲響,進(jìn)—步可以擴(kuò)充控制電器的啟停。本設(shè)計(jì)說明書對(duì)該系統(tǒng)的硬件電路,工作原理進(jìn)行了詳細(xì)的介紹。同時(shí)給出了軟件設(shè)計(jì)的流程圖和主要源代碼。</p><p> 關(guān)鍵詞: 89C51單片機(jī) DS1
10、302時(shí)鐘芯片 LED顯示器</p><p><b> 1 引 言</b></p><p><b> 1.1 問題的提出</b></p><p> 隨著人類科技文明的發(fā)展,人們對(duì)于時(shí)鐘的要求在不斷地提高。時(shí)鐘已不僅僅被看成一種用來顯示時(shí)間的工具,在很多實(shí)際應(yīng)用中它還需要能夠?qū)崿F(xiàn)更多其它的功能。高精度、多功能、小
11、體積、低功耗,是現(xiàn)代時(shí)鐘發(fā)展的趨勢(shì)。而單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。定時(shí)鬧鐘是采用數(shù)字電路實(shí)現(xiàn)對(duì).時(shí),分,秒.數(shù)字顯示的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭,車站, 碼頭辦公室等公共場(chǎng)所
12、,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。定時(shí)鬧鐘已成為人們?nèi)粘I?lt;/p><p>
13、 本設(shè)計(jì)基于單片機(jī)技術(shù)原理,以單片機(jī)芯片AT89C51作為核心控制器,通過硬件電路的制作以及軟件程序的編制,設(shè)計(jì)制作出一個(gè)多功能定時(shí)鬧鐘系統(tǒng)。該時(shí)鐘系統(tǒng)主要由秒信號(hào)發(fā)生器、時(shí)間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路組成。系統(tǒng)具有簡(jiǎn)單清晰的操作界面,可隨時(shí)進(jìn)行時(shí)間調(diào)整。同時(shí),該時(shí)鐘系統(tǒng)還具有功耗小、成本低的特點(diǎn),具有很強(qiáng)的實(shí)用性。由于系統(tǒng)所用元器件較少,單片機(jī)所被占用的I/O口不多,因此系統(tǒng)具有一定的可擴(kuò)展性。</p>
14、<p><b> 1.2任務(wù)與分析</b></p><p> 本次設(shè)計(jì)的系統(tǒng)的控制中心是AT89C51單片機(jī)。首先,在Protel軟件環(huán)境中進(jìn)行硬件電路圖的設(shè)計(jì)。然后在kell軟件環(huán)境中進(jìn)行系統(tǒng)的軟件編程,并進(jìn)行程序源文件的編譯和調(diào)試,最后生成.hex文件。此.hex文件是硬件電路運(yùn)行實(shí)現(xiàn)的源代碼來源。把.hex文件加載到AT89C51單片機(jī)芯片,然后在Proteus軟件環(huán)境
15、中運(yùn)行硬件電路,時(shí)鐘的日期就可以正常顯示了。 </p><p> 本設(shè)計(jì)的系統(tǒng)主要由:AT89C51為中央處理芯片,用于數(shù)據(jù)處理,初值設(shè)定。時(shí)鐘芯片DS1302是本例的核心模塊,由他提供時(shí)鐘信息并由LED顯示,C語言進(jìn)行編程。本系統(tǒng)可以分為以下4大模塊:</p><p> 1、AT89C51模塊:用于數(shù)據(jù)處理,和外圍的時(shí)鐘芯片通信,并控制時(shí)鐘傳輸過程,采集時(shí)間信息并予以處理。</
16、p><p> 2、DS1302模塊:實(shí)時(shí)顯示可以通過軟件編程來實(shí)現(xiàn),但這種方法需要編制的程序復(fù)雜,代碼多,且單片機(jī)軟件開銷大,時(shí)間信息也不容易長(zhǎng)期保存。而采用時(shí)鐘芯片DS1302可以避免這些問題,它可以長(zhǎng)期保存此信息,因此本例中我們使用此芯片來實(shí)現(xiàn)此系統(tǒng)。</p><p> 3、數(shù)碼管顯示模塊:顯示模塊采用普通的共陽LED數(shù)碼管,此模塊用于實(shí)時(shí)的顯示時(shí)間信息。</p><
17、;p> 4、程序:包括單片機(jī)控制時(shí)鐘芯片的接口程序(實(shí)現(xiàn)單片機(jī)和時(shí)鐘芯片之間的數(shù)據(jù)傳輸過程)和數(shù)碼管顯示程序。</p><p><b> 2 系統(tǒng)方案設(shè)計(jì)</b></p><p> 2.1 系統(tǒng)設(shè)計(jì)方案</p><p> 通過查閱相關(guān)資料,設(shè)計(jì)初期共有3個(gè)方案供我選擇,分別是:(1)采用89C2051單片機(jī)組成的系統(tǒng);(2)采用A
18、T89C51單片機(jī),8155芯片組成的系統(tǒng);(3)采用89C51單片機(jī),DS1302實(shí)時(shí)時(shí)鐘芯片組成的系統(tǒng)。</p><p> (1)采用89C2051單片機(jī)組成的系統(tǒng)</p><p> 此系統(tǒng)的硬件部分主要是由89C2051單片機(jī),74LS48芯片,ULN2003芯片所組成。該系統(tǒng)硬件結(jié)構(gòu)簡(jiǎn)單,但是單片機(jī)的I/O接口太少,不足以實(shí)現(xiàn)多種功能,軟件設(shè)計(jì)部分,程序冗長(zhǎng)而復(fù)雜,易產(chǎn)生混淆。
19、</p><p> (2)采用89C51單片機(jī),8155芯片組成的系統(tǒng)</p><p> 這個(gè)方案采用89C51單片機(jī),8155芯片,LED顯示器,4*4鍵盤來組成系統(tǒng)的硬件。該系統(tǒng)采用的是單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí),分,秒的計(jì)時(shí)。但這樣的話,程序復(fù)雜化,時(shí)間信息也不容易長(zhǎng)期保存。</p><p> (3)采用89C51單片,DS
20、1302實(shí)時(shí)時(shí)鐘芯片組成的系統(tǒng)</p><p> 此方案在硬件部分采用了89C51單片機(jī),DS13O2時(shí)鐘芯片,LED顯示器,幾個(gè)按鍵。該系統(tǒng)的最大特點(diǎn)是采用了新的芯片即DS1302。在功能上進(jìn)行了擴(kuò)充,并且使得硬件連線顯得較為簡(jiǎn)單,在軟件部分,程序顯得層次分明。</p><p> 最后確定設(shè)計(jì)采用第3方案,即 系統(tǒng)是由89C51單片機(jī), DS1302時(shí)鐘芯片,LED顯示器組成。<
21、;/p><p> 2.2 系統(tǒng)總體框圖</p><p> 圖2-1 系統(tǒng)總體框圖</p><p> 電子鬧鐘應(yīng)包括秒信號(hào)發(fā)生器、時(shí)間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分。</p><p> 電子鬧鐘的主電路指的是圖1中虛線框內(nèi)部分,主要涉及到CPU電路和按鍵按鈕電路。主機(jī)的設(shè)計(jì)具體地說有:1)系統(tǒng)時(shí)鐘電路設(shè)計(jì);2)系統(tǒng)復(fù)位
22、電路設(shè)計(jì);3)按鍵與按鈕電路設(shè)計(jì);4)鬧鈴聲指示電路設(shè)計(jì)。</p><p> 3 系統(tǒng)硬件電路設(shè)計(jì)</p><p> 3.1 89C51單片機(jī)</p><p> AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位
23、微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn)版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的
24、方案。</p><p> 圖3-1 89C51單片機(jī)引腳圖</p><p> 89C51單片機(jī)與早期Intel的8051/8751/8031芯片的外部引腳和指令系統(tǒng)完全兼容,只不過用Flash ROM 替代了ROM/EPROM而已[3]。89C51單片機(jī)內(nèi)部結(jié)構(gòu)如圖所示。</p><p> 圖3-2 89C51單片機(jī)內(nèi)部結(jié)構(gòu)示意圖</p><
25、;p><b> 各引腳的功能如下:</b></p><p><b> VCC:供電電壓。</b></p><p><b> GND:接地。</b></p><p> P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0
26、能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高[3]。</p><p> P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編
27、程和校驗(yàn)時(shí),P1口作為第八位地址接收。 </p><p> P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉
28、優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。</p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p&g
29、t; RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。</p><p> ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE
30、脈沖。如想禁止ALE的輸出可在SFR 8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p> /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。</p><p>
31、 /EA:當(dāng)/EA保持低電平時(shí),則在此期間CPU只訪問外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),則執(zhí)行內(nèi)部程序存儲(chǔ)器中的程序。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。</p><p>
32、XTAL2:來自反向振蕩器的輸出。 </p><p> 3.2 1602LCD</p><p> LCD1602顯示方式的方案比較。</p><p> 方案一:采用花樣顯示,花樣顯示是指LCD顯示某一屏字符時(shí),采取從左到右或者是從右到左的整屏移動(dòng)的顯示方式。在這種顯示方式下,給人的感覺就是程序是在執(zhí)行的,同時(shí)如果控制好了移動(dòng)一屏的時(shí)間間隔的話,在整體
33、視覺上可以達(dá)到很好的效果。</p><p> 方案二:采用靜態(tài)顯示,靜態(tài)顯示是指LCD顯示某一屏字符時(shí),時(shí)鐘保持當(dāng)前字符的顯示,不使用移屏顯示。便于控制,同時(shí)能夠滿足正常的顯示效果。</p><p> 由于在顯示中存在播放時(shí)間的動(dòng)態(tài)變化,這樣的話,即使是不產(chǎn)生整屏移動(dòng),也能給人動(dòng)態(tài)感,也易于控制?;谝陨细鞣N特點(diǎn),我選擇了方案二。</p><p> 1602液
34、晶模塊內(nèi)部的控制器共有11條控制指令,如表2-1所示.</p><p> 表3-2 1602液晶模塊控制指令</p><p> 1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線。</p><p> VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣,各引腳符號(hào)及其功能表如下表2-1所示。</
35、p><p> 表3-3各引腳及其功能表</p><p><b> 3.3 鍵盤</b></p><p> 按鍵用于控制數(shù)碼顯示、LCD顯示、揚(yáng)聲器等模塊的工作。通過掃描按鍵是否按下,來設(shè)定各模塊的工作情況,使各模塊可以在按鍵的控制下,有序地進(jìn)行工作。設(shè)計(jì)中使用單個(gè)按鍵實(shí)現(xiàn)單個(gè)功能,屬于較為簡(jiǎn)單的控制方式。</p><p&
36、gt; 按鍵采用5個(gè)button,分別控制倒計(jì)時(shí)開始、調(diào)分個(gè)位、調(diào)分十位、調(diào)秒個(gè)位、調(diào)秒十位;另外還加一個(gè)總開關(guān)用于控制所有電路的通電情況</p><p><b> 4 系統(tǒng)軟件設(shè)計(jì)</b></p><p> 4.1 proteus軟件環(huán)境介紹</p><p> 本系統(tǒng)的硬件設(shè)計(jì)首先是在Proteus軟件環(huán)境中仿真實(shí)現(xiàn)的。Proteus
37、軟件是來自英國(guó)Labcenter electronics公司的EDA工具軟件,Proteus軟件有十多年的歷史,在全球廣泛使用,除了具有和其它EDA工具一樣的原理布圖、PCB自動(dòng)或人工布線及電路仿真的功能外,其革命性的功能是,它的電路仿真是互動(dòng)的。針對(duì)微處理器的應(yīng)用,還可以直接在基于原理圖的虛擬原型上編程,并實(shí)現(xiàn)軟件源碼級(jí)的實(shí)時(shí)調(diào)試。如果有顯示及輸出,配合系統(tǒng)配置的虛擬儀器如示波器、邏輯分析儀等,還能看到運(yùn)行后輸入輸出的效果。Prote
38、us建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境,尤其重要的是Proteus Lite可以完全免費(fèi),也可以花微不足道的費(fèi)用注冊(cè)達(dá)到更好的效果[2]。</p><p> Proteus是目前最好的模擬單片機(jī)外圍器件的工具。可以仿真51系列、AVR、PIC等常用的MCU及其外圍電路(如LCD,RAM,ROM,鍵盤,馬達(dá),LED,AD/DA,部分SPI器件,部分IIC器件...)。其實(shí)Proteus 與 multisim比較類似,只
39、不過它可以仿真MCU,當(dāng)然,軟件仿真精度有限,而且不可能所有的器件都找得到相應(yīng)的仿真模型,用開發(fā)板和仿真器當(dāng)然是最好選擇,可是初學(xué)者擁有它們的可能性比較小。當(dāng)然,硬件實(shí)踐還是必不可少的。在沒有硬件的情況下,Proteus能像pspice 仿真模擬/數(shù)字電路那樣仿真MCU及外圍電路。另外,即使有硬件,在程序編寫早期用軟件仿真一下也是很有必要的。Proteus軟件主要具有以下幾個(gè)方面的特點(diǎn):</p><p> 1、
40、設(shè)計(jì)和仿真軟件Proteus 是一個(gè)很有用的工具,它可以幫助學(xué)生和專業(yè)人士提高他們的模擬和數(shù)字電路的設(shè)計(jì)能力。</p><p> 2、它允許對(duì)電路設(shè)計(jì)采用圖形環(huán)境,在這種環(huán)境中,可以使用一個(gè)特定符號(hào)來代替元器件,并完成不會(huì)對(duì)真實(shí)電路造成任何損害的電路仿真操作。</p><p> 3、它可以仿真儀表以及可描述在仿真過程中所獲得的信號(hào)的圖表。</p><p> 4
41、、它可以仿真目前流行的單片機(jī),如PICS, ATMEL-AVR, MOTOROLA, 8051 等。</p><p> 5、在設(shè)計(jì)綜合性方案中,還可以利用ARES開發(fā)印制電路板。</p><p> 4.2 Protel軟件環(huán)境介紹</p><p> Protel印制板設(shè)計(jì)軟件包是澳大利亞protel technology公司與1990年推出的電子CAD產(chǎn)品,具
42、有方便、易學(xué)、實(shí)用、快速以及高速度、高步通率的特點(diǎn)。它采用了分層次下拉窗口菜單結(jié)構(gòu)形式,用戶基本上不需要記背太多的鍵盤命令,用鼠標(biāo)點(diǎn)擊菜單命令就能操作,protel有著很高的自動(dòng)布線布通率。布通率是電子產(chǎn)CAD產(chǎn)品的一項(xiàng)重要指標(biāo),它反映電子元件在電路圖中連接關(guān)系有多少能在印刷版圖中實(shí)現(xiàn)。在設(shè)計(jì)常用的單、雙面印制板時(shí)只要選擇適當(dāng)?shù)脑季趾筒季€策略方法,protel就可以輕易的達(dá)到98%-100%的布通率。對(duì)于極少數(shù)不能布通的定方,pro
43、tel可以用飛線指示出來,引導(dǎo)用戶用手工方法連通。另外,protel有強(qiáng)大的宏命令設(shè)置功能,利用宏命令功能多定義的熱鍵可以大大提高操作速度[1]。</p><p> Protel對(duì)微機(jī)的軟硬件配置要求很低:cpu在8088以上,dos2.0以上版本,內(nèi)存640kb以上,雙軟件(或一個(gè)軟件一個(gè)硬盤),單色顯示器(多層板設(shè)計(jì)時(shí)最好用彩色),各種兼容打印機(jī)。也能在Windows9X平臺(tái)的模擬DOS下運(yùn)行。</p
44、><p> Protel已成為印制板設(shè)計(jì)加工方面的工業(yè)標(biāo)準(zhǔn)。據(jù)初步統(tǒng)計(jì)protel在CAD的市場(chǎng)占有率達(dá) 95%,成為電子產(chǎn)品制造業(yè)界的首選CAD軟件。</p><p><b> 4.3系統(tǒng)軟件分析</b></p><p> 任何一個(gè)應(yīng)用系統(tǒng),它們都有著自己的硬件系統(tǒng)和軟件系統(tǒng),少了任何一個(gè)部分都不可能稱之為一個(gè)完整的應(yīng)用系統(tǒng),它們之間是相互
45、依存的一個(gè)整體,硬件系統(tǒng)是軟件系統(tǒng)的一個(gè)基礎(chǔ)和前提,為軟件系統(tǒng)提供了一個(gè)操作平臺(tái);而軟件系統(tǒng)是硬件系統(tǒng)的靈魂,它對(duì)硬件系統(tǒng)起到擴(kuò)充和完善的作用。可想而知軟件系統(tǒng)與硬件系統(tǒng)同等重要,下面為系統(tǒng)軟件設(shè)計(jì)過程</p><p> 4.3.1 系統(tǒng)時(shí)鐘電路設(shè)計(jì)</p><p> 對(duì)于時(shí)間要求不是很高的系統(tǒng),只要按圖進(jìn)行設(shè)計(jì)就能使系統(tǒng)可靠起振并穩(wěn)定運(yùn)行。但由于原理圖中的C1、C2電容起著系統(tǒng)時(shí)鐘頻
46、率微調(diào)和穩(wěn)定的作用,因此,在本鬧鐘系統(tǒng)的實(shí)際應(yīng)用中一定要注意正確選擇參數(shù)(30±10 PF),并保證對(duì)稱性(盡可能匹配),選用正牌廠家生產(chǎn)的瓷片或云母電容,如果可能的話,溫度系數(shù)要盡可能低。實(shí)驗(yàn)表明,這2個(gè)電容元件對(duì)鬧鐘的走時(shí)誤差有較大關(guān)系。</p><p> 4.3.2系統(tǒng)復(fù)位電路的設(shè)計(jì)</p><p> 智能系統(tǒng)一般應(yīng)有手動(dòng)或上電復(fù)位電路。復(fù)位電路的實(shí)現(xiàn)通常有兩種方式:1
47、)RC復(fù)位電路;2)專用µP監(jiān)控電路。前者實(shí)現(xiàn)簡(jiǎn)單,成本低,但復(fù)位可靠性相對(duì)較低;后者成本較高,但復(fù)位可靠性高,尤其是高可靠重復(fù)復(fù)位。對(duì)于復(fù)位要求高、并對(duì)電源電壓進(jìn)行監(jiān)視的場(chǎng)合,大多采用這種方式。本次課程設(shè)計(jì)采用了上電按鈕電平復(fù)位電路。</p><p> 4.3.3 鬧鐘指示電路設(shè)計(jì)</p><p> 鬧鈴指示可以有聲或光兩種形式。本系統(tǒng)采用聲音指示。關(guān)鍵元件是蜂鳴器。蜂鳴
48、器有無源和有源兩種,前者需要輸入聲音頻率信號(hào)才能正常發(fā)聲,后者則只需外加適當(dāng)直流電源電壓即可,元件內(nèi)部已封裝了音頻振蕩電路,在得電狀態(tài)下即起振發(fā)聲。市場(chǎng)上的有源蜂鳴器分為3V、5V、6V等系列,以適應(yīng)不同的應(yīng)用需要。鬧鐘電路是用比較器來比較計(jì)時(shí)系統(tǒng)和定時(shí)系統(tǒng)的輸出狀態(tài),如果計(jì)時(shí)系統(tǒng)和定時(shí)系統(tǒng)的輸出狀態(tài)相同,則發(fā)出一個(gè)脈沖信號(hào),再和一個(gè)高頻信號(hào)混合,送到放大電路驅(qū)動(dòng)揚(yáng)聲器發(fā)聲,從而實(shí)現(xiàn)定時(shí)鬧響的功能。其電路設(shè)計(jì)參見系統(tǒng)原理圖。</p
49、><p> 4.3.4 電子鬧鐘的顯示電路設(shè)計(jì)</p><p> 本次課程設(shè)計(jì)采用了6位數(shù)碼管顯示電路。在6位LED顯示時(shí),為了簡(jiǎn)化電路,降低成本,采用動(dòng)態(tài)顯示的方式, 6個(gè)LED顯示器共用一個(gè)8位的I/O, 6位LED數(shù)碼管的位選線分別由相應(yīng)的P2. 0~P2. 5控制,而將其相應(yīng)的段選線并聯(lián)在一起,由一個(gè)8位的I/O口控制,即P0口。譯碼顯示電路將“時(shí)”、“分”、計(jì)數(shù)器的輸出狀態(tài)菁七段
50、顯示譯碼器譯碼,通過LED顯示器顯示出來。到達(dá)定時(shí)電路時(shí)根據(jù)計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號(hào),然后去觸發(fā)一音頻發(fā)生器實(shí)現(xiàn)鬧鈴。校時(shí)電路時(shí)用來對(duì)“時(shí)”、“分”顯示數(shù)字進(jìn)行校對(duì)調(diào)整的。</p><p><b> 4.4 程序流程圖</b></p><p><b> 1.主程序流程圖</b></p><p> 主程序流程圖
51、說明:主模塊是系統(tǒng)軟件的主框架。結(jié)構(gòu)化程序設(shè)計(jì)一般有“自上而下”和“自下而上”兩種方式,“自上而下”法的核心就是主框架的構(gòu)建。它的合理與否關(guān)系到程序最終的功能的多少和性能的好壞。</p><p> 圖4-1 主程序流程框圖</p><p> 2.時(shí)間設(shè)定模塊流程圖</p><p> 圖4-2 時(shí)間設(shè)定模塊程序流程圖框圖</p><p>
52、 時(shí)間設(shè)定模塊流程圖說明:時(shí)間設(shè)定模塊的設(shè)計(jì)要點(diǎn)是按鍵的去抖處理與“一鍵多態(tài)”的處理。即只涉及4個(gè)鍵完成了時(shí)間參數(shù)的設(shè)定。軟件法去抖動(dòng)的實(shí)質(zhì)是軟件延時(shí),即檢測(cè)到某一鍵狀態(tài)變化后延時(shí)一段時(shí)間,再檢測(cè)該按鍵的狀態(tài)是否還保持著,如是則作為按鍵處理,否則,視為抖動(dòng),不予理睬。去抖中的延時(shí)時(shí)間一般參考資料多描述為10ms左右,實(shí)際應(yīng)用中,應(yīng)大于20ms,否則,會(huì)導(dǎo)致按一次作多次處理,影響程序正常執(zhí)行?!耙绘I多態(tài)”即多功能鍵的實(shí)現(xiàn)思想是,根據(jù)按鍵
53、時(shí)刻的系統(tǒng)狀態(tài),決定按鍵采取何種動(dòng)作,即何種功能。</p><p> 3.鬧鈴功能的實(shí)現(xiàn)流程圖</p><p> 圖4-3鬧鈴功能的實(shí)現(xiàn)流程圖框圖</p><p> 鬧鈴功能的實(shí)現(xiàn)涉及到兩個(gè)方面:鬧鈴時(shí)間設(shè)定和是否鬧鈴判別與相應(yīng)處理。鬧鈴時(shí)間設(shè)定模塊的設(shè)計(jì)可參照時(shí)間設(shè)定模塊,這里著重闡述鬧鈴判別與處理模塊的設(shè)計(jì)問題。鬧鈴判別與鬧鈴處理的關(guān)鍵在于判別何時(shí)要進(jìn)行鬧
54、鈴。當(dāng)時(shí)十位、時(shí)個(gè)位、分十位、分個(gè)位中任一位發(fā)生改變(進(jìn)位)時(shí),就必須進(jìn)行鬧鈴判別。譯碼顯示電路將“時(shí)”、“分”計(jì)數(shù)器的輸出送到七段顯示譯碼驅(qū)動(dòng)器譯碼驅(qū)動(dòng),通過六個(gè)七段LED顯示器顯示出來。鬧鈴電路根據(jù)計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號(hào),然后加上一個(gè)高頻或低頻信號(hào)送到放</p><p> 電路驅(qū)動(dòng)蜂鳴器發(fā)聲實(shí)現(xiàn)報(bào)時(shí)。校時(shí)電路是直接加一個(gè)脈沖信號(hào)到時(shí)計(jì)數(shù)器或者分計(jì)數(shù)</p><p> 或者
55、秒計(jì)數(shù)器來對(duì)“時(shí)”、“分”顯示數(shù)字進(jìn)行校對(duì)調(diào)整。</p><p> 考慮到實(shí)用性,在該電子鐘的設(shè)計(jì)中修改定時(shí)或調(diào)整時(shí)間時(shí)采用了閃爍,而且以定時(shí)20組鬧鐘。在編程上,首先進(jìn)行了初始化定義了程序的入口地址以及中斷的入口地址,在主程序的開始定義了一組固定單元用來存儲(chǔ)計(jì)數(shù)的秒,分,時(shí)以及定時(shí)時(shí)間的序號(hào)等。</p><p> 在顯示程序段中主要進(jìn)行了閃爍的處理,采用定時(shí)器中斷置標(biāo)志位,再與位選相
56、互結(jié)合的方法來控制調(diào)時(shí)或定時(shí)中的閃爍。時(shí),分顯示則是用了軟件譯碼(查表)的方式,再用了一段固定的程序段進(jìn)行進(jìn)制轉(zhuǎn)化。初始化之后,用中斷方式對(duì)其計(jì)數(shù),計(jì)數(shù)的同時(shí)采用了定時(shí)器比較的方法,比較當(dāng)前計(jì)數(shù)時(shí)間與定時(shí)時(shí)間是否相等,若相等則將鬧鈴標(biāo)志位置數(shù)。由于定義了定時(shí)鬧鐘組,在這里采用中斷組次,每中斷一次比較一組鬧鐘,避免了一次比較中斷時(shí)間過長(zhǎng),影響下次中斷時(shí)間。顯示之后查詢鬧鈴標(biāo)志位是否與前面所置數(shù)相等,若相等則響鈴。</p>&
57、lt;p> 為了避免響鈴影響顯示,采用了每顯示幾屏以后在顯示程序中出現(xiàn)脈沖,驅(qū)動(dòng)喇叭,不會(huì)影響顯示。之后用查詢方式對(duì)按鍵進(jìn)行判斷,若有鍵按下,則進(jìn)行軟件延時(shí)消抖,避免了抖動(dòng)引起的干擾,執(zhí)行相應(yīng)的定時(shí),選時(shí)或調(diào)時(shí)程序段。對(duì)當(dāng)前時(shí)間或定時(shí)時(shí)間修改后又返回到最初的顯示程序段,如此循環(huán)下去。</p><p> 4.基本顯示模塊的實(shí)現(xiàn)流程圖</p><p> 基本顯示模塊設(shè)計(jì)的重點(diǎn)是由顯
58、示代碼取得相應(yīng)的段碼,顯示段碼數(shù)據(jù)的并行發(fā)送,高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯示器代替顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí),分顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好。</p><p><b>
59、程序流程如圖所示。</b></p><p> 圖4-4基本顯示模塊的實(shí)現(xiàn)流程圖</p><p><b> 5.系統(tǒng)調(diào)試過程</b></p><p> 通過上面的硬件設(shè)計(jì)和軟件設(shè)計(jì)過程,設(shè)計(jì)的工作已經(jīng)基本完成,接下來的工作就是對(duì)所設(shè)計(jì)好的應(yīng)用系統(tǒng)進(jìn)行調(diào)試。通過調(diào)試可以檢查出系統(tǒng)出現(xiàn)的一些錯(cuò)誤,從而進(jìn)行下一步的修改。</p&
60、gt;<p> (1)在Protel 99 SE中,對(duì)硬件電路圖進(jìn)行ERC電氣規(guī)則檢查。 </p><p> 圖 5-1 protel原理圖</p><p> 圖5-2 ERC電氣規(guī)則檢查結(jié)果</p><p><b> 圖5-3 PCB圖</b></p><p><b> ?。?)程
61、序調(diào)試</b></p><p> 程序經(jīng)過調(diào)試顯示“0錯(cuò)誤,0警告”。表示程序調(diào)試通過。</p><p> 圖5-3 程序調(diào)試通過示意圖</p><p> ?。?)protues調(diào)試</p><p> 圖5-4 protues仿真圖</p><p><b> 結(jié) 論</b>&
62、lt;/p><p> 單片機(jī)是一門應(yīng)用性很強(qiáng)的學(xué)科,課程設(shè)計(jì)是培養(yǎng)我們綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)、提出、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)我們實(shí)際工作能力的具體訓(xùn)練和考察過程。雖然在做課程設(shè)計(jì)以前已經(jīng)系統(tǒng)的把單片機(jī)課本認(rèn)真的學(xué)習(xí)了一下,但是在剛拿到設(shè)計(jì)任務(wù)書時(shí)還是有點(diǎn)一頭霧水,不知道該從哪里下手。令人欣慰的是經(jīng)過一周的學(xué)習(xí),雖然過程很艱辛,但是總算實(shí)現(xiàn)了定時(shí)鬧鐘的功能,所有的努力都很值得。這一周的大部分時(shí)
63、間都在研究程序怎么處理,在這個(gè)過程中加深了我對(duì)匯編語言命令的應(yīng)用,而且也更加了解到軟硬件配套的重要性。</p><p> 通過這次課程設(shè)計(jì),使我們對(duì)這們功課有了更深刻的認(rèn)識(shí)和了解。首先對(duì)于硬件電路的工作原理有了進(jìn)一步系統(tǒng)的學(xué)習(xí),同樣就有了進(jìn)一步的認(rèn)識(shí),使我懂得了理論與實(shí)際相結(jié)合的重要性,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,才能提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。其次軟件在這次設(shè)計(jì)
64、中也有不足之處,比如音樂的響聲不連續(xù),但又不知道從哪個(gè)地方入手解決這個(gè)問題,這要求在以后的學(xué)習(xí)中,拓寬自己的知識(shí)面,解決設(shè)計(jì)的不足之處。</p><p> 總之,通過這次課程設(shè)計(jì)不僅使我鞏固了本課程所學(xué)的基本知識(shí),還使我們具有了撰寫科研報(bào)告的初步訓(xùn)練能力,我相信這些能力在我們以后的工作或者是再學(xué)習(xí)中一定會(huì)起到不小的作用,一切的辛苦和艱難都是值得的。</p><p><b>
65、。</b></p><p><b> 致 謝</b></p><p> 在陳飛老師的指導(dǎo)下,我完成了本次設(shè)計(jì)。本設(shè)計(jì)從選題到完成,都得到了陳老師細(xì)心的指導(dǎo)。另外,本設(shè)計(jì)的完成也離不開其他老師和各位同學(xué)給我的建議和幫助,是他們讓我明白了團(tuán)隊(duì)合作的精神。當(dāng)然,這之中也有我自己的努力。這次課程設(shè)計(jì)最令我高興的是:遇到困難,翻閱書本解決困難的同時(shí)鞏固了已學(xué)知識(shí)
66、,也學(xué)到了新知識(shí)。在此,我謹(jǐn)向陳飛老師和幫助過我的老師和同學(xué)們,表示崇高的敬意和衷心的感謝!</p><p><b> 參考文獻(xiàn)</b></p><p> [1]張毅剛,彭喜元. 單片機(jī)原理與應(yīng)用設(shè)計(jì). 北京:電子工業(yè)出版社,2008.4</p><p> [2]徐錚穎,孫海維.Protel 99 se EDA技術(shù)及應(yīng)用.北京:機(jī)械工業(yè)出
67、版社,2012.2 </p><p> [3]譚浩強(qiáng).C程序設(shè)計(jì)(第三版).北京:清華大學(xué)出版社,2005</p><p> [4]劉文濤.單片機(jī)應(yīng)用開發(fā)實(shí)例.北京:清華大學(xué)出版社,2005.9</p><p> [5]高衛(wèi)東,辛友順,韓彥征.51單片機(jī)原理與實(shí)踐.北京:北京航空航天大學(xué)出版社.2008.1</p><p> 附表(本
68、設(shè)計(jì)所有程序)</p><p> #include<reg52.h></p><p> #define uint unsigned int </p><p> #define uchar unsigned char uint miao,fen,fen1,shi,shi1,flag1,flag2,flag3,aa,K1num,K2num,K3num,
69、K4num,N;//K1num-K1按鍵被按下的標(biāo)記變量,K2num-K2按鍵被按下的標(biāo)記變量,K3num=0-K3按鍵被按下的標(biāo)記變量</p><p> uchar code table[]=" TIMING CLOCK";//定義初始上電時(shí)液晶默認(rèn)顯示狀態(tài)</p><p> sbit K1=P1^0;//四個(gè)按鍵</p><p>
70、 sbit K2=P1^1;</p><p> sbit K3=P1^2;</p><p> sbit K4=P1^3;</p><p> sbit rs=P2^0;</p><p> sbit lcden=P2^2;</p><p> sbit led=P2^3;//發(fā)光二極管控制端</p>
71、<p> sbit beep=P2^4; //蜂鳴器控制端</p><p> sbit relay=P2^5;//繼電器控制端</p><p> void delay(uint z)//延時(shí)函數(shù)</p><p><b> {</b></p><p><b> uint x,y;
72、</b></p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> void write_com(uchar com)//液晶寫命令函數(shù)</p><p>&
73、lt;b> {</b></p><p><b> rs=0;</b></p><p><b> lcden=0;</b></p><p><b> P0=com;</b></p><p><b> delay(5);</b>&l
74、t;/p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p><p><b> }</b></p><p> void
75、 write_date(uchar date)//液晶寫數(shù)據(jù)函數(shù)</p><p><b> {</b></p><p><b> rs=1;</b></p><p><b> lcden=0;</b></p><p><b> P0=date;</b
76、></p><p><b> delay(5);</b></p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p>&
77、lt;p><b> }</b></p><p> void write_sfm(uchar add,uchar date)//液晶寫時(shí)分秒函數(shù)</p><p><b> {</b></p><p> uchar shi,ge;</p><p> shi=date/10;</p
78、><p> ge=date%10;</p><p> write_com(0x80+0x40+add);</p><p> write_date(0x30+shi);</p><p> write_date(0x30+ge);</p><p><b> }</b></p>&l
79、t;p> void init()//初始化函數(shù)</p><p><b> {</b></p><p> uint num;//寫液晶的循環(huán)控制變量</p><p> aa=0;//中斷次數(shù)標(biāo)志</p><p> K1num=0;//K1按鍵被按下的標(biāo)記變量</p><p&
80、gt; K2num=0;//K2按鍵被按下的標(biāo)記變量</p><p> K3num=0;//K3按鍵被按下的標(biāo)記變量</p><p><b> K4num=0;</b></p><p> flag1=1;//控制lcd屏刷新的變量</p><p> flag2=1;//控制鬧鐘響鬧和繼電器開啟關(guān)閉的標(biāo)記
81、</p><p> flag3=1;//控制鬧鐘響起時(shí),按下K4停止鬧鐘響鬧的標(biāo)記</p><p> led=1; //發(fā)光二極管初始化</p><p> relay=0;//繼電器初始化</p><p> N=100;//系統(tǒng)啟動(dòng)時(shí),鬧鐘時(shí)間到發(fā)出的聲音為連續(xù)三次發(fā)出“嘩”的一聲</p><p>
82、; miao=0;//系統(tǒng)初始化時(shí)間</p><p><b> fen=0;</b></p><p><b> shi=0;</b></p><p> fen1=1;//初始化鬧鐘的時(shí)間</p><p><b> shi1=0;</b></p>
83、<p> beep=0;//蜂鳴器初始化</p><p> lcden=0;//液晶使能端初始化</p><p> write_com(0x38);//1602液晶初始化,設(shè)置16*2顯示。5*7點(diǎn)陣,8位數(shù)據(jù)接口</p><p> write_com(0x0c);//設(shè)置開顯示,不顯示光標(biāo)</p><p>
84、write_com(0x06);//寫一個(gè)字符后地址指針自動(dòng)加1</p><p> write_com(0x01);//顯示清0,數(shù)據(jù)指針清0</p><p> write_com(0x80);//將數(shù)據(jù)指針定位到第一行,第一個(gè)字處</p><p> for(num=0;num<15;num++)//顯示鬧鐘標(biāo)示:TIMING CLOCK<
85、;/p><p><b> {</b></p><p> write_date(table[num]);</p><p> delay(10);</p><p><b> }</b></p><p> write_com(0x80+0x40+7);//寫出時(shí)間顯示部分的兩
86、個(gè)冒號(hào)</p><p> write_date(':');</p><p> write_sfm(8,fen);//送去液晶顯示秒,分,時(shí)</p><p> write_sfm(5,shi);</p><p> TMOD=0x01;//設(shè)置定時(shí)器0為工作方式1</p><p> TH0=(
87、65536-50000)/256;//定時(shí)器裝初值</p><p> TL0=(65536-50000)%256;</p><p> EA=1;//開總中斷</p><p> ET0=1;//開定時(shí)器0中斷</p><p> TR0=1;//啟動(dòng)定時(shí)器0</p><p><b> }<
88、;/b></p><p> void keyscan()//鍵盤掃描函數(shù)</p><p><b> {</b></p><p> if(K1==0&&K3num==0)//判斷K1按下,按下前沒有按下K3鍵,則開始修改時(shí)間</p><p><b> {</b>
89、</p><p><b> delay(5);</b></p><p> if(K1==0&&K1num==0)</p><p><b> {</b></p><p><b> K1num=1;</b></p><p> w
90、hile(!K1)//判斷是否松開按鍵,后同</p><p> if(K1num==1)</p><p><b> {</b></p><p> TR0=0;//關(guān)閉計(jì)數(shù)器0</p><p> write_com(0x80+0x40+9);//第一次按下光標(biāo)定位到分鐘位置</p><
91、;p> write_com(0x0f); //光標(biāo)開始閃爍</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(K3==0&&K3num==0&&
92、amp;K1num==0)//判斷K3首次被按下,則設(shè)置鬧鐘</p><p><b> {</b></p><p> delay(5);//延時(shí)消抖,后同</p><p><b> if(K3==0)</b></p><p><b> {</b></p&g
93、t;<p><b> flag1=0;</b></p><p> write_com(0x80+0x40+9);//第一次按下光標(biāo)定位到分鐘位置</p><p> while(!K3);</p><p><b> K3num=1;</b></p><p> write_s
94、fm(8,fen1);//送去液晶顯示定時(shí)的分,時(shí)</p><p> write_sfm(5,shi1);</p><p> write_com(0x0f);//光標(biāo)開始閃爍</p><p> write_com(0x80+0x40+9);//顯示位置回到調(diào)節(jié)處</p><p><b> }</b><
95、/p><p><b> }</b></p><p> if(K1==0&&K1num==1)//判斷K1按下,修改系統(tǒng)時(shí)間的小時(shí)</p><p><b> {</b></p><p><b> delay(5);</b></p><p
96、><b> if(K1==0)</b></p><p><b> {</b></p><p> write_com(0x80+0x40+6);//光標(biāo)定位到小時(shí)位置</p><p> K1num=1;//置K1num=1</p><p> while(!K1);</p&g
97、t;<p> shi++; //則調(diào)整時(shí)加1</p><p> if(shi==24) shi=0;//若滿24后將清零</p><p> write_sfm(5,shi);//每調(diào)節(jié)一次送液晶顯示一下</p><p> write_com(0x80+0x40+6);//顯示位置重新回到調(diào)節(jié)處</p><p>&
98、lt;b> }</b></p><p><b> }</b></p><p> if(K2==0&&K1num==1)//判K2按下,修改系統(tǒng)時(shí)間的分鐘</p><p><b> {</b></p><p><b> delay(5);&
99、lt;/b></p><p><b> if(K2==0)</b></p><p><b> {</b></p><p> write_com(0x80+0x40+9);//光標(biāo)定位到分鐘位置</p><p><b> K1num=1;</b></p&
100、gt;<p> while(!K2);</p><p> fen++; //則調(diào)整分加1</p><p> if(fen==60)fen=0;//若滿60后將清零</p><p> write_sfm(8,fen);//每調(diào)節(jié)一次送液晶顯示一下</p><p> write_com(0x80+0x40+9);/
101、/顯示位置重新回到調(diào)節(jié)處</p><p><b> }</b></p><p><b> }</b></p><p> if(K1num==1||K3num==1)//當(dāng)設(shè)置時(shí)間或鬧鐘時(shí),K3被按下設(shè)置完成。</p><p><b> {</b></p>
102、<p> if(K3==0)//判斷K3按下</p><p><b> {</b></p><p><b> delay(5);</b></p><p><b> if(K3==0)</b></p><p><b> {</b>&
103、lt;/p><p><b> K1num=0;</b></p><p><b> K3num=0;</b></p><p> while(!K3);</p><p> write_com(0x0c);//取消光標(biāo)閃</p><p> TR0=1;//啟動(dòng)定時(shí)器使時(shí)鐘
104、開始走</p><p> flag1=1;//flag=1.則修改系統(tǒng)時(shí)間時(shí)液晶顯示的系統(tǒng)時(shí)間值,flag=0,則為修改鬧鐘時(shí)間時(shí),屏幕顯示的是修改鬧鐘時(shí)間的值</p><p> write_sfm(8,fen);//送去液晶顯示分,時(shí)</p><p> write_sfm(5,shi);</p><p><b> }&l
105、t;/b></p><p><b> }</b></p><p><b> }</b></p><p> if(K2==0&&K1num==0&&K3num==0)//K2被按下時(shí)顯示定時(shí)時(shí)間</p><p><b> {</b>
106、</p><p><b> delay(5);</b></p><p><b> if(K2==0)</b></p><p><b> {</b></p><p> write_sfm(8,fen1);//送去液晶顯示定時(shí)的分,時(shí)</p><p&
107、gt; write_sfm(5,shi1);</p><p> while(!K2);</p><p> write_sfm(8,fen);//K2松開顯示當(dāng)前時(shí)間</p><p> write_sfm(5,shi);</p><p><b> }</b></p><p><b
108、> }</b></p><p> if(K1==0&&K3num==1)//修改小時(shí),判斷K1鍵按下,K3num=1,表示K3按鍵按下,則此時(shí)修改的是鬧鐘時(shí)間的小時(shí)</p><p><b> {</b></p><p><b> delay(5);</b></p>
109、<p><b> if(K1==0)</b></p><p><b> {</b></p><p> write_com(0x80+0x40+6);//光標(biāo)定位到小時(shí)位置</p><p><b> K3num=1;</b></p><p> whil
110、e(!K1);</p><p> shi1++; //則調(diào)整定時(shí)的時(shí)加1</p><p> if(shi1==24)//若滿24后將清零</p><p><b> shi1=0;</b></p><p> write_sfm(5,shi1);//每調(diào)節(jié)一次送液晶顯示一下</p><p&g
111、t; write_com(0x80+0x40+6);//顯示位置重新回到調(diào)節(jié)處</p><p><b> }</b></p><p><b> }</b></p><p> if(K2==0&&K3num==1)//卸螷2按下,修改鬧鐘時(shí)間的分鐘</p><p>&l
112、t;b> {</b></p><p><b> delay(5);</b></p><p><b> if(K2==0)</b></p><p><b> {</b></p><p> write_com(0x80+0x40+9);//光標(biāo)定位
113、到分鐘位置</p><p><b> K3num=1;</b></p><p> while(!K2);</p><p> fen1++; //則調(diào)整分加1</p><p> if(fen1==60)//若滿60后將清零</p><p><b> fen1=0;</b
114、></p><p> write_sfm(8,fen1);//每調(diào)節(jié)一次送液晶顯示一下</p><p> write_com(0x80+0x40+9);//顯示位置重新回到調(diào)節(jié)處</p><p><b> }</b></p><p><b> }</b></p>&l
115、t;p> if(K4==0&&flag3==0)//當(dāng)鬧鐘響起時(shí),按下K4停止響鬧,當(dāng)鬧鐘響起時(shí)候flag3置為1</p><p><b> {</b></p><p><b> delay(5);</b></p><p><b> if(K4==0)</b><
116、/p><p><b> {</b></p><p><b> flag2=0;</b></p><p> flag3=1;//此處需置flag3為1,否則鬧鐘沒有響起的時(shí)候按下K4鍵,程序會(huì)執(zhí)行此句</p><p><b> }</b></p><p
117、><b> }</b></p><p> if(K4==0&&flag3==1&&K4num==0)//K4按下設(shè)置鬧鐘的狀態(tài)為ON或OFF,flag3=1,表示鬧鐘此時(shí)沒響起。K4num==0,表示此時(shí)為ON狀態(tài)。</p><p><b> {</b></p><p><
118、;b> delay(5);</b></p><p><b> {</b></p><p><b> K4num=1;</b></p><p><b> }</b></p><p><b> }</b></p>&
119、lt;p> if(K4==0&&flag3==1&&K4num==1)//K4按下設(shè)置鬧鐘的狀態(tài)為ON或OFF,flag3=1,表示鬧鐘此時(shí)沒響起。K4num==1,表示此時(shí)為OFF狀態(tài)。</p><p><b> {</b></p><p><b> delay(5);</b></p>
120、<p><b> {</b></p><p><b> K4num=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p&
121、gt;<p> void clock()//鬧鐘函數(shù) K4—鬧鈴ON/OFF的狀態(tài)設(shè)置,設(shè)置為ON時(shí)連續(xù)三次發(fā)出“嘩”的一聲,設(shè)置為OFF發(fā)出“嘩”的一?</p><p><b> {</b></p><p> if((fen==fen1)&&(shi==shi1)&&(flag2==1)&&(K
122、4num==0))//鬧鐘的響鬧控制</p><p><b> {</b></p><p> beep=1;//此時(shí)鬧鐘響起,連續(xù)三次發(fā)出嘩的一聲</p><p> relay=1;//鬧鐘時(shí)間到,則繼電器啟動(dòng)</p><p> flag3=0;//置flag3=0,表示此時(shí)鬧鐘響起,按下K4
123、鍵執(zhí)行停止鬧鐘響鬧語句</p><p> delay(100);//這些語句是為了使鬧鐘響起時(shí),發(fā)出連續(xù)三次嘩的聲音</p><p><b> beep=0;</b></p><p> delay(100);</p><p><b> beep=1;</b></p><
124、p> delay(100);</p><p><b> beep=0;</b></p><p> delay(100);</p><p><b> beep=1;</b></p><p> delay(100);</p><p><b> beep
125、=0;</b></p><p> delay(300);</p><p><b> }</b></p><p> else if((fen==fen1)&&(shi==shi1)&&(flag2==1)&&(K4num==1))//鬧鐘的響鬧控制</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)--帶lcd顯示的定時(shí)鬧鐘
- 課程設(shè)計(jì)--帶LCD顯示的定時(shí)鬧鐘.doc
- 單片機(jī)課程設(shè)計(jì)--帶有l(wèi)cd顯示的定時(shí)鬧鐘
- 數(shù)字鐘單片機(jī)課程設(shè)計(jì)-- lcd顯示的定時(shí)鬧鐘制作
- 單片機(jī)課程設(shè)計(jì)—帶有l(wèi)cd的定時(shí)鬧鐘
- 單片機(jī)課程設(shè)計(jì)---- lcd電子定時(shí)鬧鐘設(shè)計(jì)
- 單片機(jī)定時(shí)鬧鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---定時(shí)鬧鐘的設(shè)計(jì)
- 單片機(jī)定時(shí)鬧鐘課程設(shè)計(jì)
- 定時(shí)鬧鐘—單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)—定時(shí)鬧鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)—定時(shí)鬧鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——定時(shí)鬧鐘的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---定時(shí)鬧鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--定時(shí)鬧鐘設(shè)計(jì)
- 課程設(shè)計(jì)--單片機(jī)定時(shí)鬧鐘設(shè)計(jì)報(bào)告
- 基于單片機(jī)的定時(shí)鬧鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---定時(shí)鬧鈴lcd
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)單定時(shí)鬧鐘系統(tǒng)
- lcd顯示設(shè)計(jì)單片機(jī)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論