1034329011單片機(jī)課程設(shè)計(jì)(論文)電子萬(wàn)年歷_第1頁(yè)
1034329011單片機(jī)課程設(shè)計(jì)(論文)電子萬(wàn)年歷_第2頁(yè)
1034329011單片機(jī)課程設(shè)計(jì)(論文)電子萬(wàn)年歷_第3頁(yè)
1034329011單片機(jī)課程設(shè)計(jì)(論文)電子萬(wàn)年歷_第4頁(yè)
1034329011單片機(jī)課程設(shè)計(jì)(論文)電子萬(wàn)年歷_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、摘要本設(shè)計(jì)是電子萬(wàn)年歷。具備兩個(gè)功能:能顯示年月日時(shí)分秒及星期信息,并具有可調(diào)整日期和時(shí)間功能。我選用的是單片機(jī)(8051)來(lái)實(shí)現(xiàn)電子萬(wàn)年歷的功能。該電子萬(wàn)年歷能夠成功實(shí)現(xiàn)時(shí)鐘運(yùn)行、調(diào)整、顯示年月日時(shí)分秒信息。該電子萬(wàn)年歷使用ds1302與單片機(jī)8051相連接,通過(guò)軟件編程的方法實(shí)現(xiàn)了以24小時(shí)為一個(gè)周期同時(shí)顯示小時(shí),分鐘和秒的要求。利用單片機(jī)定時(shí)器及計(jì)數(shù)器產(chǎn)生定時(shí)效果通過(guò)編程形成數(shù)字鐘效果,再利用點(diǎn)陣字符型液晶顯示模塊動(dòng)態(tài)掃描顯示單片機(jī)內(nèi)部處理的數(shù)據(jù)。同時(shí)通過(guò)端口讀入當(dāng)前外部控制狀態(tài)來(lái)改變程序的不同狀態(tài),實(shí)現(xiàn)不同功能。本電子萬(wàn)年歷采用單片機(jī)來(lái)設(shè)計(jì)制作完成,由于其功能的實(shí)現(xiàn)主要通過(guò)軟件編程來(lái)完

2、成,這就降低了硬件電路的復(fù)雜性,也降低了成本。在該設(shè)計(jì)與制作中我選用了單片機(jī)8051,它是低功耗、高性能的cmos型8位單片機(jī)。片內(nèi)帶有4kb的存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外, 8051片內(nèi)有128b 的ram、32條i/o口線、2個(gè)16位定時(shí)計(jì)數(shù)器、5個(gè)中斷源、一個(gè)全雙工串行口等。因此,采用8051原理制作的電子萬(wàn)年歷,不僅僅在原理上能夠成功實(shí)現(xiàn)計(jì)時(shí)等功能,也更經(jīng)濟(jì),更適用,更符合我們實(shí)際生活的需要。目錄1 設(shè)計(jì)的意義及主要功能31.1 意義31.2 主要功能32 方案論證32.1 顯示模塊方案選擇和論證32.2 時(shí)鐘芯片方案選擇和論證32.3 最終電路設(shè)計(jì)方案33 硬件電路

3、的設(shè)計(jì)44 總結(jié)65 參考文獻(xiàn)6附錄71 設(shè)計(jì)的意義及主要功能1.1 意義電子萬(wàn)年歷作為電子類小設(shè)計(jì)不僅是市場(chǎng)上的寵兒,也是是單片機(jī)實(shí)驗(yàn)中一個(gè)很常用的題目。因?yàn)樗泻芎玫拈_放性和可發(fā)揮性,因此對(duì)作者的要求比較高,不僅考察了對(duì)單片機(jī)的掌握能力更加強(qiáng)調(diào)了對(duì)單片機(jī)擴(kuò)展的應(yīng)用。而且在操作的設(shè)計(jì)上要力求簡(jiǎn)潔,功能上盡量齊全,顯示界面也要出色。所以,電子萬(wàn)年歷無(wú)論作為競(jìng)賽題目還是畢業(yè)設(shè)計(jì)題目都是很有價(jià)值。1.2 主要功能設(shè)計(jì)一臺(tái)電子萬(wàn)年歷,主控芯片采用8051單片機(jī),日歷時(shí)鐘芯片采用美國(guó)dallas公司推出的高性能、低功耗、帶ram的實(shí)時(shí)時(shí)鐘ds1302,顯示器采用點(diǎn)陣字符型液晶顯示模塊,分2行顯示,第1

4、行顯示日、月、年,第2行顯示時(shí)、分、秒。2 方案論證2.1 顯示模塊方案選擇和論證方案一:采用led數(shù)碼管動(dòng)態(tài)掃描,led數(shù)碼管價(jià)格適中,對(duì)于顯示數(shù)字合適,采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),雖然占用的單片機(jī)口線少,但連線還需要花費(fèi)一點(diǎn)時(shí)間,所以也不用此種作為顯示。方案二:采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對(duì)較高,所以也不用此種作為顯示。方案三:采用lcd液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見(jiàn)2.2 時(shí)鐘芯片方案選擇和論證方案一:直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程

5、序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大,所以不采用此方案。方案二:采用ds1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,ds1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì)秒、分、時(shí)、日、周、月、年進(jìn)行計(jì)數(shù),而且精度高,位的ram做為數(shù)據(jù)暫存區(qū),工作電壓2.5v5.5v。2.3 最終電路設(shè)計(jì)方案對(duì)此次作品的方案選定: 采用8051作為主控制系統(tǒng); ds1302提供時(shí)鐘;lcd液晶顯示屏作為顯示。(注:在這學(xué)期的專業(yè)課中主要學(xué)習(xí)了8051單片機(jī),對(duì)8051單片機(jī)的功能有了較為全面的認(rèn)識(shí),故本次設(shè)計(jì)采用8051單片機(jī))3 硬件電路的設(shè)計(jì)圖1所示為電子萬(wàn)年

6、歷的硬件電路圖,主要包括8051單片機(jī)、日歷時(shí)鐘芯片ds1302、點(diǎn)陣字符型液晶顯示模塊。日歷時(shí)鐘芯片ds1302是一種串行接口的實(shí)時(shí)時(shí)鐘,芯片內(nèi)部具有可編程日歷時(shí)鐘和31個(gè)字節(jié)的靜態(tài)ram,日歷時(shí)鐘可自動(dòng)進(jìn)行閏年補(bǔ)償,計(jì)時(shí)準(zhǔn)確,接口簡(jiǎn)單,使用方便,工作電壓范圍寬(2.5v5.5v),功耗低,芯片自身還具有對(duì)備份電池進(jìn)行涓流充電功能,可有效延長(zhǎng)備份電池的壽命。 圖1圖2ds1302采用8腳dip封裝,其引腳排列如圖2所示,各引腳功能如下。l vcc1,vcc2:電源輸入。l gnd:地。l x1,x2:外接32.768khz石英晶振輸入。l rst:復(fù)位/通信允許。l i/o:數(shù)據(jù)輸入/輸出端

7、。l sclk:串行時(shí)鐘輸入。 8051單片機(jī)與ds1302之間采用3線串行通信方式。復(fù)位/通信允許信號(hào)rst接到單片機(jī)的p1.5引腳,rst=1允許通信,rst=0禁止通信;串行時(shí)鐘信號(hào)sclk接到單片機(jī)的p1.6引腳;數(shù)據(jù)輸入/輸出信號(hào)i/o接到單片機(jī)的p1.7引腳。8051作為主機(jī)通過(guò)控制rst、sclk和i/o信號(hào)實(shí)現(xiàn)兩芯片間的數(shù)據(jù)傳送。ds1302芯片的x1和x2端外接32.768khz的石英晶振,vcc1和vcc2是電源引腳,單電源供電時(shí)接vcc1腳,雙電源供電時(shí)主電源接vcc2,備份電池接vcc1,如果采用可充電鎳鎘電池,可啟用內(nèi)部涓流充電器在主電壓正常時(shí)向電池充電,以延長(zhǎng)電池使

8、用時(shí)間。備份電池也可用1f以上的超容量電容代替,需要注意備份電池電壓應(yīng)略低于主電源工作電壓。數(shù)據(jù)傳送是以8051單片機(jī)為主控芯片進(jìn)行的,每次傳送時(shí)由8051向ds1302寫入一個(gè)命令字節(jié)開始。命令字節(jié)的格式如下:命令字節(jié)的最高位必須為1。ram/ck位為ds1302片內(nèi)ram/時(shí)鐘選擇位,ram/ck=1選擇ram操作,ram/ck=0選擇時(shí)鐘操作。rd/w位為讀寫控制位,rd/w=1為讀操作,表示ds1302接受完命令字節(jié)后,按指定的選擇對(duì)象及寄存器(或ram)地址,讀取數(shù)據(jù)并通過(guò)i/o線傳送給單片機(jī)8051.rd/w=0為寫操作,表示ds1302接受完命令字節(jié)后,緊跟著再接收來(lái)自單片機(jī)80

9、51的數(shù)據(jù)字節(jié),并寫入到ds1302相應(yīng)的寄存器或ram單元中。a4a0為片內(nèi)日歷時(shí)鐘寄存器或ram的地址選擇位。ds1302與8051之間通過(guò)i/o線進(jìn)行同步串行數(shù)據(jù)傳送,sclk為串行通信時(shí)的位同步時(shí)鐘,一個(gè)sclk脈沖傳送一位數(shù)據(jù)。每次數(shù)據(jù)傳送時(shí)都以字節(jié)為單位,低位在前,高位在后,傳送一個(gè)字節(jié)需要8個(gè)脈沖。數(shù)據(jù)傳送可以單字節(jié)方式或多字節(jié)突發(fā)方式進(jìn)行。數(shù)據(jù)單字節(jié)方式傳送時(shí)序如圖3所示,在rst=1期間,8051單片機(jī)先向ds1302發(fā)送一個(gè)命令字節(jié),緊接發(fā)送一個(gè)字節(jié)的數(shù)據(jù),ds1302在接收的命令字節(jié)后自動(dòng)將數(shù)據(jù)寫入指定的片內(nèi)地址或從該地址讀取數(shù)據(jù)。 圖3數(shù)據(jù)多字節(jié)突發(fā)方式傳送時(shí)序如圖4所

10、示。rst=1期間,若8051單片機(jī)向ds1302發(fā)送的命令字節(jié)中a0a4全為1,則ds1302在接收到這個(gè)命令字節(jié)后可以一次進(jìn)行8個(gè)字節(jié)日歷時(shí)鐘數(shù)據(jù)或是31個(gè)片內(nèi)ram單元數(shù)據(jù)的讀寫操作。 圖4從以上時(shí)序可知,單字節(jié)方式傳送一次數(shù)據(jù)需要16個(gè)sclk脈沖,多字節(jié)傳送方式傳送一次數(shù)據(jù)在對(duì)日歷時(shí)鐘進(jìn)行讀寫時(shí)需要72個(gè)sclk脈沖,而在對(duì)片內(nèi)ram單元讀寫時(shí)則最多需要256個(gè)sclk脈沖。單字節(jié)操作方式可保證數(shù)據(jù)傳送時(shí)的安全性和可靠性,多字節(jié)操作方式則可提高數(shù)據(jù)傳送速度,兩種方式可視需要靈活選用。另外ds1302的外接晶振推薦采用32.768khz,電容推薦6pf,由于晶振頻率較低,也可以不接電容

11、,對(duì)計(jì)時(shí)精度影響不大。ds1302共有12個(gè)寄存器,其中7個(gè)寄存器與日歷時(shí)鐘有關(guān),存放的數(shù)據(jù)為bcd碼格式,日歷、時(shí)鐘寄存器地址及其內(nèi)容如圖5所示。秒寄存器的第7位為時(shí)鐘暫??刂莆唬撐粸?時(shí)暫停時(shí)鐘振蕩器,ds1302進(jìn)入低功耗狀態(tài),該位為0時(shí)啟動(dòng)時(shí)鐘。時(shí)寄存器的第7位為12或24小時(shí)方式選擇,該位為1時(shí)選擇12小時(shí)方式,該位為0時(shí)選擇24小時(shí)方式。在12小時(shí)方式下,時(shí)寄存器的第5位為am/pm選擇,該位為1時(shí)選擇pm,該位為0時(shí)選擇am,在24小時(shí)方式下,時(shí)寄存器的第5位為第2個(gè)小時(shí)位(2023)。 圖5電子萬(wàn)年歷的顯示部分采用點(diǎn)陣字符型液晶顯示模塊,以直接方式與8051單片機(jī)進(jìn)行接口。將

12、單片機(jī)的p2.7通過(guò)適當(dāng)邏輯門電路組合接到液晶顯示模塊的e端,p0口通過(guò)外部鎖存器得到的最低2位地址線a0和a1分別接到液晶顯示模塊的rw和rs端,從而可得該接口電路的命令寫入地址為7ff0h,命令讀取地址為7ff1h,數(shù)據(jù)操作地址為7ff2h,分別對(duì)這3個(gè)地址進(jìn)行操作即可將ds1302中的日歷時(shí)鐘信息顯示在lcd屏幕上。4 總結(jié)這次課程設(shè)計(jì)從開始到制作成功前后超過(guò)了一個(gè)星期。當(dāng)電子萬(wàn)年歷可以成功實(shí)現(xiàn)時(shí),那種激動(dòng)和喜悅只有自己可以體會(huì)。在整個(gè)設(shè)計(jì)過(guò)程中,充分發(fā)揮人的主觀能動(dòng)性,自主學(xué)習(xí),學(xué)到了許多沒(méi)學(xué)到的知識(shí)。較好的完成了設(shè)計(jì),達(dá)到了預(yù)期的目的,完了最初的設(shè)想。對(duì)電路的設(shè)計(jì)、布局要先有一個(gè)好的

13、構(gòu)思,才顯得電路板美觀、大方。程序編寫中,由于思路不清晰,開始時(shí)遇到了很多的問(wèn)題,經(jīng)過(guò)靜下心來(lái)思考,和同學(xué)討論,理清了思路,反而得心應(yīng)手。在此次設(shè)計(jì)中,知道了做事要有一顆平常的心,不要想著走捷徑,一步一個(gè)腳印。此次課程設(shè)計(jì)中學(xué)到了很多很多東西,這是最重要的。總之,此次課程設(shè)計(jì)使我的能力得到了全方位的提高,使得我的操作能力和專業(yè)技能都有了很大的提高。5 參考文獻(xiàn)1.徐愛(ài)鈞.單片機(jī)原理實(shí)用教程基于proteus虛擬仿真.北京:電子工業(yè)出版社,2009年1月2.李全利.單片機(jī)原理及接口技術(shù).北京:高等教育出版社,2009年1月.3. 魏立峰、王寶興.單片機(jī)原理與應(yīng)用技術(shù).北京:北京大學(xué)出版社,200

14、6年3月.4. 王守中.51單片機(jī)開發(fā)入門與經(jīng)典實(shí)例.北京:人民郵電出版社,20075. 張毅剛.mcs-51單片機(jī)原理及應(yīng)用.高等教育出版社,20036. 李海濤.單片機(jī)應(yīng)用開發(fā)典型模塊.人民郵電出版社, 2007附錄在8051單片機(jī)內(nèi)ram中開辟30h36h作為萬(wàn)年歷的秒、分、時(shí)、日、月、周和年計(jì)時(shí)單位,并將初始時(shí)間設(shè)為23:59:55,初始日期設(shè)為07年12月31日第一周。采用8051單片機(jī)片內(nèi)定時(shí)器t0來(lái)定時(shí)刷新lcd顯示內(nèi)容,t0定時(shí)初值設(shè)為50ms,以查詢方式檢查t0溢出標(biāo)志,每當(dāng)溢出次數(shù)達(dá)到20時(shí),讀取一次ds1302的日歷時(shí)鐘數(shù)據(jù),同時(shí)對(duì)lcd顯示信息進(jìn)行更新。電子萬(wàn)年歷的軟件

15、程序:t_rst bit p1.5 ;實(shí)時(shí)時(shí)鐘復(fù)位線引腳t_clk bit p1.6 ;實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳t_io bit p1.7 ;實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳second equ 30hminute equ 31hhour equ 32hday equ 33hmonth equ 34hweek equ 35hyearl equ 36h;*/ org 0000hstart: ljmp main org 0060hmain: mov sp,#60h ;修改堆棧;* mov second,#55h ;初始時(shí)間設(shè)為23:59:55 mov minute,#59h mov hour,#23h mov day

16、,#31h ;初始日期設(shè)為07年12月31日第一周 mov month,#12h mov week,#01h mov yearl,#07h lcall setds1302 lcall lcd_init ;調(diào)用液晶模塊初始化子程序 mov r3,#20 mov tmod,#01h mov th0,#3ch ;置定時(shí)器初值(定時(shí)50ms) mov tl0,#0b0h setb tr0 ;啟動(dòng)定時(shí)器0lp1: jbc tf0,lp2 ;查詢計(jì)數(shù)溢出 sjmp lp1 ;未到50 ms繼續(xù)計(jì)數(shù)lp2: mov th0,#3ch ;重新置定時(shí)器初值 mov tl0,#0b0h mov r2,#81h ;

17、從第1行第2位開始,設(shè)置ddram地址 lcall wrtc mov dptr,#zifu1 ;指向顯示字符代碼首地址 mov r4,#06h lcall wp1 ;第1行字符代碼寫入ddram lcall dispymd ;顯示年月日 mov r2,#0c1h ;設(shè)置第2行ddram地址 lcall wrtc mov dptr,#zifu2 ;指向顯示字符代碼首地址 mov r4,#06h lcall wp1 ;第1行字符代碼寫入ddram lcall disphms ;顯示時(shí)分秒 djnz r3,lp1 ;未到1s繼續(xù)循環(huán) lcall get1302 ;每到1s從ds1302讀取一次時(shí)間

18、mov r3,20 sjmp lp1zifu1: db date: zifu2: db time: ;*disphms:mov a,hour ;時(shí)分秒顯示子程序 swap a anl a,#03h add a,#30h mov r2,a lcall wrtd mov a,hour anl a,#0fh add a,#30h movr2,a lcall wrtd mov r2,#2dh lcall wrtd mov a,minute ;顯示分 swap a anl a,#07h add a,#30h mov r2,a lcall wrtd mov a,minute anl a,#0fh add

19、a,#30h mov r2,a lcall wrtd mov r2,#2dh lcall wrtd mov a,second ;顯示秒 swap a anl a,#07h add a,#30h mov r2,a lcall wrtd mov a,second anl a,#0fh add a,#30h mov r2,a lcall wrtd ret;*dispymd:mov a,yearl ;年月日顯示子程序 swap a anl a,#03h add a,#30h mov r2,a lcall wrtd mov a,yearl anl a,#0fh adda,#30h movr2,a lca

20、ll wrtd mov r2,#2dh lcall wrtd mov a,month ;顯示月 swap a anl a,#07h add a,#30h mov r2,a lcallwrtd mov a,month anl a,#0fh add a,#30h mov r2,a lcall wrtd mov r2,#2dh lcall wrtd mov a,day ;顯示日 swap a anl a,#07h add a,#30h mov r2,a lcall wrtd mov a,day anl a,#0fh add a,#30h movr2,a lcall wrtd ret ;*setds1

21、302: clr t_rst;設(shè)置ds1302初始時(shí)間,并啟動(dòng)計(jì)時(shí) nop clr t_clk nop setb t_rst nop mov b,#8eh ;寫控制命令字 lcall inputbyte mov b,#00h ;寫保護(hù)關(guān)閉 lcall inputbyte setb t_clk nop clr t_rst mov r0,#second ;內(nèi)存中的時(shí)間首地址 mov r1,#80h ;ds1302中的時(shí)間首地址 mov r7,#7 ;字節(jié)數(shù)setloop:clr t_rst nop clr t_clk nop setb t_rst nop mov b,r1 ;寫命令字 lcall

22、inputbyte mov a,r0 ;設(shè)置時(shí)間 mov b,a lcall inputbyte inc r0 inc r1 inc r1 setb t_clk nop clr t_rst nop djnz r7,setloop clr t_rst nop clr t_clk nop setb t_rst nop mov b,#8eh lcall inputbyte mov b,#80h ;開寫保護(hù) lcall inputbyte setb t_clk nop clr t_rst nop ret;*get1302: ;從ds1302讀取時(shí)間 mov r0,#second mov r1,#81h

23、 ;ds1302中讀時(shí)間的首地址 mov r7,#7getloop:clr t_rst nop clr t_clk nop setb t_rst nop mov b,r1 lcall inputbyte ;寫命令字 lcall outputbyte ;讀時(shí)間 mov r0,a ;將從ds1302中讀取的時(shí)間從內(nèi)存中保存 inc r0 ;修改地址指針 inc r1 inc r1 setb t_clk nop clr t_rst nop djnz r7,getloop ret;*inputbyte:mov r4,#8;向ds1302寫一個(gè)字節(jié)inputloop:mov a,b rrc a mov b,a mov t_io,c setb t_clk nop clr t_clk djnz r4,inputloop ret;*outputbyte:clr a ;從ds1302讀一個(gè)字節(jié) clr c mov r4,#8outputloop:nop mov c,t_io rrc a setb t_clk nop clr t_clk djnz r4,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論