電氣工程及其自動(dòng)化單片機(jī)課程設(shè)計(jì)_第1頁(yè)
電氣工程及其自動(dòng)化單片機(jī)課程設(shè)計(jì)_第2頁(yè)
電氣工程及其自動(dòng)化單片機(jī)課程設(shè)計(jì)_第3頁(yè)
電氣工程及其自動(dòng)化單片機(jī)課程設(shè)計(jì)_第4頁(yè)
電氣工程及其自動(dòng)化單片機(jī)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、河北建筑工程學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)任務(wù)書(shū)課程名稱(chēng): 單片機(jī)原理及應(yīng)用 系 : 電氣工程系 專(zhuān) 業(yè): 電氣工程及其自動(dòng)化 班 級(jí): 學(xué) 號(hào): 2008308112 學(xué)生姓名: 指導(dǎo)教師: 職 稱(chēng): 講師 2012 年 1 月 1 日目錄 一、摘要3二、系統(tǒng)總體方案設(shè)計(jì)31、功能要求3 2、 技術(shù)可行性.33、單片機(jī)的選擇4 4、ds1302簡(jiǎn)介.5三、系統(tǒng)硬件設(shè)計(jì)7i、電路設(shè)計(jì)7ii、系統(tǒng)硬件概述71. 主控制器at89c5172. 時(shí)鐘電路ds130283. 顯示驅(qū)動(dòng)74ls16494. 主要單元電路的設(shè)計(jì).9四、系統(tǒng)軟件設(shè)計(jì).11五、總結(jié).12六、參考文獻(xiàn).12附錄.13一摘要近年來(lái)隨著計(jì)算機(jī)在

2、社會(huì)領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,由于它具有功能強(qiáng),體積小,功耗低,價(jià)格便宜,工作可靠,使用方便等特點(diǎn),因此越來(lái)越廣泛地應(yīng)用各個(gè)領(lǐng)域. 本文的電子鐘系統(tǒng)是以單片機(jī)(at89c51)為核心,時(shí)鐘芯片ds1302、數(shù)碼管顯示驅(qū)動(dòng)芯片74ls164等元器件組成。具體介紹應(yīng)用protell軟件進(jìn)行單片機(jī)系統(tǒng)的電子鐘設(shè)計(jì)與仿真的實(shí)現(xiàn)方法。該方法既能準(zhǔn)確驗(yàn)證所設(shè)計(jì)的系統(tǒng)是否滿(mǎn)足技術(shù)要求,又能提高系統(tǒng)設(shè)計(jì)的效率和質(zhì)量,降低開(kāi)發(fā)成本,具有推廣價(jià)值。關(guān)鍵詞:?jiǎn)纹瑱C(jī); 時(shí)鐘芯片 ;數(shù)碼管顯示驅(qū)動(dòng)芯片 ;電子鐘二系統(tǒng)總體方案設(shè)計(jì)隨著電子技術(shù)的發(fā)展,人類(lèi)不斷研究,不斷創(chuàng)新紀(jì)錄。萬(wàn)年

3、歷目前已經(jīng)不再局限于以書(shū)本形式出現(xiàn)。以電腦軟件或者電子產(chǎn)品形式出現(xiàn)的萬(wàn)年歷被稱(chēng)為電子萬(wàn)年歷。與傳統(tǒng)書(shū)本形式的萬(wàn)年歷相比,電子萬(wàn)年歷得到了越來(lái)越廣泛的應(yīng)用,采用電子時(shí)鐘作為時(shí)間顯示已經(jīng)成為一種時(shí)尚。目前市場(chǎng)上各式各樣的電子時(shí)鐘數(shù)不勝數(shù),但多數(shù)是只針對(duì)時(shí)間顯示,功能單一不能滿(mǎn)足人們?nèi)粘I钚枨蟆?本文提出了一種基于at89c51單片機(jī)的萬(wàn)年歷設(shè)計(jì)方案,本方案以at89c51單片機(jī)作為主控核心,與時(shí)鐘芯片ds1302、按鍵、led顯示等模塊組成硬件系統(tǒng)。在硬件系統(tǒng)中設(shè)有獨(dú)立按鍵和led顯示器,能顯示豐富的信息,根據(jù)使用者的需要可以隨時(shí)對(duì)時(shí)間進(jìn)行校準(zhǔn)、選擇時(shí)間等,綜上所述此萬(wàn)年歷具有讀取方便、顯示直觀

4、、功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。1功能要求本電子時(shí)鐘能顯示星期、小時(shí)、分鐘、秒2. 技術(shù)可行性 隨著國(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)。而近年來(lái)推出的一些高檔單片機(jī)還包括有許多特殊功能單元,如a/d、d/a轉(zhuǎn)換器、調(diào)制解調(diào)器、通信控制器、鎖相環(huán)、dma、浮點(diǎn)運(yùn)算單元、pwm控制輸出單元、

5、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)等。單片機(jī)的出現(xiàn),并在各技術(shù)領(lǐng)域中得到如此迅猛的發(fā)展,與單片機(jī)構(gòu)成計(jì)算機(jī)應(yīng)用系統(tǒng)所形成的下述特點(diǎn)有關(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ī)模的應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)有較高的軟、硬件利用系數(shù)。 3、由于構(gòu)成的應(yīng)用

6、系統(tǒng)是一個(gè)計(jì)算機(jī)系統(tǒng),相當(dāng)多的測(cè)、控功能由軟件實(shí)現(xiàn),故具有柔性特征,不須改變硬件系統(tǒng)就能適當(dāng)?shù)馗淖兿到y(tǒng)功能。4、有優(yōu)異的性能、價(jià)格比。3. 單片機(jī)的選擇采用傳統(tǒng)的at89c51作為電機(jī)的控制核心。單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟件編程靈活、自由度大,可用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點(diǎn),使其在各個(gè)領(lǐng)域應(yīng)用廣泛。圖2.11 at89c51單片機(jī) 4.ds1302簡(jiǎn)介(1) ds1302特性介紹ds1302是美國(guó)dallas公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片,附加31字節(jié)靜態(tài)ram,采用spi三線接口與cpu進(jìn)行通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)

7、的時(shí)鐘信號(hào)和ram數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小與31天時(shí)可以自動(dòng)調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.55.5v。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。(2) ds1302引腳介紹 各引腳的功能為:8 、vcc1:備用電池端;1、vcc2:5v電源。當(dāng)vcc2vcc1+0.2v時(shí),由vcc2向ds1302供電,當(dāng)vcc2 vcc1時(shí),由vcc1向ds1302供電。7、 sclk:串行時(shí)鐘,輸入; 6、i/o:數(shù)據(jù)輸入輸出口;5、ce/rst:復(fù)位腳2 3、x1、x2 是外接晶振腳 (32.768kh

8、z的晶振)4、地(gnd)(4)ds1302有關(guān)日歷、時(shí)間的寄存器 寄存器的說(shuō)明如下:1、秒寄存器(81h、80h)的位7定義為時(shí)鐘暫停標(biāo)志(ch)。當(dāng)初始上電時(shí)該位置為1,時(shí)鐘振蕩器停止,ds1302處于低功耗狀態(tài);只有將秒寄存器的該位置改寫(xiě)為0時(shí),時(shí)鐘才能開(kāi)始運(yùn)行。2、小時(shí)寄存器(85h、84h)的位7用于定義ds1302是運(yùn)行于12小時(shí)模式還是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是寫(xiě)保護(hù)位(wp),其它7位均置為0。在對(duì)任何的時(shí)鐘ram的寫(xiě)操作之前,wp位必

9、須為0。當(dāng)wp位為1時(shí),寫(xiě)保護(hù)位防止對(duì)任一寄存器的寫(xiě)操作。也就是說(shuō)在電路上電的初始態(tài)wp是1,這時(shí)是不能改寫(xiě)上面任何一個(gè)時(shí)間寄存器的,只有首先將wp改寫(xiě)為0,才能進(jìn)行其它寄存器的寫(xiě)操作。 (5)ds1302控制字介紹控制字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入到ds1302中。位6:如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1(a4a0):指示操作單元的地址;位0(最低有效位):如為0,表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作。讀數(shù)據(jù):讀數(shù)據(jù)時(shí)在緊跟8位的控制字指令后的下一個(gè)sclk脈沖的下降沿,讀出ds1302的數(shù)據(jù),讀出的數(shù)據(jù)是從最低位到最高位。

10、寫(xiě)數(shù)據(jù):控制字總是從最低位開(kāi)始輸出。在控制字指令輸入后的下一個(gè)sclk時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫(xiě)入ds1302,數(shù)據(jù)輸入也是從最低位(0位)開(kāi)始。位0(最低有效位):為1表示進(jìn)行讀操作。 如為0,表示要進(jìn)行寫(xiě)操作,控制字后 sclk 下降沿 讀數(shù)據(jù) sclk上升沿寫(xiě)數(shù)據(jù)(6)ds1302單字節(jié)讀寫(xiě)時(shí)序介ds1302的數(shù)據(jù)讀寫(xiě)是通過(guò)i/o串行進(jìn)行的。當(dāng)進(jìn)行一次讀寫(xiě)操作時(shí)最少得讀寫(xiě)兩個(gè)字節(jié),第一個(gè)字節(jié)是控制字節(jié),就是一個(gè)命令,告訴ds1302是讀還是寫(xiě)操作,是對(duì)ram還是對(duì)clok寄存器操作,以及操作的址。第二個(gè)字節(jié)就是要讀或?qū)懙臄?shù)據(jù)了。我們先看單字節(jié)寫(xiě):在進(jìn)行操作之前先得將ce(也可說(shuō)是rst)置

11、高電平,然后單片機(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è)字節(jié)控制字的8個(gè)位傳給ds1302。接下來(lái)就是傳一個(gè)字節(jié)的數(shù)據(jù)給ds1302,當(dāng)傳完數(shù)據(jù)后,單片機(jī)將ce置為低電平,操作結(jié)束。單字節(jié)讀操作的一開(kāi)始寫(xiě)控制字的過(guò)程和上面的單字節(jié)寫(xiě)操作是一樣,但是單字節(jié)讀操作在寫(xiě)控制字的最后一個(gè)位,sclk還在高電平時(shí),ds1302就將數(shù)據(jù)放到i/o上,單片機(jī)將sclk置為低電平后數(shù)據(jù)鎖存,單機(jī)機(jī)就可以讀取i/o上的數(shù)據(jù)。如此反復(fù),將一個(gè)字節(jié)

12、的數(shù)據(jù)讀入單片機(jī)。讀與寫(xiě)操作的不同就在于,寫(xiě)操作是在sclk低電平時(shí)單片機(jī)將數(shù)據(jù)放到io上,當(dāng)sclk上升沿時(shí),ds1302讀取。而讀操作是在sclk高電平時(shí)ds1302放數(shù)據(jù)到io上,將sclk置為低電平后,單片機(jī)就可從io上讀取數(shù)據(jù)。 三系統(tǒng)硬件設(shè)計(jì)1.電路設(shè)計(jì)圖示為電子萬(wàn)年歷電路設(shè)計(jì)原理圖,系統(tǒng)由主控制器at89c51、時(shí)鐘電路ds1302、顯示驅(qū)動(dòng)max7219電路,顯示電路及鍵掃描電路組成。2.系統(tǒng)硬件概述(1) 主控制器at89c51atmel公司生產(chǎn)的at89c51單片機(jī)采用高性能的靜態(tài)80c51設(shè)計(jì),并采用先進(jìn)工藝制造,還帶有非易失性flash程序存儲(chǔ)器。它是一種高性能、低功耗

13、的8位cmos微處理芯片,市場(chǎng)應(yīng)用最多。其主要特點(diǎn)如下:8kb flash rom,可以擦除1000次以上,數(shù)據(jù)保存10年。 256字節(jié)內(nèi)部ram; 電源控制模式; 時(shí)鐘可停止和恢復(fù); 空閑模式; 掉電模式; 6個(gè)中斷源; 4個(gè)中斷優(yōu)先級(jí); 4個(gè)8位i/o口; 全雙工增強(qiáng)型tuar; 3個(gè)16位定時(shí)/計(jì)數(shù)器:t0、t1(標(biāo)準(zhǔn)80c51)和增加的t2(捕獲和比較) 全靜態(tài)工作方式:024mhz(2)時(shí)鐘電路ds1302 ds1302的性能特性: 實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行比較; 用于高速數(shù)據(jù)暫存的31*8位ram; 最少引腳的串行i/o; 2.55.5v電壓工作范

14、圍; 2.5v時(shí)耗小于300na; 用于時(shí)鐘或ram數(shù)據(jù)讀/寫(xiě)的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式; 簡(jiǎn)單的三線接口; 可選的慢速充電(至vcc1)的能力。ds1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把rst腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在sclk的上升沿被訪問(wèn)到。在開(kāi)始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫(xiě)操作時(shí)寫(xiě)入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。如果在傳送過(guò)程中置rst腳為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且i/o引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在vcc2.5v之前

15、,rst腳必須保持低電平。只有在sclk為低電平時(shí),才能將rst置為高電平。ds1302的控制字如表所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入到ds1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1則表示存取ram數(shù)據(jù)。位51(a4a0)指示操作單元的地址。最低有效位(位0)如果為0,則表示藥進(jìn)行寫(xiě)操作;為1表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開(kāi)始輸入/輸出。為了提高對(duì)32個(gè)地址尋址能力(地址/命令位15=邏輯1),可以把時(shí)鐘/日歷或ram寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或ram,而位0規(guī)定讀或?qū)憽T跁r(shí)鐘/日歷寄存器中的地址931或ram

16、寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式下,讀或?qū)憦牡刂?的位0開(kāi)始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫(xiě)ram時(shí),為了傳送數(shù)據(jù)不必寫(xiě)所有的31字節(jié),不管是否謝了全部31字節(jié),所寫(xiě)的每一字節(jié)都將傳送至ram。ds1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為bcd碼形式。其日歷、時(shí)間寄存器及其控制字如上表所示,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作。時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),ds1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對(duì)ds1302進(jìn)行寫(xiě)操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停止振蕩。當(dāng)它為0時(shí),時(shí)鐘將開(kāi)始啟動(dòng)。 am

17、-pm/12-24小時(shí)方式:小時(shí)寄存器的位7定義為12或24小時(shí)方式選擇位。它為高電平時(shí),選擇12小時(shí)方式。在此方式下,位5為第二個(gè)10小時(shí)位(2023h)。ds1302的晶振選用32768hz,電容推薦值為6pf。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。(3)顯示驅(qū)動(dòng)74ls164本設(shè)計(jì)采用74ls164作為顯示驅(qū)動(dòng)芯片。3.主要單元電路的設(shè)計(jì)(1)顯示電路顯示部分采用普通的共陰數(shù)碼管顯示,采用動(dòng)態(tài)掃描,以減少硬件路。星期時(shí)分秒星期共需要7位數(shù)碼顯示,顯示時(shí)采用串行口輸出段碼,用74ls164驅(qū)動(dòng)數(shù)碼管。(2)鍵盤(pán)接口鍵盤(pán)在單片機(jī)系統(tǒng)中是一個(gè)很重要的部件。為了輸入數(shù)據(jù)、查詢(xún)和控

18、制系統(tǒng)的工作狀態(tài),都要用到鍵盤(pán),鍵盤(pán)是人工干預(yù)計(jì)算機(jī)的主要手段。鍵盤(pán)可分為編碼和非編碼鍵盤(pán)兩種。編碼鍵盤(pán)采用硬件線線路來(lái)實(shí)現(xiàn)鍵盤(pán)編碼,每按下一個(gè)鍵,鍵盤(pán)能自動(dòng)生成按鍵代碼,鍵數(shù)較多,而且還具有去抖動(dòng)功能。這種鍵盤(pán)使用方便,但硬件較復(fù)雜,pc機(jī)所用的鍵盤(pán)就屬于這種。非編碼鍵盤(pán)僅提供按鍵開(kāi)關(guān)工作狀態(tài),其他工作由軟件完成,這種鍵盤(pán)鍵數(shù)較少,硬件簡(jiǎn)單,一般在單片機(jī)應(yīng)用系統(tǒng)中廣泛使用。此處主要介紹該類(lèi)非編碼鍵盤(pán)及其與mcs51型單片機(jī)的接口。(3)時(shí)鐘電路ds1302工作方式簡(jiǎn)介及數(shù)據(jù)操作原理ds1302可以對(duì)星期、時(shí)、分、秒進(jìn)行計(jì)時(shí), 且具有閏年補(bǔ)償功能, 工作電壓寬達(dá)2.55.5v。采用三線接口與c

19、pu進(jìn)行同步通信, 并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或ram數(shù)據(jù)。ds1302內(nèi)部有一個(gè)33x8的用于臨時(shí)性存放數(shù)據(jù)的ram寄存器。ds1302是的ds1202升級(jí)產(chǎn)品, 與ds1202兼容, 但增加了主電源/后背電源雙電源引腳, 同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。ds1302時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)ram。它經(jīng)過(guò)一個(gè)簡(jiǎn)單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)、日、周、月和年等信息。對(duì)于小于31天的月和月末的日期自動(dòng)進(jìn)行調(diào)整,還包括閏年校正的功能。時(shí)鐘的運(yùn)行可以采用24時(shí)或帶am/pm的12小時(shí)格式。采用三線接口與cpu進(jìn)行同步通信,并可采

20、用突發(fā)方式一次傳送多字節(jié)的時(shí)鐘信號(hào)或ram數(shù)據(jù)。ds1302有主電源/后備電源雙電源引腳:vcc1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電磁備份;vcc1在雙電池系統(tǒng)中提供主電源。在這種運(yùn)行方式中,vcc1里連接到后備電源,以便在沒(méi)有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。ds1302由vcc1或vcc2中較打大者供電。當(dāng)vcc2(vcc1+0.2v)時(shí),vcc2給ds1302供電;當(dāng)vcc2vcc1時(shí),ds1302由vcc1供電。 圖ds1302ds1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把rst腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在sclk的上升沿被訪問(wèn)到。在

21、開(kāi)始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫(xiě)操作時(shí)寫(xiě)入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。如果在傳送過(guò)程中置rst腳為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且i/o引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在vcc2.5v之前,rst腳必須保持低電平。只有在sclk為低電平時(shí),才能將rst置為高電平。ds1302的控制字如圖所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入到ds1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1則表示存取ram數(shù)據(jù)。位51(a4a0)指示操作單元的地址。

22、最低有效位(位0)如果為0,則表示藥進(jìn)行寫(xiě)操作;為1表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開(kāi)始輸入/輸出。為了提高對(duì)32個(gè)地址尋址能力(地址/命令位15=邏輯1),可以把時(shí)鐘/日歷或ram寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或ram,而位0規(guī)定讀或?qū)?。在時(shí)鐘/日歷寄存器中的地址931或ram寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式下,讀或?qū)憦牡刂?的位0開(kāi)始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫(xiě)ram時(shí),為了傳送數(shù)據(jù)不必寫(xiě)所有的31字節(jié),不管是否謝了全部31字節(jié),所寫(xiě)的每一字節(jié)都將傳送至ram。ds1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘

23、相關(guān),存放的數(shù)據(jù)位為bcd碼形式。其日歷、時(shí)間寄存器及其控制字如下表所示,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作。表 ds1302控制字 時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),ds1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對(duì)ds1302進(jìn)行寫(xiě)操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停止振蕩。當(dāng)它為0時(shí),時(shí)鐘將開(kāi)始啟動(dòng)。 am-pm/12-24小時(shí)方式:小時(shí)寄存器的位7定義為12或24小時(shí)方式選擇位。它為高電平時(shí),選擇12小時(shí)方式。在此方式下,位5為第二個(gè)10小時(shí)位(2023h)。ds1302的晶振選用32768hz,電容推薦值為6pf。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。四

24、 系統(tǒng)軟件設(shè)計(jì)1.程序設(shè)計(jì)電子萬(wàn)年歷的程序主要包括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í)間。at89c51單片機(jī)主要i/o口的分配,p2.0-p2.2分別接74ls164的din,load,clk三個(gè)功能端,p3接查詢(xún)式按鍵,p1.0-p1.2分別接ds1302的clk,io,rst端。2.時(shí)間控制流程圖ds1302時(shí)控流程圖 五 總結(jié)這次對(duì)數(shù)字鐘的設(shè)計(jì)與制作,讓我了解了設(shè)計(jì)電路的程序,也讓我了解了關(guān)于數(shù)字鐘的原理與設(shè)計(jì)理念。在此次的數(shù)字鐘設(shè)計(jì)過(guò)程中,更進(jìn)一步地熟悉了芯片的結(jié)構(gòu)及掌握了各

25、芯片的工作原理和其具體的使用方法.在連接單片機(jī)與其他外部電路的實(shí)驗(yàn)中,要求熟悉邏輯電路及其芯片各引腳的功能,那么在電路出錯(cuò)時(shí)便能準(zhǔn)確地找出錯(cuò)誤所在并及時(shí)糾正了.在設(shè)計(jì)電路中,對(duì)單片機(jī)的編程的進(jìn)一步的熟悉與學(xué)習(xí)讓我明白了許多自己沒(méi)有掌握的功能,對(duì)單片機(jī)有了更深刻的理解。再就是電路的連接中的一些小的的注意的問(wèn)題像極性電容器其 “ ” 與 “ ” 極不能接錯(cuò),例如電容器上的標(biāo)記方向要易看可見(jiàn)。在設(shè)計(jì)電路的連接圖中出錯(cuò)的主要原因都是接線和芯片的接觸不良以及接線的錯(cuò)誤所引起的。接線的時(shí)候一定要細(xì)心,不要接錯(cuò),同時(shí)也要學(xué)會(huì)如何判別芯片的好壞,要是芯片壞了即使接線再正確也出不來(lái)結(jié)果。對(duì)自己的設(shè)計(jì)圖要仔細(xì)考慮

26、,反復(fù)調(diào)試只有這樣我們才能找到自己的不足從不足中學(xué)習(xí)。 通過(guò)這次數(shù)字鐘的設(shè)計(jì),讓我對(duì)各種電路都有了大概的了解,也學(xué)會(huì)了常用繪圖軟件的使用。所以說(shuō),坐而言不如立而行,對(duì)于這些電路還是應(yīng)該自己動(dòng)手實(shí)際操作才會(huì)有深刻理解,才會(huì)有收獲。六 參考文獻(xiàn)1林剛勇 馬善農(nóng) 王海濤 電子電路設(shè)計(jì)技術(shù) 北京:國(guó)防工業(yè)出版社,20072陳小忠等,單片機(jī)接口技術(shù)實(shí)用子程序m北京:人民郵電出版社,20053楊居義主編單片機(jī)課程設(shè)計(jì)指導(dǎo)m北京:清華大學(xué)出版社,20094何立民主編mcs51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)m北京:北京航天航空大學(xué)出版社,19905朱定華主編單片機(jī)原理及接口技術(shù)試驗(yàn)m北京:北京大學(xué)出版社,20026周慈航

27、著單片機(jī)程序設(shè)計(jì)基礎(chǔ)m北京:北京航天航空大學(xué)出版社,20037張毅剛主編單片機(jī)原理及應(yīng)用m北京:高等教育出版社,20088李群芳等著單片機(jī)原理接口及應(yīng)用嵌入式系統(tǒng)計(jì)數(shù)基礎(chǔ)北京:清華大學(xué)出版附錄 電子時(shí)鐘程序#include #include #define uchar unsigned char#define uint unsigned intuchar count_10ms; /定義10ms計(jì)數(shù)器sbitk1 = p32;/定義k1鍵sbitk2 = p33;/定義k2鍵sbitk3 = p34;/定義k3鍵sbitk4 = p35;/定義k4鍵sbit beep=p37;/定義蜂鳴器sbi

28、t reset = p12;sbit sclk = p10;sbit io = p11;sbit lcd_rs=p20; sbit lcd_rw=p21 ; sbit lcd_en=p22;bit k1_flag=0;/定義按鍵標(biāo)志位,當(dāng)按下k1鍵時(shí),該位置1,k1鍵未按下時(shí),該位為0。uchar code line1_data = -lcd clcok-; /定義第1行顯示的字符uchar code line2_data = *; /定義第2行顯示的字符uchar disp_buf8 =0x00; /定義顯示緩沖區(qū)uchar time_buf7 =0,0,0x12,0,0,0,0;/ds13

29、02時(shí)間緩沖區(qū),存放秒、分、時(shí)、日、月、星期、年uchar temp 2=0;/用來(lái)存放設(shè)置時(shí)的小時(shí)、分鐘的中間值/*以下是函數(shù)聲明*/void delay_ms(uint xms);bit lcd_busy(); void lcd_wcmd(uchar cmd); void lcd_wdat(uchar dat) ; void lcd_clr() ;void lcd_init() ;void write_byte(uchar inbyte);/寫(xiě)一字節(jié)數(shù)據(jù)函數(shù)聲明uchar read_byte(); /讀一字節(jié)數(shù)據(jù)函數(shù)聲明void write_ds1302(uchar cmd,uchar i

30、ndata);/寫(xiě)ds1302函數(shù)聲明uchar read_ds1302(uchar addr);/讀ds1302函數(shù)聲明void set_ds1302(uchar addr,uchar *p,uchar n);/設(shè)置ds1302初始時(shí)間函數(shù)聲明void get_ds1302(uchar addr,uchar *p,uchar n);/讀當(dāng)前時(shí)間函數(shù)聲明void init_ds1302();/ds1302初始化函數(shù)聲明/*以下是延時(shí)函數(shù)*/void delay_ms(uint xms)uint i,j;for(i=xms;i0;i-) /i=xms即延時(shí)約xms毫秒for(j=110;j0;j

31、-);/*以下是lcd忙碌檢查函數(shù)*/bit lcd_busy() bit result; lcd_rs = 0; lcd_rw = 1; lcd_en = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(p0&0x80); lcd_en = 0; return result; /*以下是寫(xiě)指令寄存器ir函數(shù)*/void lcd_wcmd(uchar cmd) while(lcd_busy(); lcd_rs = 0; lcd_rw = 0; lcd_en = 0; _nop_(); _nop_(); p0 = cmd; _nop_(

32、); _nop_(); _nop_(); _nop_(); lcd_en = 1; _nop_(); _nop_(); _nop_(); _nop_(); lcd_en = 0; /*以下是寫(xiě)寄存器dr函數(shù)*/void lcd_wdat(uchar dat) while(lcd_busy(); lcd_rs = 1; lcd_rw = 0; lcd_en = 0; p0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); lcd_en = 1; _nop_(); _nop_(); _nop_(); _nop_(); lcd_en = 0; /*以下是lcd清屏

33、函數(shù)*/void lcd_clr() lcd_wcmd(0x01); /清除lcd的顯示內(nèi)容 delay_ms(5); /*以下是lcd初始化函數(shù)*/void lcd_init() delay_ms(15); /等待lcd電源穩(wěn)定 lcd_wcmd(0x38); /16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù) delay_ms(5); lcd_wcmd(0x38); delay_ms(5); lcd_wcmd(0x38); delay_ms(5); lcd_wcmd(0x0c); /顯示開(kāi),關(guān)光標(biāo) delay_ms(5); lcd_wcmd(0x06); /移動(dòng)光標(biāo) delay_ms(5); lcd_w

34、cmd(0x01); /清除lcd的顯示內(nèi)容 delay_ms(5); /*以下是寫(xiě)一字節(jié)數(shù)據(jù)函數(shù)*/void write_byte(uchar inbyte) uchar i; for(i=0;i1; /*以下是讀一字節(jié)數(shù)據(jù)函數(shù)*/uchar read_byte() uchar i,temp=0; io=1; for(i=0;i1; return (temp);/*寫(xiě)ds1302函數(shù), 往ds1302的某個(gè)地址寫(xiě)入數(shù)據(jù) */void write_ds1302(uchar cmd,uchar indata) sclk=0; reset=1; write_byte(cmd); write_byt

35、e(indata); sclk=0; reset=0;/*讀ds1302函數(shù),讀ds1302某地址的的數(shù)據(jù)*/uchar read_ds1302(uchar addr) uchar backdata; sclk=0; reset=1; write_byte(addr); /先寫(xiě)地址 backdata=read_byte(); /然后讀數(shù)據(jù) sclk=0; reset=0; return (backdata);/*設(shè)置初始時(shí)間函數(shù)*void set_ds1302(uchar addr,uchar *p,uchar n) write_ds1302(0x8e,0x00); /寫(xiě)控制字,允許寫(xiě)操作 f

36、or(;n0;n-) write_ds1302(addr,*p); p+; addr=addr+2; write_ds1302(0x8e,0x80); /寫(xiě)保護(hù),不允許寫(xiě)*讀取當(dāng)前時(shí)間函數(shù)*void get_ds1302(uchar addr,uchar *p,uchar n) for(;n0;n-) *p=read_ds1302(addr); p+; addr=addr+2; *初始化ds1302函數(shù)*/void init_ds1302() reset=0; sclk=0; write_ds1302(0x80,0x00); /寫(xiě)秒寄存器 write_ds1302(0x90,0xab); /寫(xiě)

37、充電器 write_ds1302(0x8e,0x80); /寫(xiě)保護(hù)控制字,禁止寫(xiě)/*以下是蜂鳴器響一聲函數(shù)*/void beep() beep=0; /蜂鳴器響 delay_ms(100); beep=1; /關(guān)閉蜂鳴器 delay_ms(100); /*以下是轉(zhuǎn)換函數(shù),負(fù)責(zé)將走時(shí)數(shù)據(jù)轉(zhuǎn)換為適合lcd顯示的數(shù)據(jù)*/void lcd_conv (uchar in1,in2,in3 ) /形參in1、in2、in3接收實(shí)參time_buf2、time_buf1、time_buf0傳來(lái)的小時(shí)、分鐘、秒數(shù)據(jù)disp_buf0=in1/10+0x30; /小時(shí)十位數(shù)據(jù) disp_buf1=in1%10+0x30;/小時(shí)個(gè)位數(shù)據(jù)disp_buf2=in2/10+0x30; /分鐘十位數(shù)據(jù) disp_buf3=in2%10+0x30;/分鐘個(gè)位數(shù)據(jù) disp_buf4=in3/10+0x30; /秒十位數(shù)據(jù) disp_buf5=in3%10+0x30;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論