版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《智能儀表課程設(shè)計》設(shè)計報告</p><p> 課題名稱 數(shù)字電子時鐘 </p><p> 姓名 </p><p> 學(xué)號 </p><p> 班級名稱 測控0801 <
2、;/p><p> 指導(dǎo)教師 </p><p><b> 二〇一一年九月</b></p><p><b> 目錄</b></p><p> 任務(wù)書-------------------------------------------------------
3、-1~2</p><p> 儀表的功能要求及性能指標(biāo)-------------------------------3</p><p><b> 硬件設(shè)計</b></p><p> 2.1 MCS-51單片機(jī)------------------------------------------4~5</p><p>
4、 2.2LED驅(qū)動芯片ZLG7290--------------------------------5~7</p><p><b> 軟件設(shè)計</b></p><p> 3.1軟件設(shè)計功能需求--------------------------------------8</p><p> 3.2 軟件設(shè)計框圖---------------
5、---------------------------9~12</p><p> 設(shè)計實物圖---------------------------------------------------13</p><p> 課程設(shè)計總結(jié)------------------------------------------------14~15</p><p><b
6、> 附錄:</b></p><p> 6.1參考文獻(xiàn)------------------------------------------------16</p><p> 6.2器件清單------------------------------------------------16</p><p> 6.3設(shè)計程序-----------
7、--------------------------------------17~42</p><p> 《智能儀表課程設(shè)計》任務(wù)書</p><p><b> 一、課題名稱</b></p><p><b> 時鐘設(shè)計</b></p><p> 二、設(shè)計內(nèi)容及設(shè)計要求</p>&
8、lt;p> 1)由2個4位型數(shù)碼管組成,分別顯示時,分,秒,可以切換顯示年,月,日以及星期</p><p> 2)能夠隨時對時間日期進(jìn)行調(diào)整</p><p> 3)能夠隨時輸入定時鬧鐘</p><p> 4)定時時間到,鬧鐘發(fā)出信號</p><p> 5)具有整點報時功能</p><p> 6)鬧鐘提
9、醒信號為斷續(xù)形式,時間為1分鐘 </p><p><b> 時間安排</b></p><p><b> 第一周:</b></p><p> 星期一~星期二:布置任務(wù),熟悉資料,確定儀表的功能要求、性能指標(biāo)。熟悉實驗板原理圖和印刷板圖。</p><p> 星期三~星期五:進(jìn)行儀表的方案選擇,確
10、定主要芯片、工作方式、輸入輸出信號的接口方式、鍵盤和顯示方式、以及通信方式。進(jìn)行硬件設(shè)計和元器件選擇,畫出硬件原理圖。</p><p><b> 第二周:</b></p><p> 星期一~星期五:根據(jù)硬件原理圖,焊接硬件電路;測試硬件電路的功能;軟件設(shè)計,包括軟件需求說明、軟件結(jié)構(gòu)框圖、主要軟件功能模塊的流程圖;編寫程序。</p><p>
11、;<b> 第三周:</b></p><p> 星期一~星期三:調(diào)試程序,聯(lián)調(diào)軟件和硬件。</p><p> 星期四~星期五:寫課程設(shè)計報告。</p><p><b> 四、應(yīng)交成果</b></p><p><b> 應(yīng)交成果包括:</b></p>&l
12、t;p> 紙質(zhì)課程設(shè)計報告和電子文檔;</p><p> 硬件原理圖的Protel文件,程序;</p><p> 可以演示的硬件和軟件成果</p><p> 1儀表的功能要求、性能指標(biāo)要求</p><p><b> 1.1 初級要求:</b></p><p> 1)用單片機(jī)的定時
13、器產(chǎn)生1s的定時時間,作為秒計數(shù)時間</p><p> 2)當(dāng)1s產(chǎn)生時,秒計數(shù)加1,到60s時歸0并向分鐘進(jìn)1,分鐘到60時歸0并向時進(jìn)1,時到24時歸0并向日進(jìn)1,日通過計算當(dāng)時月份進(jìn)行計數(shù)</p><p> 3)開機(jī)時,顯示00-00-00,并開始計時。鬧鐘初始設(shè)置為00-00-00,日期為11-9-15-5,并開始計時。</p><p><b>
14、; 1.2 中級要求</b></p><p> 在以上基礎(chǔ)上,在單片機(jī)的p1.0--p1.3加入4個鍵</p><p> p1.0 時間設(shè)置鍵,按一次對時進(jìn)行校對,按第二次對分進(jìn)行校對,第三次對秒進(jìn)行校對,再按一下正常顯示。</p><p> P1.1 鬧鐘及日期設(shè)置鍵,按下后開始對鬧鐘進(jìn)行設(shè)置,按一,二,三次分別是對時,分,秒進(jìn)行設(shè)置四,五,六
15、,七次分別是對年,月,日,星期進(jìn)行設(shè)置,再次按下恢復(fù)正常顯示時間。</p><p> 3)P1.2 加鍵,時間設(shè)置或者鬧鈴設(shè)置時加鍵,每按一次加一。</p><p> 4)P1.3 顯示切換鍵,在時間正常顯示時,按下一次后,切換為顯示日期,再次按下則顯示時間。</p><p><b> 2硬件設(shè)計</b></p><p
16、> 2.1 MCS-51單片機(jī)</p><p> MCS-51單片機(jī)的內(nèi)部總體結(jié)構(gòu)其基本特性如下:8位CPU、片內(nèi)振蕩器、4k字節(jié)ROM、128字節(jié)RAM、21個特殊功能寄存器、32根I/O線、可尋址的64k字節(jié)外部數(shù)據(jù)、程序存貯空間、2個16位定時器、計數(shù)器中斷結(jié)構(gòu):具有二個優(yōu)先級、五個中斷源一個全雙口串行口位尋址(即可尋找某位的內(nèi)容)功能,適于按位進(jìn)行邏輯運算的位處理器。除128字節(jié)RAM、4k字節(jié)
17、ROM和中斷、串行口及定時器模塊外,還有4組I/O口P0~P3,余下的就是CPU的全部組成。把4kROM換為EPROM就是8751的結(jié)構(gòu),如去掉ROM/EPROM部分即為8031,如果將ROM置換為Flash存貯器或EEPROM,或再省去某些I/O,即可得到51系列的派生品種,如89C51、AT89C2051等單片機(jī)。單片機(jī)各部分是通過內(nèi)部的總線有機(jī)地連接起來的。 </p><p> 1、運算器 運算器以完成二
18、進(jìn)制的算術(shù)/邏輯運算部件ALU為核心,再加上暫存器TMP、累加器ACC、寄存器B、程序狀態(tài)標(biāo)志寄存器PSW及布爾處理器。 </p><p> 2、控制器 控制器是CPU的神經(jīng)中樞,它包括定時控制邏輯電路、指令寄存器、譯碼器、地址指針DPTR及程序計數(shù)器PC、堆棧指針SP等。這里程序計數(shù)器PC是由16位寄存器構(gòu)成的計數(shù)器。要單片機(jī)執(zhí)行一個程序,就必須把該程序按順序預(yù)先裝入存儲器ROM的某個區(qū)域。單片機(jī)動作時應(yīng)按順
19、序一條條取出指令來加以執(zhí)行。 </p><p> 存儲器是單片機(jī)的又一個重要組成部分,每個存儲單元對應(yīng)一個地址,如256個單元共有256個地址,用兩位16進(jìn)制數(shù)表示,即存儲器的地址(00H~FFH)。 </p><p> 2.2LED驅(qū)動芯片ZLG7290B</p><p> ZLG7290B 是廣州周立功單片機(jī)發(fā)展有限公司自行設(shè)計的數(shù)碼管顯示驅(qū)動及鍵盤掃描管
20、理芯片。能夠直接驅(qū)動8 位共陰式數(shù)碼管(或64 只獨立的LED),同時還可以掃描管理多達(dá)64 只按鍵。其中有8 只按鍵還可以作為功能鍵使用,就像電腦鍵盤上的Ctrl、Shift、Alt 鍵一樣。另外ZLG7290B 內(nèi)部還設(shè)置有連擊計數(shù)器,能夠使某鍵按下后不松手而連續(xù)有效。采用I2C 總線方式,與微控制器的接口僅需兩根信號線。該芯片為工業(yè)級芯片,抗干擾能力強(qiáng),在工業(yè)測控中已有大量應(yīng)用。</p><p> 附:Z
21、LG7290B 引腳功能表</p><p> 引腳序號 引腳名稱 功能描述</p><p> 1 SC/KR2 數(shù)碼管c 段/鍵盤行信號2</p><p> 2 SD/KR3 數(shù)碼管d 段/鍵盤行信號3</p><p> 3 DIG3/KC3 數(shù)碼管位選信號3/鍵盤列信號3</p><p> 4 DIG2/K
22、C2 數(shù)碼管位選信號2/鍵盤列信號2</p><p> 5 DIG1/KC1 數(shù)碼管位選信號1/鍵盤列信號1</p><p> 6 DIG0/KC0 數(shù)碼管位選信號0/鍵盤列信號0</p><p> 7 SE/KR4 數(shù)碼管e 段/鍵盤行信號4</p><p> 8 SF/KR5 數(shù)碼管f 段/鍵盤行信號5</p>&l
23、t;p> 9 SG/KR6 數(shù)碼管g 段/鍵盤行信號6</p><p> 10 DP/KR7 數(shù)碼管dp 段/鍵盤行信號7</p><p> 11 GND 接地12 DIG6/KC6 數(shù)碼管位選信號6/鍵盤列信號6</p><p> 13 DIG7/KC7 數(shù)碼管位選信號7/鍵盤列信號7</p><p> 14 INT 鍵盤中
24、斷請求信號,低電平(下降沿)有效</p><p> 15 RST 復(fù)位信號,低電平有效</p><p> 16 Vcc 電源,+3.3~5.5V</p><p> 17 OSC1 晶振輸入信號</p><p> 18 OSC2 晶振輸出信號</p><p> 19 SCL I2C 總線時鐘信號</p&g
25、t;<p> 20 SDA I2C 總線數(shù)據(jù)信號</p><p> 21 DIG5/KC5 數(shù)碼管位選信號5/鍵盤列信號5</p><p> 22 DIG4/KC4 數(shù)碼管位選信號4/鍵盤列信號4</p><p> 23 SA/KR0 數(shù)碼管a 段/鍵盤行信號0</p><p> 24 SB/KR1 數(shù)碼管b 段/鍵盤
26、行信號1</p><p><b> 總設(shè)計框圖</b></p><p><b> 3軟件設(shè)計</b></p><p> 3.1軟件設(shè)計功能需求</p><p> 1)用單片機(jī)的定時器產(chǎn)生1s的定時時間,作為秒計數(shù)時間</p><p> 2)當(dāng)1s產(chǎn)生時,秒計數(shù)加1,
27、到60s時歸0并向分鐘進(jìn)1,分鐘到60時歸0并向時進(jìn)1,時到24時歸0并向日進(jìn)1,日通過計算當(dāng)時月份進(jìn)行計數(shù)</p><p> 3)開機(jī)時,顯示00-00-00,并開始計時。鬧鐘初始設(shè)置為00-00-00,日期為11-9-05,并開始計時。</p><p> 3.2主要功能模塊的軟件框圖。</p><p><b> T0中斷服務(wù)</b>&
28、lt;/p><p><b> 鍵盤掃描程序</b></p><p><b> 時鐘計時框圖</b></p><p><b> 總設(shè)計框圖</b></p><p><b> 實物圖</b></p><p><b> 課
29、程設(shè)計總結(jié)</b></p><p> 通過此次課程設(shè)計,使我更加扎實的掌握了有關(guān)單片機(jī)方面的知識,在設(shè)計過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經(jīng)驗不足。實踐出真知,通過親自動手制作,使我們掌握的知識不再是紙上談兵。 過而能改,善莫大焉。在課程設(shè)計過程中,我們不斷發(fā)現(xiàn)錯誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的檢
30、測調(diào)試環(huán)節(jié),本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多問題,最后在老師的指導(dǎo)下,終于游逆而解。在今后社會的發(fā)展和學(xué)習(xí)實踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問題所在,然后一一進(jìn)行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠(yuǎn)不可能收獲成功,收獲喜悅,也永遠(yuǎn)不可能得到社會及他人對你的認(rèn)可! 課程設(shè)計誠然
31、是一門專業(yè)課,給我很多專業(yè)知識以及專業(yè)技能上的提升,同時又是一門講道課,一門辯思課,給了我許多道,給了我很多思,給了我莫大的空間。同時,設(shè)計讓我感觸很深。使我對抽象的理論有了具體的認(rèn)識。通過這次課</p><p><b> 附錄</b></p><p><b> 6.1參考文獻(xiàn)</b></p><p> 《單片機(jī)電路
32、設(shè)計分析與制作》 機(jī)械工業(yè)出版社 周景潤</p><p> 《單片機(jī)系統(tǒng)設(shè)計與應(yīng)用實例》 機(jī)械工業(yè)出版社 韓志軍</p><p><b> 6.2 器件清單</b></p><p><b> ZLG7290</b></p><p> STC89C51單片機(jī)</p><p
33、><b> MAX232</b></p><p><b> 4位數(shù)碼管2個</b></p><p><b> 按鈕4個</b></p><p><b> 面板</b></p><p><b> 蜂鳴器</b></
34、p><p><b> 導(dǎo)線若干 </b></p><p><b> 電阻,電容若干</b></p><p><b> 6.3 源程序</b></p><p> #include <reg52.h></p><p> #include
35、"I2C.h"</p><p> #include "ZLG7290.h"</p><p> #define tl 0xba;</p><p> #define th 0x3c;</p><p> sbit time=P1^0;//時間設(shè)置</p><p>
36、 sbit timer=P1^1;//鬧鐘設(shè)置</p><p> sbit add=P1^2;//加</p><p> sbit dec=P1^3;//減</p><p> sbit speaker=P3^5;//鬧鐘輸出</p><p> bit disp_sd;
37、//數(shù)碼管閃動顯示標(biāo)志位</p><p> bit disp_ms;//數(shù)碼管顯示時間/鬧鐘標(biāo)志位</p><p> bit disp_sdt;//數(shù)碼管閃動間隔反轉(zhuǎn)標(biāo)志位</p><p> bit zhengdian=0;//整點報時標(biāo)志位</p><p> bit b=0,
38、a=0;</p><p> unsigned char time_cc,timer_cc;//調(diào)時計數(shù)器</p><p> unsigned char count0,count1,second,minit,hour;//時間時分秒</p><p> unsigned char second1,minit1,hour1;//鬧鐘時分秒&
39、lt;/p><p> unsigned char year,month,day,week,n;</p><p> unsigned char hour_zd;//整點小時記錄</p><p> void delay(void)</p><p><b> {</b></p><p&
40、gt; unsigned int i;</p><p> for(i=0;i<200;i++);</p><p><b> }</b></p><p><b> /*</b></p><p> 函數(shù):SystemInit()</p><p><b>
41、 功能:系統(tǒng)初始化</b></p><p><b> */</b></p><p> void SystemInit()</p><p><b> {</b></p><p> I2C_Init();</p><p> TMOD = 0x01;<
42、/p><p> Delay();//等待ZLG7290復(fù)位完畢</p><p><b> }</b></p><p> void display(void)</p><p><b> {</b></p><p> unsigned dat; </p>
43、<p><b> if(a==0)</b></p><p><b> {</b></p><p> if(disp_ms==0)</p><p><b> {</b></p><p> if(disp_sd==0)</p><p>&
44、lt;b> {</b></p><p> dat=hour/10;</p><p> ZLG7290_Download(7,0,0,dat);</p><p> dat=hour%10;</p><p> ZLG7290_Download(6,0,0,dat);</p><p> ZLG7
45、290_Download(5,0,0,31);</p><p> dat=minit/10;</p><p> ZLG7290_Download(4,0,0,dat);</p><p> dat=minit%10;</p><p> ZLG7290_Download(3,0,0,dat);</p><p>
46、ZLG7290_Download(2,0,0,31);</p><p> dat=second/10;</p><p> ZLG7290_Download(1,0,0,dat);</p><p> dat=second%10;</p><p> ZLG7290_Download(0,0,0,dat);</p><p
47、><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(time_cc==0x01)</p><p><b> {</b></p><p>
48、 dat=hour/10;</p><p> ZLG7290_Download(7,0,1,dat);</p><p> dat=hour%10;</p><p> ZLG7290_Download(6,0,1,dat);</p><p> ZLG7290_Download(5,0,0,31);</p><p&g
49、t;<b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> dat=hour/10;</p><p> ZLG7290_Download(7,0,0,dat);</p><p>
50、 dat=hour%10;</p><p> ZLG7290_Download(6,0,0,dat);</p><p> ZLG7290_Download(5,0,0,31);</p><p><b> }</b></p><p> if(time_cc==0x02)</p><p>
51、<b> {</b></p><p> dat=minit/10;</p><p> ZLG7290_Download(4,0,1,dat);</p><p> dat=minit%10;</p><p> ZLG7290_Download(3,0,1,dat);</p><p>
52、 ZLG7290_Download(2,0,0,31);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> dat=minit/10;</p><p> Z
53、LG7290_Download(4,0,0,dat);</p><p> dat=minit%10;</p><p> ZLG7290_Download(3,0,0,dat);</p><p> ZLG7290_Download(2,0,0,31);</p><p><b> }</b></p>&
54、lt;p> if(time_cc==0x03)</p><p><b> {</b></p><p> dat=second/10;</p><p> ZLG7290_Download(1,0,1,dat);</p><p> dat=second%10;</p><p>
55、 ZLG7290_Download(0,0,1,dat);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> dat=second/10;</p><p>
56、 ZLG7290_Download(1,0,0,dat);</p><p> dat=second%10;</p><p> ZLG7290_Download(0,0,0,dat);</p><p><b> }</b></p><p><b> }</b></p><p
57、><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> if(b==0)</b></p><p><b> {</b></p>
58、<p> if(disp_sd==0)</p><p><b> {</b></p><p> dat=hour1/10;</p><p> ZLG7290_Download(7,0,0,dat);</p><p> dat=hour1%10;</p><p> ZLG729
59、0_Download(6,0,0,dat);</p><p> ZLG7290_Download(5,0,0,31);</p><p> dat=minit1/10;</p><p> ZLG7290_Download(4,0,0,dat);</p><p> dat=minit1%10;</p><p>
60、ZLG7290_Download(3,0,0,dat);</p><p> ZLG7290_Download(2,0,0,31);</p><p> dat=second1/10;</p><p> ZLG7290_Download(1,0,0,dat);</p><p> dat=second1%10;</p><
61、;p> ZLG7290_Download(0,0,0,dat);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(timer_cc==0x01)</p>
62、<p><b> {</b></p><p> dat=hour1/10;</p><p> ZLG7290_Download(7,0,1,dat);</p><p> dat=hour1%10;</p><p> ZLG7290_Download(6,0,1,dat);</p>&l
63、t;p> ZLG7290_Download(5,0,0,31);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> dat=hour1/10;</p><
64、p> ZLG7290_Download(7,0,0,dat);</p><p> dat=hour1%10;</p><p> ZLG7290_Download(6,0,0,dat);</p><p> ZLG7290_Download(5,0,0,31);</p><p><b> }</b></
65、p><p> if(timer_cc==0x02)</p><p><b> {</b></p><p> dat=minit1/10;</p><p> ZLG7290_Download(4,0,1,dat);</p><p> dat=minit1%10;</p><
66、;p> ZLG7290_Download(3,0,1,dat);</p><p> ZLG7290_Download(2,0,0,31);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>&l
67、t;/p><p> dat=minit1/10;</p><p> ZLG7290_Download(4,0,0,dat);</p><p> dat=minit1%10;</p><p> ZLG7290_Download(3,0,0,dat);</p><p> ZLG7290_Download(2,0,0,
68、31);</p><p><b> }</b></p><p> if(timer_cc==0x03)</p><p><b> {</b></p><p> dat=second1/10;</p><p> ZLG7290_Download(1,0,1,dat)
69、;</p><p> dat=second1%10;</p><p> ZLG7290_Download(0,0,1,dat);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b&g
70、t;</p><p> dat=second/10;</p><p> ZLG7290_Download(1,0,0,dat);</p><p> dat=second%10;</p><p> ZLG7290_Download(0,0,0,dat);</p><p><b> }</b>
71、;</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(disp_sd==0)</p&
72、gt;<p><b> {</b></p><p> dat=year/10;</p><p> ZLG7290_Download(7,0,0,dat);</p><p> dat=year%10;</p><p> ZLG7290_Download(6,0,0,dat);</p>
73、<p> dat=month/10;</p><p> ZLG7290_Download(5,0,0,dat);</p><p> dat=month%10;</p><p> ZLG7290_Download(4,0,0,dat);</p><p> dat=day/10;</p><p> Z
74、LG7290_Download(3,0,0,dat);</p><p> dat=day%10;</p><p> ZLG7290_Download(2,0,0,dat);</p><p> ZLG7290_Download(1,0,0,31);</p><p><b> dat=week;</b></p&
75、gt;<p> ZLG7290_Download(0,0,0,dat);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(timer_cc==0x04)<
76、;/p><p><b> {</b></p><p> dat=year/10;</p><p> ZLG7290_Download(7,0,1,dat);</p><p> dat=year%10;</p><p> ZLG7290_Download(6,0,1,dat);</p&g
77、t;<p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> dat=year/10;</p><p> ZLG7290_Download(7,0,0,dat);</p>
78、<p> dat=year%10;</p><p> ZLG7290_Download(6,0,0,dat);</p><p><b> } </b></p><p> if(timer_cc==0x05)</p><p><b> {</b></p>
79、<p> dat=month/10;</p><p> ZLG7290_Download(5,0,1,dat);</p><p> dat=month%10;</p><p> ZLG7290_Download(4,0,1,dat);</p><p><b> }</b></p>&
80、lt;p><b> else</b></p><p><b> {</b></p><p> dat=month/10;</p><p> ZLG7290_Download(5,0,0,dat);</p><p> dat=month%10;</p><p>
81、 ZLG7290_Download(4,0,0,dat);</p><p><b> }</b></p><p> if(timer_cc==0x06)</p><p><b> {</b></p><p> dat=day/10;</p><p> ZLG72
82、90_Download(3,0,1,dat);</p><p> dat=day%10;</p><p> ZLG7290_Download(2,0,1,dat);</p><p><b> }</b></p><p><b> else</b></p><p>&l
83、t;b> {</b></p><p> dat=day/10;</p><p> ZLG7290_Download(3,0,0,dat);</p><p> dat=day%10;</p><p> ZLG7290_Download(2,0,0,dat);</p><p><b>
84、 }</b></p><p> if(timer_cc==0x07)</p><p><b> {</b></p><p> ZLG7290_Download(1,0,0,31);</p><p><b> dat=week;</b></p><p>
85、 ZLG7290_Download(0,0,1,dat);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> ZLG7290_Download(1,0,0,31);</p>
86、;<p><b> dat=week;</b></p><p> ZLG7290_Download(0,0,0,dat);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&g
87、t;</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> dat=year/10;</p&g
88、t;<p> ZLG7290_Download(7,0,0,dat);</p><p> dat=year%10;</p><p> ZLG7290_Download(6,0,0,dat);</p><p> dat=month/10;</p><p> ZLG7290_Download(5,0,0,dat);<
89、/p><p> dat=month%10;</p><p> ZLG7290_Download(4,0,0,dat);</p><p> dat=day/10;</p><p> ZLG7290_Download(3,0,0,dat);</p><p> dat=day%10;</p><p&
90、gt; ZLG7290_Download(2,0,0,dat);</p><p> ZLG7290_Download(1,0,0,31);</p><p><b> dat=week;</b></p><p> ZLG7290_Download(0,0,0,dat);</p><p><b> }&l
91、t;/b></p><p><b> }</b></p><p> void key_scan(void)</p><p><b> {</b></p><p> unsigned int i;</p><p> if(time==0)</p>
92、<p><b> {</b></p><p> speaker=1;</p><p> for(i=0;i<10;i++)</p><p> display();</p><p> if(time==0)</p><p><b> {</b>&l
93、t;/p><p><b> TR0=0;</b></p><p><b> do </b></p><p> display();</p><p> while(time==0);</p><p> disp_sd=1;</p><p> di
94、sp_ms=0;</p><p> time_cc++;</p><p> if(time_cc==4)</p><p><b> {</b></p><p><b> TR0=1;</b></p><p> time_cc=0;</p><p&
95、gt; disp_sd=0;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(timer==0)</p><p><b> {</b&g
96、t;</p><p> speaker=1;</p><p> for(i=0;i<10;i++)</p><p><b> {</b></p><p> display();</p><p><b> }</b></p><p>
97、if(timer==0)</p><p><b> { </b></p><p><b> do </b></p><p> display();</p><p> while(timer==0);</p><p> disp_sd=1;//數(shù)碼管閃動顯示
98、</p><p> disp_ms=1;//顯示模式為鬧鐘時間</p><p> timer_cc++;</p><p> if(timer_cc==4)</p><p><b> {b=1;}</b></p><p> if(timer_cc==8)</p>&
99、lt;p><b> {</b></p><p><b> b=0;</b></p><p> timer_cc=0;</p><p> disp_sd=0;//閃動關(guān)閉</p><p> disp_ms=0;//切換到時間模式</p><p>
100、;<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(dec==0)</p><p><b> {</b></p><p> for(i=0;i<
101、;10;i++)</p><p><b> {</b></p><p> display();</p><p><b> }</b></p><p><b> do </b></p><p> display();</p><
102、;p> while(dec==0);</p><p><b> a=~a;</b></p><p><b> }</b></p><p> if(add==0)</p><p><b> {</b></p><p> for(i=0;i
103、<10;i++)</p><p><b> {</b></p><p> display();</p><p><b> }</b></p><p> if(add==0)</p><p><b> {</b></p>
104、<p><b> do </b></p><p> display(); </p><p> while(add==0);</p><p> if(disp_ms==0)</p><p><b> {</b></p><p> switch(time_c
105、c)</p><p><b> {</b></p><p> case (0x01): { hour++; if(hour>23) hour=0; break;}</p><p> case (0x02): { minit++; if(minit>59) minit=0; break;}</p><p&
106、gt; case (0x03): { second++;if(second>59) second=0; break;}</p><p> default: break;</p><p><b> }</b></p><p><b> }</b></p><p><b>
107、else</b></p><p><b> {</b></p><p> switch(timer_cc)</p><p><b> {</b></p><p> case (0x01): {if(hour1==24) hour1=0; else hour1++; break;}
108、</p><p> case (0x02): {if(minit1==60) minit1=0; else minit1++; break;}</p><p> case (0x03): {if(second1==60) second1=0; else second1++; break;}</p><p> case (0x04): {year++;break
109、;} </p><p> case (0x05): {if(month==12) month=1;else month++;break;} </p><p> case (0x06): {if(day==31) day=1;else day++;break;}</p><p> case (0x07): {if(week==7) week=1;else we
110、ek++;break;}</p><p> default:break;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>
111、;</p><p><b> }</b></p><p> void timer_alam(void)</p><p><b> {</b></p><p> if((disp_ms==0)&&(disp_sd==0)) //正常運行時間的狀態(tài)下</p&
112、gt;<p><b> {</b></p><p> if((hour1==hour)&&(minit1==minit))</p><p><b> {</b></p><p> speaker=disp_sdt;</p><p><b> }<
113、;/b></p><p><b> else</b></p><p><b> {</b></p><p> if(zhengdian==1)</p><p><b> {</b></p><p> speaker=disp_sdt;&l
114、t;/p><p><b> }</b></p><p><b> else</b></p><p> speaker=1;</p><p><b> }</b></p><p><b> }</b></p>&l
115、t;p><b> }</b></p><p> //******************************主函數(shù)*************************************************</p><p> void main(void)</p><p><b> {</b><
116、;/p><p> second=0x00; //時間初始化為00:00:00</p><p><b> minit=59;</b></p><p><b> hour=23;</b></p><p> second1=0x00; </p><p> minit1=0x0
117、0;</p><p><b> hour1=12;</b></p><p><b> year=11;</b></p><p><b> month=9;</b></p><p><b> day=16;</b></p><p&
118、gt;<b> week=5;</b></p><p> count0=0x00;</p><p> count1=0x00;</p><p> TMOD=0x11;</p><p><b> TL0=tl;</b></p><p><b> TH0=t
119、h;</b></p><p><b> TL1=tl;</b></p><p><b> TH1=th;</b></p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><
120、;p><b> ET1=1;</b></p><p><b> TR0=1;</b></p><p><b> TR1=1;</b></p><p> SystemInit();</p><p><b> while(1)</b><
121、/p><p><b> { </b></p><p> key_scan();</p><p> display();</p><p> timer_alam();</p><p><b> }</b></p><p><b>
122、}</b></p><p> //*********************************中斷服務(wù)函數(shù)**************************************</p><p> /***********************************************************************</p>
123、<p> * 函數(shù)名稱:leap()</p><p> * 功 能:計算二月份天數(shù)</p><p> * 入口參數(shù):year</p><p><b> * 出口參數(shù):無</b></p><p> **************************************************
124、*****************/ </p><p> unsigned leap(unsigned year) //判斷是否閏年并返回二月份的天數(shù)</p><p> { //閏年返回29,平年返回28</p><p> if(year%4==0)</p>&l
125、t;p> return 29;</p><p> else return 28;</p><p><b> }</b></p><p> /*******************************************************************</p><p> * 函數(shù)名稱
126、:mon()</p><p> * 功 能:計算并返回每個月的天數(shù)</p><p> * 入口參數(shù):month</p><p><b> * 出口參數(shù):無</b></p><p> ***************************************************************
127、****/ </p><p> unsigned mon(unsigned month) //計算并返回每個月的天數(shù)</p><p><b> {</b></p><p> switch(month)</p><p><b> {</b></p><p
128、><b> case 1:</b></p><p><b> case 3:</b></p><p><b> case 5:</b></p><p><b> case 7:</b></p><p><b> case 8:&l
129、t;/b></p><p><b> case 10:</b></p><p> case 12:return 31;break; //1,3,5,7,8,10,12月每月31天</p><p><b> case 4:</b></p><p><b> case
130、6:</b></p><p><b> case 9:</b></p><p> case 11:return 30;break; //4,6,9,11月每月30天</p><p> case 2: return leap(year);break;//返回二月份的天數(shù)</p><p> defau
131、lt:break;</p><p><b> }</b></p><p><b> }</b></p><p> //*********************************中斷服務(wù)函數(shù)**************************************</p><p>
132、void time0_int(void) interrupt 1 </p><p><b> {</b></p><p><b> TL0=tl;</b></p><p><b> TH0=th;</b></p><p><b> TR0=1;</b&
133、gt;</p><p><b> count0++;</b></p><p> if(count0==20)</p><p><b> {</b></p><p><b> count0=0;</b></p><p> second++;&l
134、t;/p><p> if(hour_zd==second)//報時到小時數(shù)后關(guān)閉報時標(biāo)志。</p><p> zhengdian=0;</p><p> if(second==60)</p><p><b> {</b></p><p><b> second=0;&
135、lt;/b></p><p><b> minit++;</b></p><p> if(minit==60)</p><p><b> {</b></p><p> zhengdian=1;//開啟整點報時</p><p><b> min
136、it=0;</b></p><p><b> hour++;</b></p><p> hour_zd=hour;</p><p> if(hour_zd>12)</p><p> hour_zd=hour_zd-12;//12小時制報時方式</p><p> if
137、(hour==24)</p><p><b> {</b></p><p><b> hour=0;</b></p><p><b> day++;</b></p><p><b> week++;</b></p><p>
138、 if(week==7)</p><p><b> {</b></p><p><b> week=1;</b></p><p><b> week++;</b></p><p><b> }</b></p><p>
139、n=mon(month);</p><p><b> if(day>n)</b></p><p><b> {</b></p><p><b> day=1;</b></p><p><b> month++;</b></p>
140、<p> if(month==13)</p><p><b> {</b></p><p><b> month=1;</b></p><p><b> year++;</b></p><p><b> }</b></p>
141、<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><
142、p><b> }</b></p><p> //*********************************中斷服務(wù)函數(shù)**************************************</p><p> void time1_int(void) interrupt 3 </p><p><b> {&
143、lt;/b></p><p><b> TL1=tl;</b></p><p><b> TH1=th;</b></p><p><b> TR1=1;</b></p><p><b> count1++;</b></p>&l
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子時鐘課程設(shè)計--數(shù)字電子時鐘焊接調(diào)試報告
- 數(shù)字電子時鐘 課程設(shè)計報告
- 數(shù)字電子時鐘課程設(shè)計報告
- 數(shù)字電子時鐘課程設(shè)計報告
- 數(shù)字電子時鐘課程設(shè)計報告
- 數(shù)字電子時鐘課程設(shè)計報告
- 數(shù)字電子課程設(shè)計--數(shù)字電子時鐘
- 數(shù)字電子時鐘課程設(shè)計
- 數(shù)字電子時鐘課程設(shè)計
- 數(shù)字電子時鐘課程設(shè)計
- 數(shù)字電子時鐘課程設(shè)計
- 課程設(shè)計--數(shù)字電子時鐘設(shè)計
- 電子課程設(shè)計總結(jié)--數(shù)字電子時鐘
- 數(shù)字電子時鐘課程設(shè)計 (2)
- 數(shù)字電子時鐘課程設(shè)計 (3)
- 電子時鐘課程設(shè)計報告
- 數(shù)字電路電子時鐘課程設(shè)計
- 倒計電子時鐘課程設(shè)計報告
- 電子時鐘課程設(shè)計
- 電子時鐘eda課程設(shè)計報告
評論
0/150
提交評論