版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 單片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p> 項(xiàng)目:作息時(shí)間表系統(tǒng)設(shè)計(jì) </p><p><b> 一、題目</b></p><p> 作息時(shí)間表系統(tǒng)設(shè)計(jì)——用89C51設(shè)計(jì)一個(gè)6位LED數(shù)碼顯示“作息時(shí)間表系統(tǒng)”,顯示時(shí)間為00—00—00 ~ 23時(shí)—59分
2、—59秒,每秒自動(dòng)加一。另設(shè)計(jì)4個(gè)按鈕,分別是“分狀態(tài)”按鍵、“分加1”按鍵、“時(shí)狀態(tài)”按鍵,“時(shí)加1”按鍵。用于進(jìn)行小時(shí)和分鐘的調(diào)整。這就是一個(gè)完整的具有時(shí)、分、秒顯示的單片機(jī)實(shí)時(shí)鐘系統(tǒng)。</p><p><b> 二、增加功能</b></p><p> 在上述實(shí)時(shí)鐘系統(tǒng)的基礎(chǔ)上,在控制軟件鐘增加一個(gè)“作息時(shí)間表”,如圖1 所示,并增加對(duì)該表的查詢功能模塊,依據(jù)
3、對(duì)該表的查詢結(jié)果,控制喇叭,進(jìn)行課間打鈴提示,完成單片機(jī)作息時(shí)間表系統(tǒng)的設(shè)計(jì)。也完成本次課程設(shè)計(jì)。</p><p><b> 三、內(nèi)容提要</b></p><p> 本設(shè)計(jì)利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合sl-100、sl-200系統(tǒng)上的集成電路芯片8052、LED數(shù)碼管以及按鍵來(lái)設(shè)計(jì)計(jì)時(shí)器。將軟、硬件有機(jī)地結(jié)合起來(lái),使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),數(shù)
4、碼管能夠正確地顯示時(shí)間。其中本設(shè)計(jì)中的四個(gè)開(kāi)關(guān)按鍵:其中一個(gè)按鍵按下去時(shí),系統(tǒng)進(jìn)入秒調(diào)整狀態(tài),然后,秒加1鍵每按一次,秒計(jì)時(shí)器加1。時(shí)狀態(tài)按下時(shí),系統(tǒng)進(jìn)入時(shí)調(diào)整狀態(tài),時(shí)按鍵每按一次,時(shí)計(jì)數(shù)器加1。本設(shè)計(jì)運(yùn)行開(kāi)始時(shí),各按鍵回到各初始位置,即都處于1狀態(tài)。計(jì)時(shí)顯示從00:00:00開(kāi)始,依據(jù)秒加1為單位進(jìn)行顯示計(jì)時(shí)。</p><p><b> 三、實(shí)驗(yàn)?zāi)康?lt;/b></p><
5、;p> 1、 通過(guò)本次課程設(shè)計(jì)加深對(duì)單片機(jī)課程的全面認(rèn)識(shí)復(fù)習(xí)和掌握,對(duì)嵌入式系統(tǒng)的應(yīng)用進(jìn)一步的了解。</p><p> 2、 掌握定時(shí)器、外部中斷的設(shè)置和編程原理。</p><p> 3、 通過(guò)此次課程設(shè)計(jì)能夠?qū)纹瑱C(jī)軟硬件結(jié)合起來(lái),對(duì)程序進(jìn)行編輯,校驗(yàn)。</p><p><b> 四、意義</b></p><
6、p> 該實(shí)驗(yàn)通過(guò)單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和計(jì)數(shù)原理,設(shè)計(jì)單片機(jī)作息時(shí)間表系統(tǒng),擁有正確的計(jì)時(shí)、顯示、時(shí)間調(diào)整等功能,并同時(shí)可以用數(shù)碼管顯示,在現(xiàn)實(shí)生活中應(yīng)用廣泛,具有現(xiàn)實(shí)意義。</p><p><b> 五、本人所做工作</b></p><p> 根據(jù)相關(guān)的單片機(jī)材料,利用所學(xué)的單片機(jī)知識(shí),結(jié)合sl-100單片機(jī)微機(jī)實(shí)驗(yàn)系統(tǒng)中的軟件和硬件(集成電路芯片8
7、952,七段數(shù)碼管,開(kāi)關(guān)電路及時(shí)鐘信號(hào)電路,按鍵等),編寫(xiě)能夠?qū)崿F(xiàn)該設(shè)計(jì)的軟件程序,最后將軟、硬件有機(jī)的結(jié)合起來(lái),進(jìn)行有效的調(diào)試,達(dá)到完成該實(shí)驗(yàn)課程設(shè)計(jì)的目的要求。</p><p><b> 六、設(shè)計(jì)內(nèi)容</b></p><p> 用AT89C51設(shè)計(jì)一個(gè)6位LED數(shù)碼顯示“實(shí)時(shí)鐘”,顯示時(shí)間為00:00:00秒,每秒自動(dòng)加一。另設(shè)計(jì)一個(gè)“時(shí)狀態(tài)”按鍵和一個(gè)“時(shí)加
8、1 ”按鍵。再增加一個(gè)“分狀態(tài)”按鍵和一個(gè)“分加1”按鍵。</p><p> 在以上設(shè)計(jì)的基礎(chǔ)上,在在控制軟件系統(tǒng)中增加作息時(shí)間表功能,驅(qū)動(dòng)喇叭去完成作息時(shí)間控制的功能。</p><p><b> 七、設(shè)計(jì)思路及描述</b></p><p> 該實(shí)驗(yàn)要求進(jìn)行計(jì)時(shí)并在數(shù)碼管上顯示時(shí)間,則可利用sl-100單片機(jī)實(shí)驗(yàn)系統(tǒng)中的芯片AT89C52
9、,中的P3管腳做為外部按鍵輸入,并實(shí)現(xiàn)各個(gè)按鍵的功能;定時(shí)器T0作為每10~50毫秒加一的定時(shí)器。在內(nèi)部RAM中開(kāi)辟10~50MS計(jì)數(shù)器,秒計(jì)數(shù)器、分計(jì)數(shù)器、時(shí)計(jì)數(shù)器。單片機(jī)依據(jù)定時(shí)器T0的定時(shí)時(shí)間,進(jìn)行秒、分、時(shí)的累加,并將秒、分、時(shí)數(shù)據(jù)轉(zhuǎn)換為7段LED顯示段碼,送LED顯示器,從而完成單片機(jī)實(shí)時(shí)鐘系統(tǒng)的設(shè)計(jì)。注意,為了輸出顯示方便,時(shí)、分、秒的累加計(jì)時(shí)可以采用BCD碼運(yùn)算。 。</p>
10、<p><b> 八、原理圖</b></p><p> 九、課程設(shè)計(jì)參考匯編程序</p><p> ;*******************************</p><p> ; 按鍵可調(diào)作息時(shí)間電子鐘</p><p><b> ; </b></p>
11、;<p><b> ;</b></p><p> ;Date 2007.7.6 </p><p> ;Created by 李強(qiáng) </p><p> ;*******************************</p><p> ;**********************
12、*********</p><p> ; 顯示緩沖區(qū)定義</p><p> ;*******************************</p><p> Seclequ50h</p><p> Sechequ51h</p><p> Minlequ52h</p><p&
13、gt; Minhequ53h</p><p> Hourlequ54h</p><p> Hourhequ55h</p><p> ;*******************************</p><p> ; 時(shí)鐘計(jì)數(shù)單元定義</p><p> ;******************
14、*************</p><p> msequ56h</p><p> secequ57h</p><p> minequ58h</p><p> hourequ59h</p><p> flashequ5ah</p><p> timecequ5b
15、h</p><p> bpcountequ5ch</p><p> codepequ5dh</p><p> ;*******************************</p><p><b> ; 按鍵定義</b></p><p> ;*****************
16、**************</p><p> keymbit p3.0</p><p> keym1bitp3.1</p><p> keym_1 bitp3.2</p><p> keyhbitp3.3</p><p> keyh1bitp3.4</p><p>
17、; keyh_1bit p3.5</p><p> ;keytime bitp3.6</p><p><b> ;按鍵狀態(tài)標(biāo)志</b></p><p> m_keybit00h</p><p> h_keybit01h</p><p> flashbbit02h
18、</p><p> timebit03h</p><p> timegbit04h</p><p> ;*******************************</p><p> ; 共陽(yáng)數(shù)碼管段碼</p><p> ;*******************************</p
19、><p> ;DispTab: </p><p> ;db 0c0h,0f9h,0a4h,0b0h,99h</p><p> ;db 92h,82h,0f8h,80h,90h,0ffh</p><p><b> org 0080h</b></p><p> Tab:
20、 </p><p> DB 0C0H, 0F9H, 0A4H, 0B0H, 99H; 01234</p><p> DB 92H, 82H, 0F8H, 80H, 90H ; 56789</p><p> DB 88H, 83H, 0C6H, 0A1H, 86H; ABCDE</p><p> DB
21、 8EH,0FFh</p><p> ;*******************************</p><p><b> ; 作息時(shí)間碼</b></p><p> ;*******************************</p><p><b> org00b0h</b&g
22、t;</p><p><b> timetab:</b></p><p> db00h,00h,15h</p><p> db00h,00h,30h</p><p> db00h,01h,00h</p><p> db10h,00h,15h</p><p>
23、; db00h,03h,00h</p><p> db13h,00h,15h</p><p> db20h,30h,00h</p><p> db00h,00h,45h</p><p> db0ffh,0ffh,0ffh</p><p> ;****************************
24、***</p><p> ; 中斷地址表設(shè)置</p><p> ;*******************************</p><p><b> org0000h</b></p><p><b> ajmpmain</b></p><p><b&
25、gt; org0003h</b></p><p><b> reti</b></p><p><b> org000bh</b></p><p> ajmpintt0</p><p><b> org0013h</b></p><
26、;p><b> reti</b></p><p><b> org001bh</b></p><p> ajmpintt1</p><p><b> org0023h</b></p><p><b> reti</b></p&g
27、t;<p> ;*******************************</p><p><b> ; main程序</b></p><p> ;*******************************</p><p><b> org0100h</b></p><
28、p><b> main:</b></p><p> movsp,#60h</p><p> movr7,#0fh</p><p> movr0,#50h</p><p> mova,#00h</p><p><b> mov20h,a</b><
29、;/p><p><b> clrm_key</b></p><p><b> clrh_key</b></p><p> clrd:mov@r0,a</p><p><b> incr0</b></p><p> djnzr7,clrd
30、</p><p> movtmod,#11h</p><p> movth0,#3ch</p><p> movtl0,#0b0h</p><p> movth1,#3ch</p><p> movtl1,#0b0h</p><p> movms,#00h</p&g
31、t;<p> movflash,#00h</p><p><b> setbea</b></p><p><b> setbet0</b></p><p><b> setbet1</b></p><p><b> setbtr0&l
32、t;/b></p><p><b> clrtimeg</b></p><p><b> clrtr1</b></p><p> cont: lcalldisplay</p><p> lcallkeytest</p><p> ;jnbtime
33、,cont</p><p> lcallbeep</p><p><b> ajmpcont</b></p><p> ;*******************************</p><p><b> ; beep程序</b></p><p> ;*
34、******************************</p><p><b> beep:</b></p><p> movtimec,hour</p><p> movcodep,#0fdh</p><p> movdptr,#timetab</p><p> beph:
35、mova,codep</p><p><b> inca</b></p><p><b> inca</b></p><p><b> inca</b></p><p> movcodep,a</p><p> movca,@a+
36、dptr</p><p><b> movb,a</b></p><p> xrla,#0ffh</p><p><b> jzexitb</b></p><p><b> mova,b</b></p><p> cjnea,time
37、c,beph</p><p> movtimec,min</p><p><b> deccodep</b></p><p><b> deccodep</b></p><p> bepm:mova,codep</p><p><b> inc
38、a</b></p><p><b> inca</b></p><p><b> inca</b></p><p> movcodep,a</p><p> movca,@a+dptr</p><p><b> movb,a</
39、b></p><p> xrla,#0ffh</p><p><b> jzexitb</b></p><p><b> mova,b</b></p><p> cjnea,timec,bepm</p><p> movtimec,sec</p
40、><p><b> deccodep</b></p><p><b> deccodep</b></p><p> bepsec:mova,codep</p><p><b> inca</b></p><p><b> inc
41、a</b></p><p><b> inca</b></p><p> movcodep,a</p><p> movca,@a+dptr</p><p><b> movb,a</b></p><p> xrla,#0ffh</p&
42、gt;<p><b> jzexitb</b></p><p><b> mova,b</b></p><p> cjnea,timec,bepsec</p><p> setbtimeg</p><p><b> clrcodep</b>&l
43、t;/p><p> ;ajmp exitbb</p><p> exitb:;clrtimeg</p><p> exitbb:clrcodep</p><p><b> clrtimec</b></p><p><b> ret</b></p&g
44、t;<p> ;*******************************</p><p> ; keytest 程序</p><p> ;key0--P3.0,狀態(tài)鍵盤(pán)</p><p> ;key1==P3.1,加1鍵</p><p> ;*******************************<
45、;/p><p><b> keytest:</b></p><p><b> setbkeym</b></p><p> setbkeym1</p><p><b> setbkeyh</b></p><p> setbkeyh1</
46、p><p> setbkeym_1</p><p> setbkeyh_1</p><p> jnbkeym,keydelay</p><p> jnbkeym1,keydelay</p><p> jnbkeym_1,keydelay</p><p> jnbkeyh,ke
47、ydelay</p><p> jnbkeyh1,keydelay</p><p> jnbkeyh_1,keydelay</p><p> ;jnbkeytime,keydelay</p><p> ajmpexitskey</p><p><b> keydelay:</b>
48、</p><p> lcall delay10ms</p><p> jnbkeym,keymp</p><p> jnbkeym1,keym1p</p><p> jnbkeym_1,keym_1p</p><p> jnbkeyh,keyhp</p><p> jnb
49、keyh1,keyh1p</p><p> jnbkeyh_1,keyh_1p</p><p> ;jnbkeytime,keytimep</p><p> ajmpexitskey</p><p> keymp:ajmpkeympp</p><p> keym1p:ajmpkeym1pp<
50、;/p><p> keym_1p:ajmpkeym_1pp</p><p> keyhp:ajmpkeyhpp</p><p> keyh1p:ajmpkeyh1pp</p><p> keyh_1p:ajmpkeyh_1pp</p><p> ;keytimep:ajmptimep</p&g
51、t;<p> ;timep:jnbkeytime,$</p><p> ;jbcm_key,exitkeyt</p><p> ;jbch_key,exitkeyt</p><p> ;cpltime</p><p> ;ajmp exitskey</p><p> k
52、eympp:jnbkeym,$</p><p> jbcm_key,exitkeyt</p><p> jbch_key,exitkeyt</p><p> setbm_key</p><p><b> setbet1</b></p><p><b> setbt
53、r1</b></p><p><b> clrtr0</b></p><p> ajmpexitskey</p><p> exitkeyt:ajmpexitkey</p><p> keyhpp:jnbkeyh,$</p><p> jbcm_key,exitk
54、ey</p><p> jbch_key,exitkey</p><p> setbh_key</p><p><b> setbet1</b></p><p><b> setbtr1</b></p><p><b> clrtr0</b
55、></p><p> ajmpexitskey</p><p> keym1pp:jnbkeym1,$</p><p> jnbm_key,exitkey</p><p><b> mova,min</b></p><p><b> adda,#1</b&
56、gt;</p><p><b> daa</b></p><p><b> movmin,a</b></p><p> cjnea,#60h,$+3</p><p><b> jcexitsm</b></p><p> movmin,
57、#00h</p><p> exitsm:ajmpexitskey</p><p> keym_1pp:jnbkeym_1,$</p><p> jnbm_key,exitkey</p><p><b> mova,min</b></p><p> jnzexitm_1<
58、;/p><p> mova,#60h</p><p> exitm_1:clrc</p><p><b> subba,#1</b></p><p><b> movb,a</b></p><p> anla,#0fh</p><p>
59、 cjnea,#0fh,exm</p><p><b> mova,b</b></p><p> subba,#06h</p><p><b> sjmp$+3</b></p><p> exm:mova,b</p><p><b> mov
60、min,a</b></p><p> ajmpexitskey</p><p> keyh_1pp:jnbkeyh_1,$</p><p> jnbh_key,exitkey</p><p> mova,hour</p><p> jnzexith_1</p><p
61、> mova,#24h</p><p> exith_1:clrc</p><p><b> subba,#1</b></p><p><b> movb,a</b></p><p> anla,#0fh</p><p> cjnea,#0fh,
62、exh</p><p><b> mova,b</b></p><p> subba,#06h</p><p><b> sjmp$+3</b></p><p> exh:mova,b</p><p> movhour,a</p><
63、p> ajmpexitskey</p><p> keyh1pp:jnbkeyh1,$</p><p> jnbh_key,exitkey</p><p> mova,hour</p><p><b> adda,#1</b></p><p><b> da
64、a</b></p><p> movhour,a</p><p> cjnea,#24h,$+3</p><p><b> jcexitsh</b></p><p> movhour,#00h</p><p> exitsh:ajmpexitskey</p&
65、gt;<p> exitkey:setbtr0</p><p><b> clret1</b></p><p><b> clrtr1</b></p><p><b> exitskey:</b></p><p><b> ret<
66、/b></p><p> ;*******************************</p><p> ; display 程序</p><p> ;*******************************</p><p><b> display:</b></p><p&
67、gt; mova,sec;顯示緩沖區(qū)更新</p><p><b> movb,a</b></p><p> anla,#0fh</p><p> movsecl,a</p><p><b> mova,b</b></p><p> anla,#0f0
68、h</p><p><b> swapa</b></p><p> movsech,a</p><p><b> mova,min</b></p><p><b> movb,a</b></p><p> anla,#0fh</
69、p><p> movminl,a</p><p><b> mova,b</b></p><p> anla,#0f0h</p><p><b> swapa</b></p><p> movminh,a</p><p> mova
70、,hour</p><p><b> movb,a</b></p><p> anla,#0fh</p><p> movhourl,a</p><p><b> mova,b</b></p><p> anla,#0f0h</p><
71、p><b> swapa</b></p><p> movhourh,a</p><p><b> ; 顯示更新</b></p><p> movdptr,#Tab</p><p> mov a,secl</p><p> movca,@a+
72、dptr</p><p><b> movp0,a</b></p><p> movp2,#0feh</p><p> lcalldelay1ms</p><p> mov a,sech</p><p> movca,@a+dptr</p><p>
73、;<b> movp0,a</b></p><p> movp2,#0fdh</p><p> lcalldelay1ms</p><p> jnbm_key,dmin</p><p> jnbflashb,dmin</p><p> movminl,#16</p&g
74、t;<p> movminh,#16</p><p> dmin:mov a,minl</p><p> movca,@a+dptr</p><p><b> movp0,a</b></p><p> movp2,#0fbh</p><p> lcall
75、delay1ms</p><p> mov a,minh</p><p> movca,@a+dptr</p><p><b> movp0,a</b></p><p> movp2,#0f7h</p><p> lcalldelay1ms</p><
76、;p> jnbh_key,dhour</p><p> jnbflashb,dhour</p><p> movhourl,#16</p><p> movhourh,#16</p><p><b> dhour:</b></p><p> mov a,hour
77、l</p><p> movca,@a+dptr</p><p><b> movp0,a</b></p><p> movp2,#0efh</p><p> lcalldelay1ms</p><p> mov a,hourh</p><p>
78、 movca,@a+dptr</p><p><b> movp0,a</b></p><p> movp2,#0dfh</p><p> lcalldelay1ms</p><p><b> ret</b></p><p> ;**************
79、*****************</p><p><b> ; 延時(shí) 程序</b></p><p> ;*******************************</p><p><b> delay1ms:</b></p><p> movr7,#10</p>&l
80、t;p> d1ms:movr6,#100</p><p><b> djnzr6,$</b></p><p> djnzr7,d1ms</p><p><b> ret</b></p><p> delay10ms:</p><p> movr7,
81、#100</p><p> d10ms:movr6,#100</p><p><b> djnzr6,$</b></p><p> djnzr7,d10ms</p><p><b> ret</b></p><p> ;*******************
82、************</p><p> ; T0 50ms 中斷 程序</p><p> ;*******************************</p><p> intt0: ;lcall beep</p><p><b> pushacc</b></p><p>&
83、lt;b> pushpsw</b></p><p> ;lcall beep</p><p><b> clrtr0</b></p><p><b> clrc</b></p><p> mova,#0b8h</p><p><b&g
84、t; adda,tl0</b></p><p><b> movtl0,a</b></p><p> mova,#3ch</p><p><b> addca,#0</b></p><p><b> movth0,a</b></p>
85、<p><b> setbtr0</b></p><p><b> mova,ms</b></p><p><b> inca</b></p><p><b> movms,a</b></p><p> cjnea,#20,
86、eout</p><p> movms,#00h</p><p><b> mova,sec</b></p><p><b> adda,#1</b></p><p><b> daa</b></p><p><b> mov
87、sec,a</b></p><p> cjnea,#60h,eout</p><p> movsec,#00h</p><p><b> mova,min</b></p><p><b> adda,#1</b></p><p><b>
88、; daa</b></p><p><b> movmin,a</b></p><p> cjnea,#60h,eout</p><p> movmin,#00h</p><p> mova,hour</p><p><b> adda,#1</
89、b></p><p><b> daa</b></p><p> movhour,a</p><p> cjnea,#24h,eout</p><p> movhour,#00h</p><p> eout:jnbtimeg,eeout</p><p
90、> movtmod,#21h</p><p> movth1,#156</p><p> movtl1,#156</p><p><b> setbtr1</b></p><p><b> ;cplp3.3</b></p><p> incbpc
91、ount</p><p> mova,bpcount</p><p> cjnea,#100,eeout</p><p> movbpcount,#0</p><p><b> clrtimeg</b></p><p><b> clrtimec</b>&
92、lt;/p><p><b> setbp3.3</b></p><p> movtmod,#11h</p><p><b> clrtr1</b></p><p><b> clrtimec</b></p><p><b> cl
93、rcodep</b></p><p> eeout: ;lcallbeep</p><p><b> poppsw</b></p><p><b> popacc</b></p><p><b> reti</b></p><p
94、> ;*******************************</p><p> ; T1 50ms 中斷 程序</p><p> ;*******************************</p><p><b> intt1:</b></p><p><b> pushacc
95、</b></p><p><b> pushpsw</b></p><p> jnbtimeg,exit_int1</p><p> ;movth1,#0d8h</p><p> ;movtl1,#0f0h</p><p><b> cplp3.3<
96、/b></p><p> ;incbpcount</p><p> ;mova,bpcount</p><p> ;cjnea,#200,exitt1</p><p> ;movbpcount,#00h</p><p> ;clrtimeg</p><p><b&
97、gt; ;clrtr1</b></p><p> ;setbp3.3</p><p> sjmpexitnt1</p><p> exit_int1:</p><p> ;movtmod,#11h</p><p><b> incflash</b></p&g
98、t;<p> mova,flash</p><p> cjnea,#5,exitnt1</p><p> movflash,#0</p><p> cplflashb;閃爍標(biāo)志取反</p><p><b> exitnt1:</b></p><p> movt
99、h1,#3ch</p><p> movtl1,#0b0h</p><p> exitt1:poppsw</p><p><b> popacc</b></p><p><b> reti</b></p><p> end </p>
100、;<p> 十、課程設(shè)計(jì)C51參考程序</p><p> clock.c 文件</p><p> /*******************************</p><p><b> 電子表C源程序</b></p><p> Date 2007.7.11 </p><
101、;p> Created by 李強(qiáng) </p><p> *******************************/</p><p> #include"clock.h"</p><p> /*******************************</p><p><b> 主程
102、序</b></p><p> ********************************/</p><p><b> main()</b></p><p><b> {</b></p><p> TMOD=0x11;</p><p><b>
103、; ET0=1;</b></p><p><b> ET1=1;</b></p><p><b> EA=1;</b></p><p><b> TH0=0x3c;</b></p><p><b> TL0=0xb0;</b><
104、/p><p><b> TH1=0x3c;</b></p><p><b> TL1=0xb0;</b></p><p><b> TR0=1;</b></p><p><b> while(1)</b></p><p><
105、;b> {</b></p><p><b> disp();</b></p><p><b> beep();</b></p><p><b> key();</b></p><p><b> }</b></p>
106、<p><b> }</b></p><p> clock.h 文件</p><p> #include<at89x51.h></p><p> /*******************************</p><p><b> 數(shù)據(jù)類型聲明</b></
107、p><p> ********************************/</p><p> #define uint unsigned int</p><p> typedef unsigned char uchar;</p><p> /*******************************</p>&
108、lt;p><b> 全局?jǐn)?shù)據(jù)類型聲明</b></p><p> ********************************/ </p><p> typedef struct { /* structure of the time record */</p><p> uchar h
109、our; /* hour */</p><p> uchar min; /* minute */</p><p> uchar sec; /* second
110、 */</p><p> ucharms; /* 50 ms */</p><p><b> }time;</b></p><p> typedef struct { /* structure of the time record
111、 */</p><p> uchar hourh; /* hour */</p><p> uchar hourl;</p><p> uchar minh; /* minute
112、 */</p><p> uchar minl;</p><p> uchar sech; </p><p> uchar secl; /* second */</p><p><b> }timebuf;</b></p><
113、;p> typedef struct { /* structure of the time record */</p><p> uchar hour; /* hour */</p><p> uchar min;
114、 /* minute */</p><p> uchar sec; /* second */</p><p><b> }timetab;</b></p><p> /*****
115、**************************</p><p><b> 函數(shù)原型聲明</b></p><p> ********************************/</p><p> void delay1ms();</p><p> void delay10ms();</p>
116、;<p> void disp();</p><p> void beep();</p><p> void scankey();</p><p> void key_min_state();</p><p> void key_min_plus();</p><p> void
117、key_min_sub();</p><p> void key_hour_state();</p><p> void key_hour_plus();</p><p> void key_hour_sub();</p><p> void key();</p><p> function.c 文件
118、</p><p> #include"clock.h"</p><p> /*******************************</p><p><b> 數(shù)碼管共陽(yáng)段碼表</b></p><p> ********************************/</p>
119、;<p> uchar code DispCode[17]={</p><p> 0xc0,0xf9,0xa4,0xb0,</p><p> 0x99,0x92,0x82,0xf8,</p><p> 0x80,0x90,0x88,0x83,</p><p> 0xc6,0xa1,0x86,0x8e,</p>
120、;<p><b> 0xff</b></p><p><b> };</b></p><p> /*******************************</p><p><b> 初始時(shí)間值</b></p><p> **************
121、******************/</p><p> extern timebuf data dtimebuf = { 0, 0, 0, 0, 0, 0 };</p><p> extern time data ctime = { 12, 0, 0, 0 };</p><p> uint count;</p><p> u
122、int count_flash;</p><p> bit beeph;</p><p> bit flash_flag;</p><p> /*******************************</p><p><b> 作息時(shí)間表</b></p><p> ********
123、************************/ </p><p> timetab code code_time[10]={</p><p><b> 12,30,15,</b></p><p><b> 12,30,30,</b></p><p><b> 12,30,45
124、,</b></p><p><b> 12,20,45,</b></p><p><b> 12,03,00,</b></p><p><b> 12,01,00,</b></p><p> 0xff,0xff,0xff,</p><p&
125、gt;<b> };</b></p><p> /*******************************</p><p><b> 按鍵I/O口定義</b></p><p> /********************************/ </p><p> sbitke
126、ymin= 0xb0;</p><p> sbitkeymin_plus = 0xb1;</p><p> sbitkeymin_sub= 0xb2;</p><p> sbitkeyhour= 0xb3;</p><p> sbitkeyhour_plus= 0xb4;</p><p&
127、gt; sbitkeyhour_sub= 0xb5 ;</p><p> /*******************************</p><p><b> 時(shí)間調(diào)整定義</b></p><p> ********************************/ </p><p> b
128、itmin_flag;</p><p> bithour_flag;</p><p> /*******************************</p><p><b> 顯示函數(shù)實(shí)現(xiàn)</b></p><p> ********************************/</p>
129、<p> void disp()</p><p><b> {</b></p><p> dtimebuf.secl=DispCode[ctime.sec%10];</p><p> dtimebuf.sech=DispCode[ctime.sec/10];</p><p> dtimebuf.m
130、inl=DispCode[ctime.min%10];</p><p> dtimebuf.minh=DispCode[ctime.min/10];</p><p> dtimebuf.hourl=DispCode[ctime.hour%10];</p><p> dtimebuf.hourh=DispCode[ctime.hour/10];</p>
131、;<p> if(flash_flag)</p><p><b> {</b></p><p> if(min_flag)</p><p><b> {</b></p><p> P0=dtimebuf.secl;</p><p><b>
132、 P2=0xfe;</b></p><p> delay1ms();</p><p> P0=dtimebuf.sech;</p><p><b> P2=0xfd;</b></p><p> delay1ms();</p><p> P0=dtimebuf.hourl;&l
133、t;/p><p><b> P2=0xef;</b></p><p> delay1ms();</p><p> P0=dtimebuf.hourh;</p><p><b> P2=0xdf;</b></p><p> delay1ms();</p>&
134、lt;p><b> }</b></p><p> if (hour_flag) </p><p><b> {</b></p><p> P0=dtimebuf.secl;</p><p><b> P2=0xfe;</b></p><p&
135、gt; delay1ms();</p><p> P0=dtimebuf.sech;</p><p><b> P2=0xfd;</b></p><p> delay1ms();</p><p> P0=dtimebuf.minl;</p><p><b> P2=0xfb;
136、</b></p><p> delay1ms();</p><p> P0=dtimebuf.minh;</p><p><b> P2=0xf7;</b></p><p> delay1ms();</p><p><b> }</b></p>
137、;<p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> P0=dtimebuf.secl;</p><p><b> P2=0xfe;</b></p&
138、gt;<p> delay1ms();</p><p> P0=dtimebuf.sech;</p><p><b> P2=0xfd;</b></p><p> delay1ms();</p><p> P0=dtimebuf.minl;</p><p><b>
139、; P2=0xfb;</b></p><p> delay1ms();</p><p> P0=dtimebuf.minh;</p><p><b> P2=0xf7;</b></p><p> delay1ms();</p><p> P0=dtimebuf.hourl;
140、</p><p><b> P2=0xef;</b></p><p> delay1ms();</p><p> P0=dtimebuf.hourh;</p><p><b> P2=0xdf;</b></p><p> delay1ms();</p>
141、<p><b> }</b></p><p><b> }</b></p><p> /*******************************</p><p> timer0 中斷函數(shù)實(shí)現(xiàn)</p><p> *******************************
142、*/</p><p> void intt0(void) interrupt 1 using 1</p><p><b> {</b></p><p><b> TH0=0x3c;</b></p><p><b> TL0=0xb0;</b></p>&l
143、t;p> if(++ctime.ms==20)</p><p><b> {</b></p><p> ctime.ms=0;</p><p> if(++ctime.sec==60)</p><p><b> {</b></p><p> ctime.se
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 作息時(shí)間表
- 考研作息時(shí)間表
- 教學(xué)作息時(shí)間表
- 我的作息時(shí)間表
- 江南小學(xué)作息時(shí)間表
- 單片機(jī)作息時(shí)間控制器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--課設(shè)作息時(shí)間控制
- 官林中學(xué)作息時(shí)間表
- 秋季作息時(shí)間表(華師一)
- 實(shí)小新校區(qū)作息時(shí)間表
- 城陽(yáng)區(qū)實(shí)驗(yàn)中學(xué)作息時(shí)間表
- 運(yùn)城學(xué)院夏季作息時(shí)間表
- 養(yǎng)殖場(chǎng)作息時(shí)間表
- 養(yǎng)殖場(chǎng)作息時(shí)間表
- 幼兒園作息時(shí)間表
- 清潔班作息時(shí)間表_secret
- 昆山玉峰學(xué)校作息時(shí)間表
- 江蘇洪澤中學(xué)作息時(shí)間表
- 保育員作息時(shí)間表
- 雅思學(xué)習(xí)作息時(shí)間表
評(píng)論
0/150
提交評(píng)論