版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 題目: 電子倒計(jì)時(shí)定時(shí)器設(shè)計(jì)</p><p><b> 摘要</b></p><p> 隨著時(shí)代的進(jìn)步,電子技術(shù)的發(fā)展,倒計(jì)時(shí)定時(shí)器得到了越來越廣泛的應(yīng)用,給人們?nèi)粘5纳?、學(xué)習(xí)、工作、娛樂帶來便利,電子定時(shí)器相比普通的定時(shí)
2、器來事具有體積小、重量輕、造價(jià)低、精度高等特點(diǎn)。</p><p> 本設(shè)計(jì)主要采用51系列單片機(jī),通過硬件電路設(shè)計(jì)和軟件編程設(shè)計(jì)來實(shí)現(xiàn),硬件主要包括主控模塊,時(shí)間顯示模塊,鍵盤設(shè)置模塊,報(bào)警器模塊的設(shè)計(jì),軟件編程主要采用C語言,雖然程序條數(shù)比較多,但是設(shè)計(jì)起來比較方便,可通過Keils軟件進(jìn)行調(diào)試。</p><p> 此次倒計(jì)時(shí)定時(shí)器采用單片機(jī)AT89S51為核心,利用時(shí)鐘芯片DS13
3、02來顯示一天的時(shí)間,系統(tǒng)通電后利用數(shù)碼管自動(dòng)顯示當(dāng)前時(shí)間,通過鍵盤可以調(diào)整時(shí)間,分別對(duì)時(shí)、分、秒進(jìn)行加減,也可以通過鍵盤轉(zhuǎn)換成倒計(jì)時(shí)模式,最大倒計(jì)時(shí)時(shí)間為59分59秒,而且誤差很小,當(dāng)?shù)褂?jì)時(shí)為零時(shí)蜂鳴器進(jìn)行報(bào)警,指示燈變亮,倒計(jì)時(shí)功能關(guān)閉則顯示當(dāng)前時(shí)間,操作簡單方便。</p><p> 關(guān)鍵詞:時(shí)鐘芯片;AT89S51;倒計(jì)時(shí);DS1302</p><p><b> 目
4、錄</b></p><p><b> 摘 要1</b></p><p><b> 第1章緒論5</b></p><p> 1.1課題的學(xué)術(shù)背景及其實(shí)際意義5</p><p> 1.2相關(guān)領(lǐng)域的成果及存在的不足5</p><p> 1.3
5、課題來源及主要研究內(nèi)容5</p><p> 第2章倒計(jì)時(shí)定時(shí)器的結(jié)構(gòu)、原理及設(shè)計(jì)方案7</p><p> 2.1 單片機(jī)的發(fā)展概況7</p><p> 2.2 51單片機(jī)的內(nèi)部結(jié)構(gòu)7</p><p> 2.3 設(shè)計(jì)要求、方案及框圖9</p><p> 2.1.1設(shè)計(jì)要求9</p>
6、<p> 2.1.2設(shè)計(jì)方案9</p><p> 2.1.3設(shè)計(jì)框圖10</p><p> 第3章硬件電路設(shè)計(jì)11</p><p> 3.1ATS89C51單片機(jī)介紹11</p><p> 3.2時(shí)鐘模塊13</p><p> 3.2.1DS1302簡介13</p&
7、gt;<p> 3.2.2DS1302電路設(shè)計(jì)14</p><p> 3.2.3時(shí)鐘電路設(shè)計(jì)15</p><p> 3.2.4時(shí)鐘復(fù)位電路15</p><p> 3.3鍵盤模塊16</p><p> 3.4顯示模塊17</p><p> 3.4.1LED數(shù)碼管介紹17&
8、lt;/p><p> 3.4.2LED數(shù)碼管電路設(shè)計(jì)19</p><p> 3.5報(bào)警模塊21</p><p> 第4章軟件程序設(shè)計(jì)22</p><p> 4.1Keil軟件介紹22</p><p> 4.2軟件程序流程圖22</p><p> 第5章系統(tǒng)調(diào)試25
9、</p><p><b> 結(jié) 論30</b></p><p><b> 參考文獻(xiàn)31</b></p><p><b> 附 錄32</b></p><p> 附錄1 主程序32</p><p> 附錄 2 電路原理圖49<
10、;/p><p> 附錄3 PCB圖50</p><p><b> 致 謝51</b></p><p><b> 緒論</b></p><p> 課題的學(xué)術(shù)背景及其實(shí)際意義</p><p> 倒計(jì)時(shí)定時(shí)器已經(jīng)成為人們?nèi)粘I钪斜夭豢缮俚奈锲?,隨著技術(shù)的發(fā)展,廣泛的應(yīng)
11、用于各個(gè)公共場(chǎng)所,給人們?nèi)粘5纳?、學(xué)習(xí)、工作、娛樂帶來便利,但是由于原先簡單的報(bào)時(shí)功能已經(jīng)不能夠被人們所滿足,希望出一些新的功能新的產(chǎn)品來滿足人們的需要,例如重要日子的倒計(jì)時(shí)、秒表等等,這些都能帶來更大的方便。而所有的這些都是以倒計(jì)時(shí)定時(shí)器為基礎(chǔ)的。因此,研究倒計(jì)時(shí)定時(shí)器有著非常重要的意義和實(shí)用價(jià)值。</p><p> 電子定時(shí)器在家用電器中經(jīng)常用于延時(shí)自動(dòng)關(guān)機(jī)、定時(shí)。延時(shí)自動(dòng)關(guān)機(jī)可用于:收音機(jī)、電視機(jī)、錄音
12、機(jī)、催眠器、門燈、路燈、汽車頭燈、轉(zhuǎn)彎燈以及其他電器的延時(shí)斷電及延時(shí)自停電源等。定時(shí)可用于:照相定時(shí)曝光、定時(shí)閃光、定時(shí)放大、定時(shí)調(diào)速、定時(shí)烘箱、冰箱門開定時(shí)報(bào)警、水位定時(shí)報(bào)警、延時(shí)催眠器、延時(shí)電鈴、延時(shí)電子鎖、觸摸定時(shí)開關(guān)等。例如:空調(diào)中的定時(shí)器,在工作一段時(shí)間之后便能自動(dòng)切斷電源停止工作。夏季夜間使用,入睡前先頂好時(shí)間,等睡熟后到了預(yù)定時(shí)間,空調(diào)自動(dòng)關(guān)機(jī),方便節(jié)能。定時(shí)器除了應(yīng)用于家用電器外,還廣泛地用于工業(yè)農(nóng)業(yè)生產(chǎn)和服務(wù)設(shè)施等等。
13、</p><p> 相關(guān)領(lǐng)域的成果及存在的不足</p><p> 在電子技術(shù)突飛猛進(jìn)的今天,電子倒計(jì)時(shí)定時(shí)器也慢慢的被廣大的家庭所接受,這些都方便了每個(gè)人的生活和工作。</p><p> 傳統(tǒng)的定時(shí)器絕大多數(shù)都是發(fā)條驅(qū)動(dòng)式、電機(jī)傳動(dòng)式或電鐘式等機(jī)械定時(shí)器,部分電子器械中也有用時(shí)間繼電器的。相對(duì)于傳統(tǒng)的定時(shí)器,電子定時(shí)器的體積小、重量輕、造價(jià)低、精度高、壽命長、
14、而且安全可靠、調(diào)整方便、適于頻繁使用。所以電子定時(shí)器的發(fā)展必定大有前途。同時(shí)隨著現(xiàn)代電子技術(shù)的發(fā)展,電子定時(shí)器也在不斷的進(jìn)步,朝向著更多用途、更高精度、更小體積發(fā)展著。</p><p> 課題來源及主要研究內(nèi)容</p><p> 本課題是通過老師挑選的幾個(gè)課題當(dāng)中自主選擇的,雖然倒計(jì)時(shí)定時(shí)器已經(jīng)很常見了,但是自己親自動(dòng)手制作,把所學(xué)到的知識(shí)應(yīng)用的實(shí)際操作中,通過這個(gè)過程一定會(huì)有很大的收
15、獲,鞏固加深了單片機(jī)應(yīng)用的知識(shí)面,提高了自己的動(dòng)手能力和解決問題的能力。</p><p> 本課題主要研究的內(nèi)容要了解電子倒計(jì)時(shí)定時(shí)器的基本結(jié)構(gòu)原理,調(diào)研并查找相關(guān)資料,選擇實(shí)現(xiàn)電子倒計(jì)時(shí)定時(shí)器的方案,進(jìn)行完整的倒計(jì)時(shí)的硬件電路、系統(tǒng)軟件以及實(shí)物結(jié)構(gòu)的設(shè)計(jì)并進(jìn)行電路仿真、軟件編程、系統(tǒng)調(diào)試。</p><p> 倒計(jì)時(shí)定時(shí)器的結(jié)構(gòu)、原理及設(shè)計(jì)方案</p><p>
16、 2.1 單片機(jī)的發(fā)展概況</p><p> 微型計(jì)算機(jī)的出現(xiàn)是電子數(shù)字計(jì)算機(jī)廣泛應(yīng)用到人們?nèi)粘9ぷ骱蜕铑I(lǐng)域中去的一個(gè)重大轉(zhuǎn)折點(diǎn)。它已經(jīng)深入應(yīng)用到非微型計(jì)算機(jī)所無法應(yīng)用的領(lǐng)域,對(duì)社會(huì)產(chǎn)生了極大的影響。單片微型計(jì)算機(jī)是微型計(jì)算機(jī)發(fā)展的一個(gè)重要分支,它以其獨(dú)特的機(jī)構(gòu)和性能,越來越普遍的應(yīng)用到國民經(jīng)濟(jì)建設(shè)的各個(gè)領(lǐng)域。</p><p> 單片機(jī)全稱為單片微型計(jì)算機(jī)(Single Chip
17、Microcomputer)。因?yàn)閱纹瑱C(jī)主要用于控制系統(tǒng)中,所以又稱微控制器(Microcontroller Unit,MCU)或嵌入式控制器(Embedded Controller)。它具有嵌入式應(yīng)用系統(tǒng)所要求的體系結(jié)構(gòu),微處理器,指令系統(tǒng),總線方式,管理模式等。他把計(jì)算機(jī)的基本部件都微型化集成到一塊芯片上了,通常片內(nèi)部都含有中央處理部件(CPU),數(shù)據(jù)存儲(chǔ)器(RAM),程序存儲(chǔ)器(ROM,EPROM,F(xiàn)lsh ROM),定時(shí)器/計(jì)數(shù)
18、器和各種輸入/輸出(I/O)接口他們之間的相互連接結(jié)構(gòu)</p><p> 2.2 51單片機(jī)的內(nèi)部結(jié)構(gòu)</p><p> 51單片機(jī)內(nèi)部有一個(gè)8位的CPU,同時(shí)CPU內(nèi)部包含了運(yùn)算器,控制器及若干寄存器。</p><p> 1、運(yùn)算器(ALU)的主要功能</p><p> A)算術(shù)和邏輯運(yùn)算,可對(duì)半字節(jié)(一個(gè)字節(jié)是8位,半個(gè)字節(jié)就是4
19、位)和單字節(jié)數(shù)據(jù)進(jìn)行操作。</p><p> B)加、減、乘、除、加1、減1、比較等算術(shù)運(yùn)算。</p><p> C)與、或、異或、求補(bǔ)、循環(huán)等邏輯運(yùn)算。</p><p> D)位處理功能(即布爾處理器)。</p><p> 由于ALU內(nèi)部沒有寄存器,參加運(yùn)算的操作數(shù),必須放在累加器A中。累加器A也用于存放運(yùn)算結(jié)果。</p>
20、;<p> 例如:執(zhí)行指令 ADD A,B </p><p> 執(zhí)行這條指令時(shí),累加器A中的內(nèi)容通過輸入口In_1輸入ALU,寄存器B通過內(nèi)部數(shù)據(jù)總線經(jīng)輸入口In_2輸入ALU,A+B的結(jié)果通過ALU的輸出口Out、內(nèi)部數(shù)據(jù)總線,送回到累加器A。</p><p><b> 2、程序計(jì)數(shù)器PC</b></p>&l
21、t;p> PC的作用是用來存放將要執(zhí)行的指令地址,共16位,可對(duì)64K ROM直接尋址,PC低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。也就是說,程序執(zhí)行到什么地方,程序計(jì)數(shù)器PC就指到哪里,它始終是跟躥著程序的執(zhí)行。我們知道,用戶程序是存放在內(nèi)部的ROM中的,我們要執(zhí)行程序就要從ROM中一個(gè)個(gè)字節(jié)的讀出來,然后到CPU中去執(zhí)行,那么ROM具體執(zhí)行到哪一條呢?這就需要我們的程序計(jì)數(shù)器PC來指示。</p><p&g
22、t; 程序計(jì)數(shù)器PC具有自動(dòng)加1的功能,即從存儲(chǔ)器中讀出一個(gè)字節(jié)的指令碼后,PC自動(dòng)加1(指向下一個(gè)存儲(chǔ)單元)。</p><p><b> 3、指令寄存器IR</b></p><p> 指令寄存器的作用就是用來存放即將執(zhí)行的指令代碼。</p><p> 在這里我們先簡單的了解下CPU執(zhí)行指令的過程,首先由程序存儲(chǔ)器(ROM)中讀取指令代
23、碼送入到指令寄存器,經(jīng)譯碼器譯碼后再由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號(hào),從而完成指令的功能。關(guān)于指令在單片機(jī)內(nèi)部的執(zhí)行過程,我們?cè)诤竺鎸?huì)以另一節(jié)課來進(jìn)行詳細(xì)的講解。</p><p><b> 4、指令譯碼器ID</b></p><p> 用于對(duì)送入指令寄存器中的指令進(jìn)行譯碼,所謂譯碼就是把指令轉(zhuǎn)變成執(zhí)行此指令所需要的電信號(hào)。當(dāng)指令送入譯碼器后,由譯碼器對(duì)該指令進(jìn)
24、行譯碼,根據(jù)譯碼器輸出的信號(hào),CPU控制電路定時(shí)地產(chǎn)生執(zhí)行該指令所需的各種控制信號(hào),使單片機(jī)正確的執(zhí)行程序所需要的各種操作。</p><p> 5、地址寄存器AR(16位)</p><p> AR的作用是用來存放將要尋址的外部存儲(chǔ)器單元的地址信息,指令碼所在存儲(chǔ)單元的地址編碼,由程序計(jì)數(shù)器PC產(chǎn)生,而指令中操作數(shù)所在的存儲(chǔ)單元地址碼,由指令的操作數(shù)給定。從上圖中我們可以看到,地址寄存器
25、AR通過地址總線AB與外部存儲(chǔ)器相連。</p><p><b> 6、數(shù)據(jù)寄存器DR</b></p><p> 用于存放寫入外部存儲(chǔ)器或I/O端口的數(shù)據(jù)信息??梢姡瑪?shù)據(jù)寄存器對(duì)輸出數(shù)據(jù)具有鎖存功能。數(shù)據(jù)寄存器與外部數(shù)據(jù)總線DB直接相連。</p><p> 7、程序狀態(tài)字PSW用于記錄運(yùn)算過程中的狀態(tài),如是否溢出、進(jìn)位等。</p&g
26、t;<p> 例如,累加器A的內(nèi)容83H,執(zhí)行:</p><p> ADD A,#8AH ;累加器A與立即數(shù)8AH相加,并把結(jié)果存放在A中。</p><p> 指令后,將產(chǎn)生和的結(jié)果為[1]0DH,而累加器A只有8位,只能存放低8位,即0DH,元法存放結(jié)果中的最高位B8。為些,在CPU內(nèi)設(shè)置一個(gè)進(jìn)位標(biāo)志位C,當(dāng)執(zhí)行加法運(yùn)算出現(xiàn)進(jìn)位時(shí),進(jìn)位標(biāo)志位C
27、為1。</p><p><b> 8、時(shí)序部件</b></p><p> 由時(shí)鐘電路和脈沖分配器組成,用于產(chǎn)生微操作控制部件所需的定時(shí)脈沖信號(hào)。</p><p> 2.3 設(shè)計(jì)要求、方案及框圖</p><p><b> 設(shè)計(jì)要求</b></p><p> 這個(gè)倒計(jì)時(shí)
28、定時(shí)器的設(shè)計(jì)采用倒計(jì)時(shí)的方式,初始值由鍵盤設(shè)定,最大定時(shí)為59分59秒,8位LED顯示時(shí)間,定時(shí)到進(jìn)行聲光報(bào)警。</p><p><b> 設(shè)計(jì)方案</b></p><p> ?。?)采用AT89C51單片機(jī)為核心,通過程序來實(shí)現(xiàn)時(shí)間的顯示,用定時(shí)器實(shí)現(xiàn)鬧鐘功能的設(shè)定,通過LED數(shù)碼管顯示時(shí)間。如圖2-1:</p><p><b>
29、 圖2-1系統(tǒng)框圖</b></p><p> 本設(shè)計(jì)采用AT89C51單片機(jī)不如AT89S52精確高,長時(shí)間工作會(huì)導(dǎo)致誤差很大,并且C語言設(shè)計(jì)起來相當(dāng)麻煩,調(diào)整起來麻煩而且不方便實(shí)現(xiàn)對(duì)系統(tǒng)的擴(kuò)展。</p><p> ?。?)采用AT89S52單片機(jī)為核心,倒計(jì)時(shí)功能采用C語言編程利用單片機(jī)內(nèi)部定時(shí)器來實(shí)現(xiàn),通過時(shí)鐘芯片DS1302利用LED數(shù)碼管顯示當(dāng)前時(shí)間,并通過鍵盤控制
30、模式的轉(zhuǎn)換和時(shí)間的調(diào)整,當(dāng)時(shí)間到了經(jīng)行報(bào)警,這個(gè)設(shè)計(jì)使整個(gè)系統(tǒng)可編程,靈活性大大增加了,雖然多了個(gè)芯片但是加大了精度,因此選擇這個(gè)方案。</p><p><b> 設(shè)計(jì)框圖</b></p><p> 利用單片機(jī)定時(shí)器及計(jì)數(shù)器產(chǎn)生定時(shí)效果通過編程形成倒計(jì)時(shí)效果,在通過LED數(shù)碼管顯示數(shù)據(jù)。系統(tǒng)供電后,實(shí)現(xiàn)小時(shí)、分鐘、秒的顯示,通過按鍵校對(duì)時(shí)間、倒計(jì)時(shí)的設(shè)定和顯示,當(dāng)
31、定時(shí)時(shí)間到的時(shí)候,單片機(jī)通過報(bào)警器實(shí)現(xiàn)聲光報(bào)警。如圖2-2:</p><p><b> 圖2-2系統(tǒng)框圖</b></p><p><b> 硬件電路設(shè)計(jì)</b></p><p> ATS89C51單片機(jī)介紹</p><p> AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器(FPER
32、OM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼
33、容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且。外形及引腳排列如圖所示 </p><p><b> 主要特性:</b></p><p> 與MCS-51 兼容 </p>
34、<p> ·4K字節(jié)可編程閃爍存儲(chǔ)器</p><p> ·壽命:1000寫/擦循環(huán)</p><p> ·數(shù)據(jù)保留時(shí)間:10年</p><p> ·全靜態(tài)工作:0Hz-24MHz </p><p> ·三級(jí)程序存儲(chǔ)器鎖定</p><p>
35、 ·128×8位內(nèi)部RAM</p><p> ·32可編程I/O線</p><p> ·兩個(gè)16位定時(shí)器/計(jì)數(shù)器</p><p><b> ·5個(gè)中斷源</b></p><p><b> ·可編程串行通道 </b><
36、/p><p> ·低功耗的閑置和掉電模式</p><p> ·片內(nèi)振蕩器和時(shí)鐘電路</p><p><b> 2.管腳說明:</b></p><p><b> VCC:供電電壓。</b></p><p> GND:接地。 </p>
37、<p> P0 口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</p><p> P1 口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖
38、器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(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口的管腳被外部拉低,將輸
39、出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(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 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅(qū)動(dòng)4 個(gè) TTL
40、邏輯電平。對(duì)P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入 口使用。作為輸入, 由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> P3口也可作為AT89C51的一些特殊功能口,如下表所示:</p><p><b> 口管腳 備選功能</b></p><p> P3.0
41、0;RXD(串行輸入口)</p><p> P3.1 TXD(串行輸出口)</p><p> P3.2 /INT0(外部中斷0)</p><p> P3.3 /INT1(外部中斷1)</p><p> P3.4 T0(記時(shí)器0外部輸入)</p><p> P3.5
42、60;T1(記時(shí)器1外部輸入) </p><p> P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)</p><p> P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)</p><p> 此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將
43、是單片機(jī)復(fù)位。</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脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),
44、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> EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(
45、0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 </p><p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。</p><p> XTAL2:來自反向振蕩器的輸出。</p><p&
46、gt;<b> 時(shí)鐘模塊</b></p><p><b> DS1302簡介</b></p><p> DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送
47、多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時(shí)提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。如圖3-1</p><p> 圖3-1 DS1302引腳圖</p><p> DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源
48、。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止
49、單字節(jié)或多字節(jié)數(shù)據(jù)傳送的方法。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。</p><p> DS1302電路設(shè)計(jì)</p><p> 本設(shè)計(jì)要求在不進(jìn)行倒計(jì)時(shí)的時(shí)候可以顯示一天的時(shí)間,所以采用的時(shí)鐘芯片DS1302為核心來實(shí)現(xiàn)這個(gè)問題,DS1302的X1、X2端口連接一個(gè)32.76
50、8kHz的晶振,Vcc1、Vcc2連接電源,串行數(shù)據(jù)I\O端口連接單片機(jī)的P1.5引腳,串行時(shí)鐘SCLK端口連接單片機(jī)的P1.6引腳,復(fù)位RST端口連接單片機(jī)的P1.4引腳。電路圖3-2:</p><p> 圖3-2 DS1302電路設(shè)計(jì)</p><p><b> 時(shí)鐘電路設(shè)計(jì)</b></p><p> 時(shí)鐘電路對(duì)單片機(jī)是不可缺的,單片機(jī)
51、的每個(gè)功能都要以時(shí)鐘電路為基礎(chǔ)工作。單片機(jī)內(nèi)部自帶一個(gè)時(shí)鐘電路,外部接入定時(shí)控制元件即可構(gòu)成一個(gè)穩(wěn)定的自己振蕩器。其中機(jī)器周期共有12個(gè)振蕩脈沖周期,因此,機(jī)器周期是時(shí)鐘周期的12倍。本實(shí)驗(yàn)使用的晶振是12MHz,則時(shí)鐘周期為(1/12)us,機(jī)器周期為1us。兩個(gè)端口分別連在單片機(jī)XLAL1、XLAL2引腳上實(shí)驗(yàn)圖3-3:</p><p><b> 圖3-3 時(shí)鐘電路</b></p
52、><p><b> 時(shí)鐘復(fù)位電路</b></p><p> 復(fù)位操作有上電自動(dòng)復(fù)位、按鍵電平復(fù)位和外部脈沖復(fù)位三種方式,本次實(shí)驗(yàn)用的是按鍵電平復(fù)位,利用電容的充放電公式來選擇所需的電容、電阻,能保證復(fù)位信號(hào)高電平持續(xù)時(shí)間大于2個(gè)機(jī)器周期。電路圖3-4:</p><p> 圖3-4 復(fù)位電路設(shè)計(jì)</p><p><
53、b> 鍵盤模塊</b></p><p> 本設(shè)計(jì)要用數(shù)碼管顯示當(dāng)前時(shí)間和倒計(jì)時(shí)時(shí)間,這就需要由鍵盤來設(shè)定,鍵盤分為獨(dú)立連接式和矩陣式,本實(shí)驗(yàn)采用五個(gè)獨(dú)立的鍵盤設(shè)計(jì),連在單片機(jī)的P3口,第一個(gè)按鍵控制工作模式的選擇,系統(tǒng)通電后顯示當(dāng)前時(shí)間,按下則顯示倒計(jì)時(shí)狀態(tài),第二個(gè)按鍵為設(shè)置模式選擇,不管是倒計(jì)時(shí)還是顯示時(shí)間都能對(duì)當(dāng)前的時(shí)間進(jìn)行設(shè)置,第三、四個(gè)按鍵主要是對(duì)時(shí)、分、秒進(jìn)行加減,第五個(gè)按鍵主要的
54、功能是啟動(dòng)和停止倒計(jì)時(shí)。電路設(shè)計(jì)如圖3-5:</p><p> 圖3-5 鍵盤模塊設(shè)計(jì)</p><p><b> 顯示模塊</b></p><p><b> LED數(shù)碼管介紹</b></p><p> 數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本元件是發(fā)光二極管。</p><p&g
55、t; 圖3-6 LED數(shù)碼管</p><p><b> 數(shù)碼管的分類</b></p><p> 數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽
56、極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽極為低電平時(shí),相應(yīng)字段就不亮。</p><p>&l
57、t;b> 數(shù)碼管的驅(qū)動(dòng)方式</b></p><p> 數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。</p><p> ① 靜態(tài)顯示驅(qū)動(dòng):靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)
58、行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡單,顯示亮度高,缺點(diǎn)是占用I/O端口多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來驅(qū)動(dòng),要知道一個(gè)89S521單片機(jī)可用的I/O端口才32個(gè)呢:),實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。</p><p> ② 動(dòng)態(tài)顯示驅(qū)動(dòng):數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"
59、a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。通過分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)
60、動(dòng)。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。</p><p> LED數(shù)碼管電路設(shè)計(jì)</p><p> 本設(shè)計(jì)主要采用8位LED數(shù)碼管顯示,與單片機(jī)的I
61、\O口連接,但是單片機(jī)的I\O口電流有限,只有幾毫安,但是數(shù)碼管的驅(qū)動(dòng)電流要幾十毫安到幾百毫安,所以在實(shí)驗(yàn)中選擇了單片機(jī)74LS245和單片機(jī)74LS138進(jìn)行驅(qū)動(dòng)和段選。</p><p> 單片機(jī)74LS245介紹和電路設(shè)計(jì)</p><p> 74LS245是我們常用的芯片,用來驅(qū)動(dòng)led或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù),還具有雙向三態(tài)功能,既可以輸出,
62、也可以輸入數(shù)據(jù)。</p><p> 當(dāng)單片機(jī)AT89SC52單片機(jī)的P0口總線負(fù)載達(dá)到或超過P0最大負(fù)載能力時(shí),必須接入74LS245等總線驅(qū)動(dòng)器。當(dāng)片選端/CE低電平有效時(shí),DIR=“0”,信號(hào)由 B 向 A 傳輸;(接收)DIR=“1”,信號(hào)由 A 向 B 傳輸;(發(fā)送)當(dāng)CE為高電平時(shí),A、B均為高阻態(tài)。由于P2口始終輸出地址的高8位,接口時(shí)74LS245的三態(tài)控制端1G和2G接地,P2口與驅(qū)動(dòng)器輸入線對(duì)
63、應(yīng)相連。P0口與74LS245輸入端相連,E端接地,保證數(shù)據(jù)線暢通。8051的/RD和/PSEN相與后接DIR,使得RD且PSEN有效時(shí),74LS245輸入(P0.1←D1),其它時(shí)間處于輸出(P0.1→D1)。</p><p> 通過單片機(jī)74LS245來擴(kuò)大電流輸出來給數(shù)碼管進(jìn)行驅(qū)動(dòng),電路設(shè)計(jì)如圖3-7:</p><p> 圖3-7 74LS245電路設(shè)計(jì)</p>&
64、lt;p> 譯碼器74LS138介紹和電路設(shè)計(jì)</p><p> 74LS138為3線到8線譯碼器,共有54LS138和74LS138兩種線路結(jié)構(gòu)模式。當(dāng)一個(gè)選通端(E1)為高電平,另兩個(gè)選通端((/E2))和/(E3))為低電平時(shí),可將地址端(A0、A1、A2)的二進(jìn)制編碼在Y0至Y7對(duì)應(yīng)的輸出端以低電平譯出。比如:A2A1A0=110時(shí),則Y6輸出端輸出低電平信號(hào)。利用 E1、E2和E3可級(jí)聯(lián)擴(kuò)展成
65、 24 線譯碼器;若外接一個(gè)反相器還可級(jí)聯(lián)擴(kuò)展成 32 線譯碼器。若將選通端中的一個(gè)作為數(shù)據(jù)輸入端時(shí),74LS138還可作數(shù)據(jù)分配器??捎迷?086的譯碼電路中,擴(kuò)展內(nèi)存。</p><p> 因?yàn)楸驹O(shè)計(jì)采用的8位數(shù)碼管為共陰極數(shù)碼管,單片機(jī)74LS138的I\O口輸出是低電平,所以單片機(jī)和數(shù)碼管可以配合在一起使用,來完成數(shù)碼管的段選。它的電路設(shè)計(jì)如圖3-7:</p><p> 圖3-8
66、單片機(jī)74LS138電路設(shè)計(jì)</p><p><b> 報(bào)警模塊</b></p><p> 本設(shè)計(jì)在倒計(jì)時(shí)時(shí)間到的時(shí)候?yàn)榱颂嵝延脩舳捎玫穆暪鈭?bào)警,電路主要有一個(gè)蜂鳴器、一個(gè)三極管組成,在倒計(jì)時(shí)完成時(shí)通過控制端口P3.0給三極管送入低電平使其導(dǎo)通,報(bào)警器報(bào)警,指示燈點(diǎn)亮。如圖3-6:</p><p> 圖3-9 聲光報(bào)警電路設(shè)計(jì)</
67、p><p><b> 軟件程序設(shè)計(jì)</b></p><p><b> Keil軟件介紹</b></p><p> 圖4-1 Keil軟件</p><p> 2009年2月發(fā)布Keil uVision4,Keil uVision4引入靈活的窗口管理系統(tǒng),使開發(fā)人員能夠使用多臺(tái)監(jiān)視器。新的用戶界面可
68、以更好地利用屏幕空間和更有效地組織多個(gè)窗口,提供一個(gè)整潔,高效的環(huán)境來開發(fā)應(yīng)用程序。新版本支持更多最新的ARM芯片,還添加了一些其他新功能。</p><p> 2011年3月ARM公司發(fā)布最新集成開發(fā)環(huán)境RealView MDK開發(fā)工具中集成了最新版本的Keil uVision4,其編譯器、調(diào)試工具實(shí)現(xiàn)與ARM器件的最完美匹配。</p><p> 最新的Keil uVision4 ID
69、E,旨在提高開發(fā)人員的生產(chǎn)力,實(shí)現(xiàn)更快,更有效的程序開發(fā)。uVision4引入了靈活的窗口管理系統(tǒng),能夠拖放到視圖內(nèi)的任何地方,包括支持多顯示器窗口。uVision4在μVision3 IDE的基礎(chǔ)上,增加了更多大眾化的功能。 多顯示器和靈活的窗口管理系統(tǒng) 系統(tǒng)瀏覽器窗口的顯示設(shè)備外設(shè)寄存器信息調(diào)試還原視圖,創(chuàng)建并保存多個(gè)調(diào)試窗口布局, 多項(xiàng)目工作區(qū)簡化與眾多的項(xiàng)目</p><p><b> 軟件程序
70、流程圖</b></p><p> 圖4-2 軟件流程圖</p><p> 系統(tǒng)中設(shè)置了五個(gè)按鍵,當(dāng)程序掃描到“復(fù)位”鍵時(shí),單片機(jī)重新讀入撥碼盤數(shù)據(jù),意即新的一輪計(jì)時(shí)開始,當(dāng)程序掃描到“走”鍵時(shí),若原計(jì)時(shí)停止,則啟動(dòng)計(jì)時(shí),否則無效,同樣,當(dāng)程序掃描到“?!辨I時(shí),若原計(jì)時(shí)已啟動(dòng),則停止計(jì)時(shí),否則無效。對(duì)于本系統(tǒng)來說,秒計(jì)時(shí)的準(zhǔn)確性和主從機(jī)的通信的可靠性是程序的關(guān)鍵,以下分別對(duì)這
71、兩個(gè)程序的設(shè)計(jì)進(jìn)行描述。在硬件電路中因未設(shè)計(jì)硬件計(jì)時(shí)功能,秒的產(chǎn)生只有依靠軟件來完成。本系統(tǒng)中采用系統(tǒng)定時(shí)P計(jì)數(shù)器T0 來產(chǎn)生。最大定時(shí)時(shí)間計(jì)算方法如下:TMAX = 216 ×12foscs ,其中fosc 為系統(tǒng)時(shí)鐘頻率,本系統(tǒng)中的時(shí)鐘頻率為1110592MHz , 經(jīng)計(jì)算TMAX 為7111ms ,為了計(jì)算的方便,取TMAX = 50ms ,軟件計(jì)數(shù)至20 次為1s。</p><p><b&
72、gt; 系統(tǒng)調(diào)試</b></p><p> 本次倒計(jì)時(shí)定時(shí)器設(shè)計(jì)包括硬件電路設(shè)計(jì)和軟件設(shè)計(jì),軟件主要是通過C語言進(jìn)行編程,將程序編輯編譯完成后,將生成的hex文件通過串口下載軟件下載到STC89C52單片機(jī)芯片中去。通過Proteus軟件進(jìn)行仿真,實(shí)驗(yàn)過程中仿真可以正常運(yùn)行,但是總是比現(xiàn)實(shí)顯示的時(shí)間慢,而且報(bào)警的時(shí)候聲音也是一卡一卡的,檢查各個(gè)端口也沒有發(fā)現(xiàn)問題,通過與老師的溝通,覺得是Prote
73、us軟件的問題,結(jié)果還是很好的完成了仿真的工作。如下圖所示:</p><p> 圖5-1 時(shí)間顯示模式仿真圖</p><p> 圖5-2 倒計(jì)時(shí)模式仿真圖</p><p> 硬件設(shè)計(jì)首先檢查印制板及焊接的質(zhì)量情況,在檢查無誤后通電檢查數(shù)碼管的點(diǎn)亮狀況。至于鍵盤的調(diào)試,關(guān)鍵是把握好按鍵的去抖效果。當(dāng)出現(xiàn)按鍵“不靈”情況,一般是由于程序中用于按鍵去抖的延時(shí)時(shí)間不夠
74、。在進(jìn)行LED數(shù)碼管焊接的時(shí)候,也出現(xiàn)的點(diǎn)問題,因?yàn)槿蝿?wù)書要求的是8位數(shù)碼管,做板子的時(shí)候是兩個(gè)四位的連在一起,數(shù)碼管引腳就比較混亂,做過了一個(gè)板子但是沒有正常工作,經(jīng)過了一些調(diào)試還是沒有顯示出來時(shí)間,決定直接買了一個(gè)數(shù)碼管模塊,直接與單片機(jī)的幾個(gè)引腳連接就可以完成實(shí)驗(yàn)要求的功能,最后連接一起通電試了試,可以完成現(xiàn)在的要求,雖然板子有點(diǎn)簡陋看起來有點(diǎn)省事,但是過程還是學(xué)到了不少的東西。不過現(xiàn)在還有個(gè)問題就是誤差有點(diǎn)大,準(zhǔn)備弄得更加精確。
75、</p><p> 圖5-3 硬件時(shí)間顯示狀態(tài)</p><p> 圖5-4 硬件倒計(jì)時(shí)狀態(tài)</p><p> 系統(tǒng)開始調(diào)試,通電后數(shù)碼管顯示時(shí)間,在通過鍵盤進(jìn)行時(shí)間的調(diào)整和工作模式的選擇,下表是對(duì)系統(tǒng)倒計(jì)時(shí)時(shí)間的測(cè)試結(jié)果。</p><p> 表1 系統(tǒng)倒計(jì)時(shí)時(shí)間測(cè)試表</p><p> 誤差分析:本設(shè)計(jì)的計(jì)時(shí)
76、和倒計(jì)時(shí)功能主要是通過單片機(jī)內(nèi)部的計(jì)時(shí)器來完成,而且程序設(shè)計(jì)也使用的延時(shí)語句,不可避免的會(huì)出現(xiàn)一些誤差。但是本設(shè)計(jì)的時(shí)間顯示的誤差很小,倒計(jì)時(shí)時(shí)間越長誤差就越大,電路板也已經(jīng)從手焊的換成印制板,還在尋找原因。</p><p><b> 結(jié) 論</b></p><p> 本文主要先對(duì)核心芯片做了個(gè)概述,并且簡單的介紹了各個(gè)管腳的功能,闡述了設(shè)計(jì)要求、選擇的方案以
77、及最后能夠完成的功能。然后通過硬件和軟件部分的介紹,詳細(xì)的說明了我做畢設(shè)的步驟以及各個(gè)部分的選擇,如何實(shí)現(xiàn)的,用什么軟件實(shí)現(xiàn)的,最后列出了實(shí)驗(yàn)的誤差以及PCB、原理圖等等的實(shí)驗(yàn)過程。</p><p> 雖然畢業(yè)設(shè)計(jì)可以完成實(shí)驗(yàn)要求,但是這僅僅是一小部分,還有很多問題沒有解決,硬件設(shè)計(jì)的過于簡單,導(dǎo)致了誤差的出現(xiàn),這都是我以后要努力地方向。。</p><p> 從這次畢業(yè)論文設(shè)計(jì)中,無論
78、對(duì)于單片機(jī)還是定時(shí)器,都進(jìn)一步清晰了設(shè)計(jì)概念、學(xué)習(xí)了專業(yè)理論、掌握了芯片知識(shí),而且還增長了實(shí)踐經(jīng)驗(yàn),提高了認(rèn)知水平,促進(jìn)了自學(xué)能力。從諸多方面獲得了很大的收益。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 李群芳.單片微型計(jì)算機(jī).電子工業(yè)出版社,2010</p><p> [2] 孫景琪, 曹小秋.通信廣播電路
79、原理與應(yīng)用.北京工業(yè)大學(xué)出版社,2010</p><p> [3] 徐士良, 葛兵.計(jì)算機(jī)軟件技術(shù)基礎(chǔ).清華大學(xué)出版社,2010</p><p> [4] 劉明亮, 郭云.數(shù)字信號(hào)處理基礎(chǔ)教程.北京航空航天大學(xué)出版社,2011</p><p> [5] 王劃一, 楊西峽.自動(dòng)控制原理.國防工業(yè)出版社,2010</p><p> [6]
80、 鄭步生,吳渭.Multisim200l電路設(shè)計(jì)及仿真入門與應(yīng)用[M].北京:電子工業(yè)出版社,2002</p><p> [7] 樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例[M].北京:北京航空航天大學(xué)出版社,2003</p><p> [8] 梁純,王軍.基于MCS一51單片機(jī)的LED點(diǎn)陣圖文顯示屏設(shè)計(jì)[J].工礦自動(dòng)化,2005(6)</p><p> [9]
81、夏路易、石宗義編著 電路原理圖與電路板設(shè)計(jì)教程 北京希望電子出版社 2002</p><p> [10]吳國經(jīng)主編 單片機(jī)應(yīng)用技術(shù) 中國電力出版社 2004</p><p> [11]徐泳龍主編 單片機(jī)原理及應(yīng)用 機(jī)械工業(yè)出版社 2004</p><p><b> 附 錄</b></p><p>
82、;<b> 附錄1 主程序</b></p><p> #include<reg52.h></p><p> #include "ds1302.h" // DS1302的驅(qū)動(dòng)頭文件</p><p> #define uchar unsigned char</p><p>
83、 #define uint unsigned int</p><p><b> // 設(shè)置模式選擇</b></p><p> sbit key1=P1^3;</p><p><b> // +</b></p><p> sbit key2=P1^4;</p><p>
84、;<b> // -</b></p><p> sbit key3=P1^5;</p><p> // 系統(tǒng)工作模式選擇</p><p> sbit key4=P1^6;</p><p> // 倒計(jì)時(shí)開始/停止</p><p> sbit key5=P1^7;</p>
85、<p><b> // 報(bào)警</b></p><p> sbit BEEP = P3^7;</p><p><b> // LED</b></p><p> sbit LED = P3^4;</p><p> unsigned char ll = 0;</p>&l
86、t;p> unsigned char kk,i;// 臨時(shí)變量</p><p> //共陰數(shù)碼管"0-9","滅","-"編碼</p><p> uchar code dis[]={0x3F,0X30,0X5b,0X4f,</p><p> 0x66,0x6d,0x7d,0x0
87、7,0x7f,0x6f,0x00,0x40};</p><p><b> //位選編碼</b></p><p> uchar code wei[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87};</p><p> //時(shí)分秒顯示緩沖區(qū)</p><p> uchar data
88、dis1[]={0x00,0x00,0x0b,0x00,0x00,0x0b,0x00,0x00};</p><p><b> //時(shí)分秒初值</b></p><p> uchar data chuzhi[]={0x23,0x59,0x50};//送十六進(jìn)制數(shù)</p><p><b> // 讀取的時(shí)間值</b><
89、;/p><p> uchar data time1302[]={0x00,0x00,0x00};</p><p> // 倒計(jì)時(shí)的分鐘,秒</p><p> signed char Count_minutes = 0;</p><p> signed char Count_seconds = 0;</p><p>
90、 // 系統(tǒng)工作模式選擇位1: 時(shí)間顯示模式 0:倒計(jì)時(shí)模式</p><p> bit Work_Flag = 1;</p><p> //延時(shí)1ms子程序</p><p> void delay(uint z)</p><p><b> {</b></p><p><
91、b> uint x,y;</b></p><p> for(x=z;z>0;z--)</p><p> for(y=110;y>0;y--)</p><p><b> ;</b></p><p><b> }</b></p><p>&
92、lt;b> // 顯示子函數(shù)</b></p><p> void display()</p><p><b> {</b></p><p><b> uchar k;</b></p><p> if(Work_Flag)// 時(shí)間模式下的顯示</p>
93、;<p><b> {</b></p><p> dis1[7]=chuzhi[2]%10;// 秒的十位</p><p> dis1[6]=chuzhi[2]/10;// 秒的個(gè)位</p><p> dis1[4]=chuzhi[1]%10;// 分的十位</p><p> d
94、is1[3]=chuzhi[1]/10;// 分的個(gè)位</p><p> dis1[1]=chuzhi[0]%10;// 時(shí)的十位</p><p> dis1[0]=chuzhi[0]/10;// 時(shí)的個(gè)位</p><p> for(k=0;k<8;k++) // 循環(huán)刷新各個(gè)位</p><p><
95、b> {</b></p><p> P2 = wei[k];</p><p> P0 = dis[dis1[k]];</p><p> delay(1);//讓數(shù)碼管正常顯示出來</p><p><b> }</b></p><p><b>
96、 }</b></p><p> else// 倒計(jì)時(shí)模式下的顯示</p><p><b> {</b></p><p> dis1[3] = Count_seconds/10;// 得到分鐘的1十位</p><p> dis1[4] = Count_seconds%10;
97、// 得到分鐘的個(gè)位</p><p> dis1[0] = Count_minutes/10;</p><p> dis1[1] = Count_minutes%10;</p><p> for(k=0;k<5;k++)</p><p><b> {</b></p><p> P2
98、 = wei[k];</p><p> P0 = dis[dis1[k]];</p><p><b> delay(1);</b></p><p><b> }</b></p><p><b> }</b></p><p><b>
99、 }</b></p><p><b> //鍵盤掃描子函數(shù)</b></p><p> void kscan()</p><p><b> {</b></p><p> uchar temp;</p><p> // 系統(tǒng)工作模式選擇</p>
100、<p> if(key4 == 0) </p><p><b> {</b></p><p> delay(10);</p><p> if(key4 == 0) </p><p><b> {</b></p><p> whi
101、le(key4 == 0);</p><p> Work_Flag = !Work_Flag; // 按下鍵 在兩個(gè)工作模式間切換</p><p><b> } </b></p><p><b> } </b></p><p> if(key1==0)// 時(shí)間顯示
102、模式下的選擇鍵按下</p><p><b> {</b></p><p> delay(10);</p><p> if(key1==0)</p><p><b> {</b></p><p> while(key1==0);// 等待釋放</
103、p><p> if(Work_Flag)</p><p><b> {</b></p><p> kk++; // 模式標(biāo)識(shí)</p><p> if(kk==1)// 為1,則對(duì)時(shí)進(jìn)行設(shè)置</p><p><b> {</b></p>&
104、lt;p> temp = chuzhi[2]/10*16+chuzhi[2]%10;</p><p> Write1302 (0x8e,0X00); //禁止寫保護(hù)</p><p> Write1302 (0x80,0x80|temp); //時(shí)鐘暫停</p><p> Write1302 (0x8e,0x80); //允許寫保
105、護(hù)</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> ll ++;</
106、b></p><p> if(ll == 2)</p><p><b> ll = 0;</b></p><p> }</p><p><b> }</b></p><p><b> }</b></p>&
107、lt;p> if(!Work_Flag)// 設(shè)置倒計(jì)時(shí)的初始時(shí)間</p><p><b> {</b></p><p> // 倒計(jì)時(shí)秒設(shè)置模式</p><p> if(ll == 0)</p><p><b> {</b></p><p&g
108、t; if(key2 == 0)// +</p><p><b> {</b></p><p> delay(10);</p><p> if(key2 == 0)</p><p><b> {</b></p><p> while(key2 == 0);&
109、lt;/p><p> Count_seconds ++;</p><p> if(Count_seconds == 60)// 加到60,分加1,秒為</p><p><b> {</b></p><p> Count_seconds = 0;</p><p> Count_minute
110、s ++;</p><p> if(Count_minutes == 60)</p><p> Count_minutes = 0;</p><p><b> }</b></p><p><b> }</b></p><p><b> }<
111、/b></p><p> if(key3 == 0)</p><p><b> {</b></p><p> delay(10);</p><p> if(key3 == 0)</p><p><b> {</b></p><p>
112、while(key3 == 0);</p><p> if(Count_minutes)</p><p><b> {</b></p><p> Count_seconds --;</p><p> if(Count_seconds < 0)</p><p><b> {
113、</b></p><p> Count_seconds = 59;</p><p> Count_minutes --;</p><p><b> }</b></p><p><b> }</b></p><p>&
114、lt;b> else</b></p><p><b> {</b></p><p> if(Count_seconds)</p><p> Count_seconds --;</p><p><b> else</b></p><p> Coun
115、t_seconds = 0;</p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></p><p>&
116、lt;b> }</b></p><p> // 倒計(jì)時(shí)模式下,分設(shè)置模式</p><p> if(ll == 1)</p><p><b> {</b></p><p> if(key2 == 0)// +</p><p><b> {</b&g
117、t;</p><p> delay(10);</p><p> if(key2 == 0)</p><p><b> {</b></p><p> while(key2 == 0);</p><p> Count_minutes ++;</p><p> if(
118、Count_minutes == 60)</p><p> Count_minutes = 0; </p><p><b> }</b></p><p><b> } </b></p><p> if(key3 == 0) // -</p><p><b&
119、gt; {</b></p><p> delay(10);</p><p> if(key3 == 0)</p><p><b> {</b></p><p> while(key3 == 0);</p><p> Count_minutes --;</p>
120、<p> if(Count_minutes < 0)</p><p> Count_minutes = 59; </p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p>
121、<p> switch (kk)// 工作模式選擇</p><p><b> {</b></p><p> case 1:// 秒設(shè)模式</p><p> if(key2==0)// 如果‘+’按下</p><p><b> {</b
122、></p><p> delay(10); // 防抖</p><p> if(key2==0)// </p><p><b> {</b></p><p> while(key2==0);// 等待按鍵釋放</p><p> temp=(chuzhi[2
123、]+1)/10*16+(chuzhi[2]+1)%10;//10進(jìn)制轉(zhuǎn)BCD</p><p> if(temp>=96) //96對(duì)應(yīng)16進(jìn)制60</p><p><b> temp=0;</b></p><p> Write1302 (0x8e,0X00); //禁止寫保護(hù)</p><p> Wri
124、te1302 (0x80,0x80|temp); //秒初始化</p><p> Write1302 (0x8e,0x80); //允許寫保護(hù)</p><p><b> }</b></p><p><b> }</b></p><p> if(key3==0)// ‘-
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子倒計(jì)時(shí)定時(shí)器設(shè)計(jì)
- 數(shù)字電路倒計(jì)時(shí)畢業(yè)設(shè)計(jì)論文
- 電子定時(shí)器的設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 籃球倒計(jì)時(shí)課程設(shè)計(jì)--籃球板倒計(jì)時(shí)設(shè)計(jì)
- 倒計(jì)時(shí)器課程設(shè)計(jì)
- 課程設(shè)計(jì)--倒計(jì)時(shí)計(jì)時(shí)器的設(shè)計(jì)
- 課程設(shè)計(jì)---單片機(jī)at89c51的定時(shí)器實(shí)現(xiàn)60s倒計(jì)時(shí)
- 倒計(jì)時(shí)提醒器設(shè)計(jì)(課程設(shè)計(jì))
- 課程設(shè)計(jì)報(bào)告---倒計(jì)時(shí)器
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---具有倒計(jì)時(shí)功能的交通燈設(shè)計(jì)
- 電子技術(shù)課程設(shè)計(jì)--倒計(jì)時(shí)器的設(shè)計(jì)
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
- 電子課程設(shè)計(jì)報(bào)告--籃球比賽倒計(jì)時(shí)器
- 99倒計(jì)時(shí)課程設(shè)計(jì)
- 開業(yè)倒計(jì)時(shí)
- 電子技術(shù)課程設(shè)計(jì)--考試天數(shù)倒計(jì)時(shí)器
- 【畢業(yè)設(shè)計(jì)】基于單片機(jī)控制的9999秒倒計(jì)時(shí)器
- 單片機(jī)畢業(yè)設(shè)計(jì)-籃球比賽倒計(jì)時(shí)計(jì)分器(論文+外文翻譯+程序)
- 數(shù)字電子技術(shù)課程設(shè)計(jì)--數(shù)字倒計(jì)時(shí)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論