久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 帶鬧鐘的智能電子時鐘單片機課程設計實驗報告下載 [打印本頁]

作者: liron    時間: 2017-4-12 13:03
標題: 帶鬧鐘的智能電子時鐘單片機課程設計實驗報告下載
上海電力學院電子科學技術專業等電子課設作業實驗報告
微處理器綜合設計實踐報告
題目:智能電子時鐘的設計
院系:電子與信息工程學院   
專業: 電子科學與技術年級2014

姓名:沙沁  學號:20141378
指導老師:楊芳

一、課程設計目的

    綜合應用所學的微處理器原理,匯編語言及相關硬件知識,設計一個具有一定功能的電路。熟練掌握仿真器和編程器的使用。

二、課程設計要求:

    在面包板上搭建好硬件電路。以單片機為核心器件,組成一個電子時鐘系統。系統顯示用4位7段LED顯示器,顯示當前時間的小時和分。能夠通過按鍵實現對當前時間的調整,系統時間到整點后能夠通過蜂鳴器報時,時間為1s;能通過按鍵設置鬧鐘時間,鬧鐘時間到后,通過蜂鳴器報時。

三、系統組成與工作原理:

   1、電路原理圖

      

2、工作原理

本課程設計要求以AT89C52單片機為核心器件,組成一個電子時鐘系統。我們可以利用單片機自帶的定時器功能來進行定時,再通過一些軟件編程來構造出一個時鐘,同時也可以利用軟件的編程來實現所要求的其他功能。

通過四個按鍵開關來控制電子時鐘的工作模式。KEY1、KEY2分別對應時鐘的調時和調分。KEY3可以設置鬧鐘,進入鬧鐘模式后,KEY1、KEY2將轉變成鬧鐘的調時和調分鍵。此外,當按下KEY4就可以進入秒表模式,進入秒表模式以后,KEY1可以控制秒表的開始于暫停,KEY2可以對秒表清零,再次按下KEY4鍵便退出秒表模式。程序運行時主程序一直在循環查詢各按鍵的狀態,并將當前時間與鬧鐘設定時間不斷進行比較,如果時間相同則響鈴,同時通過動態顯示的方式將相應的時間顯示在數碼管顯示器上。與此同時,整個過程中時鐘的時間都是由單片機的定時器進行計時的。

單片機的P0口負責輸出段碼,P2.0~P2.3對應四個數碼管的位選端,分別為數碼管1號、2號、3號、4號(由右至左編號);P1.0對應蜂鳴器;P2.4~P2.7對應四個按鍵4、3、2、1(由上至下編號)。

各個分電路:

當P1.0為低電平時,三極管導通,蜂鳴器開始工作

在通電瞬間,電容C通過電阻R20充電,RST端出現正脈沖,用以復位。只要接通電源就完成了系統的復位初始化。

此處晶振為12MHz,提供單片機的時鐘頻率。晶振頻率越高,單片機運行速度越快。

P0口連接上拉電阻(排阻),用萬用表測試得數碼管為共陽極。當P2.3~P2.0口輸出低電平時,三極管導通,所對應的數碼管顯示;因為共陽極,所以P0口為低電平的端口所對應的段碼顯示。

當按鍵沒有按下時,P2.4~P2.7為高電平,若按下則變低電平。

31H——時鐘分的個位           3AH——時鐘分的個位的段碼
32H——時鐘分的十位           3BH——時鐘分的十位的段碼
33H——時鐘時的個位           3CH——時鐘時的個位的段碼
34H——時鐘時的十位           3DH——時鐘時的十位的段碼
41H——鬧鐘分的個位           4AH——鬧鐘分的個位的段碼
42H——鬧鐘分的十位           4BH——鬧鐘分的十位的段碼
43H——鬧鐘時的個位           4CH——鬧鐘時的個位的段碼
44H——鬧鐘時的十位           4DH——鬧鐘時的個位的段碼
51H~54H  分別存放著秒表模式下1~4號管要顯示的數字
5AH~5DH 分別存放著秒表模式下1~4號管要顯示的數字的段碼
其中,1號管——秒的十分位
      2號管——秒的個位
      3號管——秒的十位
      4號管——分的個位
R7的初值為20,控制定時器T0的中斷次數,T0中斷1次定時50ms,20次定時1s;
R0用來記錄秒;
詳見附件



四、總結

因為平時對于電路設計這方面的訓練比較少,電路也是自己最薄弱的地方。因此,在第一天拿到器件以后完全沒有方向,不知道從哪里開始設計。后來通過自己上網搜索資料,逐漸摸索出了思路,最終完成了電路的設計。

電路設計完之后,在面包板上搭建也讓我犯了難。什么器件應該放在哪個位置,這么放插孔夠不夠用,這么放連線方不方便成了我一直頭疼的問題。后來通過觀察上一屆學長的面包板和同學的討論,終于搭好了板子。但是因為對于面包板不熟悉,搭小燈泡時,把它的兩個引腳插在了聯通的兩個孔里,導致小燈泡一直不亮;插按鍵的時候也是,沒有搞清楚按鍵和面包板的構造,把按鍵的兩邊引腳都插在聯通的一排里,導致后面在驗證的時候出現了數碼管一直不亮的問題,后來經過老師的指導,解決了這個問題。

軟件的編寫可能是最困難的一個部分了。雖然之前有做過單片機實驗,寫過代碼,但是,實驗的代碼非常簡短,實現的功能很簡單。這次因為要實現很多功能,一開始我想偷懶,直接寫了代碼。這樣就導致了我的思路不成熟,運行下來有很多地方都是錯誤的。因此我才意識到,直接寫代碼是不可能的,要先畫流程圖理清思路。在我畫完流程圖以后,再會過去看我原來的代碼,才知道有多么的混亂。后來經過我分模塊的編寫,最后把它們匯總到一起,構成了最后的代碼,開始調試。

首先,我先在WAVE軟件里寫了一個最小系統的代碼,再通過wellon軟件,燒制到AT89C52單片機上,對最小系統進行測試。測試時發現小燈和蜂鳴器都沒有正常的工作。因為當時剛剛開始,并不知道該如何調試,就馬上叫老師了,老師發現小燈的兩個引腳插在了聯通的兩個孔里,才導致了不亮。當我把小燈的引腳插在其他地方時,燈就亮了。至于蜂鳴器不響的問題,我用萬用表測試了蜂鳴器周圍的所有電路發現都是正確的,測試蜂鳴器兩端的電壓,發現也是有電壓差的,我的代碼又沒有問題,一時不知道怎么辦才好。后來,我又連接電源,讓電路運行了一次,發現其實蜂鳴器是發出聲音的,只是很微弱以至于我們都把它忽略了。然后我就想是不是因為蜂鳴器兩端電壓太小導致的。于是,我就把和蜂鳴器相連接的電阻拿掉了,終于蜂鳴器也響了。最小系統測試完成。

后來,老師教我們使用了仿真器,這讓整個調試過程變得方便了許多。當我把整個代碼都編譯到仿真器里面時,板子上的數碼管沒有任何反應,但是換成同學的板子就可以顯示,這讓我覺得很不可思議。當我又寫了段測試數碼管的程序,讓它顯示的時候,數碼管也是可以正確顯示的。我實在想不出辦法,決定單步運行,看看到底哪里出現了問題。但是我單步運行了幾次,都沒有發現哪里有問題,于是只能求助于老師。老師通過設斷點的方法發現,我的按鍵完全沒有實現它的功能,于是就詢問我怎么安裝的按鍵,這才找出了原因,原來我的按鍵的安裝方向錯了。在改正了之后,我的數碼管就能正常的顯示了。

數碼管顯示之后,我發現我的鬧鐘到了指定時間不會響,然后我仔細再看了我的代碼,發現雖然寫了鬧鈴的子程序,但是在主程序里面并沒有調用,這才導致了鬧鐘不響。在有加了一句調用語句以后,鬧鐘就能正常工作了。

當我把前一天調試好的程序第二天再用仿真器進行測試時,發現蜂鳴器只要一通電就響了,完全不受程序的控制。為什么我程序一點都沒改過但是再次驗證又失敗了呢?我又拿了同學的板子做測試,發現她跟我是一樣的問題,于是我就想會不會是仿真器的問題。于是,我又拿了另一個仿真器測試了一下,發現程序是正常運行的;我又把蜂鳴器接在了第一個仿真器的P3口進行實驗,發現程序也是正常運行的。因此,我認為是第一個仿真器的P1口壞了。

通過這次課程設計,我對單片機有了更加深刻的認識,體會到了單片機的強大。同時,從設計電路圖到最后的驗證成功,在這整個過程中遇到了很多的問題,當遇到問題時我認為最重要的還是冷靜下來自己思考,仔細的檢查。因為很多的問題的出現大部分程度上是因為自己的不仔細。一個地方的出錯可能就導致了整個數碼管的不顯示,整個程序的實現不了功能。當出現了問題時,應該自己默默地看代碼,仔仔細細地觀察,看看到底哪里出現了問題,因為自己的代碼只有自己知道具體哪里是干什么的,自己檢查出來錯誤才會有成就感。總之,通過這次課程設計,我學習到了很多,也意識到了自己在動手方面的不足,希望在以后的學習中能改正這一缺點。


程序清單:



  1. ORG 0000H
  2.         AJMP MAIN
  3.         ORG 000BH
  4.         LJMP TIME    ;時鐘程序
  5.         ORG 001BH
  6.         LJMP IT1P    ;IT1P用于秒表計時
  7.         ORG 0030H
  8.   MAIN: MOV SP,#60H     ;堆棧指針初始化
  9.         MOV IE,#8AH     ;允許T0和T1中斷
  10.         MOV TMOD,#11H   ;T0和T1均工作在方式1
  11.         MOV TL0,#0B0H   ;給T0裝初值,中斷一次定時50ms
  12.         MOV TH0,#3CH
  13.         MOV R0,#0       ;用R0記錄秒
  14.         MOV R7,#20      ;中斷20次,定時1s
  15.         MOV 31H,#00H    ;時間初始化,顯示器顯示:00:00
  16.         MOV 32H,#00H
  17.         MOV 33H,#00H
  18.         MOV 34H,#00H
  19.         MOV 3AH,#0C0H
  20.         MOV 3BH,#0C0H
  21.         MOV 3CH,#0C0H
  22.         MOV 3DH,#0C0H
  23.         MOV 41H,#00H    ;鬧鐘初始化,定在00:00時刻
  24.         MOV 42H,#00H
  25.         MOV 43H,#00H
  26.         MOV 44H,#00H
  27.         MOV 4AH,#0C0H
  28.         MOV 4BH,#0C0H
  29.         MOV 4CH,#0C0H
  30.         MOV 4DH,#0C0H
  31.         MOV DPTR,#TAB   ;段碼表首地址傳給DPTR
  32.         SETB  P1.0
  33.         SETB TR0
  34. START1: JB P2.7,NEXT1    ;按鍵1調時
  35.         LCALL DEL1       ;調用延時程序,消除按鍵抖動
  36.         JB P2.7,NEXT1
  37.         JNB P2.7,[        DISCUZ_CODE_1        ]nbsp;      ;等待按鍵彈開
  38.         LCALL KEY1
  39. NEXT1: JB P2.6,NEXT2    ;按鍵2調分
  40.         LCALL DEL1
  41.         JB P2.6,NEXT2
  42.         JNB P2.6,$
  43.         LCALL KEY2
  44. NEXT2: JB P2.5,NEXT3    ;按鍵3設置鬧鐘
  45.         LCALL DEL1
  46.         JB P2.5,NEXT3
  47.         JNB P2.5,$
  48.         LCALL KEY3
  49. NEXT3: LCALL NAOZHONG      ;鬧鐘響鈴程序,當前時間與鬧鐘時間相同則響鈴
  50.         JB P2.4,DSPLY1   ;按鍵4秒表
  51.         LCALL DEL1
  52.         JB P2.4,DSPLY1
  53.         JNB P2.4,$
  54.         LCALL KEY4

  55. DSPLY1:  ;顯示時間
  56.         MOV P2,#0FEH     ;1號管顯示分的個位
  57.         MOV P0,3AH
  58.         LCALL DEL2
  59.         MOV P2,#0FDH     ;2號管顯示分的十位
  60.         MOV P0,3BH
  61.        LCALL DEL2
  62.         MOV P2,#0FBH     ;3號管顯示時的個位
  63.         MOV P0,3CH
  64.         CLR P0.7         ;點亮3號管后的小數點,區別時和分
  65.         LCALL DEL2
  66.         MOV P2,#0F7H     ;4號管顯示時的十位
  67.         MOV P0,3DH
  68.         LCALL DEL2
  69.         LJMP START1

  70.   TIME:   ;時鐘程序
  71.         DJNZ R7,LOOP1
  72.         MOV R7,#20
  73.         INC R0
  74.         CJNE R0,#60,LOOP1
  75.         MOV R0,#00H
  76.                   INC 31H
  77.                   MOV R1,31H
  78.                   CJNE R1,#10,TABLP1
  79.                   MOV 31H,#00H
  80.                   INC 32H
  81.                   MOV R1,32H
  82.                   CJNE R1,#6,TABLP1
  83.                   MOV 32H,#00H
  84.             LCALL BAOSHI
  85.                   INC 33H
  86.         MOV R1,33H
  87.         MOV R2,34H
  88.         CJNE R2,#2,LOOP2    ;判斷時的十位是否為2,若不是跳轉到LOOP2
  89.         CJNE R1,#4,TABLP1   ;接著判斷時的個位是否為4,若不是查表獲取段碼
  90.         MOV 33H,#00H        ;若為24時,則將時的個位和十位清零
  91.         MOV 34H,#00H
  92.         SJMP TABLP1
  93. LOOP2: CJNE R1,#10,TABLP1
  94.         MOV 33H,#00H
  95.         INC 34H
  96. TABLP1: MOV A,31H
  97.         MOVC A,@A+DPTR
  98.         MOV 3AH,A          ;分的個位的段碼
  99.         MOV A,32H
  100.         MOVC A,@A+DPTR
  101.         MOV 3BH,A          ;分的十位的段碼
  102.         MOV A,33H
  103.         MOVC A,@A+DPTR
  104.         MOV 3CH,A          ;時的個位的段碼
  105.         MOV A,34H
  106.         MOVC A,@A+DPTR
  107.         MOV 3DH,A          ;時的十位的段碼
  108. LOOP1: MOV TL0,#0B0H      ;給T0重裝初值
  109.         MOV TH0,#3CH
  110.         RETI

  111.   DEL1:  ;按鍵去抖延時程序(約10ms)
  112.         MOV R6,#20
  113. DEL11: MOV R5,#248
  114.         DJNZ R5,$
  115.         DJNZ R6,DEL11
  116.         RET

  117.   DEL2:  ;動態顯示延時程序(約5ms)
  118.         MOV 2CH,#10
  119. DEL21: MOV 2BH,#248
  120.         DJNZ 2BH,$
  121.         DJNZ 2CH,DEL21
  122.         RET

  123.   KEY2:  ;調分程序
  124.         MOV R0,#0         ;秒清零,使校時更加精準
  125.         MOV R7,#20
  126.         INC 31H           ;分的個位增1
  127.         MOV R1,31H
  128.         CJNE R1,#10,TABLP2
  129.         MOV 31H,#00H
  130.         INC 32H
  131.         MOV R1,32H
  132.         CJNE R1,#6,TABLP2
  133.         MOV 32H,#00H
  134. TABLP2: MOV A,31H
  135.         MOVC A,@A+DPTR
  136.         MOV 3AH,A         ;時鐘分的個位的段碼
  137.         MOV A,32H
  138.         MOVC A,@A+DPTR
  139.         MOV 3BH,A         ;時鐘分的十位的段碼
  140.         RET



  141.   KEY1:  ;調時程序
  142.         INC 33H           ;時的個位增1
  143.         MOV R1,33H
  144.         MOV R2,34H
  145.         CJNE R2,#2,LOOP3
  146.         CJNE R1,#4,TABLP3
  147.         MOV 33H,#00H
  148.         MOV 34H,#00H
  149.         AJMP TABLP3
  150. LOOP3: CJNE R1,#10,TABLP3
  151.         MOV 33H,#00H
  152.         INC 34H
  153. TABLP3: MOV A,33H
  154.         MOVC A,@A+DPTR
  155.         MOV 3CH,A          ;時的個位的段碼
  156.         MOV A,34H
  157.         MOVC A,@A+DPTR
  158.         MOV 3DH,A          ;時的十位的段碼
  159.         RET

  160.   KEY3:   ;鬧鐘設置程序
  161. START2: JB P2.5,NEXT4   ;判斷是否完成鬧鐘設置
  162.         LCALL DEL1
  163.         JB P2.5,NEXT4
  164.         JNB P2.5,$
  165.         LJMP EXIT1
  166. NEXT4: JB P2.7,NEXT5   ;按鍵1鬧鐘調時
  167.         LCALL DEL1
  168.         JB P2.7,NEXT5
  169.         JNB P2.7,$
  170.         LCALL AKEY1
  171. NEXT5: JB P2.6,DSPLY2  ;按鍵2鬧鐘調分
  172.         LCALL DEL1
  173.         JB P2.6,DSPLY2
  174.         JNB P2.6,$
  175.         LCALL AKEY2
  176. DSPLY2: MOV P2,#0FEH    ;1號管顯示鬧鐘分的個位
  177.         MOV P0,4AH
  178.         CLR P0.7          ;點亮1號管后面的小數點,區分時鐘和鬧鐘
  179.         LCALL DEL2
  180.         MOV P2,#0FDH    ;2號管顯示鬧鐘分的十位
  181.         MOV P0,4BH
  182.         LCALL DEL2
  183.         MOV P2,#0FBH    ;3號管顯示鬧鐘時的個位
  184.         MOV P0,4CH
  185.         CLR P0.7        ;點亮3號管后面的小數點,區別時和分
  186.         LCALL DEL2
  187.         MOV P2,#0F7H    ;4號管顯示鬧鐘時的十位
  188.         MOV P0,4DH
  189.         LCALL DEL2
  190.         LJMP START2
  191. EXIT1: RET

  192. AKEY2:  ;鬧鐘調分程序
  193.         INC 41H
  194.         MOV R3,41H
  195.         CJNE R3,#10,TABLP4
  196.         MOV 41H,#00H
  197.         INC 42H
  198.         MOV R3,42H
  199.         CJNE R3,#6,TABLP4
  200.         MOV 42H,#00H
  201. TABLP4: MOV A,41H
  202.         MOVC A,@A+DPTR
  203.         MOV 4AH,A         ;鬧鐘分的個位的段碼
  204.         MOV A,42H
  205.         MOVC A,@A+DPTR
  206.         MOV 4BH,A         ;鬧鐘分的十位的段碼
  207.         RET


  208. AKEY1:  ;鬧鐘調時程序
  209.         INC 43H
  210.         MOV R3,43H
  211.         MOV R4,44H
  212.         CJNE R4,#2,LOOP4
  213.         CJNE R3,#4,TABLP5
  214.         MOV 43H,#00H
  215.         MOV 44H,#00H
  216.         AJMP TABLP5
  217. LOOP4: CJNE R3,#10,TABLP5
  218.         MOV 43H,#00H
  219.         INC 44H
  220. TABLP5: MOV A,43H
  221.         MOVC A,@A+DPTR
  222.         MOV 4CH,A         ;鬧鐘時的個位的段碼
  223.         MOV A,44H
  224.         MOVC A,@A+DPTR
  225.         MOV 4DH,A         ;鬧鐘時的十位的段碼
  226.         RET

  227. NAOZHONG:  ;鬧鐘響鈴程序
  228.         MOV A,31H          ;當前時間與鬧鐘設定時間相同則響鈴
  229.         CJNE A,41H,OFF
  230.         MOV A,32H
  231.         CJNE A,42H,OFF
  232.         MOV A,33H
  233.         CJNE A,43H,OFF
  234.         MOV A,34H
  235.         CJNE A,44H,OFF
  236.         CLR P1.0
  237.         AJMP ON
  238.    OFF: SETB P1.0
  239.     ON: RET
  240.   KEY4:  ;秒表程序
  241.         MOV 51H,#00H    ;秒的十分位
  242.         MOV 52H,#00H    ;秒的個位
  243.         MOV 53H,#00H    ;秒的十位
  244.         MOV 54H,#00H    ;分的個位
  245.         MOV 5AH,#0C0H   ;秒表初始化,顯示器顯示:0:00.0
  246.         MOV 5BH,#0C0H
  247.         MOV 5CH,#0C0H
  248.         MOV 5DH,#0C0H
  249.         MOV TL1,#0B0H   ;T1裝初值,中斷一次計時50ms
  250.         MOV TH1,#3CH
  251.         MOV R4,#2       ;中斷兩次,定時0.1s
  252.         SETB PT1        ;設T1為高優先級中斷
  253.         CLR TR1
  254. START3: JB P2.4,NEXT6   ;判斷是否退出秒表模式
  255.         LCALL DEL1
  256.         JB P2.4,NEXT6
  257.         JNB P2.4,$
  258.         LJMP EXIT2
  259. NEXT6: JB P2.7,NEXT7   ;秒表開始/暫停
  260.         LCALL DEL1
  261.         JB P2.7,NEXT7
  262.         JNB P2.7,$
  263.         CPL TR1
  264. NEXT7: JB P2.6,DSPLY3   ;秒表清零



  265. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼



完整的論文下載(word格式可編輯):

11111.doc (684 KB, 下載次數: 51)


作者: fxhfxh    時間: 2017-4-12 19:26
匯編寫的,以前的了.可以參考.
作者: doublercloud    時間: 2017-12-23 10:12
參考  看看




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人免费观看男女羞羞视频 | av一区二区在线观看 | 国产精品久久久久久一区二区三区 | 国产激情视频在线观看 | 国产精品久久久免费 | 亚洲精品乱码久久久久久9色 | 精久久久 | 中文天堂在线观看 | 国产精品精品视频 | 国产成人区| 一区二区三区视频在线观看 | 99re视频| 久久久久久久久久影视 | 在线成人免费视频 | 99国产精品视频免费观看一公开 | 羞羞视频免费观看 | 久久久久久99 | 福利视频一区 | 国产95在线 | 久久精品国产免费 | 欧美伊人影院 | 欧美激情在线观看一区二区三区 | 视频在线一区二区 | 国产一级一级 | 亚洲视频www | 国产成人精品一区二区三区 | 精品中文字幕一区 | 91视频网址 | 精品视频久久久 | 日韩精品一区二区三区在线 | 午夜视频免费在线观看 | 天天干夜夜操 | 欧美一区二区在线免费观看 | yiren22 亚洲综合 | 大乳boobs巨大吃奶挤奶 | 久草综合在线视频 | 国产精品久久国产精品 | 精品美女久久久久久免费 | 午夜资源 | 免费黄色大片 | 蜜桃视频在线观看免费视频网站www |