2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  單片機(jī)課程設(shè)計(jì)任務(wù)書</p><p>  課程名稱: 單片機(jī)原理及應(yīng)用 </p><p>  系 : 電氣工程系 </p><p>  專 業(yè): 電氣工程及其自動(dòng)化 </p><p>  班 級(jí): </

2、p><p>  學(xué) 號(hào): </p><p>  學(xué)生姓名: </p><p>  指導(dǎo)教師: </p><p>  職 稱: 講師 </p><

3、p>  2012 年 1 月 1 日</p><p><b>  目錄</b></p><p><b>  一、摘要3</b></p><p>  二、系統(tǒng)總體方案設(shè)計(jì)3</p><p><b>  1、功能要求3</b></p><p> 

4、 2、 技術(shù)可行性……………………………………………………..3</p><p>  3、單片機(jī)的選擇4</p><p>  4、DS1302簡(jiǎn)介……………………………………………....……..5</p><p>  三、系統(tǒng)硬件設(shè)計(jì)7</p><p><b>  I、電路設(shè)計(jì)7</b></p>&

5、lt;p>  II、系統(tǒng)硬件概述7</p><p>  1. 主控制器AT89C517</p><p>  2. 時(shí)鐘電路DS13028</p><p>  3. 顯示驅(qū)動(dòng)74LS1649</p><p>  4. 主要單元電路的設(shè)計(jì)………………………………...………9</p><p>  四、系統(tǒng)軟件

6、設(shè)計(jì)..11</p><p>  五、總結(jié)……………..….12</p><p>  六、參考文獻(xiàn)……………………………………………………..……12</p><p>  附錄……………………………………………………..………………13</p><p><b>  一·摘要</b></p>&

7、lt;p>  近年來隨著計(jì)算機(jī)在社會(huì)領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,由于它具有功能強(qiáng),體積小,功耗低,價(jià)格便宜,工作可靠,使用方便等特點(diǎn),因此越來越廣泛地應(yīng)用各個(gè)領(lǐng)域. </p><p>  本文的電子鐘系統(tǒng)是以單片機(jī)(AT89C51)為核心,時(shí)鐘芯片DS1302、數(shù)碼管顯示驅(qū)動(dòng)芯片74LS164等元器件組成。具體介紹應(yīng)用protell軟件進(jìn)行單片機(jī)系統(tǒng)的電子鐘設(shè)計(jì)與仿真的

8、實(shí)現(xiàn)方法。該方法既能準(zhǔn)確驗(yàn)證所設(shè)計(jì)的系統(tǒng)是否滿足技術(shù)要求,又能提高系統(tǒng)設(shè)計(jì)的效率和質(zhì)量,降低開發(fā)成本,具有推廣價(jià)值。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī); 時(shí)鐘芯片 ;數(shù)碼管顯示驅(qū)動(dòng)芯片 ;電子鐘</p><p>  二·系統(tǒng)總體方案設(shè)計(jì)</p><p>  隨著電子技術(shù)的發(fā)展,人類不斷研究,不斷創(chuàng)新紀(jì)錄。萬年歷目前已經(jīng)不再局限于以書本形式出現(xiàn)。以電腦軟件

9、或者電子產(chǎn)品形式出現(xiàn)的萬年歷被稱為電子萬年歷。與傳統(tǒng)書本形式的萬年歷相比,電子萬年歷得到了越來越廣泛的應(yīng)用,采用電子時(shí)鐘作為時(shí)間顯示已經(jīng)成為一種時(shí)尚。目前市場(chǎng)上各式各樣的電子時(shí)鐘數(shù)不勝數(shù),但多數(shù)是只針對(duì)時(shí)間顯示,功能單一不能滿足人們?nèi)粘I钚枨蟆?本文提出了一種基于AT89C51單片機(jī)的萬年歷設(shè)計(jì)方案,本方案以AT89C51單片機(jī)作為主控核心,與時(shí)鐘芯片DS1302、按鍵、LED顯示等模塊組成硬件系統(tǒng)。在硬件系統(tǒng)中設(shè)有獨(dú)立按鍵和

10、LED顯示器,能顯示豐富的信息,根據(jù)使用者的需要可以隨時(shí)對(duì)時(shí)間進(jìn)行校準(zhǔn)、選擇時(shí)間等,綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。</p><p><b>  1.功能要求</b></p><p>  本電子時(shí)鐘能顯示星期、小時(shí)、分鐘、秒</p><p><

11、b>  2. 技術(shù)可行性</b></p><p>  隨著國(guó)內(nèi)超大規(guī)模集成電路的出現(xiàn),微處理器及其外圍芯片有了迅速的發(fā)展。集成技術(shù)的最新發(fā)展之一是將CPU和外圍芯片,如程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、并行I/O口、串行I/O口、定時(shí)/計(jì)數(shù)器、中斷控制器及其他控制部件集成在一個(gè)芯片之中,制成單片計(jì)算機(jī)(Single-Chip Microcomputer)。而近年來推出的一些高檔單片機(jī)還包括有許多特殊功能單

12、元,如A/D、D/A轉(zhuǎn)換器、調(diào)制解調(diào)器、通信控制器、鎖相環(huán)、DMA、浮點(diǎn)運(yùn)算單元、PWM控制輸出單元、PWM輸出時(shí)的死區(qū)可編程控制功能等。因此,只要外加一些擴(kuò)展電路及必要的通道接口就可以構(gòu)成各種計(jì)算機(jī)應(yīng)用系統(tǒng),如工業(yè)流水線控制系統(tǒng)、作為家用電器的主控制器、分布式控制系統(tǒng)的終端節(jié)點(diǎn)或作為其主控制節(jié)點(diǎn)起中繼的作用、數(shù)據(jù)采集系統(tǒng)、自動(dòng)測(cè)試系統(tǒng)等?! 纹瑱C(jī)的出現(xiàn),并在各技術(shù)領(lǐng)域中得到如此迅猛的發(fā)展,與單片機(jī)構(gòu)成計(jì)算機(jī)應(yīng)用系統(tǒng)所形成的下述特點(diǎn)

13、有關(guān):  1、單片機(jī)構(gòu)成的應(yīng)用系統(tǒng)有較大的可靠性。這些可靠性的獲得除了依靠單片機(jī)芯片本身的高可靠性以及應(yīng)用有最少的聯(lián)接外,還可以方便地采用軟、硬件技術(shù)。  2、系統(tǒng)擴(kuò)展、系統(tǒng)配置較典型、規(guī)范,容易構(gòu)成各種規(guī)模的</p><p><b>  3. 單片機(jī)的選擇</b></p><p>  采用傳統(tǒng)的AT89C51作為電機(jī)的控制核心。單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟件編程靈

14、活、自由度大,可用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點(diǎn),使其在各個(gè)領(lǐng)域應(yīng)用廣泛。</p><p>  圖2.11 AT89C51單片機(jī) </p><p>  4.DS1302簡(jiǎn)介</p><p>  DS1302特性介紹</p><p>  DS1302是美國(guó)DALLAS公司推出的一種高性能、低功

15、耗的實(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)調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.5~5.5V。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。</p><p>  DS1302引腳介紹</p&

16、gt;<p><b>  各引腳的功能為:</b></p><p>  8 、Vcc1:備用電池端;</p><p>  1、Vcc2:5V電源。當(dāng)Vcc2>Vcc1+0.2V時(shí),由Vcc2向DS1302供電,當(dāng)Vcc2< Vcc1時(shí),由Vcc1向DS1302供電。</p><p>  7、 SCLK:串行時(shí)鐘,輸入;

17、  </p><p>  6、I/O:數(shù)據(jù)輸入輸出口;</p><p>  5、CE/RST:復(fù)位腳</p><p>  2 3、X1、X2 是外接晶振腳 (32.768KHZ的晶振)</p><p><b>  4、地(GND)</b></p><p> ?。?)DS1302有關(guān)日

18、歷、時(shí)間的寄存器 </p><p>  寄存器的說明如下:1、秒寄存器(81h、80h)的位7定義為時(shí)鐘暫停標(biāo)志(CH)。當(dāng)初始上電時(shí)該位置為1,</p><p>  時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);只有將秒寄存器的該位置改寫為0時(shí),時(shí)鐘才能開</p><p>  始運(yùn)行。2、小時(shí)寄存器(85h、84h)的位7用于定義DS1302是運(yùn)行于12小時(shí)模式

19、還是24小時(shí)模式。當(dāng)為高時(shí),選擇12小時(shí)模式。在12小時(shí)模式時(shí),位5是 ,當(dāng)為1時(shí),表示PM。在24小時(shí)模式時(shí),位5是第二個(gè)10小時(shí)位3、控制寄存器(8Fh、8Eh)的位7是寫保護(hù)位(WP),其它7位均置為0。在對(duì)任何的時(shí)鐘</p><p>  RAM的寫操作之前,WP位必須為0。當(dāng)WP位為1時(shí),寫保護(hù)位防止對(duì)任一寄存器的寫操作。</p><p>  也就是說在電路上電的初始態(tài)WP是1,

20、這時(shí)是不能改寫上面任何一個(gè)時(shí)間寄存器的,</p><p>  只有首先將WP改寫為0,才能進(jìn)行其它寄存器的寫操作。 </p><p>  (5)DS1302控制字介紹</p><p>  控制字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。</p><p>  位6:如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示

21、存取RAM數(shù)據(jù);</p><p>  位5至位1(A4~A0):指示操作單元的地址;</p><p>  位0(最低有效位):如為0,表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作。</p><p><b>  讀數(shù)據(jù):</b></p><p>  讀數(shù)據(jù)時(shí)在緊跟8位的控制字指令后的下一個(gè)SCLK脈沖的下降沿,讀出DS1302的數(shù)

22、據(jù),</p><p>  讀出的數(shù)據(jù)是從最低位到最高位。</p><p><b>  寫數(shù)據(jù):</b></p><p>  控制字總是從最低位開始輸出。在控制字指令輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),</p><p>  數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入也是從最低位(0位)開始。</p><p>

23、;  位0(最低有效位):為1表示進(jìn)行讀操作。 如為0,表示要進(jìn)行寫操作,</p><p>  控制字后 SCLK 下降沿 讀數(shù)據(jù) SCLK上升沿寫數(shù)據(jù)</p><p>  (6)DS1302單字節(jié)讀寫時(shí)序介</p><p>  DS1302的數(shù)據(jù)讀寫是通過I/O串行進(jìn)行的。當(dāng)進(jìn)行一次讀寫操作時(shí)最少得讀寫兩個(gè)字節(jié),第一個(gè)字節(jié)是控制字節(jié),就是一個(gè)命令,告訴DS1

24、302是讀還是寫操作,是對(duì)RAM還是對(duì)CLOK寄存器操作,以及操作的址。第二個(gè)字節(jié)就是要讀或?qū)懙臄?shù)據(jù)了。我們先看</p><p>  單字節(jié)寫:在進(jìn)行操作之前先得將CE(也可說是RST)置高電平,然后單片機(jī)將控制字的位0放到I/O上,當(dāng)I/O的數(shù)據(jù)穩(wěn)定后,將SCLK置高電平,DS1302檢測(cè)到SCLK的上升沿后就將I/O上的數(shù)據(jù)讀取,然后單片機(jī)將SCLK置為低電平,再將控制字的位1放到I/O上,如此反復(fù),將一個(gè)字

25、節(jié)控制字的8個(gè)位傳給DS1302。接下來就是傳一個(gè)字節(jié)的數(shù)據(jù)給DS1302,當(dāng)傳完數(shù)據(jù)后,單片機(jī)將CE置為低電平,操作結(jié)束。</p><p>  單字節(jié)讀操作的一開始寫控制字的過程和上面的單字節(jié)寫操作是一樣,但是單字節(jié)讀操作在寫控制字的最后一個(gè)位,SCLK還在高電平時(shí),DS1302就將數(shù)據(jù)放到I/O上,單片機(jī)將SCLK置為低電平后數(shù)據(jù)鎖存,</p><p>  單機(jī)機(jī)就可以讀取I/O上的數(shù)

26、據(jù)。如此反復(fù),將一個(gè)字節(jié)的數(shù)據(jù)讀入單片機(jī)。</p><p>  讀與寫操作的不同就在于,寫操作是在SCLK低電平時(shí)單片機(jī)將數(shù)據(jù)放到IO上,當(dāng)SCLK上升沿時(shí),DS1302讀取。而讀操作是在SCLK高電平時(shí)DS1302放數(shù)據(jù)到IO上,將SCLK置為低電平后,單片機(jī)就可從IO上讀取數(shù)據(jù)。</p><p><b>  三·系統(tǒng)硬件設(shè)計(jì)</b></p>

27、<p><b>  1.電路設(shè)計(jì)</b></p><p>  圖示為電子萬年歷電路設(shè)計(jì)原理圖,系統(tǒng)由主控制器AT89C51、時(shí)鐘電路DS1302、顯示驅(qū)動(dòng)MAX7219電路,顯示電路及鍵掃描電路組成。</p><p><b>  2.系統(tǒng)硬件概述</b></p><p>  (1) 主控制器AT89C51<

28、;/p><p>  ATMEL公司生產(chǎn)的AT89C51單片機(jī)采用高性能的靜態(tài)80C51設(shè)計(jì),并采用先進(jìn)工藝制造,還帶有非易失性Flash程序存儲(chǔ)器。它是一種高性能、低功耗的8位CMOS微處理芯片,市場(chǎng)應(yīng)用最多。其主要特點(diǎn)如下:</p><p>  8KB Flash ROM,可以擦除1000次以上,數(shù)據(jù)保存10年。</p><p>  256字節(jié)內(nèi)部RAM;</p

29、><p><b>  電源控制模式;</b></p><p><b>  時(shí)鐘可停止和恢復(fù);</b></p><p><b>  空閑模式;</b></p><p><b>  掉電模式;</b></p><p><b>  

30、6個(gè)中斷源;</b></p><p><b>  4個(gè)中斷優(yōu)先級(jí);</b></p><p><b>  4個(gè)8位I/O口;</b></p><p>  全雙工增強(qiáng)型TUAR;</p><p>  3個(gè)16位定時(shí)/計(jì)數(shù)器:T0、T1(標(biāo)準(zhǔn)80C51)和增加的T2(捕獲和比較)</p&

31、gt;<p>  全靜態(tài)工作方式:0~24MHZ</p><p>  (2)時(shí)鐘電路DS1302</p><p>  DS1302的性能特性:</p><p>  實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行比較;</p><p>  用于高速數(shù)據(jù)暫存的31*8位RAM;</p><p> 

32、 最少引腳的串行I/O;</p><p>  2.5~5.5V電壓工作范圍;</p><p>  2.5V時(shí)耗小于300nA;</p><p>  用于時(shí)鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;</p><p><b>  簡(jiǎn)單的三線接口;</b></p><p>  可選的

33、慢速充電(至Vcc1)的能力。</p><p>  DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被訪問到。在開始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。如果在傳送過程中置RST腳為低電平,則會(huì)

34、終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。</p><p>  DS1302的控制字如表所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1則表示存取RAM數(shù)據(jù)。位5~1(A4~A0)指示操作單元的地址。最低有效位(位0

35、)如果為0,則表示藥進(jìn)行寫操作;為1表示進(jìn)行讀操作。控制字節(jié)總是從最低位開始輸入/輸出。</p><p>  為了提高對(duì)32個(gè)地址尋址能力(地址/命令位1~5=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)憽T跁r(shí)鐘/日歷寄存器中的地址9~31或RAM寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式下,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?/p>

36、8個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫RAM時(shí),為了傳送數(shù)據(jù)不必寫所有的31字節(jié),不管是否謝了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。</p><p>  DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制字如上表所示,其中奇數(shù)為讀操作,偶數(shù)為寫操作。</p><p>  時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為

37、1時(shí),DS1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對(duì)DS1302進(jìn)行寫操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停止振蕩。當(dāng)它為0時(shí),時(shí)鐘將開始啟動(dòng)。</p><p>  AM-PM/12-24小時(shí)方式:小時(shí)寄存器的位7定義為12或24小時(shí)方式選擇位。它為高電平時(shí),選擇12小時(shí)方式。在此方式下,位5為第二個(gè)10小時(shí)位(20~23h)。</p><p>  DS1302的晶振選用32768Hz,電

38、容推薦值為6pF。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。</p><p>  (3)顯示驅(qū)動(dòng)74LS164</p><p>  本設(shè)計(jì)采用74LS164作為顯示驅(qū)動(dòng)芯片。</p><p>  3.主要單元電路的設(shè)計(jì)</p><p><b>  (1)顯示電路</b></p><p>

39、;  顯示部分采用普通的共陰數(shù)碼管顯示,采用動(dòng)態(tài)掃描,以減少硬件</p><p>  路。星期時(shí)分秒星期共需要7位數(shù)碼顯示,顯示時(shí)采用串行口輸出段碼,用74LS164驅(qū)動(dòng)數(shù)碼管。</p><p><b>  (2)鍵盤接口</b></p><p>  鍵盤在單片機(jī)系統(tǒng)中是一個(gè)很重要的部件。為了輸入數(shù)據(jù)、查詢和控制系統(tǒng)的工作狀態(tài),都要用到鍵盤,鍵

40、盤是人工干預(yù)計(jì)算機(jī)的主要手段。</p><p>  鍵盤可分為編碼和非編碼鍵盤兩種。編碼鍵盤采用硬件線線路來實(shí)現(xiàn)鍵盤編碼,每按下一個(gè)鍵,鍵盤能自動(dòng)生成按鍵代碼,鍵數(shù)較多,而且還具有去抖動(dòng)功能。這種鍵盤使用方便,但硬件較復(fù)雜,PC機(jī)所用的鍵盤就屬于這種。非編碼鍵盤僅提供按鍵開關(guān)工作狀態(tài),其他工作由軟件完成,這種鍵盤鍵數(shù)較少,硬件簡(jiǎn)單,一般在單片機(jī)應(yīng)用系統(tǒng)中廣泛使用。此處主要介紹該類非編碼鍵盤及其與MCS—51型單片

41、機(jī)的接口。</p><p><b> ?。?)時(shí)鐘電路</b></p><p>  DS1302工作方式簡(jiǎn)介及數(shù)據(jù)操作原理</p><p>  DS1302可以對(duì)星期、時(shí)、分、秒進(jìn)行計(jì)時(shí), 且具有閏年補(bǔ)償功能, 工作電壓寬達(dá)2.5~5.5V。采用三線接口與CPU進(jìn)行同步通信, 并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302

42、內(nèi)部有一個(gè)33x8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是的DS1202升級(jí)產(chǎn)品, 與DS1202兼容, 但增加了主電源/后背電源雙電源引腳, 同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。</p><p>  DS1302時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過一個(gè)簡(jiǎn)單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)、日、周、月和年等信息。對(duì)于小于31天的月和月末的日期自動(dòng)進(jìn)行調(diào)整

43、,還包括閏年校正的功能。時(shí)鐘的運(yùn)行可以采用24<小>時(shí)或帶AM/PM的12小時(shí)格式。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。</p><p>  DS1302有主電源/后備電源雙電源引腳:Vcc1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電磁備份;Vcc1在雙電池系統(tǒng)中提供主電源。在這種運(yùn)行方式中,Vcc1里連接到后備電源,以便在沒有主電源的情

44、況下能保存時(shí)間信息以及數(shù)據(jù)。DS1302由Vcc1或Vcc2中較打大者供電。當(dāng)Vcc2>(Vcc1+0.2V)時(shí),Vcc2給DS1302供電;當(dāng)Vcc2<Vcc1時(shí),DS1302由Vcc1供電。</p><p><b>  圖DS1302</b></p><p>  DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,

45、數(shù)據(jù)在SCLK的上升沿被訪問到。在開始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。如果在傳送過程中置RST腳為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。</p>

46、<p>  DS1302的控制字如圖所示。控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1則表示存取RAM數(shù)據(jù)。位5~1(A4~A0)指示操作單元的地址。最低有效位(位0)如果為0,則表示藥進(jìn)行寫操作;為1表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開始輸入/輸出。</p><p>  為了提高對(duì)32個(gè)地址尋址能力(地址/命令位1

47、~5=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)?。在時(shí)鐘/日歷寄存器中的地址9~31或RAM寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式下,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫RAM時(shí),為了傳送數(shù)據(jù)不必寫所有的31字節(jié),不管是否謝了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。</p><p>

48、  DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制字如下表所示,其中奇數(shù)為讀操作,偶數(shù)為寫操作。</p><p>  表 DS1302控制字</p><p>  時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),DS1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對(duì)DS1302進(jìn)行寫操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停

49、止振蕩。當(dāng)它為0時(shí),時(shí)鐘將開始啟動(dòng)。</p><p>  AM-PM/12-24小時(shí)方式:小時(shí)寄存器的位7定義為12或24小時(shí)方式選擇位。它為高電平時(shí),選擇12小時(shí)方式。在此方式下,位5為第二個(gè)10小時(shí)位(20~23h)。</p><p>  DS1302的晶振選用32768Hz,電容推薦值為6pF。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。</p><p&

50、gt;<b>  四· 系統(tǒng)軟件設(shè)計(jì)</b></p><p><b>  1.程序設(shè)計(jì)</b></p><p>  電子萬年歷的程序主要包括3個(gè)方面的內(nèi)容:一是DS1302從單片機(jī)中讀取數(shù)據(jù)進(jìn)行計(jì)數(shù),二是利用按鍵進(jìn)行時(shí)間的調(diào)整,三是74LS164從單片機(jī)中讀取數(shù)據(jù)驅(qū)動(dòng)LED數(shù)碼管顯示時(shí)間。</p><p>  A

51、T89C51單片機(jī)主要I/O口的分配,P2.0-P2.2分別接74LS164的DIN,LOAD,CLK三個(gè)功能端,P3接查詢式按鍵,P1.0-P1.2分別接DS1302的CLK,IO,RST端。</p><p><b>  2.時(shí)間控制流程圖</b></p><p>  DS1302時(shí)控流程圖</p><p><b>  五·

52、; 總結(jié)</b></p><p>  這次對(duì)數(shù)字鐘的設(shè)計(jì)與制作,讓我了解了設(shè)計(jì)電路的程序,也讓我了解了關(guān)于數(shù)字鐘的原理與設(shè)計(jì)理念。在此次的數(shù)字鐘設(shè)計(jì)過程中,更進(jìn)一步地熟悉了芯片的結(jié)構(gòu)及掌握了各芯片的工作原理和其具體的使用方法.</p><p>  在連接單片機(jī)與其他外部電路的實(shí)驗(yàn)中,要求熟悉邏輯電路及其芯片各引腳的功能,那么在電路出錯(cuò)時(shí)便能準(zhǔn)確地找出錯(cuò)誤所在并及時(shí)糾正了.在設(shè)計(jì)

53、電路中,對(duì)單片機(jī)的編程的進(jìn)一步的熟悉與學(xué)習(xí)讓我明白了許多自己沒有掌握的功能,對(duì)單片機(jī)有了更深刻的理解。再就是電路的連接中的一些小的的注意的問題像極性電容器其 “ + ” 與 “ - ” 極不能接錯(cuò),例如電容器上的標(biāo)記方向要易看可見。</p><p>  在設(shè)計(jì)電路的連接圖中出錯(cuò)的主要原因都是接線和芯片的接觸不良以及接線的錯(cuò)誤所引起的。接線的時(shí)候一定要細(xì)心,不要接錯(cuò),同時(shí)也要學(xué)會(huì)如何判別芯片的好壞,要是芯片壞了即使

54、接線再正確也出不來結(jié)果。對(duì)自己的設(shè)計(jì)圖要仔細(xì)考慮,反復(fù)調(diào)試只有這樣我們才能找到自己的不足從不足中學(xué)習(xí)。</p><p>  通過這次數(shù)字鐘的設(shè)計(jì),讓我對(duì)各種電路都有了大概的了解,也學(xué)會(huì)了常用繪圖軟件的使用。所以說,坐而言不如立而行,對(duì)于這些電路還是應(yīng)該自己動(dòng)手實(shí)際操作才會(huì)有深刻理解,才會(huì)有收獲。</p><p><b>  六· 參考文獻(xiàn)</b></p

55、><p>  [1]林剛勇 馬善農(nóng) 王海濤 電子電路設(shè)計(jì)技術(shù)· 北京:國(guó)防工業(yè)出版社,2007</p><p>  [2]陳小忠等,單片機(jī)接口技術(shù)實(shí)用子程序[M]·北京:人民郵電出版社,2005</p><p>  [3]楊居義主編·單片機(jī)課程設(shè)計(jì)指導(dǎo)[M]·北京:清華大學(xué)出版社,2009</p><p>

56、  [4]何立民主編·MCS—51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M]·北京:北京航天航空大學(xué)出版社,1990</p><p>  [5]朱定華主編·單片機(jī)原理及接口技術(shù)試驗(yàn)[M]·北京:北京大學(xué)出版社,2002</p><p>  [6]周慈航著·單片機(jī)程序設(shè)計(jì)基礎(chǔ)[M]·北京:北京航天航空大學(xué)出版社,2003</p><

57、;p>  [7]張毅剛主編·單片機(jī)原理及應(yīng)用[M]·北京:高等教育出版社,2008</p><p>  [8]李群芳等著·單片機(jī)原理接口及應(yīng)用—嵌入式系統(tǒng)計(jì)數(shù)基礎(chǔ)·北京:清華大學(xué)出版</p><p>  附錄 電子時(shí)鐘程序</p><p>  #include <reg51.h></p>&

58、lt;p>  #include <intrins.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  uchar count_10ms; //定義10ms計(jì)數(shù)器</p><p>  sbitK1

59、 = P3^2;//定義K1鍵</p><p>  sbitK2 = P3^3;//定義K2鍵</p><p>  sbitK3 = P3^4;//定義K3鍵</p><p>  sbitK4 = P3^5;//定義K4鍵</p><p>  sbit BEEP=P3^7;//定義蜂鳴器</p>

60、;<p>  sbit reset = P1^2;</p><p>  sbit sclk = P1^0;</p><p>  sbit io = P1^1;</p><p>  sbit LCD_RS=P2^0; </p><p&g

61、t;  sbit LCD_RW=P2^1 ; </p><p>  sbit LCD_EN=P2^2;</p><p>  bit K1_FLAG=0;//定義按鍵標(biāo)志位,當(dāng)按下K1鍵時(shí),該位置1,K1鍵未按下時(shí),該位為0。</p><p>  uchar code l

62、ine1_data[] = {"---LCD Clcok---"}; //定義第1行顯示的字符</p><p>  uchar code line2_data[] = {"****"}; //定義第2行顯示的字符</p><p>  uchar disp_buf[8] ={0x00}; //定義顯示緩沖區(qū)</p>

63、<p>  uchar time_buf[7] ={0,0,0x12,0,0,0,0};//DS1302時(shí)間緩沖區(qū),存放秒、分、時(shí)、日、月、星期、年</p><p>  uchar temp [2]={0};//用來存放設(shè)置時(shí)的小時(shí)、分鐘的中間值</p><p>  /********以下是函數(shù)聲明********/</p><p>  voi

64、d Delay_ms(uint xms);</p><p>  bit lcd_busy(); </p><p>  void lcd_wcmd(uchar cmd); </p><p>  void lcd_wdat(uchar dat) ; </p><p>  void lcd_clr() ;</p>

65、<p>  void lcd_init() ;</p><p>  void write_byte(uchar inbyte);//寫一字節(jié)數(shù)據(jù)函數(shù)聲明</p><p>  uchar read_byte(); //讀一字節(jié)數(shù)據(jù)函數(shù)聲明</p><p>  void write_ds1302(uchar cmd,uchar ind

66、ata);//寫DS1302函數(shù)聲明</p><p>  uchar read_ds1302(uchar addr);//讀DS1302函數(shù)聲明</p><p>  void set_ds1302(uchar addr,uchar *p,uchar n);//設(shè)置DS1302初始時(shí)間函數(shù)聲明</p><p>  void get_ds1302(uch

67、ar addr,uchar *p,uchar n);//讀當(dāng)前時(shí)間函數(shù)聲明</p><p>  void init_ds1302();//DS1302初始化函數(shù)聲明</p><p>  /********以下是延時(shí)函數(shù)********/</p><p>  void Delay_ms(uint xms)</p><p>

68、<b>  {</b></p><p><b>  uint i,j;</b></p><p>  for(i=xms;i>0;i--) //i=xms即延時(shí)約xms毫秒</p><p>  for(j=110;j>0;j--);</p><p><b>  }&

69、lt;/b></p><p>  /********以下是LCD忙碌檢查函數(shù)********/</p><p>  bit lcd_busy() </p><p>  {

70、 </p><p>  bit result; </p><p>  LCD_RS = 0;

71、 </p><p>  LCD_RW = 1; </p><p>  LCD_EN = 1; </p><p>  _no

72、p_(); </p><p>  _nop_(); </p><p>  _nop_();

73、 </p><p>  _nop_(); </p><p>  result = (bit)(P0&0x80);

74、 </p><p>  LCD_EN = 0; </p><p>  return result; </p><p>  }

75、 </p><p>  /********以下是寫指令寄存器IR函數(shù)********/</p><p>  void lcd_wcmd(uchar cmd) </p><p>  {

76、 </p><p>  while(lcd_busy()); </p><p>  LCD_RS = 0;

77、 </p><p>  LCD_RW = 0; </p><p>  LCD_EN = 0; </p>

78、<p>  _nop_(); </p><p>  _nop_(); </p><p>  P0 = cmd;

79、 </p><p>  _nop_(); </p><p>  _nop_();

80、 </p><p>  _nop_(); </p><p>  _nop_(); </p>&l

81、t;p>  LCD_EN = 1; </p><p>  _nop_(); </p><p>  _nop_();

82、 </p><p>  _nop_(); </p><p>  _nop_();

83、 </p><p>  LCD_EN = 0; </p><p><b>  } </b></p><p>  /********以下是寫寄存器DR函數(shù)********/</p>&l

84、t;p>  void lcd_wdat(uchar dat) </p><p>  { </p><p>  while(lcd_busy(

85、)); </p><p>  LCD_RS = 1; </p><p>  LCD_RW = 0;

86、 </p><p>  LCD_EN = 0; </p><p>  P0 = dat; </p&

87、gt;<p>  _nop_(); </p><p>  _nop_(); </p><p>  _nop_();

88、 </p><p>  _nop_(); </p><p>  LCD_EN = 1;

89、 </p><p>  _nop_(); </p><p>  _nop_(); </p>

90、;<p>  _nop_(); </p><p>  _nop_(); </p><p>  LCD_EN = 0;

91、 </p><p><b>  } </b></p><p>  /********以下是LCD清屏函數(shù)********/</p><p>  void lcd_clr()

92、 </p><p>  { </p><p>  lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容 </

93、p><p>  Delay_ms(5); </p><p>  } </p><p>  /********以下是LCD初始化函數(shù)********/</p><p>  

94、void lcd_init() </p><p>  { </p><p>  Delay_ms(15);

95、 //等待LCD電源穩(wěn)定 </p><p>  lcd_wcmd(0x38); //16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù) </p><p>  Delay_ms(5);

96、 </p><p>  lcd_wcmd(0x38); </p><p>  Delay_ms(5); </p><p>  

97、lcd_wcmd(0x38); </p><p>  Delay_ms(5); </p><p>  lcd_wcmd(0x0c); //顯示

98、開,關(guān)光標(biāo) </p><p>  Delay_ms(5); </p><p>  lcd_wcmd(0x06); //移動(dòng)光標(biāo)

99、 </p><p>  Delay_ms(5); </p><p>  lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容 </p><p>  Delay_ms(5)

100、; </p><p><b>  } </b></p><p>  /********以下是寫一字節(jié)數(shù)據(jù)函數(shù)********/</p><p>  void write_byte(uchar inbyte)</p&g

101、t;<p><b>  {</b></p><p><b>  uchar i;</b></p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  sclk=0; //寫時(shí)低電平

102、改變數(shù)據(jù)</p><p>  if(inbyte&0x01)</p><p><b>  io=1;</b></p><p><b>  else</b></p><p><b>  io=0; </b></p><p>  sclk=1;

103、 //高電平把數(shù)據(jù)寫入DS1302</p><p><b>  _nop_();</b></p><p>  inbyte=inbyte>>1;</p><p><b>  }</b></p><p><b>  }</b></p>&

104、lt;p>  /********以下是讀一字節(jié)數(shù)據(jù)函數(shù)********/</p><p>  uchar read_byte() </p><p><b>  {</b></p><p>  uchar i,temp=0; </p><p>  io=1; </p>

105、<p>  for(i=0;i<7;i++)</p><p><b>  {</b></p><p><b>  sclk=0;</b></p><p><b>  if(io==1)</b></p><p>  temp=temp|0x80;</p&g

106、t;<p><b>  else</b></p><p>  temp=temp&0x7f;</p><p>  sclk=1; //產(chǎn)生下跳沿</p><p>  temp=temp>>1;</p><p><b>  }</b></

107、p><p>  return (temp);</p><p><b>  }</b></p><p>  /********寫DS1302函數(shù), 往DS1302的某個(gè)地址寫入數(shù)據(jù) ********/</p><p>  void write_ds1302(uchar cmd,uchar indata)</p>

108、<p><b>  {</b></p><p><b>  sclk=0;</b></p><p><b>  reset=1;</b></p><p>  write_byte(cmd); </p><p>  write_byte(indata);&

109、lt;/p><p><b>  sclk=0;</b></p><p><b>  reset=0;</b></p><p><b>  }</b></p><p>  /********讀DS1302函數(shù),讀DS1302某地址的的數(shù)據(jù)********/</p>&l

110、t;p>  uchar read_ds1302(uchar addr)</p><p><b>  {</b></p><p>  uchar backdata;</p><p><b>  sclk=0;</b></p><p><b>  reset=1;</b>&l

111、t;/p><p>  write_byte(addr); //先寫地址</p><p>  backdata=read_byte(); //然后讀數(shù)據(jù)</p><p><b>  sclk=0;</b></p><p><b>  reset=0;</b></p>&l

112、t;p>  return (backdata);</p><p><b>  }</b></p><p>  /********設(shè)置初始時(shí)間函數(shù)********</p><p>  void set_ds1302(uchar addr,uchar *p,uchar n) </p><p><b>  {&

113、lt;/b></p><p>  write_ds1302(0x8e,0x00); //寫控制字,允許寫操作</p><p>  for(;n>0;n--)</p><p><b>  {</b></p><p>  write_ds1302(addr,*p);</p><

114、;p><b>  p++;</b></p><p>  addr=addr+2;</p><p><b>  }</b></p><p>  write_ds1302(0x8e,0x80); //寫保護(hù),不允許寫</p><p><b>  }</b>&

115、lt;/p><p>  ********讀取當(dāng)前時(shí)間函數(shù)********</p><p>  void get_ds1302(uchar addr,uchar *p,uchar n)</p><p><b>  {</b></p><p>  for(;n>0;n--)</p><p><

116、b>  {</b></p><p>  *p=read_ds1302(addr);</p><p><b>  p++;</b></p><p>  addr=addr+2;</p><p><b>  } </b></p><p><b>  }

117、</b></p><p>  ********初始化DS1302函數(shù)********/</p><p>  void init_ds1302()</p><p><b>  {</b></p><p><b>  reset=0;</b></p><p><

118、b>  sclk=0;</b></p><p>  write_ds1302(0x80,0x00); //寫秒寄存器</p><p>  write_ds1302(0x90,0xab); //寫充電器</p><p>  write_ds1302(0x8e,0x80); //寫保護(hù)控制字,禁止寫</p><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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論