智能儀器課程設(shè)計(jì)報(bào)告---數(shù)字電子時(shí)鐘_第1頁(yè)
已閱讀1頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  《智能儀表課程設(shè)計(jì)》設(shè)計(jì)報(bào)告</p><p>  課題名稱(chēng) 數(shù)字電子時(shí)鐘 </p><p>  姓名 </p><p>  學(xué)號(hào) </p><p>  班級(jí)名稱(chēng) 測(cè)控0801 <

2、;/p><p>  指導(dǎo)教師 </p><p><b>  二〇一一年九月</b></p><p><b>  目錄</b></p><p>  任務(wù)書(shū)-------------------------------------------------------

3、-1~2</p><p>  儀表的功能要求及性能指標(biāo)-------------------------------3</p><p><b>  硬件設(shè)計(jì)</b></p><p>  2.1 MCS-51單片機(jī)------------------------------------------4~5</p><p> 

4、 2.2LED驅(qū)動(dòng)芯片ZLG7290--------------------------------5~7</p><p><b>  軟件設(shè)計(jì)</b></p><p>  3.1軟件設(shè)計(jì)功能需求--------------------------------------8</p><p>  3.2 軟件設(shè)計(jì)框圖---------------

5、---------------------------9~12</p><p>  設(shè)計(jì)實(shí)物圖---------------------------------------------------13</p><p>  課程設(shè)計(jì)總結(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è)計(jì)程序-----------

7、--------------------------------------17~42</p><p>  《智能儀表課程設(shè)計(jì)》任務(wù)書(shū)</p><p><b>  一、課題名稱(chēng)</b></p><p><b>  時(shí)鐘設(shè)計(jì)</b></p><p>  二、設(shè)計(jì)內(nèi)容及設(shè)計(jì)要求</p>&

8、lt;p>  1)由2個(gè)4位型數(shù)碼管組成,分別顯示時(shí),分,秒,可以切換顯示年,月,日以及星期</p><p>  2)能夠隨時(shí)對(duì)時(shí)間日期進(jìn)行調(diào)整</p><p>  3)能夠隨時(shí)輸入定時(shí)鬧鐘</p><p>  4)定時(shí)時(shí)間到,鬧鐘發(fā)出信號(hào)</p><p>  5)具有整點(diǎn)報(bào)時(shí)功能</p><p>  6)鬧鐘提

9、醒信號(hào)為斷續(xù)形式,時(shí)間為1分鐘 </p><p><b>  時(shí)間安排</b></p><p><b>  第一周:</b></p><p>  星期一~星期二:布置任務(wù),熟悉資料,確定儀表的功能要求、性能指標(biāo)。熟悉實(shí)驗(yàn)板原理圖和印刷板圖。</p><p>  星期三~星期五:進(jìn)行儀表的方案選擇,確

10、定主要芯片、工作方式、輸入輸出信號(hào)的接口方式、鍵盤(pán)和顯示方式、以及通信方式。進(jìn)行硬件設(shè)計(jì)和元器件選擇,畫(huà)出硬件原理圖。</p><p><b>  第二周:</b></p><p>  星期一~星期五:根據(jù)硬件原理圖,焊接硬件電路;測(cè)試硬件電路的功能;軟件設(shè)計(jì),包括軟件需求說(shuō)明、軟件結(jié)構(gòu)框圖、主要軟件功能模塊的流程圖;編寫(xiě)程序。</p><p>

11、;<b>  第三周:</b></p><p>  星期一~星期三:調(diào)試程序,聯(lián)調(diào)軟件和硬件。</p><p>  星期四~星期五:寫(xiě)課程設(shè)計(jì)報(bào)告。</p><p><b>  四、應(yīng)交成果</b></p><p><b>  應(yīng)交成果包括:</b></p>&l

12、t;p>  紙質(zhì)課程設(shè)計(jì)報(bào)告和電子文檔;</p><p>  硬件原理圖的Protel文件,程序;</p><p>  可以演示的硬件和軟件成果</p><p>  1儀表的功能要求、性能指標(biāo)要求</p><p><b>  1.1 初級(jí)要求:</b></p><p>  1)用單片機(jī)的定時(shí)

13、器產(chǎn)生1s的定時(shí)時(shí)間,作為秒計(jì)數(shù)時(shí)間</p><p>  2)當(dāng)1s產(chǎn)生時(shí),秒計(jì)數(shù)加1,到60s時(shí)歸0并向分鐘進(jìn)1,分鐘到60時(shí)歸0并向時(shí)進(jìn)1,時(shí)到24時(shí)歸0并向日進(jìn)1,日通過(guò)計(jì)算當(dāng)時(shí)月份進(jìn)行計(jì)數(shù)</p><p>  3)開(kāi)機(jī)時(shí),顯示00-00-00,并開(kāi)始計(jì)時(shí)。鬧鐘初始設(shè)置為00-00-00,日期為11-9-15-5,并開(kāi)始計(jì)時(shí)。</p><p><b>

14、;  1.2 中級(jí)要求</b></p><p>  在以上基礎(chǔ)上,在單片機(jī)的p1.0--p1.3加入4個(gè)鍵</p><p>  p1.0 時(shí)間設(shè)置鍵,按一次對(duì)時(shí)進(jìn)行校對(duì),按第二次對(duì)分進(jìn)行校對(duì),第三次對(duì)秒進(jìn)行校對(duì),再按一下正常顯示。</p><p>  P1.1 鬧鐘及日期設(shè)置鍵,按下后開(kāi)始對(duì)鬧鐘進(jìn)行設(shè)置,按一,二,三次分別是對(duì)時(shí),分,秒進(jìn)行設(shè)置四,五,六

15、,七次分別是對(duì)年,月,日,星期進(jìn)行設(shè)置,再次按下恢復(fù)正常顯示時(shí)間。</p><p>  3)P1.2 加鍵,時(shí)間設(shè)置或者鬧鈴設(shè)置時(shí)加鍵,每按一次加一。</p><p>  4)P1.3 顯示切換鍵,在時(shí)間正常顯示時(shí),按下一次后,切換為顯示日期,再次按下則顯示時(shí)間。</p><p><b>  2硬件設(shè)計(jì)</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個(gè)特殊功能寄存器、32根I/O線、可尋址的64k字節(jié)外部數(shù)據(jù)、程序存貯空間、2個(gè)16位定時(shí)器、計(jì)數(shù)器中斷結(jié)構(gòu):具有二個(gè)優(yōu)先級(jí)、五個(gè)中斷源一個(gè)全雙口串行口位尋址(即可尋找某位的內(nèi)容)功能,適于按位進(jìn)行邏輯運(yùn)算的位處理器。除128字節(jié)RAM、4k字節(jié)

17、ROM和中斷、串行口及定時(shí)器模塊外,還有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ī)各部分是通過(guò)內(nèi)部的總線有機(jī)地連接起來(lái)的。 </p><p>  1、運(yùn)算器 運(yùn)算器以完成二

18、進(jìn)制的算術(shù)/邏輯運(yùn)算部件ALU為核心,再加上暫存器TMP、累加器ACC、寄存器B、程序狀態(tài)標(biāo)志寄存器PSW及布爾處理器。 </p><p>  2、控制器 控制器是CPU的神經(jīng)中樞,它包括定時(shí)控制邏輯電路、指令寄存器、譯碼器、地址指針DPTR及程序計(jì)數(shù)器PC、堆棧指針SP等。這里程序計(jì)數(shù)器PC是由16位寄存器構(gòu)成的計(jì)數(shù)器。要單片機(jī)執(zhí)行一個(gè)程序,就必須把該程序按順序預(yù)先裝入存儲(chǔ)器ROM的某個(gè)區(qū)域。單片機(jī)動(dòng)作時(shí)應(yīng)按順

19、序一條條取出指令來(lái)加以執(zhí)行。 </p><p>  存儲(chǔ)器是單片機(jī)的又一個(gè)重要組成部分,每個(gè)存儲(chǔ)單元對(duì)應(yīng)一個(gè)地址,如256個(gè)單元共有256個(gè)地址,用兩位16進(jìn)制數(shù)表示,即存儲(chǔ)器的地址(00H~FFH)。 </p><p>  2.2LED驅(qū)動(dòng)芯片ZLG7290B</p><p>  ZLG7290B 是廣州周立功單片機(jī)發(fā)展有限公司自行設(shè)計(jì)的數(shù)碼管顯示驅(qū)動(dòng)及鍵盤(pán)掃描管

20、理芯片。能夠直接驅(qū)動(dòng)8 位共陰式數(shù)碼管(或64 只獨(dú)立的LED),同時(shí)還可以掃描管理多達(dá)64 只按鍵。其中有8 只按鍵還可以作為功能鍵使用,就像電腦鍵盤(pán)上的Ctrl、Shift、Alt 鍵一樣。另外ZLG7290B 內(nèi)部還設(shè)置有連擊計(jì)數(shù)器,能夠使某鍵按下后不松手而連續(xù)有效。采用I2C 總線方式,與微控制器的接口僅需兩根信號(hào)線。該芯片為工業(yè)級(jí)芯片,抗干擾能力強(qiáng),在工業(yè)測(cè)控中已有大量應(yīng)用。</p><p>  附:Z

21、LG7290B 引腳功能表</p><p>  引腳序號(hào) 引腳名稱(chēng) 功能描述</p><p>  1 SC/KR2 數(shù)碼管c 段/鍵盤(pán)行信號(hào)2</p><p>  2 SD/KR3 數(shù)碼管d 段/鍵盤(pán)行信號(hào)3</p><p>  3 DIG3/KC3 數(shù)碼管位選信號(hào)3/鍵盤(pán)列信號(hào)3</p><p>  4 DIG2/K

22、C2 數(shù)碼管位選信號(hào)2/鍵盤(pán)列信號(hào)2</p><p>  5 DIG1/KC1 數(shù)碼管位選信號(hào)1/鍵盤(pán)列信號(hào)1</p><p>  6 DIG0/KC0 數(shù)碼管位選信號(hào)0/鍵盤(pán)列信號(hào)0</p><p>  7 SE/KR4 數(shù)碼管e 段/鍵盤(pán)行信號(hào)4</p><p>  8 SF/KR5 數(shù)碼管f 段/鍵盤(pán)行信號(hào)5</p>&l

23、t;p>  9 SG/KR6 數(shù)碼管g 段/鍵盤(pán)行信號(hào)6</p><p>  10 DP/KR7 數(shù)碼管dp 段/鍵盤(pán)行信號(hào)7</p><p>  11 GND 接地12 DIG6/KC6 數(shù)碼管位選信號(hào)6/鍵盤(pán)列信號(hào)6</p><p>  13 DIG7/KC7 數(shù)碼管位選信號(hào)7/鍵盤(pán)列信號(hào)7</p><p>  14 INT 鍵盤(pán)中

24、斷請(qǐng)求信號(hào),低電平(下降沿)有效</p><p>  15 RST 復(fù)位信號(hào),低電平有效</p><p>  16 Vcc 電源,+3.3~5.5V</p><p>  17 OSC1 晶振輸入信號(hào)</p><p>  18 OSC2 晶振輸出信號(hào)</p><p>  19 SCL I2C 總線時(shí)鐘信號(hào)</p&g

25、t;<p>  20 SDA I2C 總線數(shù)據(jù)信號(hào)</p><p>  21 DIG5/KC5 數(shù)碼管位選信號(hào)5/鍵盤(pán)列信號(hào)5</p><p>  22 DIG4/KC4 數(shù)碼管位選信號(hào)4/鍵盤(pán)列信號(hào)4</p><p>  23 SA/KR0 數(shù)碼管a 段/鍵盤(pán)行信號(hào)0</p><p>  24 SB/KR1 數(shù)碼管b 段/鍵盤(pán)

26、行信號(hào)1</p><p><b>  總設(shè)計(jì)框圖</b></p><p><b>  3軟件設(shè)計(jì)</b></p><p>  3.1軟件設(shè)計(jì)功能需求</p><p>  1)用單片機(jī)的定時(shí)器產(chǎn)生1s的定時(shí)時(shí)間,作為秒計(jì)數(shù)時(shí)間</p><p>  2)當(dāng)1s產(chǎn)生時(shí),秒計(jì)數(shù)加1,

27、到60s時(shí)歸0并向分鐘進(jìn)1,分鐘到60時(shí)歸0并向時(shí)進(jìn)1,時(shí)到24時(shí)歸0并向日進(jìn)1,日通過(guò)計(jì)算當(dāng)時(shí)月份進(jìn)行計(jì)數(shù)</p><p>  3)開(kāi)機(jī)時(shí),顯示00-00-00,并開(kāi)始計(jì)時(shí)。鬧鐘初始設(shè)置為00-00-00,日期為11-9-05,并開(kāi)始計(jì)時(shí)。</p><p>  3.2主要功能模塊的軟件框圖。</p><p><b>  T0中斷服務(wù)</b>&

28、lt;/p><p><b>  鍵盤(pán)掃描程序</b></p><p><b>  時(shí)鐘計(jì)時(shí)框圖</b></p><p><b>  總設(shè)計(jì)框圖</b></p><p><b>  實(shí)物圖</b></p><p><b>  課

29、程設(shè)計(jì)總結(jié)</b></p><p>  通過(guò)此次課程設(shè)計(jì),使我更加扎實(shí)的掌握了有關(guān)單片機(jī)方面的知識(shí),在設(shè)計(jì)過(guò)程中雖然遇到了一些問(wèn)題,但經(jīng)過(guò)一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過(guò)親自動(dòng)手制作,使我們掌握的知識(shí)不再是紙上談兵。 過(guò)而能改,善莫大焉。在課程設(shè)計(jì)過(guò)程中,我們不斷發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的檢

30、測(cè)調(diào)試環(huán)節(jié),本身就是在踐行“過(guò)而能改,善莫大焉”的知行觀。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多問(wèn)題,最后在老師的指導(dǎo)下,終于游逆而解。在今后社會(huì)的發(fā)展和學(xué)習(xí)實(shí)踐過(guò)程中,一定要不懈努力,不能遇到問(wèn)題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問(wèn)題所在,然后一一進(jìn)行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠(yuǎn)不可能收獲成功,收獲喜悅,也永遠(yuǎn)不可能得到社會(huì)及他人對(duì)你的認(rèn)可! 課程設(shè)計(jì)誠(chéng)然

31、是一門(mén)專(zhuān)業(yè)課,給我很多專(zhuān)業(yè)知識(shí)以及專(zhuān)業(yè)技能上的提升,同時(shí)又是一門(mén)講道課,一門(mén)辯思課,給了我許多道,給了我很多思,給了我莫大的空間。同時(shí),設(shè)計(jì)讓我感觸很深。使我對(duì)抽象的理論有了具體的認(rèn)識(shí)。通過(guò)這次課</p><p><b>  附錄</b></p><p><b>  6.1參考文獻(xiàn)</b></p><p>  《單片機(jī)電路

32、設(shè)計(jì)分析與制作》 機(jī)械工業(yè)出版社 周景潤(rùn)</p><p>  《單片機(jī)系統(tǒng)設(shè)計(jì)與應(yīng)用實(shí)例》 機(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個(gè)</b></p><p><b>  按鈕4個(gè)</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í)間設(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ù)碼管閃動(dòng)顯示標(biāo)志位</p><p>  bit disp_ms;//數(shù)碼管顯示時(shí)間/鬧鐘標(biāo)志位</p><p>  bit disp_sdt;//數(shù)碼管閃動(dòng)間隔反轉(zhuǎn)標(biāo)志位</p><p>  bit zhengdian=0;//整點(diǎn)報(bào)時(shí)標(biāo)志位</p><p>  bit b=0,

38、a=0;</p><p>  unsigned char time_cc,timer_cc;//調(diào)時(shí)計(jì)數(shù)器</p><p>  unsigned char count0,count1,second,minit,hour;//時(shí)間時(shí)分秒</p><p>  unsigned char second1,minit1,hour1;//鬧鐘時(shí)分秒&

39、lt;/p><p>  unsigned char year,month,day,week,n;</p><p>  unsigned char hour_zd;//整點(diǎn)小時(shí)記錄</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ù)碼管閃動(dòng)顯示

98、</p><p>  disp_ms=1;//顯示模式為鬧鐘時(shí)間</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;//閃動(dòng)關(guān)閉</p><p>  disp_ms=0;//切換到時(shí)間模式</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)) //正常運(yùn)行時(shí)間的狀態(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; //時(shí)間初始化為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ù)名稱(chēng):leap()</p><p>  * 功 能:計(jì)算二月份天數(shù)</p><p>  * 入口參數(shù):year</p><p><b>  * 出口參數(shù):無(wú)</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ù)名稱(chēng)

126、:mon()</p><p>  * 功 能:計(jì)算并返回每個(gè)月的天數(shù)</p><p>  * 入口參數(shù):month</p><p><b>  * 出口參數(shù):無(wú)</b></p><p>  ***************************************************************

127、****/ </p><p>  unsigned mon(unsigned month) //計(jì)算并返回每個(gè)月的天數(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)//報(bào)時(shí)到小時(shí)數(shù)后關(guān)閉報(bào)時(shí)標(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;//開(kāi)啟整點(diǎn)報(bào)時(shí)</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小時(shí)制報(bào)時(shí)方式</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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論