單片機(jī)課程設(shè)計(jì)--電子鐘_第1頁(yè)
已閱讀1頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  1 緒論</b></p><p>  電子鐘已成為人們?nèi)粘I钪斜夭豢缮俚奈锲?,廣泛用于個(gè)人、家庭以及車站、影院、辦公室等公共場(chǎng)所,給人們的生活、學(xué)習(xí)、工作帶來(lái)了極大的方便。隨著電子技術(shù)的發(fā)展,人們已不再滿足于鐘表原先最簡(jiǎn)單的報(bào)時(shí),希望出現(xiàn)一些新的功能,諸如日歷的顯示、鬧鐘的非接觸式止鬧、秒表功能、重要日期倒計(jì)時(shí)顯示等,以帶來(lái)更大的方便,而所有這些,又都是以數(shù)

2、字化的電子時(shí)鐘為基礎(chǔ)的。因此,研究數(shù)字電子鐘及其擴(kuò)展應(yīng)用,有著非?,F(xiàn)實(shí)的意義和實(shí)用價(jià)值。</p><p>  單片機(jī)是指將微處理器、一定容量的RAM和ROM以及I/O口、定時(shí)器等電路集成在一塊芯片上的完整計(jì)算機(jī)系統(tǒng)。89C51單片機(jī)是一種低功耗、高性能的,它采用CMOS工藝和高密度非易失性存儲(chǔ)器(NURAM)技術(shù),其輸出引腳和指令系統(tǒng)都與MCS-51兼容;片內(nèi)的Flash ROM允許在系統(tǒng)內(nèi)改編程序或用常規(guī)的NU

3、RAM編程器來(lái)編程。因此,89C51是一種功能強(qiáng)、靈活性高,而且價(jià)格合理的單片機(jī),可以方便的利用AT89C51定時(shí)器和6位7段數(shù)碼管,設(shè)計(jì)一個(gè)電子時(shí)鐘。顯示格式位 “XX XX XX”,從左向右分別是:時(shí)、分、秒。</p><p><b>  1.1 設(shè)計(jì)目的</b></p><p>  利用MCS-51芯片及相關(guān)芯片設(shè)計(jì)數(shù)字鐘。</p><p

4、><b>  1.2 設(shè)計(jì)內(nèi)容</b></p><p><b>  1)硬件設(shè)計(jì)</b></p><p>  設(shè)計(jì)數(shù)字鐘的電路原理圖,用PROTEUS繪制硬件電路。制作實(shí)物。</p><p><b>  2)軟件設(shè)計(jì)</b></p><p>  (1)時(shí)、分、秒的設(shè)置及顯

5、示;</p><p>  (2)畫(huà)出程序框圖;</p><p>  (3)調(diào)試與分析。用PROTEUS仿真。</p><p><b>  2 硬件設(shè)計(jì)</b></p><p>  2.1 設(shè)計(jì)的總體思路</p><p>  硬件系統(tǒng)主要由單片機(jī)最小應(yīng)用系統(tǒng)、LED數(shù)碼管顯示模塊、晶振模塊、按鍵模

6、塊等組成。在使用單片機(jī)的過(guò)程中必定會(huì)使用單片機(jī)的最小系統(tǒng),由于我購(gòu)買的單片機(jī)內(nèi)部沒(méi)有晶振,所以設(shè)計(jì)了外接的晶振模塊。鑒于本次課程設(shè)計(jì)要求制作數(shù)字鐘,所以使用了六位7段數(shù)碼管來(lái)顯示“XX XX XX”,從左向右分別是:時(shí)、分、秒。除了能上電復(fù)位,還設(shè)計(jì)了用三個(gè)按鍵實(shí)現(xiàn)時(shí)、分、秒的調(diào)制,使用方便靈活。</p><p>  2.2 單片機(jī)最小系統(tǒng)</p><p>  對(duì)51系列單片機(jī)來(lái)說(shuō),單

7、片機(jī)+晶振電路+復(fù)位電路,便組成了一個(gè)最小系統(tǒng)。見(jiàn)圖2.1。</p><p><b>  圖2.1</b></p><p><b>  2.3 晶振模塊</b></p><p>  在AT89C51芯片內(nèi)部有一個(gè)高增益反相放大器,其輸入端為芯片引腳XTAL1(19腳),輸出端為引腳XTAL2(18腳)。而在芯片內(nèi)部,XTA

8、L1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。時(shí)鐘電路產(chǎn)生的振蕩脈沖經(jīng)過(guò)觸發(fā)器進(jìn)行二分頻之后,才成為單片機(jī)的時(shí)鐘脈沖信號(hào)。見(jiàn)圖2.2。</p><p><b>  圖2.2</b></p><p><b>  2.4 按鍵模塊</b></p><p>  用三個(gè)按鍵實(shí)現(xiàn)對(duì)時(shí)分秒的設(shè)置,其中一個(gè)

9、按鍵實(shí)現(xiàn)對(duì)時(shí)分秒的控制,接P1.4口,另外兩個(gè)按鍵接單片機(jī)的P1.5和P1.6口實(shí)現(xiàn)加一和減一的功能。</p><p>  2.5 LED數(shù)碼管顯示模塊</p><p>  本次課程設(shè)計(jì)由于要顯示時(shí)、分、秒,所以采用廣泛使用的數(shù)碼管動(dòng)態(tài)顯示接口。動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位

10、選通控制電各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是哪個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開(kāi),該位就顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮。通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過(guò)程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各

11、位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。</p><p>  將數(shù)碼管的位選信號(hào)接P2口的六個(gè)位,段選信號(hào)接P0口的八個(gè)位。再通過(guò)Keil軟件以及51C語(yǔ)言編程實(shí)現(xiàn)數(shù)字鐘的功能。本系統(tǒng)利用6位LED數(shù)碼管顯示時(shí)間,共陰極結(jié)構(gòu),當(dāng)要顯示某個(gè)數(shù)字時(shí)只要將數(shù)字所對(duì)應(yīng)的引腳送入低電平。</

12、p><p><b>  2.6 硬件連接圖</b></p><p>  通過(guò)對(duì)設(shè)計(jì)電路的各個(gè)模塊的分析,可以用PROTEUS繪制硬件電路。如圖2.3所示。</p><p><b>  圖2.3</b></p><p><b>  2.7制作實(shí)物</b></p><

13、;p><b> ?。ㄒ?jiàn)附錄A)</b></p><p><b>  3 軟件設(shè)計(jì)</b></p><p>  單片機(jī)最主要的功能是通過(guò)程序來(lái)實(shí)現(xiàn)各種功能,有了硬件的描述,再加上軟件的編程,通過(guò)不斷的調(diào)試與修改程序就能實(shí)現(xiàn)本次課程設(shè)計(jì)的目的。</p><p>  3.1 程序流程圖</p><p

14、>  系統(tǒng)總的流程圖,見(jiàn)圖3.1。</p><p><b>  圖3.1</b></p><p>  3.2 調(diào)試與分析</p><p>  由于在焊接實(shí)物之前,我大量查閱了資料,弄明白了此次課程設(shè)計(jì)任務(wù)的基本原理,對(duì)原理有了基本的認(rèn)識(shí)后,就開(kāi)始了焊接工作。雖然焊接花費(fèi)了我大量的時(shí)間,但是在焊好以后上電時(shí),所有的數(shù)碼管都亮,說(shuō)明焊接連線

15、沒(méi)有短路情況。</p><p>  硬件連接好以后就是軟件編程,但是編寫程序中遇到了挺多問(wèn)題,比如:編寫程序是沒(méi)有消除抖動(dòng)。在同學(xué)的幫助下,使得數(shù)碼管能正常實(shí)現(xiàn)數(shù)字鐘的功能。</p><p><b>  3.3 源程序</b></p><p><b> ?。ㄒ?jiàn)附錄B)</b></p><p>&l

16、t;b>  4 心得與結(jié)論</b></p><p>  本次課程設(shè)計(jì)以AT89C51為核心部件,實(shí)現(xiàn)時(shí)間的設(shè)置功能。通過(guò)六位7段數(shù)碼管顯示可方便地校對(duì)時(shí)間,利用Keil軟件編程完成時(shí)鐘的功能。</p><p>  通過(guò)實(shí)物的焊接以及軟件的仿真和編寫程序基本完成了數(shù)字電子鐘的功能,盡量做到了硬件電路簡(jiǎn)單穩(wěn)定,減小電磁干擾和其它環(huán)境干擾,充分發(fā)揮了軟件編程的優(yōu)點(diǎn),減小了因器

17、件精度不夠引起的誤差。由于時(shí)間有限和本身知識(shí)水平的局限,我認(rèn)為此次設(shè)計(jì)還有需要改進(jìn)和提高的地方,例如選用更高精度的元器件,硬件電路更加精確穩(wěn)定等。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 楊文龍.單片機(jī)原理及應(yīng)用[M].西安電子科技大學(xué)出版社,1993.</p><p>  [2] 李朝青.單片機(jī)原理及接口

18、技術(shù)[M].北京航空航天大學(xué)出版社,2003.</p><p>  [3] 胡漢才.單片機(jī)原理及系統(tǒng)設(shè)計(jì)[M].清華大學(xué)出版社,2003.</p><p>  [4] 楊忠煌,黃博俊,李文昌.單芯片8051實(shí)務(wù)與應(yīng)用[M].中國(guó)水利水電出版社,2001.</p><p>  [5] 王守中,51單片機(jī)開(kāi)發(fā)入門與典型實(shí)例[M].人民郵電出版社.</p>

19、;<p>  [6] 黃文梅.系統(tǒng)分析與仿真:MATLAB語(yǔ)言及應(yīng)用[M].國(guó)防科技大學(xué)出版社,1999.</p><p>  [7] 閻石.數(shù)字電子技術(shù)(第五版)[M].北京高等教育出版社,2006.</p><p>  [8] 蔡明文,馮先成.單片機(jī)課程設(shè)計(jì)[M].華中科技大學(xué)出版社,2007.</p><p>  [9] 陳明螢.8051

20、單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)材料[M].清華大學(xué)出版社,2004.</p><p>  [10] 李可為.數(shù)字鐘電路及應(yīng)用[M].電子工業(yè)出版社,1996.</p><p>  [11] 夏繼強(qiáng),沈德金.單片機(jī)實(shí)驗(yàn)與實(shí)踐教程(二)[M]北航出版社,2001.</p><p>  [12] 張紅潤(rùn),藍(lán)清華.單片機(jī)應(yīng)用技術(shù)教程[M]清華大學(xué)出版社,1997.</p&g

21、t;<p>  [13] 周立功.單片機(jī)實(shí)驗(yàn)與實(shí)踐[M]北京航空航天大學(xué)出版社,2004.</p><p>  [14] 何立民.單片機(jī)應(yīng)用文集(一)[M].北京航空航天大學(xué)出版社,1991.</p><p>  [15] 方大千,鮑俏偉.使用電子控制電路[M].國(guó)防科技出版社,2003. </p><p>  [16] 曾繁泰.EDA工程概論

22、[M].清華大學(xué)出版社,2002.</p><p>  [17] 譚會(huì)生,張昌凡.EDA技術(shù)及應(yīng)用[M].西安電子科技大學(xué)出版社,2004.</p><p>  [18] 李強(qiáng).鍵盤接口程序計(jì)數(shù)[J].電子設(shè)計(jì)出版社,2003.</p><p>  [19] 肖來(lái)勝.單片機(jī)技術(shù)實(shí)用教程[M].華中科技大學(xué)出版社,2004.</p><p&g

23、t;  [20] 楊曉川.Portel設(shè)計(jì)指導(dǎo)教程[M].清華大學(xué)出版社,2003.</p><p><b>  致謝</b></p><p>  首先,很感謝學(xué)院給我們電氣工程及其自動(dòng)化專業(yè)的學(xué)生一次把理論加深的機(jī)會(huì),使得我們更好的理解《單片機(jī)原理及接口技術(shù)》這門課程,通過(guò)實(shí)物的焊接以及軟件仿真使得自己的動(dòng)手能力有了一定的提高;其次,雖然這次課程設(shè)計(jì)是每個(gè)人制作一

24、個(gè)實(shí)物,但是大家一起討論,分析,最終調(diào)試成功,使大家的思維更加開(kāi)闊;最后,感謝余老師的研究生給予我們焊接工具的支持。</p><p><b>  附錄A</b></p><p><b>  制作的實(shí)物照片</b></p><p><b>  附錄B</b></p><p>&l

25、t;b>  源程序清單</b></p><p>  #include<reg52.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  uint hhh,mmm,sss;</p>

26、<p>  uint status;</p><p><b>  //函數(shù)聲明 </b></p><p>  void delayMS(uint t) ; </p><p>  void keyprocess(unsigned char key);</p><p>  void display();<

27、;/p><p>  void timer0();</p><p>  main() //主函數(shù)</p><p><b>  { </b></p><p>  ucharsegcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0,1,2,3

28、,4,5,6,7,8,9</p><p>  uchar dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//數(shù)碼管位選碼</p><p>  buffer[]={0,0,0,0,0,0,0,0};</p><p>  bit keyrel;</p><p>  uchar buf;</p>

29、<p>  uchar keyin;</p><p><b>  keyrel=1;</b></p><p><b>  buf=0xff;</b></p><p>  TMOD=0x01; //T0工作在方式1,16位計(jì)數(shù)器</p><p>  TH0=(65536-100

30、0)/256;// 定時(shí)器0設(shè)置延時(shí)1ms中斷初始值</p><p>  TL0=(65536-1000)%256; </p><p>  TR0=1; </p><p>  IE=0x82; //開(kāi)定時(shí)器0中斷</p><p><b>  status=0;</b></p>&l

31、t;p><b>  //延時(shí)函數(shù)</b></p><p>  void delayMS(uint t) // 晶振頻率12MHZ</p><p><b>  {</b></p><p><b>  uint i;</b></p><p>  while(t--)

32、</p><p>  for(i=0;i<125;i++);</p><p><b>  }</b></p><p>  while(1) //鍵掃描程序 </p><p>  { </p><p>  keyin=P1&0xf0;</

33、p><p>  if(keyin!=0xf0) </p><p><b>  { </b></p><p>  delayMS(10);</p><p>  if(keyin!=0xf0)</p><p><b>  {</b></p><p>

34、  if(keyrel==1)</p><p><b>  {</b></p><p><b>  keyrel=0;</b></p><p>  buf = keyin; //buf用來(lái)暫時(shí)存放鍵值</p><p><b>  }</b></p><p

35、><b>  else</b></p><p><b>  {</b></p><p><b>  keyrel=1;</b></p><p>  keyprocess(buf); //調(diào)用按鍵處理函數(shù)</p><p>  buf = 0xff;</p>

36、<p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  keyrel=1;</b></

37、p><p>  keyprocess(buf);</p><p><b>  buf=0xff;</b></p><p><b>  } </b></p><p>  display();</p><p><b>  }</b></p>&l

38、t;p><b>  }</b></p><p><b>  //按鍵處理函數(shù)</b></p><p>  void keyprocess(unsigned char key) //鍵值處理,正常計(jì)時(shí),設(shè)置時(shí)分秒</p><p>  { switch (key)</p><p><b&

39、gt;  {</b></p><p>  case 0xe0:status++; //按下設(shè)置鍵</p><p>  if (status>=4) status = 0; </p><p><b>  break;</b></p><p>  case 0xd0:switch(status

40、) //按下加1鍵,3種模式下加1</p><p><b>  {</b></p><p>  case 0x01:if(hhh<24) hhh++;</p><p>  else hhh=0; break; </p><p>  case 0x02:if(mmm<60) mmm++;</p

41、><p>  else mmm=0; break;</p><p>  case 0x03:if(sss<60) sec++;</p><p>  else sss=0; break; </p><p><b>  }</b></p><p><b>  break;&l

42、t;/b></p><p>  case 0xb0:switch(status) //按下減1鍵</p><p><b>  {</b></p><p>  case 0x01:if(hhh>0) hhh--;</p><p>  else hour=23; break;</p><

43、;p>  case 0x02:if(mmm>0) mmm--;</p><p>  else min=59; break;</p><p>  case 0x03:if(sss>0) sss--;</p><p>  else sss=59; break; </p><p><b>  }<

44、/b></p><p><b>  break; </b></p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //數(shù)碼管顯示函數(shù)&

45、lt;/b></p><p>  void display()</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p><b>  //正常計(jì)時(shí)顯示</b></p><p><b> 

46、 {</b></p><p>  buffer[0]=hhh/10; // 顯示時(shí)的十位</p><p>  buffer[1]=hhh%10 // 顯示時(shí)的個(gè)位</p><p>  buffer[2]=mmm/10; // 顯示分的十位</p><p>  buffer[3]=mmm

47、%10; // 顯示分的個(gè)位</p><p>  buffer[4]=sss/10; // 顯示秒的十位</p><p>  buffer[5]=sss%10; // 顯示秒的個(gè)位</p><p>  for(i=0;i<6;i++)</p><p><b>  { </b

48、></p><p>  P0=segcode[buffer[i]];</p><p>  P2=dispbit[i];</p><p>  delayMS(1); //防止數(shù)碼管顯示的時(shí)候閃動(dòng)</p><p>  P2=0xff; //</p><p><b>  P0=0xff;

49、</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //定時(shí)器0中斷函數(shù)</p><p>  void timer0() interrupt 1

50、 using 2 </p><p><b>  { </b></p><p>  static uint count;</p><p>  TH0=(65536-1000)/256; // 定時(shí)器0設(shè)置初始值1ms中斷初始值</p><p>  TL0=(65536-1000)%256; </p&g

51、t;<p><b>  TR0=1;</b></p><p>  count++; //正常計(jì)時(shí)</p><p>  if(count>=1000) // 定時(shí) 1S 到,以下為時(shí)鐘的正常走鐘邏輯</p><p>  { </p><p><

52、b>  count=0;</b></p><p><b>  sss++;</b></p><p>  if(sss>60)</p><p>  { </p><p>  sss=0; mmm++;</p><p>  if(mmm>60

53、) </p><p>  { </p><p>  mmm=0; hhh++;</p><p>  if(hhh>24) </p><p><b>  { </b></p><p><b>  hhh=0; </b></p><

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論