單片機課程設計論文---個性化電子時鐘設計_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機課程設計</b></p><p><b>  個性化電子時鐘設計</b></p><p><b>  目錄</b></p><p><b>  摘 要2</b></p><p><b>  一、電子時鐘2

2、</b></p><p>  1.1電子時鐘簡介2</p><p>  1.2 電子時鐘的基本特點2</p><p>  1.3 電子時鐘的原理3</p><p>  二、 單片機識的相關知識3</p><p>  2.1 單片機簡介3</p><p>  2.2 單片

3、機的發(fā)展史3</p><p>  1 . 4位單片機3</p><p>  2 . 8位單片機3</p><p>  3 . 16位單片機4</p><p>  4 . 32位單片機4</p><p>  5 . 64位單片機4</p><p>  2.3 單片機的特點4</

4、p><p>  2.4 AT89C51單片機介紹5</p><p>  三、 控制系統的硬件設計7</p><p>  3.1 單片機型號的選擇7</p><p>  3.2 數碼管顯示工作原理7</p><p>  3.3 74LS373介紹8</p><p>  3.4 整個電路

5、原理圖9</p><p>  四、 控制系統的軟件設計9</p><p><b>  4.1程序清單9</b></p><p>  4.2仿真結果15</p><p><b>  五、心得16</b></p><p><b>  六、參考文獻17<

6、;/b></p><p><b>  摘 要</b></p><p>  單片計算機即單片微型計算機。由RAM ,ROM,CPU構成,定時,計數和多種接口于一體的微控制器。它體積小,成本低,功能強,廣泛應用于智能產業(yè)和工業(yè)自動化上。而51系列單片機是各單片機中最為典型和最有代表性的一種。這次課程設計通過對它的學習,應用,從而達到學習、設計、開發(fā)軟、硬的能力。&

7、lt;/p><p>  本設計主要設計了一個基于AT89C51單片機的電子時鐘。在數碼管通過一個控制鍵轉換來顯示相應的時間和日期。并通過多個控制鍵用來實現時間和日期的調節(jié)。應用keil軟件實現單片機電子時鐘系統的程序設計,用Proteus的ISIS軟件實現仿真。該方法仿真效果真實、準確,節(jié)省了硬件資源。</p><p>  關鍵字:單片機 時鐘 鍵盤控制</p><p&

8、gt;<b>  一、電子時鐘 </b></p><p>  1.1電子時鐘簡介 </p><p>  1957年,Ventura發(fā)明了世界上第一個電子表,從而奠定了電子時鐘的基礎,電子時鐘開始迅速發(fā)展起來?,F代的電子時鐘是基于單片機的一種計時工具,采用延時程序產生一定的時間中斷,用于

9、一秒的定義,通過計數方式進行滿六十秒分鐘進一,滿六十分小時進一,滿二十四小時小時清零。從而達到計時的功能,是人民日常生活補課缺少的工具。</p><p>  1.2 電子時鐘的基本特點 </p><p>  現在高精度的計時工具大多數都使用了石英晶體振蕩器,由于電子鐘、石英鐘、石英表都采用了石英技術,因此走時精

10、度高,穩(wěn)定性好,使用方便,不需要經常調試,數字式電子鐘用集成電路計時,譯碼代替機械式傳動,用LED顯示器代替指針顯示進而顯示時間和日期,減小了誤差,這種表具有時、分、秒顯示時間的功能和年月日顯示日期的功能,還可以進行校對,片選的靈活性好。</p><p>  1.3 電子時鐘的原理 </p><p>  該電子時鐘由AT89C51,74LS373,BUTTON,數碼管等構成,采

11、用晶振電路作為驅動電路,由延時程序和循環(huán)程序產生的一秒定時,達到時分秒的計時,六十秒為一分鐘,六十分鐘為一小時,滿二十四小時為一天,滿三十天(閏年二月滿二十九天,平年二月滿二十八天)為一個月,滿十二個月為一年。電路中的鍵控1實現“年”和“分”的調節(jié),鍵控2實現“月”和“時”的調節(jié),鍵控3實現“日”和“分”的調節(jié)。每按一次就加一。</p><p>  二、 單片機識的相關知識

12、 </p><p>  2.1 單片機簡介 </p><p>  單片機全稱為單片機微型計算機(Single Chip Microsoftcomputer)。從應用領域來看,單片機主要用來控制,所以又稱為微控制器(Microcontroller Unit)或嵌入式控制器。單片機是將計算機的基本部件微型化并集成在一塊芯片上的微型計算機。</p>&

13、lt;p>  2.2 單片機的發(fā)展史</p><p>  1 . 4位單片機 </p><p>  1975年,美國德克薩斯儀器公司首次推出4位單片機TMS-1000;此后,各個計算機公司競相推出四位單片機。日本松下公司的MN1400系列,美國洛克威爾公司的PPS/1

14、系列等。四位單片機的主要應用領域有:PC機的輸入裝置,電池充電器,運動器材,帶液晶顯示的音/視頻產品控制器,一般家用電器的控制及遙控器,電子玩具,鐘表,計算器,多功能電話等。 </p><p>  2 . 8位單片機

15、 </p><p>  1972年,美國Intel公司首先推出8位微處理器8008,并于1976年9月率先推出MCS-48系列單片機。在這以后,8位單片機紛紛面市。例如,莫斯特克和仙童公司合作生產的3870系列,摩托羅拉公司生產的6801系列等。隨著集成電路工藝水平的提高,一些高性能的8位單片機相繼問世。例如,1978年摩托羅拉公司的MC6801系列及齊洛格公司的Z8系列,1979年NEC公司

16、的UPD78XX系列。這類單片機的尋址能力達64KB,片內ROM容量達4--8KB,片內除帶有并行I\O口外,還有串行I\O口,甚至還有A\D轉化器功能。8位單片機由于功能強,被廣泛用于自動化裝置、智能儀器儀表、智能接口、過程控制、通信、家用電器等各個領域。</p><p>  3 . 16位單片機

17、 </p><p>  1983年以后,集成電路的集成度可達幾十萬只管/片,各系列16位單片機紛紛面市。這一階段的代表產品有1983年Intel公司推出的MCS-96系列,1987年Intel推出了80C96,美國國家半導體公司推出的HPC16040,NEC公司推出的783XX系列等。16位單片機主要用于工業(yè)控制,智能儀器儀表,便攜式設備等場合。</p><

18、;p>  4 . 32位單片機 </p><p>  隨著高新技術只智能機器人,光盤驅動器,激光打印機,圖像與數據實時處理,復雜實時控制,網絡服務器等領域的應用與發(fā)展,20世紀80年代末推出了32位單片機,如Motorlora公司的MC683XX系列,Intel的80960

19、系列,以及近年來流行的ARM系列單片機。32位單片機是單片機的發(fā)展趨勢,隨著技術的發(fā)展及開發(fā)成本和產品價格的下降,將會與8位單片機并駕齊驅。</p><p>  5 . 64位單片機 </p><p>  近年來,64位單片機在引擎控制,智能機器人,磁盤控制,語音圖

20、像通信,算法密集的實時控制場合已有應用,如英國Inmos公司的Transputer T800是高性能的64位單片機。</p><p>  2.3 單片機的特點 </p><p>  1 . 單片機的存儲器ROM和RAM時嚴格區(qū)分的。ROM稱為程序存儲器,只存放程序,固定常數,及數據表格。RAM則為數據

21、存儲器,用作工作區(qū)及存放用戶數據。 </p><p>  2 . 采用面向控制的指令系統。為滿足控制需要,單片機有更強的邏輯控制能力,特別是單片機具有很強的位處理能力。 </p><p>  3 . 單片機的I/O口通常時多功能的。由于單片機芯片上引腳數目有限,為了解決實際引腳數和需要的信號線的矛盾,采用了引腳

22、功能復用的方法,引腳處于何種功能,可由指令來設置或由機器狀態(tài)來區(qū)分。 </p><p>  4 . 單片機的外部擴展能力很強。在內部的各種功能部件不能滿足應用的需求時,均可在外部進行擴展,與許多通用的微機接口芯片兼容,給應用系統設計帶來了很大的方便。</p><p>  2.4AT89C51單片機介紹

23、 </p><p>  VCC:電源;GND:接地。</p><p>  P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程 序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進

24、行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p>  P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作 輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 </p><p>  P2口:P2口為一個內部上拉電阻的8位

25、雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻 拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存 儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器 的內容。P2口在FLASH編程和校驗時接收高八位

26、地址信號和控制信號。</p><p>  圖1 AT89C51單片機</p><p>  P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p>  P3口也可作為AT89C51的一些特

27、殊功能口,如下表所示:</p><p>  P3.0 RXD(串行輸入口)</p><p>  P3.1 TXD(串行輸出口)</p><p>  P3.2 /INT0(外部中斷0)</p><p>  P3.3 /INT1(外部中斷1)</p><p>  P3.4 T0(記時器0外部輸入)</p>&

28、lt;p>  P3.5 T1(記時器1外部輸入)</p><p>  P3.6 /WR(外部數據存儲器寫選通)</p><p>  P3.7 /RD(外部數據存儲器讀選通)</p><p>  P3口同時為閃爍編程和編程校驗接收一些控制信號。</p><p>  RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時

29、間。</p><p>  ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE 端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器 時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行

30、MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p>  PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。</p><p>  EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲(0000H-FFF

31、FH),不管是否有內部程序存儲器。注意加密方式1時, /EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p>  三、 控制系統的硬件設計</p><p>  3.1 單片機型號的選擇

32、 </p><p>  通過對多種單片機性能的分析,最終認為89C51是最理想的電子時鐘開發(fā)芯片。89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器,器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器,而且它與MCS

33、-51兼容,且具有4K字節(jié)可編程閃爍存儲器和1000寫/擦循環(huán),數據保留時間為10年等特點,是最好的選擇。</p><p>  3.2 數碼管顯示工作原理</p><p>  數碼管是一種把多個LED顯示段集成在一起的顯示設備。有兩種類型,一種是共陽型,一種是共陰型。共陽型就是把多個LED顯示段的陽極接在一起,又稱為公共端。共陰型就是把多個LED顯示段的陰極接在一起,即為公共商。陽極即為二

34、極管的正極,又稱為正極,陰極即為二極管的負極,又稱為負極。通常的數碼管又分為8段,即8個LED顯示段,這是為工程應用方便如設計的,分別為A、B、C、D、E、F、G、DP,其中DP 是小數點位段。而多位數碼管,除某一位的公共端會連接在一起,不同位的數碼管的相同端也會連接在一起。即,所有的A段都會連在一起,其它的段也是如此,這是實際最常用的用法。數碼管顯示方法可分為靜態(tài)顯示和動態(tài)顯示兩種。靜態(tài)顯示就是數碼管的8段輸入及其公共端電平一直有效。

35、動態(tài)顯示的原理是,各個數碼管的相同段連接在一起,共同占用8 位段引管線;每位數碼管的陽極連在一起組成公共端。利用人眼的視覺暫留性,依次給出各個數碼管公共端加有效信號,在此同時給出該數碼管加有效的數據信號,當全段掃描速度大于視覺暫留速度時,顯示就會清晰顯示出來。</p><p><b>  圖2 共陰數碼管</b></p><p>  3.3 74LS373介紹:&l

36、t;/p><p>  373為三態(tài)輸出的八 D 透明鎖存器,373 的輸出端 O0~O7 可直接與總線相連。 </p><p>  當三態(tài)允許控制端 OE 為低電平時,O0~O7 為正常邏輯狀態(tài),可用來驅動負載或總  線。當 OE 為高電平時,O0~O7 呈高阻態(tài),即不驅動總線,也不為總線的負載,鎖存器內部的邏輯操作不受影響。 當鎖存允許端 LE 為高電平時,O 隨數據 D 而變。當 LE 為

37、低電平時,O 被鎖存在 已建立的數據電平。當 LE 端施密特觸發(fā)器的輸入滯后作用,使交流和直流噪聲抗擾度被改善 400mV。 </p><p><b>  引出端符號: </b></p><p>  D0~D7 數據輸入端;OE 三態(tài)允許控制端(低電平有效;LE 鎖存允許端;O0~O7 輸出端</p><p>  圖3 74LS373<

38、/p><p>  3.4 整個電路原理圖 </p><p>  圖4 系統電路原理圖</p><p>  四、 控制系統的軟件設計 </p><p><b>  4.1程序清單&

39、lt;/b></p><p>  #include<reg52.h> </p><p>  #include<stdio.h></p><p>  sbit P20=P2^0; /****定義端口****/</p><p>  sbit khour=P3^0;

40、</p><p>  sbit kmin=P3^1;</p><p>  sbit knian=P3^2;</p><p>  sbit tiaonian=P3^3 ;</p><p>  sbit speaker=P3^7 ;</p><p>  int j=-1 ; /*****定義變量,j用以控制

41、掃描********/</p><p>  bit flag=0,leap=0; /*****定義flag控制時分秒和年月日的顯示,leap判斷是否為閏年***/</p><p>  char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;</p><p>  char dayshi=0,dayge

42、=0,monthshi=0,monthge=0,yearshi=0,yearge=0 ;</p><p>  unsigned int num=0,sec=0,min=0,hour=0; /****設置初始時間為00時0分0秒****/</p><p>  unsigned int day=1,month=1,year=10; /****設置初始日期為2010年1月1

43、日****/</p><p>  char saomiao[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; </p><p>  /****掃描數組,控制位選******/</p><p>  char shijian[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,

44、0x90};</p><p>  /*******共陰數碼管的0,1,2,3,4,5,6,7,8,9********/</p><p>  void delay(unsigned int z) /*******延時子程序******/</p><p>  { unsigned int x,y;</p>

45、;<p>  for(x=z;x>0;x--)</p><p>  for(y=10;y>0;y--) ;</p><p><b>  } </b></p><p>  void timer() interrupt 1 /*********定時器中斷0********/

46、</p><p><b>  {</b></p><p>  TH0=(65535-5000)/256; /******重新裝入初值*****/</p><p>  TL0=(65535-5000)%256;</p><p>  num++;

47、 </p><p><b>  j++;</b></p><p>  if((year%4==0&&year%100!=0)||(year%400==0)) /*******判斷是否為閏年******/</p><p>  leap=1; /*****

48、**閏年,使leap=1******/</p><p>  else </p><p>  leap=0; /*******平年,使leap=0******/</p><p>  if(num==150) /*****實驗微調

49、得num=150時大概為1s******/</p><p>  {num=0; </p><p>  sec++; /****秒自動加1*****/ </p><p>

50、<b>  }</b></p><p>  if(sec==60)</p><p><b>  { </b></p><p><b>  sec=0;</b></p><p>  min++; /****60s時,

51、分自動加1,秒歸0*****/ </p><p><b>  }</b></p><p>  if(min==60)</p><p><b>  {</b></p><p><b>  min=0;</b></p><p>  hour++;

52、 /****60分時,小時自動加1,分歸0*****/ </p><p><b>  }</b></p><p>  if(hour==24)</p><p><b>  {</b></p><p><b>  hour=0;</b>&

53、lt;/p><p><b>  min=0;</b></p><p><b>  sec=0;</b></p><p>  day++; /****24時,天自動加1,時分秒歸0*****/</p><p><b>  }</b><

54、/p><p>  /*************************************************************************************************************************************************************************月份的判斷,平年時的2月和閏年時的2月,以及30天和31天的判

55、斷**************************************************************************************************************************************************************if((leap==1&&month==2&&day==30)||(leap==0&

56、;&month==2&&day==29))</p><p><b>  {</b></p><p><b>  day=1;</b></p><p>  month++; /*****2月28天或29天時月自加1*****/</p><p><

57、;b>  }</b></p><p>  if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)</p><p><b>  {</b></p><p>  if(day==32) </p><p>&

58、lt;b>  {</b></p><p><b>  day=1;</b></p><p>  month++; /*****月為31天達到時月自動加1*****/</p><p><b>  }</b></p><p><b>  }</b>&l

59、t;/p><p>  if( month==4||month==6||month==9||month==11)</p><p><b>  {</b></p><p>  if(day==31)</p><p><b>  {</b></p><p><b>  day

60、=1;</b></p><p>  month++; /*****月為30天達到時月自動加1*****/</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(month==13)</p><p&g

61、t;<b>  {</b></p><p><b>  year++;</b></p><p>  month=1; /*********新的一年的開始**********/ </p><p><b>  }</b></p><p>  secge

62、=sec%10;</p><p>  secshi=sec/10;</p><p>  minge=min%10;</p><p>  minshi=min/10;</p><p>  hourge=hour%10;</p><p>  hourshi=hour/10;</p><p>  da

63、yge=day%10;</p><p>  dayshi=day/10;</p><p>  monthge=month%10;</p><p>  monthshi=month/10;</p><p>  yearge=year%10;</p><p>  yearshi=year/10;</p>&l

64、t;p>  P1=saomiao[j]; /*******數碼管的位選設置*********/</p><p>  if(flag==1) /*******flag=1,顯示年月日*******/</p><p><b>  {</b></

65、p><p>  if(P1==0x80) P2=shijian[dayge];</p><p>  if(P1==0x40) P2=shijian[dayshi];</p><p>  if(P1==0x20) P2=0xbf; /******年與月之間的分隔符“—”的顯示*****/</p><p> 

66、 if(P1==0x10) P2=shijian[monthge];</p><p>  if(P1==0x08) P2=shijian[monthshi];</p><p>  if(P1==0x04) P2=0xbf; /******月與天之間的分隔符“—”的顯示*****/</p><p>  if(P1==0x02)

67、 P2=shijian[yearge];</p><p>  if(P1==0x01) P2=shijian[yearshi];</p><p><b>  }</b></p><p>  else /*******flag=0,顯示時分秒*******/

68、</p><p><b>  {</b></p><p>  if(P1==0x80) P2=shijian[secge];</p><p>  if(P1==0x40) P2=shijian[secshi];</p><p>  if(P1==0x20) P2=0xbf;</p><

69、p>  if(P1==0x10) P2=shijian[minge];//xian shi </p><p>  if(P1==0x08) P2=shijian[minshi];</p><p>  if(P1==0x04) P2=0xbf;</p><p>  if(P1==0x02&&hour<24) P2=sh

70、ijian[hourge]; /*****顯示小時0~23*****/</p><p>  if(P1==0x01&&hour<24) P2=shijian[hourshi];</p><p><b>  }</b></p><p><b>  if(j==7)</b></p&g

71、t;<p><b>  {</b></p><p><b>  j=-1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void timer1() interrupt 0&

72、lt;/p><p>  /*************************************************************************************************************************************************************外部中斷0,設置標志flag, 按鍵未按下,flag=0,顯示時分秒,按鍵按下,

73、flag=1,顯示年月日*************************************************************************************************************************************************************/</p><p><b>  {</b></p&

74、gt;<p>  flag=!flag; /******按下knian按鈕****flag=1,x顯示年月日*******/</p><p><b>  }</b></p><p>  void control() /*******時分的調整子程序********/<

75、;/p><p><b>  {</b></p><p>  if(flag==0) /****顯示時分秒的情況下做時分的調整******/</p><p>  {if(kmin==0) </p><p><b>  {</

76、b></p><p><b>  min++;</b></p><p>  while(kmin==0);</p><p>  if(min==60)</p><p><b>  min=0;</b></p><p><b>  }</b><

77、/p><p>  if(khour==0)</p><p><b>  {</b></p><p><b>  hour++;</b></p><p>  // sec=0xc0;</p><p>  while (khour==0);</p><p>

78、  if(hour>23)</p><p><b>  hour=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag==1) /********顯示年月日的情況下做年月日的調整*

79、*********/</p><p><b>  {</b></p><p>  if(kmin==0)</p><p><b>  {</b></p><p><b>  day++;</b></p><p>  while(kmin==0);<

80、;/p><p><b>  }</b></p><p>  if(khour==0)</p><p><b>  {</b></p><p><b>  month++;</b></p><p>  while (khour==0);</p>

81、<p>  if(month>12)</p><p><b>  month=1;</b></p><p><b>  }</b></p><p>  if(tiaonian==0&&speaker==1)</p><p><b>  {</b>

82、;</p><p><b>  year++;</b></p><p>  while (tiaonian==0);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b&g

83、t;</p><p>  void baoshi() /******整點報時子程序********/ </p><p><b>  { </b></p><p>  if(min==0&&sec<10) /***

84、**整點鬧鐘響,響10秒*****/</p><p><b>  {</b></p><p>  speaker=0; </p><p>  delay(1) ;</p><p>  speaker=1 ;</p><p><b&

85、gt;  }</b></p><p><b>  else</b></p><p>  speaker=1;</p><p><b>  }</b></p><p>  void alarm() / ******鬧鐘子

86、程序*******/</p><p><b>  { </b></p><p>  bit ring=1;</p><p>  char xx=10;</p><p>  if(tiaonian==0) </p><p><b>  {</b></p>&l

87、t;p>  ring=0; </p><p>  delay(100);</p><p>  while(tiaonian==0); /******關閉正在叫的鬧鐘*****/</p><p><b>  }</b></p&

88、gt;<p>  if(hour==6&&min==xx&&ring==1) /*******鬧鐘按時鳴叫1分鐘******/ </p><p><b>  {</b></p><p>  speaker=0;</p><p>  delay(1) ;</p>&

89、lt;p>  speaker=1 ;</p><p><b>  }</b></p><p>  if(hour==6&&min==xx+1) /*****1分鐘后鬧鐘停止鳴叫*******/</p><p><b>  {</b></p><p>  s

90、peaker=1;</p><p><b>  }</b></p><p><b>  } </b></p><p>  void main()</p><p><b>  {</b></p><p>  TMOD=0x01;

91、 /*******設置工作方式******/</p><p><b>  TR0=1;</b></p><p>  P2=0; </p><p>  TH0=(65535-5000)/256; /******裝入計時初值*****/</p

92、><p>  TL0=(65535-5000)%256;</p><p><b>  IE= 0x82;</b></p><p>  IP=0x00; /*******設置中斷優(yōu)先級*****/</p><p><b>  EA=1;</b></

93、p><p>  EX0=1; /****開外部中斷0******/</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  control() ;</p><p>&

94、lt;b>  alarm() ;</b></p><p>  baoshi() ;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  4.2仿真結果</b></p><p>  

95、圖5.a 時間仿真圖(此時時間為0點10秒)</p><p>  圖5.b 日期仿真圖(此時日期為2010年1月1日)</p><p><b>  五、心得</b></p><p>  進過不懈的努力,我們順利完成了這次單片機課程設計課題中的個性化電子時鐘設計,</p><p>  本次仿真總的來說是實現了預期的效果,但

96、是喇叭把的效果不是很好。功能還不夠完善,設計還比較簡單。不過通過此次設計我們還是學會了不少東西。首先,學會了keil和proteus軟件。</p><p>  然后,由于此次程序是用C語言編寫的,以前的C語言知識的到了鞏固。同時,我們還領悟到了團隊精神的真諦。</p><p>  通過這次的設計使我認識到本人對單片機方面的知識知道的太少了,對于書本上的很多知識還不能靈活運用,尤其是對程序設

97、計語句的理解和運用,不能夠充分理解每個語句的具體含義</p><p>  總的來說,本次的設計使我從中學到了最重要的東西,那就是如何從理論到實踐的轉化,怎樣將我所學到的知識運用到我以后的工作中去。在大學的課堂的學習只是在給我們灌輸專業(yè)知識,而我們應把所學的用到我們現實的生活中去,此次的電子時鐘設計給我奠定了一個實踐基礎,我會在以后的學習、生活中磨練自己,使自己適應于以后的競爭,同時在查找資料的過程中我也學到了許多

98、新的知識,在和同學協作過程中增進同學間的友誼,使我對團隊精神的積極性和重要性有了更加充分的理解。</p><p>  最后,我覺得應該感謝xx老師在平時課堂上的啟發(fā)。使得我們在課程設計過程中,鞏固和學習了單片機知識。相信這對我以后的課程設計和畢業(yè)設計將會有很大的幫助!</p><p><b>  六、參考文獻</b></p><p>  [1]

溫馨提示

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

評論

0/150

提交評論