版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課 程 設(shè) 計</b></p><p> 課題名稱 電子萬年歷的設(shè)計與制作 </p><p> 姓 名 </p><p> 學(xué) 號 </p><p> 班 級
2、 通信S11-1班 </p><p> 專 業(yè) 通信技術(shù) </p><p> 所 在 系 電子技術(shù)系 </p><p> 指導(dǎo)教師 </p><p> 完成日期 2013-01-04
3、 </p><p> 電子萬年歷的設(shè)計與制作</p><p><b> 摘要</b></p><p> 單片機(jī)就是微控制器,是面向應(yīng)用對象設(shè)計、突出控制功能的芯片。單片機(jī)接上晶振、復(fù)位電路和相應(yīng)的接口電路,裝載軟件后就可以構(gòu)成單片機(jī)應(yīng)用系統(tǒng)。將它嵌入到形形色色的應(yīng)用系統(tǒng)中,就構(gòu)成了眾多產(chǎn)品、設(shè)備的智能化核心。本設(shè)計就是應(yīng)用單片
4、機(jī)強(qiáng)大的控制功能制作而成的電子萬年歷</p><p> 關(guān)鍵詞:單片機(jī);時鐘電路;動態(tài)掃描;</p><p><b> 目錄</b></p><p> 一、設(shè)計要求與方案論證6</p><p><b> 1.設(shè)計要求:6</b></p><p> 2.系統(tǒng)基本方
5、案選擇:7</p><p> ?。?)單片機(jī)芯片的選擇方案和論證:7</p><p> ?。?) 顯示模塊選擇方案和論證:7</p><p> (3) 顯示器的結(jié)構(gòu)8</p><p> 3.鍵盤模塊的選擇:8</p><p><b> 4.方案論證:9</b></p>
6、<p> ?。?)技術(shù)可行性:9</p><p> 二、系統(tǒng)的硬件設(shè)計與實(shí)現(xiàn)9</p><p> 1. 電路設(shè)計框圖:9</p><p> 2.系統(tǒng)硬件概述:10</p><p> (1)控制模塊10</p><p><b> (2)結(jié)構(gòu)10</b></p
7、><p> 3.腳定義及功能10</p><p> (1)源及時鐘引腳10</p><p> (2)控制引腳10</p><p> (3)I/O口引腳11</p><p> 3.片外總線結(jié)構(gòu)11</p><p> 4.要單元電路的設(shè)計:11</p><p&
8、gt; (1)控制模塊的設(shè)計:11</p><p> ?。?)模塊器件12</p><p> (3)電路模塊的設(shè)計14</p><p> ?。?)電路原理及說明15</p><p> (5)數(shù)據(jù)的輸出與輸入(I/O)16</p><p> (6) DS1302的寄存器16</p>&l
9、t;p> 5. 顯示模塊的設(shè)計17</p><p> 三、系統(tǒng)的軟件設(shè)計18</p><p> 1. 程序流程框圖:18</p><p> 2. 子程序的設(shè)計:21</p><p> (1) 鍵盤子程序的實(shí)現(xiàn):21</p><p> (2).讀寫DS1302子程序21</p>
10、<p> 3.系統(tǒng)硬件電路設(shè)計:23</p><p> 4.系統(tǒng)硬件PROTEUS仿真原理圖:24</p><p> 5.主要單元電路的設(shè)計:24</p><p> (1)顯示4.1 顯示部分設(shè)計24</p><p> ?。?)鍵盤接口:25</p><p> (3)按鍵開關(guān)去抖動問題:
11、25</p><p> (4)查詢式按鍵及其接口:26</p><p> ?。?)矩陣式鍵盤及其接口26</p><p> (6)鍵盤掃描控制方式:26</p><p> 四、測試結(jié)果分析與結(jié)果27</p><p> 1. 測試結(jié)果分析27</p><p> ?。?)在測試中
12、遇到LEDLCD16824不顯示27</p><p> ?。?)按鍵調(diào)整時,不是按單位遞增和遞減28</p><p><b> 五、系統(tǒng)評價28</b></p><p> 六、系統(tǒng)程序清單28</p><p><b> 七、謝辭31</b></p><p>&
13、lt;b> 八、參考文獻(xiàn)31</b></p><p><b> 緒論</b></p><p> 隨著人們生活水平的提高和生活節(jié)奏的加快,對時間的要求越來越高,精準(zhǔn)數(shù)字計時的消費(fèi)需求也是越來越多。</p><p> 二十一世紀(jì)的今天,最具代表性的計時產(chǎn)品就是電子時鐘,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游
14、絲的發(fā)明,相對穩(wěn)定的機(jī)械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時精度更高的石英電子鐘表,使鐘表的走時月差從分級縮小到秒級。第三次革命就是單片機(jī)數(shù)碼計時技術(shù)的應(yīng)用,使計時產(chǎn)品的走時日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計時的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動日期、星期的顯示功能,它更符合消費(fèi)者的生活需求!
15、因此,電子時鐘的出現(xiàn)帶來了鐘表計時業(yè)界跨躍性的進(jìn)步…… </p><p> 本設(shè)計采用的是AT89S52單片機(jī),該單片機(jī)采用的MCU51內(nèi)核,因此具有很好的兼容性,內(nèi)部帶有8KB的ROM,能夠存儲大量的程序,最突出特點(diǎn)是具有ISP在系統(tǒng)燒寫功能,使得燒寫程序更加方便。</p><p> 計時芯片采用DALLAS公司的涓細(xì)充電時鐘芯片DS1302,該芯片通過簡單的串行通信與單片機(jī)進(jìn)行通
16、信,時鐘/日歷電路能夠?qū)崟r提供年、月、日、時分、秒信息,采用雙電源供電,當(dāng)外部電源掉電時能夠利用后備電池準(zhǔn)確計時。</p><p> 通過此次設(shè)計能夠更加牢固的掌握單片機(jī)的應(yīng)用技術(shù),增強(qiáng)動手能力、硬件設(shè)計能力以及軟件設(shè)計能力。</p><p> 一、設(shè)計要求與方案論證</p><p><b> 1.設(shè)計要求:</b></p>
17、<p> 本電子時鐘能動態(tài)顯示分鐘、秒。</p><p> 2.系統(tǒng)基本方案選擇:</p><p> ?。?)單片機(jī)芯片的選擇方案和論證:</p><p><b> 方案一: </b></p><p> 采用89C51芯片作為硬件核心,采用Flash ROM,內(nèi)部具有4KB ROM 存儲空間,能于3V
18、的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容,但是運(yùn)用于電路設(shè)計中時由于不具備ISP在線編程技術(shù), 當(dāng)在對電路進(jìn)行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,對芯片的多次拔插會對芯片造成一定的損壞。</p><p><b> 方案二:</b></p><p> 采用AT89S52,片內(nèi)ROM全都采用Flash ROM;能以3V的超底壓工作;同
19、時也與MCS-51系列單片機(jī)完全該芯片內(nèi)部存儲器為8KB ROM 存儲空間,同樣具有89C51的功能,且具有在線編程可擦除技術(shù),當(dāng)在對電路進(jìn)行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,不需要對芯片多次拔插,所以不會對芯片造成損壞。</p><p> 所以選擇采用AT89S52作為主控制系統(tǒng).</p><p><b> 方案三:</b></p
20、><p> DS1302是美國DALLAS公司推出的一種高性能、低功耗的實(shí)時時鐘芯片,附加31字節(jié)靜態(tài)RAM,采用SPI三線接口與CPU進(jìn)行通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號和RAM數(shù)據(jù)。實(shí)時時鐘可提供秒、分、時、日、星期、月和年,一個月小與31天時可以自動調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.5~5.5V。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對后備電源進(jìn)行涓細(xì)電流充
21、電的能力。利用單片機(jī)強(qiáng)大的控制功能就可實(shí)現(xiàn)實(shí)時計時的功能,而且消耗的系統(tǒng)資源少,程序簡單。</p><p> (2) 顯示模塊選擇方案和論證:</p><p><b> 方案一:</b></p><p> 采用LED液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見,但是價格昂貴,需要的接口線多,所以在此設(shè)計中
22、不采用LED液晶顯示屏.</p><p><b> 方案二:</b></p><p> 采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價格也相對較高,所以也不用此種作為顯示.</p><p><b> 方案三:</b></p><
23、;p> 采用LED數(shù)碼管動態(tài)掃描,LED數(shù)碼管價格適中,對于顯示數(shù)字最合適,而且采用動態(tài)掃描法與單片機(jī)連接時,占用的單片機(jī)口線少。</p><p><b> LED顯示數(shù)碼管</b></p><p> 常見的LED顯示具有清晰明亮的特點(diǎn)。是顯示接口也是絕大多數(shù)單片機(jī)應(yīng)用系統(tǒng)必備的部件之一。</p><p> 發(fā)光二極管組成的顯示器
24、是單片機(jī)應(yīng)用產(chǎn)品中最常用的廉價輸出設(shè)備。它由若干個發(fā)光二極管按一定的規(guī)律排列而成。當(dāng)某一個發(fā)光二極管導(dǎo)通時,相應(yīng)的一個點(diǎn)或一筆畫被點(diǎn)亮,控制不同組合的二極管導(dǎo)通,就能顯出各種字符。</p><p> 所以采用了LED數(shù)碼管作為顯示。</p><p> (3) 顯示器的結(jié)構(gòu)</p><p> 常用的7段顯示器的結(jié)構(gòu)如圖所示,發(fā)光二極管的陽極連在一起的稱為共陽極顯
25、示器,陰極連在一起的成為共陰顯示器。1位顯示器由8個發(fā)光二極管組成,其中7個發(fā)光二極管a~g控制7個筆畫的亮或暗,另一個控制一個小數(shù)點(diǎn)的亮和暗,這種筆畫的七段顯示器能顯示的字符較少,字符的形狀有些失真,但失控簡單,使用方便。</p><p> 3.鍵盤模塊的選擇:</p><p> 在對日期和時間進(jìn)行切換,對日期和時間進(jìn)行調(diào)節(jié)校準(zhǔn)過程中,系統(tǒng)需要產(chǎn)生激勵電流,因此需要用按鍵。</
26、p><p> 方案一:使用獨(dú)立式鍵盤。獨(dú)立式鍵盤是指直接用I/O口線構(gòu)成的單個按鍵電路。獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單。</p><p> 方案二:使用矩陣式鍵盤。矩陣式鍵盤是由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上,行線、列線分別連接到按鍵開關(guān)的兩端。其特點(diǎn)是簡單且不增加成本,這種鍵盤適合按鍵數(shù)量較多的場合。</p><p> 根據(jù)以上的論述,因本系統(tǒng)需
27、要的按鍵不多,日期加1鍵,月數(shù)加1鍵,年數(shù)加1鍵,分?jǐn)?shù)加1鍵,時數(shù)加1鍵,時間/日期切換鍵,要求簡單。所以采用方案一獨(dú)立式鍵盤。</p><p><b> 4.方案論證:</b></p><p><b> ?。?)技術(shù)可行性:</b></p><p> 隨著國內(nèi)超大規(guī)模集成電路的出現(xiàn),微處理器及其外圍芯片有了迅速的發(fā)展
28、。集成技術(shù)的最新發(fā)展之一是將CPU和外圍芯片,如程序存儲器、數(shù)據(jù)存儲器、并行I/O口、串行I/O口、定時/計數(shù)器、中斷控制器及其他控制部件集成在一個芯片之中,制成單片計算機(jī)(Single-Chip Microcomputer)。而近年來推出的一些高檔單片機(jī)還包括有許多特殊功能單元,如A/D、D/A轉(zhuǎn)換器、調(diào)制解調(diào)器、通信控制器、鎖相環(huán)、DMA、浮點(diǎn)運(yùn)算單元、PWM控制輸出單元、PWM輸出時的死區(qū)可編程控制功能等。因此,只要外加一些擴(kuò)展電
29、路及必要的通道接口就可以構(gòu)成各種計算機(jī)應(yīng)用系統(tǒng),如工業(yè)流水線控制系統(tǒng)、作為家用電器的主控制器、分布式控制系統(tǒng)的終端節(jié)點(diǎn)或作為其主控制節(jié)點(diǎn)起中繼的作用、數(shù)據(jù)采集系統(tǒng)、自動測試系統(tǒng)等?!、賳纹瑱C(jī)的出現(xiàn),并在各技術(shù)領(lǐng)域中得到如此迅猛的發(fā)展,與單片機(jī)構(gòu)成計算機(jī)應(yīng)用系統(tǒng)所形成的下述特點(diǎn)有關(guān):?、趩纹瑱C(jī)構(gòu)成的應(yīng)用系統(tǒng)有較大的可靠性。這些可靠性的獲得除了依靠單片機(jī)芯片本身的高可靠性以及應(yīng)用有最少的聯(lián)接外,還可以方便地采用軟、硬件技術(shù)?!、巯到y(tǒng)擴(kuò)
30、展、系統(tǒng)配置較典型、規(guī)范,容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng),</p><p> 綜上各方案所述,對此次作品的方案選定: 采用C52作為主控制系統(tǒng); LED數(shù)碼管動態(tài)掃描作為顯示。</p><p> 二、系統(tǒng)的硬件設(shè)計與實(shí)現(xiàn)</p><p> 1. 電路設(shè)計框圖:</p><p><b> 2.系統(tǒng)硬件概述:</b>&l
31、t;/p><p><b> (1)控制模塊</b></p><p> AT89S52單片機(jī)為40引腳雙列直插芯片,有四個I/O口P0,P1,P2,P3, MCS-51單片機(jī)共有4個8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨(dú)立地作輸出或輸入。如圖所示。</p><p><b> (2)結(jié)構(gòu)</b><
32、;/p><p> 按功能分為8部分:CUP,程序存儲器,數(shù)據(jù)存儲器,時鐘電路,串行口,并行I/O口,中斷系統(tǒng),定時/計數(shù)器。</p><p><b> 3.腳定義及功能</b></p><p><b> (1)源及時鐘引腳</b></p><p> Vcc:接+5V 電源</p>
33、<p><b> Vss:接地</b></p><p> XTAL1和XTAL2:時鐘引腳,外接晶體引線端。當(dāng)使用芯片內(nèi)部時鐘時,此兩引腳端用于外接石英晶體和微調(diào)電容;當(dāng)使用外部時鐘時,用于接外部時鐘脈沖信號。</p><p><b> (2)控制引腳</b></p><p> RST/Vpq:RST是復(fù)
34、位信號輸入端,Vpd是備用電源輸入端。當(dāng)RST輸入端保持2個機(jī)器周期以上高電平時,單片機(jī)完成復(fù)位初始化操作。</p><p> 當(dāng)主電源Vcc發(fā)生故障而突然下降到一定低電壓或斷電時,第2功能Vpd將為片內(nèi)RAM提供電源以保護(hù)片內(nèi)RAM中的信息不丟失。</p><p> ALE/PROG:地址鎖存允許信號輸入端。在存取外存儲器時,用于鎖存低8位地址信號。當(dāng)單片機(jī)正常工作后,ALE端就周期
35、性地以時鐘振蕩頻率的1/6固定頻率向外輸出正脈沖信號。此引腳的第2功能PROG是對片內(nèi)帶有4K字節(jié)EPROM的8751固外程序時,作為編程脈沖輸入端。</p><p> PSEN:程序存儲器允許輸出端。當(dāng)片外程序存儲器的讀選通信號,低電平有效。CPU從外部程序存儲器取指令時,PSEN信號會自動產(chǎn)生負(fù)脈沖,作為外部程序存儲器的選通信號。</p><p> EA/Vpp:程序存儲器地址允許
36、輸入端。當(dāng)EA為高電平時,CPU執(zhí)行片內(nèi)程序存儲器指令,但當(dāng)PC中的值超過0FFFH時,將自動轉(zhuǎn)向執(zhí)行片外程序存儲器指令;當(dāng)EA為低電平時,CPU只執(zhí)行片外程序存儲器指令。</p><p><b> (3)I/O口引腳</b></p><p> P0.0~P0.7:P0口8位雙向I/O口;</p><p> P1.0~P1.7:P1口8位
37、準(zhǔn)雙向I/O口;</p><p> P2.0~P2.7:P2口8位準(zhǔn)雙向I/O口;</p><p> P3.0~P3.7:P3口8位準(zhǔn)雙向I/O口。</p><p><b> 3.片外總線結(jié)構(gòu)</b></p><p> 分為三部分:數(shù)據(jù)總線 Data Bus(DB),地址總線 Address Bus (AB),控
38、制總線 Control Bus(CB).</p><p> 本電路是由AT89C52單片機(jī)為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作;時鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實(shí)時時鐘電路,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1
39、302內(nèi)部有一個31*8的用于臨時性存放數(shù)據(jù)的RAM寄存器??僧a(chǎn)生年、月、日、周日、時、分、秒,具有使用壽命長,精度高和低功耗等特點(diǎn),同時具有掉電自動保存功能;溫度的采集由DS18B20構(gòu)成;顯示部份由4個數(shù)碼管,74ls138、74ls47譯碼器構(gòu)成。使用動態(tài)掃描顯示方式對數(shù)字的顯示。</p><p> 4. 單元電路的設(shè)計:</p><p> ?。?)控制模塊的設(shè)計:</p&g
40、t;<p><b> ?、?單片機(jī)原理</b></p><p> 單片機(jī)就是簡化的微型計算機(jī)。CPU中本身自帶存儲器ROM和RAM。CPU片內(nèi)也有總線。IC(集成電路)技術(shù)是將電路通過特殊工藝做在一塊硅基片上封裝成芯片,比如CPU,片外存儲器等等。 將單片機(jī)CPU(比如51系列),晶振,存儲器,地址鎖存器,邏輯門,七段譯碼器(顯示器),按鈕(類似鍵盤),擴(kuò)展芯片,接口等通過
41、PCB工藝(比如SMT貼片,或者插裝)做在環(huán)氧樹脂板上。這樣才是一個完整的單片(做在一塊PCB板上)的微型計算機(jī)。 AT89S52單片機(jī)為40引腳雙列直插芯片,有四個I/O口P0,P1,P2,P3, MCS-51單片機(jī)共有4個8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨(dú)立地作輸出或輸入。</p><p> 單片機(jī)的最小系統(tǒng)如下圖所示,18引腳和19引腳接時鐘電路,XTAL1接外部晶振
42、和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出.第9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端. 如圖-1 所示</p><p><b> 圖-1 主控制系統(tǒng)</b></p><p> ?。?)一個8位的微處理器(CPU)</p>
43、;<p> (2)片內(nèi)數(shù)據(jù)存儲器RAM(128B/256B)</p><p> ?。?)片內(nèi)程序存儲器ROM/EPROM(4kB/8kB)</p><p> ?。?)4個8位并行I/O拉口P0-P3,每個口既可以作輸入也可以作輸出</p><p> (5)2個16位定時器/計數(shù)器</p><p> ?。?)5個中斷源的中斷控
44、制系統(tǒng)</p><p> (7)1個全雙工的串行I/O接口</p><p> ?。?)片內(nèi)時鐘振蕩器</p><p><b> (2)模塊器件</b></p><p><b> ?、?4LS164</b></p><p> 它是個串入并出的8位移位寄存器,它常用于單片機(jī)
45、系統(tǒng)中,下面結(jié)束一下這個元件的基本知識:</p><p> 74LS164引腳圖</p><p> 74LS164_內(nèi)部功能圖</p><p> 74LS164_邏輯符合表</p><p><b> 串行輸入帶鎖存 </b></p><p> 時鐘輸入,串行輸入帶緩沖 </p>
46、;<p><b> 異步清除 </b></p><p> 最高時鐘頻率可高達(dá)36Mhz </p><p> 功耗:10mW/bit </p><p> 74系列工作溫度: 0°C to 70°C </p><p> Vcc最高電壓:7V </p><p>
47、; 輸入最高電壓:7V </p><p> 高電平:-0.4mA </p><p><b> 低電平:8mA</b></p><p> (3)電路模塊的設(shè)計</p><p> 圖-2示出DS1302的引腳排列,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運(yùn)行。DS1302由
48、Vcc1或Vcc2兩者中的較大者供電。</p><p> 當(dāng)Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768KHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)
49、據(jù)的傳送手段。</p><p> 當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RSTS置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電動行時,在Vcc大于等于2.5V之前,RST必須保持低電平。中有在SCLK 為低電平時,才能將RST置為高電平,I/O為串行數(shù)據(jù)輸入端(雙向)。SCLK始終是輸入端。</p><p> 圖-2 DS
50、1302的引腳圖</p><p> ?。?)電路原理及說明</p><p> ?、贂r鐘芯片DS1302的工作原理:</p><p> DS1302在每次進(jìn)行讀、寫程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫時序如下圖4所示。圖5為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對DS1302進(jìn)行讀
51、寫數(shù)據(jù)。對于位6,若對程序進(jìn)行讀/寫時RAM=1,對時間進(jìn)行讀/寫時,CK=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進(jìn)行讀操作時,該位為1;該位為0則表示進(jìn)行的是寫操作??刂谱止?jié)總是從最低位開始輸入/輸出的。表6為DS1302的日歷、時間寄存器內(nèi)容:“CH”是時鐘暫停標(biāo)志位,當(dāng)該位為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時,時鐘開始運(yùn)行?!癢P”</p><p> 是寫保護(hù)位,
52、在任何的對時鐘和RAM的寫操作之前,WP必須為0。當(dāng)“WP”為1時,寫保護(hù)位防止對任一寄存器的寫操作。</p><p> ?、?DS1302的控制字節(jié):</p><p> DS1302的控制字如表-1所示。控制字節(jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位
53、(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。</p><p> (5)數(shù)據(jù)的輸出與輸入(I/O)</p><p> 在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。如下圖-4所示<
54、/p><p> 圖-4 DS1302讀/寫時序圖</p><p> (6) DS1302的寄存器:</p><p> DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制字見表-1。</p><p> 表-1 DS1302的日歷、時間寄存器</p><p
55、> 此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH
56、(寫)、FFH(讀)。 </p><p> 5. 顯示模塊的設(shè)計</p><p> 如圖-5所示,采用動態(tài)掃描顯示,由21個數(shù)碼管,3-8譯碼器74LS138接1K限流電阻,再接8550三極管接到共陽數(shù)碼管的CoM端作為選通位碼,每位選擇相應(yīng)的列。74ls47接240Ω限流電阻,再接共行的LED數(shù)碼管的斷碼。</p><p> 圖-5 LED動態(tài)掃描顯示<
57、;/p><p><b> 三、系統(tǒng)的軟件設(shè)計</b></p><p> 1. 程序流程框圖:</p><p> 圖-A 主程序流程圖</p><p> 圖-B計算陽歷程序流程圖</p><p> 圖-C 時間調(diào)整程序流程圖</p><p> 2. 子程序的設(shè)計:&
58、lt;/p><p> (1) 鍵盤子程序的實(shí)現(xiàn):</p><p><b> 鍵盤示意圖如圖所示</b></p><p><b> 圖21 按鍵示意圖</b></p><p> 主要函數(shù)模塊(C語言):</p><p> 函 數(shù) 名: void key_count()&l
59、t;/p><p> 功能描述:設(shè)置狀態(tài)轉(zhuǎn)換函數(shù),根據(jù)變量count的不同值,對應(yīng)不同的設(shè)置狀態(tài)按下設(shè)置鍵,自動切換設(shè)置位</p><p> 函 數(shù) 名: void key_out()</p><p> 功能描述:跳出設(shè)置模式</p><p> 函 數(shù) 名: uchar key_up(int temp,int max,int min)<
60、;/p><p> 功能描述: 按鍵加函數(shù),在最大值與最小值之間變化</p><p> 函 數(shù) 名: uchar key_down(int temp,int max,int min)</p><p> 功能描述: 按鍵減函數(shù),在最大值與最小值之間變化</p><p> 函 數(shù) 名:void set_year(); void set_mon
61、th(); void set_day(); void set_hour();</p><p> void set_minute(); </p><p> (2).讀寫DS1302子程序</p><p><b> CLR SCLK</b></p><p><b> NOP</b></p&
62、gt;<p><b> SETB RST</b></p><p><b> NOP</b></p><p><b> MOV A,32H</b></p><p><b> MOV R4,#8</b></p><p><b>
63、 WRITE1:</b></p><p> RRC A ;送地址給1302</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> CLR SCLK</b></p><p>
64、<b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> MOV IO,C</b></p><p><b> NOP</b></p>
65、<p><b> NOP</b></p><p><b> NOP</b></p><p><b> SETB SCLK</b></p><p><b> NOP</b></p><p><b> NOP</b>
66、</p><p> DJNZ R4,WRITE1</p><p><b> CLR SCLK</b></p><p><b> NOP</b></p><p><b> MOV A,31H</b></p><p><b> MOV R
67、4,#8</b></p><p><b> WRITE2:</b></p><p><b> RRC A</b></p><p> NOP ;送數(shù)據(jù)給1302</p><p><b> CLR SCLK</b></p><p>
68、;<b> NOP</b></p><p><b> NOP</b></p><p><b> MOV IO,C</b></p><p><b> NOP</b></p><p><b> NOP</b></p>
69、<p><b> NOP</b></p><p><b> SETB SCLK</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R4,WRITE2</p&
70、gt;<p><b> CLR RST</b></p><p><b> RET</b></p><p><b> ;讀1302程序</b></p><p><b> READ:</b></p><p><b> CLR
71、SCLK</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> SETB RST</b></p><p><b> NOP</b></p><p>
72、<b> MOV A,32H</b></p><p><b> MOV R4,#8</b></p><p><b> READ1:</b></p><p> RRC A ;送地址給1302</p><p><b> NOP</b></p
73、><p><b> MOV IO,C</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> SETB SCLK
74、</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> CLR SCLK</b></p><p><
75、b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R4,READ1</p><p><b> MOV R4,#8</b></p><p><b> READ2:</b></p><p>
76、;<b> CLR SCLK</b></p><p> NOP ;從1302中讀出數(shù)據(jù)</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> MOV C,IO</b></p>
77、<p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p&
78、gt;<p><b> RRC A</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b>
79、</p><p><b> SETB SCLK</b></p><p><b> NOP</b></p><p> DJNZ R4,READ2</p><p><b> MOV 31H,A</b></p><p><b> CLR R
80、ST</b></p><p><b> RET</b></p><p> 3.系統(tǒng)硬件電路設(shè)計:</p><p> 本設(shè)計硬件電路圖如下</p><p> 4.系統(tǒng)硬件PROTEUS仿真原理圖:</p><p> 5.主要單元電路的設(shè)計:</p><p&g
81、t; ?。?)顯示4.1 顯示部分設(shè)計</p><p> 基本顯示原理:時鐘開始顯示為0時0分0秒,也就是數(shù)碼管顯示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒 ,分鐘加1,10秒位回0。依次類推,時鐘最大的顯示值為23小時59分59秒。這里只要確定了1秒的定時時間, 其他位均以此為基準(zhǔn)往上累加。 同時時鐘達(dá)到最大值的時候天數(shù)也增加一位,知道顯示了7后再變?yōu)?,同時
82、陰歷和陽歷的天數(shù)也加1,根據(jù)不同的月份顯示的天數(shù)陽歷有28,29,30,31天,陰歷就要經(jīng)過計算得到,到了12個月后,年數(shù)自動增加1,以此類推,顯示萬年歷的現(xiàn)實(shí)。</p><p> 另外,連接方式總電路圖上可以看到,這里就不做說明了,下圖為顯示部分的電路圖。</p><p> 顯示部分電路圖電路:</p><p> 顯示部分采用普通的共陽數(shù)碼管顯示,采用動態(tài)掃
83、描,以減少硬件電路。采用動態(tài)掃描,顯示時采用串行口輸出段碼。</p><p><b> ?。?)鍵盤接口:</b></p><p> 鍵盤在單片機(jī)系統(tǒng)中是一個很重要的部件。為了輸入數(shù)據(jù)、查詢和控制系統(tǒng)的工作狀態(tài),都要用到鍵盤,鍵盤是人工干預(yù)計算機(jī)的主要手段</p><p> ?。?)按鍵開關(guān)去抖動問題:</p><p>
84、; 按鍵開關(guān)在電路中的連接如圖所示。按鍵未按下時,A點(diǎn)電位為高電平5V;按鍵按下時,A點(diǎn)電位為低電平。A點(diǎn)電位就用于向CPU傳遞按鍵的開關(guān)狀態(tài)。但是由于按鍵的結(jié)構(gòu)為機(jī)械彈性開關(guān),在按鍵按下和斷開時,觸點(diǎn)在閉合和斷開瞬間還會接觸不穩(wěn)定,引起A點(diǎn)電平不穩(wěn)定,如圖2-11b所示,鍵盤的抖動時間一般為5~10ms,抖動現(xiàn)象會引起CPU對一次鍵操作進(jìn)行多次處理,從而可能產(chǎn)生錯誤。因此必須設(shè)法消除抖動的不良后果。</p><p
85、> 圖2.3 鍵操作和鍵抖動</p><p> 為了節(jié)省硬件,通常在單片機(jī)系統(tǒng)中,一般不采用硬件方法消除鍵的抖動,而是用軟件消除抖動的方法。根據(jù)抖動特性,在第一次檢測到按鍵按下后,執(zhí)行一段延時5~10ms讓前延抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給5~10ms的延時,待后延抖動消失后才轉(zhuǎn)入該鍵處理程序。</p><p>
86、; ?。?)查詢式按鍵及其接口:</p><p> 盤與CPU的連接方式可以分為查詢按鍵和矩陣式鍵盤。查詢式按鍵是各按鍵相互獨(dú)立,每個按鍵占用一根I/O口線,每根I/O口線上的按鍵工作狀態(tài)不會影響其他I/O口線上按鍵的工作狀態(tài)。查詢式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個按鍵必須占用一根I/O口線,在按鍵數(shù)量較多時,I/O口線浪費(fèi)較大,且電路結(jié)構(gòu)顯得繁雜。故這種形式適用于按鍵數(shù)量較少的場合。</p>
87、<p> ?。?)矩陣式鍵盤及其接口</p><p> 矩陣式鍵盤又稱行列式鍵盤,有n個行線和m個列線,經(jīng)限流電阻接+5V電源上,按鍵跨接在行線和列線上,n×m行列結(jié)構(gòu)可構(gòu)成mn個按鍵,組成一個鍵盤。與獨(dú)立式按鍵相比,mn個按鍵只占用m+n根I/O口線,因此適用于按鍵較多的場合。</p><p> 當(dāng)無鍵閉合時,相應(yīng)的I/O之間開路。當(dāng)有鍵閉合時,與閉合鍵相連接
88、的兩條I/O口線之間短路。判斷有無鍵按下的方法是:第一步,置列線相關(guān)I/O口為輸入態(tài),從行線相對應(yīng)的I/O口輸出低電平,讀入列線數(shù)據(jù),若某一列線為低電平,則該列線上有鍵閉合。第二步,置行線相關(guān)I/O口輸出低電平,讀入列線數(shù)據(jù),若某一列線為低電平,則該列線上有鍵閉合。綜合一二兩步的結(jié)果,可確定按鍵編號。但是鍵閉合一次只能進(jìn)行一次鍵功能操作,因此須等待近按鍵釋放后,再進(jìn)行鍵功能操作,否則按一次鍵,有可能會連續(xù)多次進(jìn)行同樣的鍵操作。</
89、p><p> (6)鍵盤掃描控制方式:</p><p> 在單片機(jī)應(yīng)用系統(tǒng)中,對鍵盤的處理工作僅是CPU工作內(nèi)容的一部分,CPU還要進(jìn)行數(shù)據(jù)處理、顯示和其他輸入輸出操作,因此鍵盤處理工作既不能占用CPU太多時間,又需要CPU對鍵盤操作及時作出響應(yīng)。CPU對鍵盤處理控制的工作方式有以下幾種:</p><p><b> ①程序控制掃描方式</b>
90、</p><p> 程序控制掃描方式是在CPU工作空余,調(diào)用鍵盤掃描子程序,響應(yīng)鍵輸入信號要求。</p><p> ?、?定時控制掃描方式</p><p> 定時控制掃描方式是利用定時/計數(shù)器每隔一段時間產(chǎn)生定時中斷,CPU響應(yīng)中斷后對鍵盤進(jìn)行掃描,并在有鍵閉合時轉(zhuǎn)入該鍵的功能子程序。</p><p><b> ?、壑袛嗫刂茠呙?/p>
91、方式</b></p><p> 中斷控制掃描方式是利用外部中斷源,響應(yīng)輸入信號。當(dāng)無按鍵按下時,CPU執(zhí)行正常工作程序。當(dāng)有按鍵按下時,CPU立即產(chǎn)生中斷。在中斷服務(wù)子程序中掃描鍵盤,判斷是哪一個鍵被按下,然后執(zhí)行該鍵的功能子程序。這種控制方式克服了前兩種控制方式可能產(chǎn)生的空掃描和不能及時響應(yīng)鍵輸入的缺點(diǎn),既能及時處理鍵輸入,又能提高CPU運(yùn)行效率,但要占用一個寶貴的中斷資源。圖即工作于中斷方式的矩
92、陣式鍵盤接口電路。在初始化時P1.4~P1.7置輸出0,P1.0~P1.3置為輸入態(tài),P1.0~P1.3分別接至與門各輸入端。當(dāng)有鍵閉合時=0,CPU中斷后,在中斷服務(wù)子程序中,再完成鍵識別和鍵功能處理。</p><p> 圖5.2.3工作于中斷方式的矩陣式鍵盤接口電路</p><p> 四、測試結(jié)果分析與結(jié)果</p><p><b> 1. 測試結(jié)
93、果分析</b></p><p> ?。?)在測試中遇到LEDLCD16824不顯示</p><p> 分析:首先使用試測儀對電路進(jìn)行測試,觀察是否存在漏焊,虛焊,或者元件損壞。再接著研究程序的時序圖是否正確。最后發(fā)現(xiàn)程序時序方面出了點(diǎn)小錯。修改后就把問題解決了。</p><p> ?。?)按鍵調(diào)整時,不是按單位遞增和遞減</p><
94、p> 分析:在鍵盤程序中,按鍵一次,向芯片寫入一個新的數(shù)字,在寫入數(shù)字后必須有一定延時才再寫入另一個數(shù)字。</p><p><b> 五、系統(tǒng)評價</b></p><p> 該設(shè)計利用單片機(jī)內(nèi)部的定時/計數(shù)器進(jìn)行中斷定時,配合軟件延時實(shí)現(xiàn)時、分、秒的計時,該方案節(jié)省硬件成本,且能使設(shè)計者對單片機(jī)的指令系統(tǒng)能有更深入的了解,從而掌握單片機(jī)應(yīng)用技術(shù)MCS-52
95、 c語言程序設(shè)計方法,因此,本系統(tǒng)設(shè)計采用此種軟件控制方法來實(shí)現(xiàn)時,而由于ATMEL公司的AT89C52單片機(jī)是低功耗的具有4KB在線可編程FLASH存儲器的單片機(jī)。它與通用80C52系列單片機(jī)的指令第和引腳兼容。片內(nèi)的FLASH集成在一個芯片上,形成了功能強(qiáng)大、使用靈活和具有較高性能價格比的微控制器。它的功能強(qiáng)大,而且也較容易購買。</p><p> 總結(jié):所要實(shí)現(xiàn)的功能通過單片機(jī)編程就可以達(dá)到,不需要額外的
96、時鐘芯片來增加成本,并使外圍電路更加簡單明了。</p><p><b> 六、系統(tǒng)程序清單</b></p><p><b> /*</b></p><p> 1、按鍵可以調(diào)整當(dāng)時時間</p><p> 2、按鍵可以調(diào)節(jié)定時時間</p><p> 3、定時時間到繼電器
97、吸合</p><p> *8位數(shù)碼管顯示 時間格式格式 12-30-30 表示:12點(diǎn)30分30秒</p><p> S1 用于小時 加1操作 </p><p> S2 用于小時減1操作</p><p> S3 用于分鐘 加1操作</p><p> S4 用于分鐘減1操作</p><p&
98、gt; ;********************************</p><p> ;* 萬年歷程序 *</p><p> ;********************************</p><p> 61H(分)60H(秒)</p><p> SCLK EQU P3.2</
99、p><p> IO EQU P3.3</p><p> RST EQU P3.4</p><p> YEAR DATA 66H</p><p> MONTH DATA 65H</p><p> WEEK DATA 64H</p><p> DAY DATA 63H
100、</p><p> HOUR DATA 62H</p><p> MINTUE DATA 61H</p><p> SECOND DATA 60H</p><p> DS1302_ADDR DATA 32H</p><p> DS1302_DATA DATA 31H</p><p>
101、; ORG 0000H</p><p> AJMP START</p><p> ORG 0003H</p><p><b> RETI</b></p><p> ORG 000BH</p><p><b> RETI</b></p><
102、p> ORG 0013H</p><p><b> RETI</b></p><p> ORG 001BH</p><p> LJMP INTT1</p><p> ORG 0023H</p><p><b> RETI</b></p>
103、<p> ORG 002BH</p><p><b> RET</b></p><p> START: SETB EA</p><p> MOV SCON,#00H ;串行輸出,方式0</p><p> MOV TMOD,#10H ;計數(shù)器1,方式1</p><p
104、> MOV TL1,#00H</p><p> MOV TH1,#00H</p><p> MOV 74H,R1</p><p> MOV 44H,R1</p><p> MOV 75H,R2</p><p> MOV 45H,R2</p><p> MOV R0,MINTU
105、E ;分分離,送顯示緩存</p><p> LCALL DIVIDE</p><p> MOV 72H,R1</p><p> MOV 42H,R1</p><p> MOV 73H,R2</p><p> MOV 43H,R2</p><p> MOV R0,SECOND
106、;秒分離,送顯示緩存</p><p> LCALL DIVIDE</p><p> MOV 70H,R1</p><p> MOV 40H,R1</p><p> MOV 71H,R2</p><p> MOV 41H,R2</p><p><b> LCALL DIS&l
107、t;/b></p><p><b> 七、謝辭</b></p><p> 在整個設(shè)計過程中,發(fā)揮團(tuán)隊(duì)精神,分工合作,充分發(fā)揮人的主觀能動性,自主學(xué)習(xí),學(xué)到了許多沒學(xué)到的知識,完成了對萬年歷的設(shè)計,達(dá)到了預(yù)期的目的。在最初的設(shè)計中,相互學(xué)習(xí)、相互討論、研究,完成了最初的設(shè)想。相互學(xué)習(xí)、相互討論、研究,完成了最初的設(shè)想。</p><p>
108、 在實(shí)訓(xùn)的日子里,通過親自動手實(shí)踐,鞏固了以前的知識,發(fā)現(xiàn)了自己的不足然后加以改進(jìn)。</p><p> 在做論文設(shè)計的日子里得到了指導(dǎo)教師的悉心指導(dǎo),在此向我們的指導(dǎo)教師致以誠摯的謝意。感謝提供相關(guān)技術(shù)幫助的老師和同學(xué),你們的支持和鼓勵使我們對這次的作品完成有了信心和動力,也給了我們很多無私的幫助和支持,我們在此深表謝意。</p><p><b> 八、參考文獻(xiàn)</b
109、></p><p> [1] ATMEL公司AT89S52單片機(jī)中文PDF資料;</p><p> [2] 天津銳志單片機(jī)開發(fā)網(wǎng);</p><p> [4] 祝詩平. Proteus和Keil軟件在單片機(jī)教學(xué)中的應(yīng)用[J] .西南農(nóng)業(yè)大學(xué)學(xué)報(社會科學(xué)版),2011(2);</p><p> [5] 王慶利.單片機(jī)設(shè)計案例實(shí)踐教
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 萬年歷課程設(shè)計--萬年歷電子時鐘
- 課程設(shè)計—萬年歷的設(shè)計與制作
- 電子技術(shù)課程設(shè)計---數(shù)字彩屏萬年歷
- 電子萬年歷設(shè)計與制作
- 課程設(shè)計報告--電子萬年歷
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 電子萬年歷課程設(shè)計 (2)
- proteus課程設(shè)計--電子萬年歷
- 電子萬年歷課程設(shè)計報告
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 微機(jī)與接口技術(shù)課程設(shè)計--萬年歷
- 微機(jī)與接口技術(shù)課程設(shè)計--萬年歷
- c語音電子萬年歷課程設(shè)計
- 多功能電子萬年歷課程設(shè)計
- java萬年歷課程設(shè)計
評論
0/150
提交評論