




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)數(shù)字時鐘課程設(shè)計課 程 設(shè) 計 (報 告)課 程 設(shè) 計 題 目: 數(shù)字時鐘 學(xué) 院 名 稱: 電子與信息工程學(xué)院 專 業(yè): 電氣工程及其自動化 班 級: 姓 名: 學(xué) 號 指 導(dǎo) 教 師: 日 期: 2012.12.292013.01.1121單片機(jī)數(shù)字時鐘課程設(shè)計1 課程設(shè)計任務(wù) 1.用80c51設(shè)計一個數(shù)字時鐘 2.可顯示時、分、秒 3.按鍵實現(xiàn)時、分、秒人工校準(zhǔn) 二總體方案本次課程設(shè)計選用通用的80c51芯片,顯示單元為實驗箱的液晶1602顯示單元,選用ds1302時鐘芯片,利用矩陣鍵盤進(jìn)行調(diào)時。1.80c51簡介雖然目前單片機(jī)的品種很多,但其中最具代表性的當(dāng)屬intel公司的m
2、cs-51單片機(jī)系列。mcs-51以其典型的結(jié)構(gòu)、完善的總線、sfr的集中管理模式、位操作系統(tǒng)和面向控制功能的豐富的指令系統(tǒng),為單片機(jī)的發(fā)展奠定了良好的基礎(chǔ)。mcs-51系列的典型芯片是80c51(chmos型的8051)。為此,眾多的廠商都介入了以80c51為代表的8位單片機(jī)的發(fā)展,如philips、siemens(infineon)、dallas、atmel等公司,我們把這些公司生產(chǎn)的與80c51兼容的單片機(jī)統(tǒng)稱為80c51系列。特別是在近年來,80c51系列又有了許多發(fā)展,推出了一些新產(chǎn)品,主要是改善單片機(jī)的控制功能,如內(nèi)部集成了高速i/o口、adc、pwm、wdt等,以及低電壓、微功耗
3、、電磁兼容、串行擴(kuò)展總線和控制網(wǎng)絡(luò)總線性能等。 單片機(jī)內(nèi)部結(jié)構(gòu)圖為如圖所示 80c51單片機(jī)管腳說明vcc:供電電壓。gnd:接地。 p0口:p0口為一個8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p1口的管腳第一次寫1時,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時,p0口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗時,p0輸出原碼,此時p0外部必須被拉高。 p1口:p1口是一個內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時,將輸出
4、電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗時,p1口作為第八位地址接收。 p2口:p2口為一個內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個ttl門電流,當(dāng)p2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,p2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗時接收高八位地址信號和控制信號。 p3口:p3口管腳是8
5、個帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。 p3口也可作為80c51的一些特殊功能口,如下所示: 口管腳備選功能p3.0 rxd串行輸入口p3.1 txd串行輸出口p3.2 /int0外部中斷0p3.3 /int1外部中斷1p3.4 t0記時器0外部輸入p3.5 t1記時器1外部輸入p3.6 /wr外部數(shù)據(jù)存儲器寫選通p3.7 /rd外部數(shù)據(jù)存儲器讀選通2. 時鐘芯片ds1302簡介:ds13021是美國dallas公司推出的一種高性能、低功
6、耗、帶ram的實時時鐘芯片,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,且具有閏年補(bǔ)償功能,工作電壓寬達(dá)2.55.5v。時鐘可工作在24小時格式或12小時(am/pm)格式。 ds1302與單片機(jī)的接口使用同步串行通信,僅用3條線與之相連接??刹捎靡淮蝹魉鸵粋€字節(jié)或突發(fā)方式一次傳送多個字節(jié)的時鐘信號或ram數(shù)據(jù)。ds1302內(nèi)部有一個318的用于臨時性存放數(shù)據(jù)的ram寄存器。ds1302是ds1202的升級產(chǎn)品,與ds1202兼容,但增加了主電源后背電源雙電源引腳,同時提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。2.1. ds1302引腳功能與內(nèi)部結(jié)構(gòu)ds1302的引腳功能如表1所示,外形及內(nèi)部
7、結(jié)構(gòu)如圖1所示2:引腳號引腳名稱功能1vcc2主電源2、3x1、x2振蕩源,外接32768hz晶振4gnd地線5rst復(fù)位/片選線6i/o串行數(shù)據(jù)輸入/輸出端(雙向)7sclk串行時鐘輸入端8vcc1后備電源表1 ds1302引腳功能表圖1 ds1302管腳圖及內(nèi)部結(jié)2.2 ds1302的控制字ds1302的控制字節(jié)如圖2所示: 7 6 5 4 3 2 1 01rama4a3a2a1a0ram 圖2 ds1302控制字節(jié)的含義控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到ds1302中。位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1指示操作單
8、元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。2.3 ds1302的復(fù)位引腳通過把輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。 輸入有兩種功能:首先,接通控制邏輯,允許地址命令序列送入移位寄存器;其次,提供了終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對ds1302進(jìn)行操作。如果在傳送過程中置為低電平,則會終止此次數(shù)據(jù)傳送,并且i/o引腳變?yōu)楦咦钁B(tài)。上電運行時,在vcc2.5v之前,必須保持低電平。只有在sclk為低電平時,才能將rst置為高電平。2.4 ds1302的數(shù)據(jù)輸入輸出在控制指令字輸入后的下一個scl
9、k時鐘的上升沿時數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個sclk脈沖的下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位至高位7,數(shù)據(jù)讀寫時序如圖3所示:圖3 數(shù)據(jù)讀寫時序2.5 ds1302的寄存器ds1302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為bcd碼形式。其日歷、時間寄存器及其控制字見表2。此外,ds1302還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與ram相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器的內(nèi)容。 ds1302與ram相關(guān)的寄存器分為兩類,一類是單個ram單
10、元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為c0h-fdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的ram寄存器,此方式下可一次性讀寫所有的ram的31個字節(jié),命令控制字為feh(寫)、ffh(讀)ds1302內(nèi)部寄存器列表如表所示:寄存器名稱命令字取值范圍各位內(nèi)容寫讀76543210秒寄存器80h81h00-59ch10secsec分寄存器82h83h00-59010minmin小時寄存器84h85h01-12或00-2312/240ahrhr日期寄存器86h87h01-28,29,30,310010datedate月份寄存器88h89h01-1200010mmon
11、th周寄存器8ah8bh01-0700000day年份寄存器8ch8dh00-9910yearyear3.lcd1602液晶顯示簡介:lcd1602通常有14條引腳線或16條引腳線的lcd,多出來的2條線是背光電源線vcc(15腳)和地線gnd(16腳),其控制原理與14腳的lcd完全一樣,引腳定義如下表所示: 4. 矩陣鍵盤 矩陣鍵盤如實驗圖所示,h1接地,l1、l2、l3、l4分別控制時鐘的調(diào)時。其中l(wèi)1為調(diào)設(shè)置鍵,l2為加鍵,l3為減鍵,l4為調(diào)時確定鍵。三硬件設(shè)計部分1. 硬件設(shè)計流程圖: 80c51 仿真單元ds1302時鐘芯片 矩陣鍵盤 調(diào)時控制液晶顯示單元2. 實驗原理圖:4 軟
12、件設(shè)計部 1.軟件設(shè)計流程圖:開始 液晶初始化ds1302初始化 調(diào)整模塊檢測按鍵液晶顯示ds18b20初始化yn實驗程序代碼:rwbitp2.1rsbitp2.0ebitp2.7sclkbitp0.1siobitp0.0rstbitp0.2yhequ80hehequ0c0horg 0000hjmp mainorg 0040hmain:mov30h,#00h;30h36h存放 時分秒日月星期年mov31h,#00hmov32h,#00hmov33h,#01hmov34h,#01hmov35h,#02hmov36h,#13h mov 37h,#00h;37h存放 設(shè)置鍵按了幾下 call lcd
13、init;調(diào)用1602初始化 call dsinit;調(diào)用1302初始化st1:mova,37hjnzst2;查看設(shè)置有沒有被按call read;讀1302內(nèi)容對應(yīng)存入30h36h call xs;讀30h36h在1602中顯示st2:call keyhn;查看有沒有按下的 jz st1have:calld100ms;延遲 去抖動 call keyhn;再查看按鍵 jnz true;真的有按下true: jb acc.3,k1;跳到k1對應(yīng)有設(shè)置鍵的內(nèi)容 jb acc.4,k2;+1 jb acc.5,k3;1 jb acc.6,k4;確定 jmp st1k1: inc37h;增加按的次數(shù)
14、mov r4,37hcjner4,#1,l2l1: mova,#yh+3;按1下對應(yīng)年的位置callwrcmova,#0fh;1602的光標(biāo)設(shè)置為閃爍callwrcjmpst1l2:cjner4,#2,l3;2下月的位置mova,#yh+6callwrcjmpst1l3:cjner4,#3,l4;日期的mova,#yh+9callwrcjmpst1l4:cjner4,#4,l5;星期的mova,#yh+0dhcallwrcjmpst1l5:cjner4,#5,l6;時mova,#eh+3callwrcjmpst1l6:cjner4,#6,l7;分mova,#eh+6callwrcjmpst1l
15、7:cjner4,#7,l8;秒mova,#eh+9callwrcjmpst1l8:mova,#0ch;返回callwrcmov37h,#00h;光標(biāo)去閃爍calldsinit;1302初始化 jmp st1k2:mov r4,37h call jia;調(diào)用加1的子程序 call xs;1602顯示 call gb;把光標(biāo)顯示位 確定在設(shè)置位上 jmp st1k3:mov r4,37h call jian;減的 以下同理 call xs call gb jmp st1k4:mov 37h,#00h;37h內(nèi)容歸零返回 mov a,#0ch;去光標(biāo) call wrc call dsinit;13
16、02初始化 jmpst1d100ms:movr5,#100;延遲子程序d1ms:movr4,#249dl:nopnopdjnzr4,dldjnzr5,d1msretkeyhn:movp3,#78h;按鍵查看子程序 mov a,p3 cpl a anl a,#78h retlcdinit:;1602初始化子程序mova,#01h;清屏callwrcmova,#38h;設(shè)置液晶工作模式16*2行顯示5*7點陣8位數(shù)據(jù)callwrcmova,#0ch;開顯示不顯示光標(biāo)callwrcmova,#06h;整屏不移動,光標(biāo)自動右移callwrcmova,#yh;顯示位置 在1602第一行首 yh80hca
17、llwrc mov a,#32h;以下為在第一行顯20 call wrd mov a,#30h call wrd mov a,#20h call wrd mov a,#20h call wrd mov a,#2dh call wrd mov a,#20h call wrd mov a,#20h call wrd mov a,#2dh call wrd mov a,#20h call wrd mov a,#20h call wrd mov a,#eh+2;以下在第二顯 : : call wrc mov a,#20h call wrd mov a,#20h call wrd mov a,#3ah
18、call wrd mov a,#20h call wrd mov a,#20h call wrd mov a,#3ah call wrd mov a,#20h call wrd mov a,#20h call wrd call xs retxs: callwriteyear call writeweek call writey call writer call writes call writef call writemcbusy:pushacc;檢查忙pushdphpushdplpushpswweit:clrrssetbrwclresetbemova,p1clrejbacc.7,weitpo
19、ppswpopdplpopdphpopacccalldelayretwrc:callcbusy;寫命令字clreclrrsclrrwsetbemovp1,aclrecalldelayretwrd:callcbusy;寫數(shù)據(jù)clresetbrsclrrwsetbemovp1,aclrecalldelayretdelay:movr7,#5lp1:movr6,#0f8hdjnzr6,$djnzr7,lp1retwrb:mov40h,#8h;1302寫命令字lpw:mova,brrcamovb,amovsio,csetbsclkclrsclkdjnz40h,lpwretrdb:mov40h,#8;讀數(shù)
20、據(jù)lpr:movc,siorrcasetbsclkclrsclkdjnz40h,lprretread:movr0,#30h;讀數(shù)據(jù) 存放在30h36hmovr7,#7movr1,#81hloop2: clrrstclrsclksetbrstmovb,r1callwrbcallrdbmovr0,aincr0incr1incr1setbsclkclrrstdjnzr7,loop2retdsinit:clrrst;1302初始化子程序clrsclksetbrstmovb,#8ehcallwrbmovb,#00hcallwrbsetbsclkclrrst mov r0,#30h mov r7,#7 m
21、ov r1,#80hloop: clr rst clr sclk setb rst mov b,r1 call wrb mov a,r0 mov b,a call wrb inc r0 inc r1 inc r1 setb sclk clr rst djnz r7,loopretwrites: mova,#eh+2;1602顯示寫時callwrcmova,32hmovb,#10hdivab add a,#30hcallwrdmova,b add a,#30hcallwrd retwritef: mova,#eh+5;1602顯示寫分callwrcmova,31hmovb,#10hdivab a
22、dd a,#30hcallwrdmova,b add a,#30hcallwrd retwritem: mova,#eh+8;1602顯示寫秒callwrcmova,30hmovb,#10hdivab add a,#30hcallwrdmova,b add a,#30hcallwrd retwritey:mov a,#yh+5;1602顯示寫月 call wrc mov a,34h mov b,#10h div ab add a,#30h call wrd mov a,b add a,#30h call wrd retwriter:mov a,#yh+8;1602顯示寫日 call wrc m
23、ov a,33h mov b,#10h div ab add a,#30h call wrd mov a,b add a,#30h call wrd retwriteyear:;1602顯示寫年mova,#yh+2callwrcmova,36h mov b,#10h div ab add a,#30hcallwrd mov a,b add a,#30h call wrdretwriteweek:;寫星期mova,#yh+0dhcallwrcmova,35hmon:cjnea,#1,tuemova,#4dhcallwrdmova,#4fhcallwrdmova,#4ehcallwrdmova,3
24、5htue:cjne a,#2,wedmova,#54hcallwrdmova,#55hcallwrdmova,#45hcallwrdmova,35hwed:cjnea,#3,thumova,#57hcallwrdmova,#45hcallwrdmova,#44hcallwrdmova,35hthu:cjnea,#4,frimova,#54hcallwrdmova,#48hcallwrdmova,#55hcallwrdmova,35hfri:cjnea,#5,satmova,#46hcallwrdmova,#52hcallwrdmova,#49hcallwrdmova,35hsat:cjnea
25、,#6,sunmova,#53hcallwrdmova,#41hcallwrdmova,#54hcallwrdmova,35hsun: mova,#53hcallwrdmova,#55hcallwrdmova,#4ehcallwrdretjia: cjne r4,#0,j1;設(shè)置內(nèi)容+1子程序 沒有按就返回掃描鍵盤 retj1: cjne r4,#1,j2;以下分別都是先判斷是不是邊界數(shù)是回到可能的初值 mov a,36h;再判斷個位是否為9是+7 不是+1 anl a,#0fh cjne a,#9,jw1 mov a,#07h add a,36h mov 36h,a retjw1: inc
26、36hretj2: cjne r4,#2,j3 mov a,34h cjne a,#12h,jww1 mov 34h,#01h retjww1: anl a,#0fh cjne a,#9,jw2 mov a,#07h add a,34h mov 34h,a retjw2: inc 34h retj3: cjne r4,#3,j4 mov a,33h cjne a,#31h,jww2 mov 33h,#01h retjww2: anl a,#0fh cjne a,#9,jw3 mov a,#07h add a,33h mov 33h,a retjw3: inc 33h retj4: cjne r
27、4,#4,j5 mov a,35h cjne a,#7,jww3 mov 35h,#01h retjww3: inc 35h retj5: cjne r4,#5,j6 mov a,32h cjne a,#23h,jww4 mov 32h,#00h retjww4: anl a,#0fh cjne a,#9,jw4 mov a,#07h add a,32h mov 32h,a retjw4: inc 32h retj6: cjne r4,#6,j7 mov a,31h cjne a,#59h,jww5 mov 31h,#00h retjww5: anl a,#0fh cjne a,#9,jw5
28、mov a,#07h add a,31h mov 31h,a retjw5: inc 31h retj7: mov a,30h cjne a,#59h,jww6 mov 30h,#00h retjww6: anl a,#0fh cjne a,#9,jw6 mov a,#07h add a,30h mov 30h,a retjw6: inc 30h retjian: cjne r4,#0,d1;設(shè)置位減1的子程程序 原理同上 retd1: cjne r4,#1,d2 mov a,36h cjne a,#0,dw1 mov 36h,#99h retdw1: anl a,#0fh jz dww1 dec 36h retdww1: mov a,36h subb a,#07h mov 36h,a retd2: cjne r4,#2,d3 mov a,34h cjne a,#1,dw2 mov 34h,#12h retdw2: anl a,#0fh jz dww2 dec 34h retdww2: mov a,34h subb a,#07h mov 34h,a retd3: cjne r4,#3,d4 mov a,33h cjne a,#01h,dw3 mov 33h,#31h retdw3: anl a,#0fh jz dww3 dec 3
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 木材加工企業(yè)的信息化建設(shè)與管理考核試卷
- 化工產(chǎn)品批發(fā)商銷售團(tuán)隊激勵與培訓(xùn)實踐考核試卷
- 冷凍飲品行業(yè)企業(yè)發(fā)展戰(zhàn)略與實施路徑考核試卷
- 半導(dǎo)體照明器件的振動測試考核試卷
- 家具品牌形象塑造考核試卷
- 機(jī)床附件的行業(yè)競爭格局與市場定位考核試卷
- 國際貿(mào)易中的社會責(zé)任與合規(guī)性考核試卷
- 成人高考物理電磁學(xué)綜合應(yīng)用考核試卷
- 小學(xué)生師生互動課件
- 耗材供應(yīng)合同范本
- 剪紙藝術(shù)-認(rèn)識剪紙
- 駕駛員違規(guī)違章學(xué)習(xí)記錄表
- PID烙鐵恒溫控制器設(shè)計與制作_圖文
- wincc全套腳本總結(jié)
- 簡易瞬態(tài)工況法1
- 中國鐵路總公司環(huán)境保護(hù)管理辦法(鐵總計統(tǒng)〔2015〕260號)
- 醫(yī)療器械全生命周期風(fēng)險管理
- 技術(shù)分析介紹教程課件
- 環(huán)境與健康第六講居室環(huán)境與健康
- 國家計委、建設(shè)部計價格[2002]10號工程勘察設(shè)計收費管理規(guī)定
- 故事小羊過橋PPT課件
評論
0/150
提交評論