版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)課程設(shè)計(jì)總結(jié)報(bào)告
題目:電子萬(wàn)年歷的設(shè)計(jì)與制作
專(zhuān)業(yè):理工學(xué)院03級(jí)電子信息科學(xué)
與技術(shù)
班級(jí):2班______________________________
姓名:林承祥
學(xué)號(hào):030303061_______________
指導(dǎo)教師:蔡植善_________________________
二00六年三月十日
一、設(shè)計(jì)目的及意義
(1)在學(xué)習(xí)了《數(shù)字電子技術(shù)》和《單片機(jī)原理及接口技術(shù)》課程后,為了加深對(duì)理論知
識(shí)的理解,學(xué)習(xí)理論知識(shí)在實(shí)際中的運(yùn)用,培養(yǎng)動(dòng)手能力和解決實(shí)際問(wèn)題的經(jīng)驗(yàn)讓學(xué)生接觸
專(zhuān)用時(shí)鐘芯片DS1302,并會(huì)用DS1302芯片開(kāi)發(fā)時(shí)鐘模塊,應(yīng)用到其他系統(tǒng)中去。熟悉WAVE
軟件調(diào)試程序和仿真.
(2)、通過(guò)實(shí)驗(yàn)提高對(duì)單片機(jī)的認(rèn)識(shí);
(3)通過(guò)實(shí)驗(yàn)提高焊接、布局、電路檢查能力;
(4X通過(guò)實(shí)驗(yàn)提高軟件調(diào)試能力;
(5)進(jìn)一步熟悉和掌握單片機(jī)的結(jié)構(gòu)及工作原理。
(6)通過(guò)課程設(shè)計(jì),掌握以單片機(jī)核心的電路設(shè)計(jì)的基本方法和技術(shù),了解表關(guān)電路參
數(shù)的計(jì)算方法。
(7)通過(guò)實(shí)際程序設(shè)計(jì)和調(diào)試,逐步掌握模塊化程序設(shè)計(jì)方法和調(diào)試技術(shù)。
(8)通過(guò)完成一個(gè)包括電路設(shè)計(jì)和程序開(kāi)發(fā)的完整過(guò)程,使學(xué)生了解開(kāi)發(fā)一單片機(jī)應(yīng)用
系統(tǒng)的全過(guò)程,為今后從事相應(yīng)打下基礎(chǔ)。
二、設(shè)計(jì)內(nèi)容要求
電子萬(wàn)年歷能顯示陽(yáng)歷年、月、日、星期、[小]時(shí)、分、秒和陰歷月、日,在顯示陰歷時(shí)間
時(shí)能標(biāo)明是否為閏年。
三、方案選擇與實(shí)驗(yàn)基本原理。
按照系統(tǒng)設(shè)計(jì)功能的要求,初步確定設(shè)計(jì)系統(tǒng)由主控模塊、時(shí)鐘模塊、顯示模塊、鍵
盤(pán)接口模塊共4個(gè)模塊組成,電路系統(tǒng)構(gòu)成框圖如圖L1所示。主控芯片使用51系列AT89c52
單片機(jī),時(shí)鐘芯片使用美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘
DS1302o采用DS1302作為主要計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302可以
在很小電流的后備電源(2.5—5.5V電源,在2.5V時(shí)耗電小于300nA)下繼續(xù)計(jì)時(shí),并可
編程選擇多種充電電流來(lái)對(duì)后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。顯示
模塊采用普通的共陽(yáng)LED數(shù)碼管,鍵輸入采用查詢法實(shí)現(xiàn)調(diào)整功能。
圖1電子萬(wàn)年歷電路系統(tǒng)構(gòu)成框圖
系統(tǒng)硬件甩路的設(shè)計(jì)
圖2為電子萬(wàn)年歷電路設(shè)計(jì)原理圖,系統(tǒng)由主控制器AT89c52、時(shí)鐘芯片DS1302、串口
顯示電路及鍵掃描電路組成。
<-<-
至tn
N
l!S!IH
龍式!
gqop。j-ut*S
主xniun
PJ玲小
6
l!!!l!l4到
拿孥
上
玲最一x
N&$
U。PUJ
仙山」至二皿山
玲最
■?o3P■?>??-Wr&
,皿訕!>
芭工
齦8騁監(jiān)當(dāng)
能<.浣V.
D-(iKKHtQQNSXfu=SBI
Oo<oJoeHIVV
VvvIvOSWIWv昱
-nIVc^dS£盤(pán)E
_.W/WKNfL
roSC邕&【
0更aieO
gWwSdJ6
OoU
.ENUECY
±-wlG§9WT一
1.rf/£,£v
HSKRsZdq
nff
圖2電子萬(wàn)年歷電路設(shè)計(jì)原理圖
3.3.1主控制器AT89c52
ATMEL公司生產(chǎn)的AT89C52單片機(jī)采用高性能的靜態(tài)80C51設(shè)計(jì),由先進(jìn)工藝制造,
并帶有非易失性Flash程序存儲(chǔ)器。它是一種高性能、低功耗的8位cMos微處理芯片,市
場(chǎng)應(yīng)用最多。主要性能特點(diǎn)有:
?8KHFlashROM,可以擦除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)型UART。
?3個(gè)16位定時(shí)/計(jì)數(shù)器,To、T1(標(biāo)準(zhǔn)80c51)和增加的T2(捕獲和比較)。
?全靜態(tài)工作方式:0-24MHz。
3.3.2時(shí)鐘電路DS1302
1.dsl302的性能特性
?實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù):
?用于高速數(shù)據(jù)暫存的31X8位RAM;
?最少引腳的串行I/。;
?2.5—5.5V電壓工作范圍;
?2.5V時(shí)耗電小于300nA;
?用于時(shí)鐘或RAM數(shù)據(jù)讀/寫(xiě)的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;
?簡(jiǎn)單的3線接口;
?可選的慢速充電(至Vccl)的能力。
D51302時(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)行可以采用24H或帶
AM(上午)/PM(下午)的12H格式。采用三線接口與cPu進(jìn)行同步通信,并可采用突發(fā)方式一
次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。Dsl302有主電源/后備電源雙電源引腳:Vccl在
單電源與電他供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;Vcc2在雙電源系統(tǒng)中
提供主電源,在這種運(yùn)用方式中,Vccl連接到備份電,以便在沒(méi)有主電源的情況下能保存
時(shí)間信息以及數(shù)據(jù)。Dsl302由Vccl或vcc2中較大者供電。當(dāng)vcc2大于Vccl十o.2v時(shí),
vcc2V給DS1302供電;當(dāng)vcc2小于Vccl時(shí),DS1302由Vccl供電。
2.DS1302數(shù)據(jù)操作原理
Dsl302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RsT腳置為高電平,然后把8位地址和命令
字裝入移位寄存器,數(shù)據(jù)在scLK的上升沿被輸入。無(wú)論是讀周期還是寫(xiě)周期,開(kāi)始8位指
定40個(gè)寄存器中哪個(gè)將被訪問(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ù)傳送,并且1/()引腳變?yōu)楦?/p>
阻態(tài)。上電運(yùn)行時(shí),在Vcc22.5V之前,RsT腳必須保持低電平。只有在scLK為低電平
時(shí),才能將RsT置為高電平。D引302的引腳及內(nèi)部結(jié)構(gòu)圖如圖3.3所示,表3.1為各引
腳的功能
引眄弓牌標(biāo)功能
1%主電源
,(c
2,3x>,x髓泳版32768kHz晶板
GND2
4GND地線
5RST施/片殿
61/0串行&軸人/鼬*(雙向)
7SCLK串行懿葡入第
后備電源
8vw
圖3DS1302引腳及內(nèi)部結(jié)構(gòu)表1DS102引腳功能
Dsl302的控制字如圖3.4所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1;如果它為
0,則不能把數(shù)據(jù)寫(xiě)入到Dsl302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1表示存
取
RAM數(shù)據(jù)。位5—1(A4-A0)指示操作單元的地址。最低有效位(位0)如為0,表示要進(jìn)行寫(xiě)
操作;為1表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開(kāi)始輸入/輸出。
為了提高對(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開(kāi)始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)
方式寫(xiě)RAM時(shí),為了傳送數(shù)據(jù)不必寫(xiě)所有31字節(jié)。小管是否寫(xiě)了全部31字節(jié),所寫(xiě)的每一
字節(jié)都將傳送至RAM。
圖4DS1302的控制字
SCLKm---w--w--u-w---iR--j?-w--u-u-
RST4567
01234567012^.,,1.
:,:
I/OAOAtA2A3A4R/CI:\
一DATAI/OBYTE!DATAVOBYTEn
圖5DS1302數(shù)據(jù)讀/寫(xiě)時(shí)序
Dsl302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD
碼形式。其H歷、時(shí)間寄存器及其控制字見(jiàn)表3.2,其中奇數(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—PM/12—24[?。輹r(shí)方式:[小]時(shí)寄存器的位7定義為12
或24[?。輹r(shí)方式選擇位。它為高電平時(shí),選擇12[小]時(shí)方式。在此方式下,位5是AM/PM
位,此位是高電平時(shí)表示PM,低電平表示AM。在24[小]時(shí)方式下,位5為第二個(gè)10[小]
時(shí)位(20—23h)。
命令字節(jié)寄存細(xì)容
翱罪名取觸用
寫(xiě)讀76543210
杪箱器80H81H00?59CH10sSEC
分病器
82H83H00-59010minMIN
[小]時(shí)寄存器84H’8/OQ?23或01?1212/24010A/PHRHR
口期寄存「
86H87H01-28,29,30,3100IODATEDATE
月份寄存器88H89n01-1200010MMONTH
用神器8AH8BH01?0700000DAY
年寄儲(chǔ)8CHSDH00?9910YEARYEAR
表2內(nèi)部寄存器地址和內(nèi)容
DS1302的品振選用32.768kHz,電容推薦值為6PF,因?yàn)檎袷庮l率較低,也可以不接
電容.對(duì)計(jì)時(shí)精度影響不大。3.3.3顯示電路的設(shè)計(jì)
顯示部分采用普通的共陽(yáng)數(shù)碼管顯示,采用動(dòng)態(tài)掃描,以減少硬件電路。考慮到一次掃
描19位數(shù)的管顯示時(shí)會(huì)出現(xiàn)閃爍情況,設(shè)計(jì)時(shí)19個(gè)數(shù)碼管分3排同時(shí)掃描。第一排6個(gè)數(shù)
碼
管分別為千年、百年、十午、年、十月、月,第二排6位數(shù)碼管分別為十時(shí)、時(shí)、十分、分、
十秒、秒,第三排7位數(shù)碼管分別為星期、陰歷十月、陰歷月、陰歷十日、陰歷日、十日、
日。顯示時(shí)采用串行口輸出段碼,用3片741sl64來(lái)驅(qū)動(dòng)3排數(shù)碼管,這樣掃描一次只需
7mso
7411sl64內(nèi)部為8個(gè)D觸發(fā)器,用以實(shí)現(xiàn)數(shù)據(jù)的串行移位,7411sl64特性見(jiàn)表3。單
片機(jī)以串行口方式0(移仿寄存器方式)輸山數(shù)據(jù),3片74LS164作為3排共陽(yáng)數(shù)碼管的串/
并轉(zhuǎn)換顯示接口。741sl64為T(mén)TL單向8位移位寄存器,可實(shí)現(xiàn)串行輸入,并行輸出。其
中A、B(第1、2腳)為串行數(shù)據(jù)輸入端,2個(gè)引腳按邏輯“與”運(yùn)算規(guī)律輸入信號(hào),共一個(gè)
輸入信號(hào)時(shí)可并接,共同作為輸入腳。cP(第8腳)為時(shí)鐘輸入端,可連接到串行口的TxD
端。每一個(gè)時(shí)鐘信號(hào)的上升沿加到cP端時(shí),移位寄存器移一位。8個(gè)時(shí)鐘脈沖過(guò)后,8位二
進(jìn)制數(shù)全部移入
741sl64中。MR腳(第9腳)為復(fù)位端,當(dāng)該腳為低電平時(shí);移位寄存器各位復(fù)0;只有當(dāng)
它為高電平時(shí),時(shí)鐘脈沖才起作用。QI—Q8(第3—6和10—13引腳)并行輸出端分別接數(shù)
碼管的h—a(因?yàn)榇衝從低位開(kāi)始傳送)各段對(duì)應(yīng)的引腳上。在給出了8個(gè)脈沖后,最先
進(jìn)入741oS164的第1個(gè)字L1數(shù)據(jù)到達(dá)廠最高位。再來(lái)1個(gè)脈沖,第1個(gè)脈沖就會(huì)從最高
位移出,進(jìn)入下個(gè)74L5164的第1位。3片741'S164首尾相串,而時(shí)鐘端則接在一起。這
樣,當(dāng)輸入8個(gè)
脈沖時(shí),從一9片機(jī)RXD端輸出的第1字節(jié)數(shù)據(jù)就進(jìn)入了第1片-74LS164中,而當(dāng)?shù)?個(gè)8
個(gè)脈沖到來(lái)后,第1字節(jié)數(shù)據(jù)就進(jìn)入了第2片74LS164,而隨后的第2字節(jié)的數(shù)據(jù)則進(jìn)入了
第1片74LS164。這樣,當(dāng)?shù)?個(gè)8個(gè)脈沖完成后,首次送出的數(shù)據(jù)被送到了最下面的164(第
3片)中,其它數(shù)據(jù)依次出現(xiàn)在第二和第一片74LS164中,實(shí)現(xiàn)了數(shù)據(jù)在74LS164中的串行
輸入、并行輸出。
操作模式輸入輸出
復(fù)位1VTRABQOQl~Q7
LXXLQO~Q6
HLLLQ6
移位HLIILQO~Q6
HHLLQO-Q6
HHHHQO~Q6
表374LS164特性表
在方式0狀態(tài)下,串行口為同步移位寄存器方式,其波特率是固定的,為fosc/12。數(shù)
據(jù)由RxD(P3.0)端輸入或輸出,同步移位脈沖由TxD(P3.1)端輸出。發(fā)送、接收數(shù)據(jù)時(shí)低位
在先。所以,根據(jù)本小節(jié)下面提供的硬件電路圖,在編寫(xiě)程序時(shí),查共陽(yáng)數(shù)碼管的段碼的二
進(jìn)制數(shù)據(jù)應(yīng)該將正常的共陽(yáng)數(shù)碼管0—9的二進(jìn)制值按位反序排序,如原來(lái)的二進(jìn)制為
11000000(C0H),要改為00000011(0311),就能使數(shù)碼管正常顯示。
3.3.4鍵盤(pán)接口的設(shè)計(jì)
由于按鍵只有3個(gè),用普通按鈕接10kw上拉電阻,用查詢法完成讀鍵功能。
3.4系統(tǒng)程序的設(shè)計(jì)
因?yàn)槭褂昧藭r(shí)鐘芯片DS1302,陽(yáng)歷程序只需從DS1302各寄存器中讀出年、周、月、日、
[?。輹r(shí)、分、秒等數(shù)據(jù),再處理即可。在首次對(duì)DS1302進(jìn)行操作之前,必須對(duì)它進(jìn)行初始
化,然后從DS1302中讀出數(shù)據(jù),再經(jīng)過(guò)處理后,送給顯示緩沖單元。陽(yáng)歷程序流程圖見(jiàn)圖
3.6所示。
開(kāi)始
初始化1302
13。2開(kāi)始振蕩
從1302中讀出年、
周、月、日、[小]時(shí)、
分、秒
讀出的數(shù)據(jù)都為BCD
碼,將其高低位分離,
送顯示緩沖單元
圖6陽(yáng)歷程序流程圖
3.4.2時(shí)間調(diào)整程序設(shè)計(jì)
調(diào)整時(shí)間用2個(gè)調(diào)整按鈕,1個(gè)作為移位、控制用,另外1個(gè)作為加和減用,分別定義
為控制按鈕、加按鈕。在調(diào)整時(shí)間過(guò)程中,要調(diào)整的位與別的位應(yīng)該有區(qū)別,所以增加了閃
爍功能,即調(diào)整的位一直在閃爍,直到調(diào)整下一位。閃爍原理就是,讓要調(diào)整的一位每隔一
定時(shí)間熄滅一次,比如說(shuō)50ms?利用定時(shí)器計(jì)時(shí),當(dāng)達(dá)到50ms溢出時(shí),就送給該位熄
滅符,在下一次溢出時(shí)。再送正常顯示的值,不斷交替,直到調(diào)整該位結(jié)束。此時(shí)送正常顯
示值給該位,再進(jìn)人下一位調(diào)整閃爍程序。時(shí)間調(diào)整程序程序流程圖如圖3.7所示。
3.4.3陰歷程序設(shè)計(jì)
陰歷程序的實(shí)現(xiàn)是要靠陽(yáng)歷日期來(lái)推算的。要根據(jù)陽(yáng)歷來(lái)推算陰歷日期,首先要設(shè)計(jì)算
法。推算方法是,根據(jù)陽(yáng)歷當(dāng)前日期在一年中的天數(shù)來(lái)計(jì)算陰歷日期。陽(yáng)歷一個(gè)月不是30
天就是31天(2月除外,閏年2月為29天,平年2月為28天)。陰歷一年有12個(gè)月或13
個(gè)月(含閏月),一個(gè)月為30天或29天。如果把一個(gè)只有29天的月稱(chēng)為小月,用1為標(biāo)志,
把30天的月稱(chēng)為大月,用0為標(biāo)志,那么12位二進(jìn)制就能表示一年12個(gè)月的大小。如果
有閏月,則把閏月的月份作為“一個(gè)字節(jié)的高4位,低4位表示閏月大小,大月為0,小月
為1.這樣一個(gè)
字節(jié)就包含了所有閏月的信息。陰歷春節(jié)和陽(yáng)歷元旦相差的天數(shù)也用一個(gè)字節(jié)表示??偣灿?/p>
1字節(jié)就可以存儲(chǔ)一年中任何一天陽(yáng)歷和陰歷的對(duì)應(yīng)關(guān)系的有關(guān)數(shù)據(jù),例如2004年的陰歷
和陽(yáng)歷對(duì)應(yīng)關(guān)系如表3.4所列。
圖7時(shí)間調(diào)整程序流程圖
月份123456789101112閏2月
大小小大大大小大小大小大小大小
天ft1000101010101
二進(jìn)制293030302930293029302930
-------
十六進(jìn)制425221
表42004年的陰歷和陽(yáng)歷關(guān)系表
2004年的春節(jié)和元旦差20天,這樣2004年的信息表示為:21,42H,52H,21H。其中
表示12個(gè)月大小信息的字,第4位和第7位不用。第1個(gè)字節(jié)為十進(jìn)制,其它的都為十六
進(jìn)制。按此方法,50年的陽(yáng)歷和陰歷對(duì)應(yīng)關(guān)系表總共使用200字節(jié)。有了算法和數(shù)據(jù)以后,
就可設(shè)計(jì)軟件了。先要根據(jù)當(dāng)前陽(yáng)歷的日期,算出陽(yáng)歷為該年中的第幾天。圖3.8為計(jì)算
陽(yáng)歷中任何一天在該年中為第幾天的程序流程圖。
計(jì)算出當(dāng)前陽(yáng)歷日期為該年中的第幾天后,再減去陽(yáng)歷該年春節(jié)和元旦的日差,如果夠
減.則相減的結(jié)果就是陰歷在該年的總第幾天了。根據(jù)該數(shù)據(jù)就可以推算出具體的當(dāng)前陰歷
日期;如果不夠減,則表示當(dāng)?shù)年帤v年為陽(yáng)歷年的前一年。這種情況下,根據(jù)實(shí)際、當(dāng)前陰
歷日期會(huì)處十陰歷11月或12月,此時(shí)春節(jié)和元旦的日差減去前面計(jì)算出的當(dāng)前陽(yáng)歷日期在
陽(yáng)歷年為第幾天的數(shù)據(jù).其結(jié)果表示當(dāng)?shù)年帤v日期離春節(jié)的天數(shù)。計(jì)算出的陽(yáng)歷天數(shù)為該年
的第幾天,存放在寄存器只2和只3中。計(jì)算出天數(shù)后,如果大于#FFH,則把#FFH存放在
R2中,余值存放在R3中。也就是說(shuō)在用寄存器R2和R3表示的天數(shù)信息中.R2充當(dāng)主寄存
器,數(shù)據(jù)先存滿R2,再存R3。整個(gè)轉(zhuǎn)換程序中,這里面的數(shù)據(jù)不能被覆蓋。
計(jì)算出陽(yáng)歷總天數(shù)后,就可以根據(jù)它來(lái)推算陰歷日期。推算方法是,先用總天數(shù)減去春
節(jié)相元旦的日差,如果結(jié)果為1,則該天正好是春節(jié)(因?yàn)榇汗?jié)在元旦之后,在計(jì)算春節(jié)和
幾旦的日差0時(shí),假設(shè)元旦為0天,春節(jié)為M天,則日差為M。而前面計(jì)算的陽(yáng)歷總天數(shù)是
該天在該年
中的第幾天,是以元旦為1而得到的,與計(jì)算春節(jié)和元旦日差的這種方法相比,其數(shù)值少了
1.所以要在原來(lái)本應(yīng)該以0作為該天就是春節(jié)的依據(jù)的基礎(chǔ)上加1,所以以1作為該天是
春節(jié)的標(biāo)志);如果結(jié)果小于1,則陰歷應(yīng)該是陽(yáng)歷的前一年;如果結(jié)果大于1,說(shuō)明陽(yáng)歷和
陰歷為同一年。再根據(jù)查表所得的該年的陰歷的閏月和大小月的信息,就可以推算出該大的
陰歷日期
了。圖3.9為由總天數(shù)推算出陰歷日期的程序流程圖。
圖9推算陰歷日期的程序流程圖
四、調(diào)試總結(jié)及改進(jìn)
(1)DS1302與微處理器進(jìn)行數(shù)據(jù)交換時(shí),首先由微處理器向電路發(fā)送命令字節(jié),命令字
節(jié)最高位MSB(D7)必須為邏輯1,如果D7=0,則禁止寫(xiě)DS1302,即寫(xiě)保護(hù):D6=0,指
定時(shí)鐘數(shù)據(jù),D6=1,臃RAM數(shù)據(jù);D5?D1指定輸入或輸出的特定寄存器:最低位LSB(DO)
為邏輯0,指定寫(xiě)操作(輸入),D0=1,指定讀操作(輸出)。在DS1302的時(shí)鐘日歷或RAM
進(jìn)行數(shù)據(jù)傳送時(shí),DS1302必須首先發(fā)送命令字節(jié)。若進(jìn)行單字節(jié)傳送,8位命令字節(jié)傳送
結(jié)束之后,在下2個(gè)SCLK周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8個(gè)SCLK周期的下降沿
輸出數(shù)據(jù)字節(jié)。DS1302與RAM相關(guān)的寄存器分為兩類(lèi):一類(lèi)是單個(gè)RAM單元,共31
個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H?FDH,其中奇數(shù)為讀操作,
偶數(shù)為寫(xiě)操作;再一類(lèi)為突發(fā)方式下的RAM寄存器,在此方式下可一次性讀、寫(xiě)所有的
RAM的31個(gè)字節(jié)。
(2)在仿真頭調(diào)試時(shí)候,我發(fā)現(xiàn)在LED顯示板上能夠正常顯示數(shù)字,但是秒位不能記數(shù),
檢查DS1302的連接(沒(méi)有錯(cuò),接觸也良好),說(shuō)明了這片DS1302不能記數(shù),然后換掉
DS1302后此時(shí)不但可以正常顯示數(shù)字,而且可以正常記數(shù),說(shuō)明剛才那片是壞的。
(3)(2M)晶振的調(diào)試,在調(diào)試晶振的時(shí)候發(fā)現(xiàn),在沒(méi)有給電路同電的時(shí)候,晶振兩端輸
出波形是個(gè)不穩(wěn)定的正弦波,而通電后也是個(gè)正弦波,但是中間一個(gè)引腳接地時(shí)候,波形比
較穩(wěn)定,接示波器時(shí)間長(zhǎng)了,發(fā)現(xiàn)DS1302很發(fā)燙(時(shí)間很短內(nèi)溫度達(dá)到很高),但是不
接示波器,時(shí)間長(zhǎng)點(diǎn)也不會(huì)出現(xiàn)發(fā)燙現(xiàn)象。我認(rèn)為是示波器引腳上的電和電路板上的電相通
的原因。
五元器件
主控器AT89c52一片、時(shí)鐘芯片DS1302一片、10P瓷片電容2個(gè)、22P瓷片電容3個(gè),
32.768K(時(shí)鐘晶體)1片、510歐排電阻3個(gè)、共陽(yáng)LED19片,9012三極管1片、8550三極
管7個(gè),2M晶體1片、74LS104三片、發(fā)光二極管一個(gè)、按鈕開(kāi)關(guān)2個(gè)、萬(wàn)能電路板(大
小個(gè)I個(gè)),5V電源一個(gè)、導(dǎo)線若干。
六、參考書(shū)目
1、李振聲.實(shí)驗(yàn)電子技術(shù)(P182?193).國(guó)防工業(yè)大學(xué)出版社,2001年
2李飛光單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)北京航空航天大學(xué)出版社2004年
七程序調(diào)試
SCLKEQUP3.2
10EQUP3.3
RSTEQUP3.4
YEARDATA66H
MONTHDATA65H
WEEKDATA64H
DAYDATA63H
HOURDATA62H
MINTUEDATA61H
SECONDDATA60H
DS1302.ADDRDATA32H
DS1302_DATADATA31H
ORG0000H
AJMPSTART
ORG0003H
RETI
ORG000BH
RETI
ORG0013H
RETI
ORG001BH
LJMPINTT1
ORG0023H
RETI
ORG002BH
RETI
START:SETBEA
MOVSCON,#OOH
MOVTMOD,#10H
MOVTL1,#OOH
MOVTH1,#OOH
MOVDS1302_ADDR,#8EH
MOVDS1302_DATA,#00H
LCALLWRITE
MOVDS1302_ADDR,#90H
MOVDS1302_DATA,#0A6H
LCALLWRITE
MAIN1:MOVDS1302_ADDR,#8DH
LCALLREAD
MOVYEAR,DS1302_DATA
MOVDS1302_ADDR,#8BH
LCALLREAD
MOVWEEK,DS1302_DATA
MOVDS1302_ADDR,#89H
LCALLREAD
MOVMONTH,DS1302_DATA
MOVDS1302_ADDR,#87H
LCALLREAD
MOVDAY,DS1302_DATA
MOVDS1302_ADDR,#85H
LCALLREAD
MOVHOUR,DS1302_DATA
MOVDS1302_ADDR,#83H
LCALLREAD
MOVMINTUE,DS1302_DATA
MOVDS1302_ADDR,#81H
LCALLREAD
MOVSECOND,DS1302_DATA
MOVRO,YEAR
LCALLDIVIDE
MOV7BH,R1
MOV4BH,R1
MOV7CH,R2
MOV4CH,R2
MOV78H,WEEK
MOV48H,WEEK
MOVRO,MONTH
LCALLDIVIDE
MOV79H,R1
MOV49H,R1
MOV7AH,R2
MOV4AH,R2
MOVRO,DAY
LCALLDIVIDE
MOV76H,R1
MOV46H,R1
MOV77H,R2
MOV47H,R2
MOVRO,HOUR
LCALLDIVIDE
MOV74H,R1
MOV44H,R1
MOV75H,R2
MOV45H,R2
MOVR0,MINTUE
LCALLDIVIDE
MOV72H,R1
MOV42H,R1
MOV73H,R2
MOV43H,R2
MOVRO,SECOND
LCALLDIVIDE
MOV7OH,R1
MOV4OH,R1
MOV71H,R2
MOV41H,R2
LCALLDISPLAY
LCALLGENGXIAN
JNBP1.2,NUM
JNBP1.1,SETG
JNBFO,SSS
CLRPL3
LJMPMAIN1
sss:SETBP1.3
LJMPMAIN1
NUM:MOVMONTH,#OAAH
MOVHOUR,#OAAH
MOVMINTUE,#OAAH
MOVSECOND,#04H
MOVRO,MONTH
LCALLDIVIDE
MOV79H,R1
MOV49H,R1
MOV7AH,R2
MOV4AH,R2
MOVRO,HOUR
LCALLDIVIDE
MOV74H,R1
MOV44H,R1
MOV75H,R2
MOV45H,R2
MOVR0,MINTUE
LCALLDIVIDE
MOV72H,R1
MOV42H,R1
MOV73H,R2
MOV43H,R2
MOVRO,SECOND
LCALLDIVIDE
MOV7OH,R1
MOV4OH,R1
MOV71H,R2
MOV41H,R2
LCALLDISPLAY
JNBP1.2,NUM
LJMPMAIN1
SETG:SETBTRI
SETBET1
CLR08H
CLR09H
CLROAH
CLROBH
CLROCH
CLRODH
CLROEH
CLROFH
MOVDS1302_ADDR,#8EH
MOVDS1302_DATA,#00H
LCALLWRITE
MOVDS1302_ADDR,#80H
MOVDS1302_DATA,#80H
LCALLWRITE
GWAIT:LCALLDISPLAY
JNBP1.1,GWAIT
SETG1:LCALLDISPLAY
JNBP1.1,SETG2
JNBP1.2,GADDYEAR
AJMPSETG1
GADDYEAR:MOVR7,66H
LCALLADD1
MOV66H,A
CJNEA,#51H,GADDYEAR1
MOV66H,#01H
GADDYEAR1:MOVDS1302_ADDR,#8CH
MOVDS1302_DATA,66H
LCALLWRITE
MOVR0,66H
LCALLDIVIDE
MOV4BH,R1
MOV7BH,R1
MOV4CH,R2
MOV7CH,R2
WAITT1:LCALLDISPLAY
JNBP1.2,WAITT1
AJMPSETG1
SETG2:SETBOAH
GWAIT2:LCALLDISPLAY
JNBP1.1,GWAIT2
SETG3:LCALLDISPLAY
JNBP1.1,SETG4
JNBP1.2,GADDMONTH
AJMPSETG3
GADDMONTH:MOVR7.65H
LCALLADD1
MOV65H,A
CJNEA,#13H,GADDMONTH1
MOV65H,#01H
GADDMONTH1:MOVDS1302_ADDR,#88H
MOVDS1302_DATA,65H
LCALLWRITE
MOVR0,65H
LCALLDIVIDE
MOV79H,R1
MOV49H,R1
MOV7AH,R2
MOV4AH,R2
WAITT2:LCALLDISPLAY
JNBP1.2,WAITT2
AJMPSETG3
SETG4:SETBOBH
GWAIT4:LCALLDISPLAY
JNBP1.1,GWAIT4
SETG5:LCALLDISPLAY
JNBP1.1,SETG6
JNBP1.2,GADDDAY
AJMPSETG5
GADDDAY:MOVR7,63H
LCALLADD1
MOV63H,A
CJNEA,#32H,GADDDAY1
MOV63H,#01H
GADDDAY1:MOVDS1302_ADDR,#86H
MOVDS1302_DATA,63H
LCALLWRITE
MOVR0,63H
LCALLDIVIDE
MOV76H,R1
MOV46H,R1
MOV77H,R2
MOV47H,R2
WAITT3:LCALLDISPLAY
JNBP1.2,WAITT3
AJMPSETG5
SETG6:SETBOCH
GWAIT6:LCALLDISPLAY
JNBP1.1,GWAIT6
SETG7:LCALLDISPLAY
JNBP1.1,SETG8
JNBP1.2,GADDWEEK
AJMPSETG7
GADDWEEK:MOVR7,64H
LCALLADD1
MOV64H,A
CJNEA,#08H,GADDWEEK1
MOV64H,#01H
GADDWEEK1:MOVDS1302_ADDR,#8AH
MOVDS1302_DATA,64H
LCALLWRITE
MOVR0,64H
LCALLDIVIDE
MOV48H,R1
MOV78H,R1
WAITT4:LCALLDISPLAY
JNBP1.2,WAITT4
AJMPSETG7
SETG8:SETBODH
GWAIT8:LCALLDISPLAY
JNBP1.LGWAIT8
SETG9:LCALLDISPLAY
JNBPl.1,SETGIO
JNBPl.2,GADDHOUR
AJMPSETG9
GADDHOUR:MOVR7,62H
LCALLADD1
MOV62H,A
CJNEA,#24H,GADDHOUR1
MOV62H,#00H
GADDHOUR1:MOVDS1302_ADDR,#84H
MOVDS1302_DATA,62H
LCALLWRITE
MOVR0,62H
LCALLDIVIDE
MOV74H,R1
MOV44H,R1
MOV75H,R2
MOV45H,R2
WAITT5:LCALLDISPLAY
JNBPI.2,WAITT5
AJMPSETG9
SETGIO:SETBOEH
GWAITT10:LCALLDISPLAY
JNBP1.1,GWAITT1O
SETG1I:LCALLDISPLAY
JNBP1.1,SETGOUT
JNBP1.2,GADDMINTUE
AJMPSETG11
GADDMINTUE:MOVR7,61H
LCALLADD1
MOV61H,A
CJNEA,#6OH,GADDMINTUE1
MOV61H,#OOH
GADDMINTUEkMOVDS1302_ADDR,#82H
MOVDS1302_DATA,61H
CALLWRITE
MOVR0,61H
LCALLDIVIDE
MOV72H,R1
MOV42H,R1
MOV73H,R2
MOV43H,R2
WAITT6:LCALLDISPLAY
JNBP1.2,WAITT6
AJMPSETG11
SETGOUT:LCALLDISPLAY
JNBP1.1,SETGOUT
LCALLGENGXIAN
MOVDS1302_ADDR,#80H
MOVDS1302_DATA,#00H
LCALLWRITE
MOVDS1302_ADDR,#8EH
MOVDS1302_DATA,#80H
LCALLWRITE
CLR08H
CLR09H
CLROAH
CLROBH
CLROCH
CLRODH
CLROEH
CLROFH
CLRET1
CLRTRI
UMPMAIN1
INTT1:PUSHACC
PUSHPSW
GFLASH:CPLOFH
JBOFH,GFLASH1
MOV7CH,4CH
MOV7BH,4BH
MOV7AH,4AH
MOV79H,49H
MOV78H,48H
MOV77H,47H
MOV76H,46H
MOV75H,45H
MOV74H,44H
MOV73H,43H
MOV72H,42H
MOV71H,41H
MOV70H,40H
GFLASHOUT:POPPSW
POPACC
RETI
GFLASH1:JB0AH.GFLASH2
MOV7CH,#0AH
MOV7BH,#0AH
AJMPGFLASHOUT
GFLASH2:JB0BH,GFLASH3
MOV7AH,#0AH
MOV79H,#0AH
AJMPGFLASHOUT
GFLASH3:JB0CH,GFLASH4
MOV77H,#0AH
MOV76H,#0AH
AJMPGFLASHOUT
GFLASH4:JB0DH,GFLASH5
MOV78H,#0AH
AJMPGFLASHOUT
GFLASH5:JB0EH,GFLASH6
MOV75H,#0AH
MOV74H,#0AH
AJMPGFLASHOUT
GFLASH6:MOV73H,#0AH
MOV72H,#0AH
AJMPGFLASHOUT
ADD1:MOVA,R7
ADDA,#01H
DAA
RET
DIVIDE:MOVA,RO
ANLA,#0FH
MOVRI,A
MOVA,RO
SWAPA
ANLA,#0FH
MOVR2,A
RET
WRITE:CLRSCLK
NOP
SETBRST
NOP
MOVA,DS1302_ADDR
MOVR4,#8
WRITE1:RRCA
NOP
NOP
CLRSCLK
NOP
NOP
NOP
MOVIO,C
NOP
NOP
NOP
SETBSCLK
NOP
NOP
DJNZREWRITE1
CLRSCLK
NOP
MOVA,DS1302_DATA
MOVR4,#8
WRITE2:RRCA
NOP
CLRSCLK
NOP
NOP
MOVIO,C
NOP
NOP
NOP
SETBSCLK
NOP
NOP
DJNZR4,WRITE2
CLRRST
RET
READ:CLRSCLK
NOP
NOP
SETBRST
NOP
MOVA,DS1302_ADDR
MOVR4,#8
READ1:RRCA
NOP
MOVIO,C
NOP
NOP
NOP
SETBSCLK
NOP
NOP
NOP
CLRSCLK
NOP
NOP
DJNZR4,READ1
MOVR4,#8
READ2:CLRSCLK
NOP
NOP
NOP
MOVCJO
NOP
NOP
NOP
NOP
NOP
RRCA
NOP
NOP
NOP
NOP
SETBSCLK
NOP
DJNZR4,READ2
MOVDS1302_DATA,A
CLRRST
RET
BCD_10:MOVA,RO
ANLA,#0FH
MOVRI,A
MOVA,RO
SWAPA
ANLA,#0FH
MOVB,#10
MULAB
ADDA,RI
MOVRO,A
RET
CHECKMONTH:LCALLBCD_10
MOVA,RO
MOVB,#04
MULAB
MOVRI,A
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVR7,A
INCRI
MOVA,RI
MOVCA,@A+DPTR
MOVR6,A
INCRI
MOVA,RI
MOVCA,@A+DPTR
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 24851-2024建筑材料行業(yè)能源計(jì)量器具配備和管理要求
- 2025版互聯(lián)網(wǎng)平臺(tái)開(kāi)發(fā)合同中知識(shí)產(chǎn)權(quán)許可與保密條款規(guī)定3篇
- 2025版xxx知識(shí)產(chǎn)權(quán)轉(zhuǎn)讓合同補(bǔ)充協(xié)議3篇
- 幼兒園放學(xué)接送須知
- 污水處理廠防水防腐施工合同
- 學(xué)?;S池設(shè)施安裝合同
- 超市實(shí)習(xí)生招聘協(xié)議書(shū)
- 房地產(chǎn)開(kāi)發(fā)招投標(biāo)資格預(yù)審政策
- 2025年籃球場(chǎng)體育器材專(zhuān)業(yè)維護(hù)與升級(jí)施工合同3篇
- 2025版機(jī)械設(shè)備購(gòu)銷(xiāo)居間服務(wù)合同范本正規(guī)范本3篇
- 低壓鑄造典型缺陷及防止
- 2015年日歷表(超清晰A4打印版)
- 剪式汽車(chē)舉升機(jī)設(shè)計(jì)
- 健康證體檢表
- 廣東省涉水建設(shè)項(xiàng)目洪水影響評(píng)價(jià) - gd
- 市政橋梁工程施工
- 橋梁設(shè)計(jì)計(jì)算實(shí)例_橋梁課程設(shè)計(jì)1
- 長(zhǎng)線法節(jié)段梁預(yù)制施工方案wgm
- 旅行社績(jī)效考核管理制度及考核細(xì)則含考核表
- (完整版)醫(yī)療器械軟件描述文檔.doc
- 垃圾轉(zhuǎn)運(yùn)站設(shè)計(jì)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論