單片機課程設計--電子時鐘系統(tǒng)設計_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計</b></p><p>  題目:電子時鐘系統(tǒng)設計</p><p>  姓 名: </p><p>  院 系: 電子信息工程學院 </p><p>  時間: 2014 年12 月 25 日至 2015 年 1 月 5

2、日</p><p>  課 程 設 計 任 務 書</p><p>  題目 電子時鐘系統(tǒng)設計 </p><p>  主要內(nèi)容、基本要求、主要參考資料等:</p><p><b>  一、主要內(nèi)容:</b></p><p>  ① 熟悉單

3、片機應用系統(tǒng)的設計方法和規(guī)范,達到綜合的目的。</p><p>  ② 學習文件檢索和查找數(shù)據(jù)手冊的能力。</p><p>  ③ 學習protel軟件的使用。</p><p> ?、?學會整理和總結(jié)設計文檔報告。</p><p><b>  二、基本要求:</b></p><p> ?、?以MC

4、S-51系列單片機為核心,組成一個電子時鐘系統(tǒng)。</p><p> ?、?系統(tǒng)顯示由6位數(shù)碼管顯示組成,分別顯示時間值的十、分、秒。</p><p> ?、?能夠隨時對當前時間進行調(diào)整。 </p><p> ?、?能夠隨時輸入定時(鬧鐘)時間。</p><p> ?、?定時(鬧鐘)時間到,發(fā)出鬧鐘提醒信號。</p><p&

5、gt;  ⑥ 鬧鐘提醒信號的聲音為斷續(xù)形式,最長不超過1分鐘。</p><p><b>  三、主要參考資料:</b></p><p>  ① 張毅坤等 單片微型計算機原理及應用 西安 西安電子科技大學出版社</p><p> ?、?李建忠編著 單片機原理及應用 西安 西安電子科技大學出版社</p><p&g

6、t;  完 成 期 限: </p><p>  指導教師簽名: </p><p>  課程負責人簽名: </p><p>  年 月 日</p><p><b>  目 錄</b></p><

7、;p>  1.總體設計方案1</p><p><b>  1.1設計原理1</b></p><p><b>  1.2設計思路1</b></p><p>  2.詳細設計方案2</p><p>  2.1硬件電路設計2</p><p>  2.2主程序設計2

8、</p><p>  2.3功能模塊的設計與實現(xiàn)2</p><p>  3.結(jié)果測試及分析8</p><p><b>  3.1結(jié)果測試8</b></p><p><b>  3.2結(jié)果分析8</b></p><p><b>  參考文獻9</b&g

9、t;</p><p><b>  附 錄 A10</b></p><p><b>  附 錄 B18</b></p><p><b>  附 錄 C19</b></p><p><b>  1.總體設計方案</b></p><

10、;p><b>  1.1設計原理</b></p><p>  根據(jù)課程設計任務書的內(nèi)容,要求實現(xiàn)在MCS51單片機上對數(shù)字電子鐘的基本功能設計,對當前時間正確顯示,并可根據(jù)需要對時間進行更改,以完成時間的校對和鬧鐘的設置。</p><p>  時鐘時間以時、分、秒在6位數(shù)碼管上顯示,小時以24小時計時模式,分秒均為60進位。用6MHz晶振產(chǎn)生振蕩脈沖,定時器進行

11、秒計時。調(diào)整設置時間的過程運用可編程鍵盤上的按鍵進行控制,共設有5個按鍵,首先按鍵A進入校時模式或E進入鬧鐘模式,再分別按鍵B對小時或C分鐘進行更改,每按鍵一次數(shù)碼管計數(shù)顯示加一,更改結(jié)束后按鍵D退出設置,時鐘正常顯示。鬧鐘時間到時,蜂鳴器鳴響10秒后時鐘正常顯示。</p><p><b>  1.2設計思路</b></p><p>  采用C語言程序設計結(jié)合硬件電路

12、設計方法,利用Lab6000實驗箱來實現(xiàn)數(shù)字電子鐘的設計。</p><p><b>  (1)提出方案</b></p><p>  根據(jù)設計要求,可將本次設計分為3個模塊進行:</p><p>  時鐘顯示模塊:主要用于時間的正確顯示。</p><p>  校時模塊:此模塊用于時鐘的校對,以完成用戶更改時間的需求。<

13、;/p><p>  鬧鐘模塊:用于實現(xiàn)鬧鐘的時間設置和定點鬧鈴的功能。</p><p><b>  (2)方案論證</b></p><p>  時鐘顯示模塊中,利用可編程定時器中斷進行秒計時,將時間顯示在6位數(shù)碼管上。校時模塊主要利用鍵盤上5個鍵的控制完成各項功能,并在數(shù)碼管上動態(tài)顯示改變結(jié)果,完成設置后進入時鐘顯示模塊。鬧鐘模塊的設置過程與校時模

14、塊相似,但設置完成進入時間顯示模塊后則等待鬧鈴時間,到規(guī)定時間后,通過數(shù)碼管閃爍及蜂鳴器的鳴響來實現(xiàn)定點鬧鈴提醒功能。</p><p>  總設計原理框圖如下圖1-1所示:</p><p>  圖1-1 總設計原理框圖</p><p><b>  2.詳細設計方案</b></p><p><b>  2.1硬

15、件電路設計</b></p><p>  硬件電路由MCS51單片機,可編程鍵盤,六位數(shù)碼管以及蜂鳴器四部分組成,如圖2-1所示。</p><p>  圖2-1 硬件電路連線圖</p><p>  MCS51單片機由CPU、振蕩器和時序電路、4KB程序存儲器、128字節(jié)數(shù)據(jù)存儲器、兩位16位定時器/計數(shù)器、64KB總線擴展控制、可編程并行I/O、可編程全

16、雙工串行口組成。</p><p>  可編程鍵盤與數(shù)碼管經(jīng)過MC1314反向驅(qū)動連接,做LED的位選通信號,需將KEY/LED_CS接到響應的地址譯碼器CS0上,位碼輸出的地址為8002H,段碼輸出地址為8004H,鍵盤行碼都會地址為8001H。</p><p>  音頻放大電路則通過P1_0口產(chǎn)生的脈沖產(chǎn)生不同頻率的聲音。</p><p><b>  2

17、.2主程序設計</b></p><p>  主程序主要用于系統(tǒng)初始化:設置定時器初值、工作方式等參數(shù),開啟中斷進入時鐘顯示狀態(tài),等待定時器中斷。具體流程圖如圖2-2所示。</p><p>  2.3功能模塊的設計與實現(xiàn)</p><p>  根據(jù)上述電子鐘的設計原理與方案,軟件設計可分為以下幾個功能模塊實現(xiàn):</p><p>  (

18、1)定時器模塊的設計與實現(xiàn)</p><p>  定時器模塊即定時器中斷服務子程序,完成刷新計時緩沖區(qū)的功能。系統(tǒng)使用6MHz的晶振。由于定時器工作在方式0時最大定時時間為不足1s,程序采用定時器與軟件循環(huán)相結(jié)合的定時方法。設定時器0工作在方式0,每隔100ms溢出中斷一次,則循環(huán)中斷10次延時時間是1s,以達到秒增加的效果。 </p><p>  程序運行開始后,定時器中斷程序與其他子程序

19、并發(fā)執(zhí)行,在完成其他功能的過程中,時鐘也正常運行,更大降低時鐘誤差。具體流程圖如圖2-3所示:</p><p>  圖2-2 主程序流程圖</p><p>  圖2-3 定時器“秒”計時模塊</p><p>  (2)時鐘顯示模塊的設計與實現(xiàn)</p><p>  此模塊主要用于時鐘的顯示,六位數(shù)碼管以“時時.分分.秒秒”顯示當前時間,按鍵A輸

20、出“------”進入校時模式,按鍵 E輸出已設定鬧鐘并進入鬧鐘模式。 具體流程圖如圖2-4所示。</p><p>  圖2-4 時鐘顯示模塊</p><p>  (3)設置小時模塊的設計與實現(xiàn)</p><p>  設置小時模塊中,主要完成按鍵校時功能,每按一次B鍵,小時+1,并以“H-時時”在數(shù)碼管上顯示過程??砂存IC進入設置分鐘模塊,D鍵完成設置,時鐘正常顯示,

21、在設置小時模塊中,除B、C、D鍵,其他鍵均為無效操作。</p><p>  校時模塊和鬧鐘模塊都可以進入設置小時模塊中,因此進入模塊會自動判別,如果鬧鐘設置標志位alarm=0,時鐘小時變化,若alarm=1,則鬧鐘設置小時變化,最終調(diào)整到需要的數(shù)字為止。若alarm=1,完成設置后,將鬧鐘開啟標志位alarm_on=1,表示鬧鐘為開啟狀態(tài),時鐘正常顯示,反之直接進入時鐘顯示模塊。</p><

22、p>  運用鍵盤的過程中,采用固定列逐行掃描的方式,判斷鍵位低電平時,則按鍵按下,高電平時則為抬起。在校時過程中,需對按鍵是否抬起進行判斷,用來避免因系統(tǒng)掃描過于頻繁,而導致的小時更改不受控制,僅當按鍵抬起后小時加1。具體流程圖如圖2-5所示。</p><p>  (4)設置分鐘模塊的設計與實現(xiàn)</p><p>  設置分鐘模塊中,主要完成按鍵校分功能,每按一次C鍵,分鐘+1,并以“

23、F-分分”在數(shù)碼管上顯示過程??砂存IB進入設置分鐘模塊,D鍵完成設置,時鐘正常顯示,在設置分鐘模塊中,除B、C、D鍵,其他鍵均為無效操作。</p><p>  設置分鐘模塊的設計原理與設置小時模塊一致,故不在此詳細說明。</p><p> ?。?)校時模塊的設計與實現(xiàn)</p><p>  校時模塊主要為選擇性模塊,用于用戶選擇進入設置小時、設置分鐘和設置完成功能,由

24、時鐘顯示模塊中按鍵A進入,顯示“------”表示可以進行設置,按鍵B選擇進入設置小時模塊,按鍵C選擇進入設置分鐘模塊,按鍵D選擇完成設置,返回時鐘顯示模塊,時鐘正常顯示。具體流程圖如圖2-6所示。</p><p>  圖2-5 設置小時模塊</p><p>  (6)鬧鐘模塊的設計與實現(xiàn)</p><p>  鬧鐘模塊也為選擇性模塊,設計原理與校時模塊基本相似,用于

25、用戶選擇進入設置小時、設置分鐘和設置完成功能,由時鐘顯示模塊中按鍵E進入,顯示當前鬧鐘時間表示可以進行設置,按鍵B選擇進入設置小時模塊,按鍵C選擇進入設置分鐘模塊,按鍵D選擇完成設置,開啟鬧鐘,返回時鐘顯示模塊,時鐘正常顯示。具體流程圖如圖2-7所示。</p><p>  (7)時鐘模塊的設計與實現(xiàn)</p><p>  時鐘模塊為時鐘運行的基本函數(shù),用于對時、分、秒確立正確的進位聯(lián)系和循環(huán)

26、數(shù)值,當鬧鐘時間到時,數(shù)碼管閃爍字樣“AAAAAA”且蜂鳴器鳴響10秒鐘,隨后時鐘正常顯示,鬧鐘開啟標志位設置為0,表示鬧鐘關閉,不為鬧鐘時間時鐘均正常顯示。具體流程圖如圖2-8所示。</p><p><b>  圖2-6 校時模塊</b></p><p><b>  圖2-7 鬧鐘模塊</b></p><p><b

27、>  圖2-8 鬧鐘模塊</b></p><p><b>  3.結(jié)果測試及分析</b></p><p>  3.1結(jié)果測試 </p><p>  程序開始時間默認為00:00:00數(shù)碼管正常顯示,除A、E鍵均無效,按鍵A,數(shù)碼管顯示“------”進

28、入校時模塊,按鍵B:數(shù)碼管顯示“H-01”,按鍵C:數(shù)碼管顯示“F-01”,此時除B、C、D鍵均無效,按鍵D:數(shù)碼管顯示“01:01:04”,時鐘正常顯示。</p><p>  此時按鍵E,數(shù)碼管顯示“00:00:00”進入鬧鐘模塊,按鍵B:數(shù)碼管顯示“H-01”,按鍵C兩次:數(shù)碼管顯示“F-02”,此時除B、C、D鍵均無效,按鍵D:數(shù)碼管顯示“01:01:10”,時鐘正常顯示。此時按鍵E,數(shù)碼管靜態(tài)顯示“01:

29、02:00”,按鍵D:完成設置,正常顯示。等到數(shù)碼管顯示“01:02:00”時,蜂鳴器鳴響,數(shù)碼管顯示“AAAAAA”,持續(xù)十秒鐘后數(shù)碼管顯示“01:02:11” ,時鐘正常顯示,時間第二次到鬧鐘時間期間無操作則鬧鐘無效,重新設置完成后即可啟動。</p><p>  調(diào)節(jié)時間時,按鍵不抬起數(shù)值不發(fā)生變化,數(shù)碼管無顯示,抬起后調(diào)節(jié)數(shù)值加一。</p><p><b>  3.2結(jié)果分

30、析</b></p><p>  對于上述的運行結(jié)果和操作過程,達到了課程設計任務書中的要求,可通過不同按鍵完成校時功能,并解決了系統(tǒng)掃描太快而導致按一次鍵變多個數(shù)的問題。顯示過程也與其他功能不產(chǎn)生沖突,在設置過程中時鐘正常工作,避免了設置鬧鐘而導致時間不準的問題。在按鍵過程中,特定狀態(tài)只有可用鍵產(chǎn)生效果,避免了其他鍵對結(jié)果的干擾。數(shù)碼管顯示清晰,不會出現(xiàn)閃爍或暗淡的狀況。此外還添加了鬧鐘功能,可根據(jù)用

31、戶需求設置,在需要時開啟,解決了鬧鐘每天都必須響的弊端。當按鍵E時顯示當前設置鬧鐘時間,防止用戶忘記設置鬧鐘為幾點而重新設置。</p><p><b>  參考文獻</b></p><p>  [1]謝自美.電子線路設計實驗測試[M].武漢:華中理工大學出版社,1992</p><p>  [2]何立民.單片機應用系統(tǒng)設計[M].北京:北京航空

32、航天大學出版社,1993</p><p>  [3]樓然笛.單片機開發(fā)[M].北京:人民郵電出版社,1994[4]付家才.單片機控制工程實踐技術[M].北京:化學工業(yè)出版社,2004[5]李光才.單片機課程設計實例指導[M].北京:北京航空航天大學出版社,2004</p><p>  [6]朱定華.單片機原理及接口技術實驗[M].北京:北方交通大學出版社,2002</p>

33、<p>  [7]劉湘濤,江世明.單片機原理與應用[M].北京:電子工業(yè)出版社,2006</p><p>  [8] 張毅坤,單片微型計算機原理及應用[M].西安:西安電子科技大學出版社,1998</p><p>  [9] 李建忠,單片機原理及應用[M].西安:西安電子科技大學出版社,2002</p><p><b>  附 錄 A<

34、/b></p><p>  #include<reg51.h></p><p>  unsigned char xdata *p=0x8004; //8位段碼地址</p><p>  unsigned char xdata *q=0x8002; //8位位碼地址</p><p>  unsigned char h

35、our,min,sec,i=0;</p><p>  unsigned char a_hour=0,a_min=0,a_sec=0,alarm=0,alarm_on=0;</p><p>  unsigned char LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p>  unsig

36、ned char LED_point[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};</p><p>  unsigned char xdata *l=0x8002; //鍵盤列</p><p>  unsigned char xdata *h=0x8001; //鍵盤行</p><p>

37、  sbit P1_0=P1^0;</p><p>  //*****************************函數(shù)聲明******************************</p><p>  void Delay(unsigned char z); //延遲程序</p><p>  void timer();

38、 //秒計時器</p><p>  void led_time_display();</p><p>  void led_hour_display(); //設置小時顯示</p><p>  void led_min_display(); //設置分鐘顯示</p>

39、<p>  void led_alarm_display(); //設置鬧鐘顯示</p><p>  void setting();</p><p>  void clock();</p><p>  void alarm_clock();</p><p>  //*********************

40、********秒定時器******************************</p><p>  void timer()interrupt 1 using 1</p><p><b>  {</b></p><p>  TH0=-(50000/256);</p><p>  TL0=-(50000%256);&

41、lt;/p><p><b>  i++;</b></p><p><b>  if(i==10)</b></p><p><b>  {</b></p><p><b>  sec++;</b></p><p><b>  i

42、=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //****************************數(shù)碼管顯示*****************************</p><p>  void led_ti

43、me_display() //正常時間顯示</p><p><b>  {</b></p><p>  if((*h&0x0f)!=0x0f) //有鍵按下</p><p><b>  {</b></p&

44、gt;<p><b>  *l=0xfb;</b></p><p>  if((*h&0x0f)==0x07) //是否為'A'鍵:進入時鐘設置模式</p><p><b>  {</b></p><p>  setting();</p>

45、<p><b>  }</b></p><p><b>  *l=0xf7;</b></p><p>  if((*h&0x0f)==0x0e) //是否為'E'鍵:進入鬧鐘設置模式</p><p><b>  {</b></p&

46、gt;<p><b>  alarm=1;</b></p><p>  alarm_clock();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  *q=0x20;</b><

47、/p><p>  *p=LED[hour/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x10;</b></p><p>  *p=LED_point[hour%10];</p><p><b>  Delay(6

48、);</b></p><p><b>  *q=0x08;</b></p><p>  *p=LED[min/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x04;</b></p><p&g

49、t;  *p=LED_point[min%10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x02;</b></p><p>  *p=LED[sec/10];</p><p><b>  Delay(6);</b></

50、p><p><b>  *q=0x01;</b></p><p>  *p=LED[sec%10];</p><p><b>  Delay(6);</b></p><p><b>  }</b></p><p>  //******************

51、**************************************************</p><p>  void led_alarm_display()</p><p><b>  {</b></p><p><b>  *q=0x20;</b></p><p>  *p=LED[

52、a_hour/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x10;</b></p><p>  *p=LED_point[a_hour%10];</p><p><b>  Delay(6);</b></p>

53、<p><b>  *q=0x08;</b></p><p>  *p=LED[a_min/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x04;</b></p><p>  *p=LED_point[a_m

54、in%10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x02;</b></p><p><b>  *p=0x3f;</b></p><p><b>  Delay(6);</b></p>

55、<p><b>  *q=0x01;</b></p><p><b>  *p=0x3f;</b></p><p><b>  Delay(6);</b></p><p><b>  }</b></p><p>  //************

56、********************************************************</p><p>  void led_hour_display() //設置小時</p><p><b>  {</b></p><p><b>  while(

57、1)</b></p><p><b>  {</b></p><p><b>  *l=0xfb;</b></p><p>  if((*h&0x0f)==0x0b) //是否為'B'鍵:小時+1;</p><p><b&

58、gt;  {</b></p><p><b>  *q=0x00;</b></p><p>  while((*h&0x0f)!=0x0f)</p><p><b>  {}</b></p><p>  if(alarm==0)</p><p><b

59、>  {</b></p><p><b>  hour++;</b></p><p>  if(hour==24)</p><p><b>  hour=0;</b></p><p><b>  }</b></p><p><b&

60、gt;  else</b></p><p><b>  {</b></p><p><b>  a_hour++;</b></p><p>  if(a_hour==24)</p><p><b>  a_hour=0;</b></p><p&g

61、t;<b>  }</b></p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0d) //是否為'C'鍵:進入分鐘設置模式</p><p><b>  {</b></p><p>

62、  while((*h&0x0f)!=0x0d)</p><p><b>  {}</b></p><p>  led_min_display();</p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0e) //是

63、否為'D'鍵:完成設置</p><p><b>  {</b></p><p>  if(alarm==1)</p><p><b>  {</b></p><p><b>  alarm=0;</b></p><p>  alarm_o

64、n=1;</p><p><b>  }</b></p><p><b>  while(1)</b></p><p>  {clock();}</p><p><b>  }</b></p><p><b>  *q=0x08;</b&

65、gt;</p><p><b>  *p=0x76;</b></p><p><b>  Delay(6);</b></p><p><b>  *q=0x04;</b></p><p><b>  *p=0x40;</b></p><

66、p><b>  Delay(6);</b></p><p>  if(alarm==0)</p><p><b>  {</b></p><p><b>  *q=0x02;</b></p><p>  *p=LED[hour/10];</p><p&

67、gt;<b>  Delay(6);</b></p><p><b>  *q=0x01;</b></p><p>  *p=LED[hour%10];</p><p><b>  Delay(6);</b></p><p><b>  }</b><

68、/p><p><b>  else</b></p><p><b>  {</b></p><p><b>  *q=0x02;</b></p><p>  *p=LED[a_hour/10];</p><p><b>  Delay(6);<

69、;/b></p><p><b>  *q=0x01;</b></p><p>  *p=LED[a_hour%10];</p><p><b>  Delay(6);</b></p><p><b>  }</b></p><p><b&g

70、t;  }</b></p><p><b>  }</b></p><p>  //********************************************************************</p><p>  void led_min_display() //設置分鐘&l

71、t;/p><p><b>  {</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  *l=0xfb;</b></p><p>  if((*h&0x

72、0f)==0x0d) //是否為'C'鍵:分鐘+1</p><p><b>  {</b></p><p><b>  *q=0x00;</b></p><p>  while((*h&0x0f)!=0x0f)</p><p>&

73、lt;b>  {}</b></p><p>  if(alarm==0)</p><p><b>  {</b></p><p><b>  min++;</b></p><p>  if(min==60)</p><p><b>  min=0;

74、</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  a_min++;</b></p><p>  if(a_

75、min==60)</p><p><b>  a_min=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0b) //是否為'B&#

76、39;鍵:進入小時設置模式</p><p><b>  {</b></p><p>  while((*h&0x0f)!=0x0b)</p><p><b>  {}</b></p><p>  led_hour_display();</p><p><b>

77、;  }</b></p><p>  else if((*h&0x0f)==0x0e) //是否為'D'鍵:完成設置</p><p><b>  {</b></p><p>  if(alarm==1)</p><p><b>  {</b&g

78、t;</p><p><b>  alarm=0;</b></p><p>  alarm_on=1;</p><p><b>  }</b></p><p><b>  while(1)</b></p><p>  {clock();}</p&g

79、t;<p><b>  }</b></p><p><b>  *q=0x08;</b></p><p><b>  *p=0x71;</b></p><p><b>  Delay(6);</b></p><p><b>  *q

80、=0x04;</b></p><p><b>  *p=0x40;</b></p><p><b>  Delay(6);</b></p><p>  if(alarm==0)</p><p><b>  {</b></p><p><

81、b>  *q=0x02;</b></p><p>  *p=LED[min/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x01;</b></p><p>  *p=LED[min%10];</p><p&

82、gt;<b>  Delay(6);</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  *q=0x02;</b></

83、p><p>  *p=LED[a_min/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x01;</b></p><p>  *p=LED[a_min%10];</p><p><b>  Delay(6);<

84、;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //*****************************延時程序**************************

85、*****</p><p>  void Delay(unsigned char z)</p><p><b>  {</b></p><p>  unsigned char i,j;</p><p>  for(i=z;i>0;i--)</p><p>  for(j=150;j>0

86、;j--);</p><p><b>  }</b></p><p>  //*****************************鍵盤程序*******************************</p><p>  void setting()</p><p><b>  {</b>&l

87、t;/p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  *q=0x3f;</b></p><p>  *p=0x40; //輸出'------'

88、表示進入設置模式</p><p><b>  *l=0xfb;</b></p><p>  if((*h&0x0f)==0x0b) //是否為'B'鍵:進入小時設置模式</p><p><b>  {</b></p><p>  led_hou

89、r_display();</p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0d) //是否為'C'鍵:進入分鐘設置模式</p><p><b>  {</b></p><p>  led_min_d

90、isplay();</p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0e) //是否為'D'鍵:完成設置</p><p><b>  {</b></p><p><b>  while(1)<

91、;/b></p><p>  {clock();}</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //**************************

92、****時鐘程序******************************</p><p>  void clock()</p><p><b>  {</b></p><p>  for(;hour<24;hour++)</p><p><b>  {</b></p><

93、;p>  for(;min<60;min++)</p><p><b>  {</b></p><p>  if((a_hour==hour)&&(a_min==min)&&alarm_on==1) //鬧鐘時間到</p><p><b>  {</b></p>

94、<p><b>  do{</b></p><p>  P1_0=~P1_0;</p><p><b>  Delay(3);</b></p><p><b>  *q=0x3f;</b></p><p><b>  *p=0x77;</b>&l

95、t;/p><p>  }while (sec<11);</p><p>  alarm_on=0;</p><p><b>  do{</b></p><p><b>  *q=0x00;</b></p><p>  led_time_display();</p>

96、;<p>  }while (sec<60);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  do{</b></p><p><b>  *q=0x00;</b><

97、;/p><p>  led_time_display();</p><p>  }while (sec<60);</p><p><b>  sec=0;</b></p><p><b>  }min=0;</b></p><p><b>  }hour=0;&l

98、t;/b></p><p><b>  }</b></p><p>  //******************************鬧鐘程序******************************</p><p>  void alarm_clock()</p><p><b>  {</b

99、></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  led_alarm_display();</p><p><b>  *l=0xfb;</b></p><p>  if((*h&

100、amp;0x0f)==0x0b) //是否為'B'鍵:進入小時設置模式</p><p><b>  {</b></p><p><b>  alarm=1;</b></p><p>  led_hour_display();</p><p><b&

101、gt;  }</b></p><p>  else if((*h&0x0f)==0x0d) //是否為'C'鍵:進入分鐘設置模式</p><p><b>  {</b></p><p><b>  alarm=1;</b></p><p> 

102、 led_min_display();</p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0e) //是否為'D'鍵:完成設置</p><p><b>  {</b></p><p><b>  a

103、larm=0;</b></p><p>  alarm_on=1;</p><p><b>  while(1)</b></p><p>  {clock();}</p><p><b>  }</b></p><p><b>  }</b>

104、</p><p><b>  }</b></p><p>  //*******************************主函數(shù)*******************************</p><p>  void main()</p><p><b>  {</b></p>

105、<p>  TMOD=0x01;</p><p>  TH0=-(50000/256);</p><p>  TL0=-(50000%256);</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p>&

106、lt;b>  TR0=1;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  clock();</b></p><p><b>  }</b></p&g

107、t;<p><b>  }</b></p><p><b>  附 錄 B</b></p><p><b>  附 錄C</b></p><p>  Bill of Material for BACKUP~3.Bom</p><p>  Used Part T

108、ype Designator Footprint</p><p>  ==== ============== ========== ==========</p><p>  1 0 S13</p><p>  1 1 S12</p><p>  2 1K

109、 R1 R4</p><p>  1 2 S14</p><p>  1 3 S16</p><p>  1 4 S2</p><p>  1 5 S4</p><p>  1

110、 6 S6</p><p>  1 6MHz Y1</p><p>  1 7 S1</p><p>  1 8 S3</p><p>  1 9 S5</p><p>

111、;  4 10K R3 R5 R6</p><p><b>  R7</b></p><p>  1 20uF C3</p><p>  1 22uF C4</p><p>  1 30uF C2</p>

112、<p>  1 74LS32 U2 DIP-14</p><p>  1 74LS138 U6 DIP-16</p><p>  1 74LS245 U4 DIP-20</p><p>  2 74LS374 U1 U7

113、 DIP-20</p><p>  1 100 R2</p><p>  1 103pF C1</p><p>  1 8031AH U3 DIP-40</p><p>  1 A S7</p><

114、;p>  1 B S8</p><p>  1 C S18</p><p>  1 D S19</p><p>  6 DPY_7-SEG_DP DS1 DS2</p><p><b>  DS3 DS4</b>

115、;</p><p><b>  DS5 DS6</b></p><p>  1 E S17</p><p>  1 EXEC S21</p><p>  1 F S15</p><p>  1 HERE

116、 S20</p><p>  1 LAST S22</p><p>  1 MODE S9</p><p>  1 MON S11</p><p>  1 MOVE S10</p><p>  

117、1 NEXT S23</p><p>  1 NOT U5</p><p>  1 NPN Q1</p><p>  1 SPEAKER LS1</p><p><b>  課程設計成績評定表</b></p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論