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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3912|回復: 0
打印 上一主題 下一主題
收起左側

單片機自動報時系統設計實驗報告 流程圖 程序

[復制鏈接]
跳轉到指定樓層
樓主

流程圖:







本實驗所有資料打包下載: 單片機實驗.rar (55.34 KB, 下載次數: 7)



實驗報告論文如下:

單片機實驗報告
   
       ―自動報時系統設計實驗
                   院系電信學院自動化0106
                   姓名王建冬
                   學號200182012

一.     設計任務
1.時間顯示功能。用6位數碼管顯示時,分,秒。
2.利用鍵盤可以設定當前時間(時,分,秒)
3.2個LED指示燈L1,L2來表示輸出狀態
4.作息時間表存于ROM中,時間表如下:
08:00開始工作           L1亮2s后滅,L2滅;
11:30 午休               L1亮2s后滅,L2亮一個小時后滅;
12:30下午工作開始       L1亮2s后滅,L2滅;
17:00下班               L1亮2s后滅,L2亮十分鐘后滅;
二.     硬件連線圖 (附錄1)
三.     程序流程圖 (附錄2)
四.     程序 (附錄3)
        
五.     操作說明
      
系統上電顯示“LLLLLLLL”后,立即從初始時間7:56:30開始運行。當按下鍵盤last鍵后,進入修改模式,此時數碼管對應小時的位置閃爍,時間不停,再按一下last,退出修改模式,顯示正常。
在修改模式下:按下next鍵,轉換要修改的位置,由數碼管相應的位置閃爍,可知將要修改的是小時,分鐘,還是秒,此時間也不停止;按下shift鍵,時間停止,相應的位置加一,如果指向秒的位置則清零,實現修改時間的功能。修改完畢,再按一下last,退出修改模式,顯示正常。
六.     心得
       通過實驗,更好得理解了MCS-51單片機的硬件系統與指令系統,有了在ADEK51實驗設備上開發單片機的能力,同時對鍵盤掃描/顯示芯片8279有了一定的了解,并能熟練應用8279。
由于本實驗有一定的復雜性及應用性,所以更強調系統的設計步驟、方法,在實驗中還要不斷的修改,以使程序盡可能的合理與簡化,此次實驗增加了自己的開發經驗,為以后打下堅實的基礎。

程序:
  1. ;附錄3:源程序
  2. ;說明:
  3. ;R0指向30,31,32的地址指針,初始值為30 全局
  4. ;R1函數toram的入口,指向20的地址指針   全局
  5. ;R2定時一秒的常數 全局
  6. ;R3接受按鍵 全局
  7. ;R4報警標志位   全局         r3,r4是函數toram用到的寄存器   局部
  8. ;R5計時器狀態標志  全局      r5=00 計時器go  r5=11 計時器stop
  9. ;R6修改狀態標志  全局        r6=00 按鍵無效  r6=ff 進入修改狀態,
  10. ;R7函數toram的入口,全局 一個壓縮BCD碼
  11. ;20H開始的8個數據單元存放時間的BCD碼
  12. ;30H,31H,32H依次存放小時,分,秒的壓縮BCD碼

  13. Z8279   EQU  0FF82H
  14. D8279   EQU  0FF80H                    
  15. LEDMOD  EQU  10H                        
  16. LEDFEQ  EQU  38H                          
  17. LEDCLS  EQU  0D1H                       
  18. LEDWRO  EQU  90H                     
  19. KEY1    EQU  28H    ;修改狀態改變
  20. KEY2    EQU  29H    ;修改位置改變         
  21. KEY3    EQU  2AH    ;數值改變   

  22. ORG 0000H
  23. AJMP START
  24. ORG 000BH
  25. AJMP T0INT
  26. ORG  0040H
  27. START:
  28.        MOV SP,#60H
  29.        MOV R1,#20H
  30.        MOV R2,#08H
  31.        MOV A,#00H
  32.        MOV 30H,#07H
  33.        MOV 31H,#56H
  34.        MOV 32H,#30H
  35.        MOV DPTR,#Z8279
  36.        MOV A,#LEDCLS
  37.        MOVX @DPTR,A
  38.        LCALL DELAY
  39.        MOV A,#LEDMOD
  40.        MOVX @DPTR,A
  41.        MOV A,#LEDFEQ
  42.        MOVX @DPTR,A
  43. LOOP22:
  44.        MOV @R1,A
  45.        INC R1
  46.        DJNZ R2,LOOP22      
  47.        LCALL INIT8279
  48. ;------------------------初始化     
  49.        CLR P1.0
  50.        CLR P1.1
  51.       
  52.        MOV R6,#00H                  
  53.        MOV R0,#30H
  54.        MOV R2,#14H
  55.        mov R5,#00h
  56.        MOV R4,#00H          ;清標志位   -報警      
  57.        MOV R7,#00H
  58.        MOV 22H,#00H
  59.        MOV 25H,#00H
  60.        CLR TF0
  61.        MOV TMOD,#01H
  62.        MOV TH0,#4BH
  63.        MOV TL0,#0FCH
  64.        MOV IE,#82H
  65.        SETB TR0
  66. ;---------------------修改時間   
  67. MODIFY:                 
  68.       MOV DPTR,#Z8279                     
  69.       MOVX A,@DPTR
  70.       ANL A,#0FH
  71.       JZ KEY_OUT                ;沒有按鍵 跳出
  72.       MOV A,#40H
  73.       MOVX @DPTR,A
  74.       MOV DPTR,#D8279
  75.       MOVX A,@DPTR              ;A接受按鍵
  76.       MOV R3,A
  77.       CJNE R3,#KEY1,POSITION    ;判斷按鍵是不是key1,  不是跳轉   
  78.       CJNE R6,#00H,PRESS_SEC    ;第一次按key1進入修改狀態,(顯示閃爍),時間不停   
  79.       MOV R6,#0FFH              ;置標志位                       
  80.       SJMP KEY_OUT              ;跳出
  81. PRESS_SEC:
  82.       MOV R6,#00H               ;第二次按key1跳出修改狀態 (不閃爍)
  83.       
  84.       CJNE R5,#00H,MODIFY_OK    ;如果計時停止,恢復計時   
  85.       SJMP KEY_OUT
  86. MODIFY_OK:
  87.       SETB TR0                  ;啟動定時器
  88.       SJMP KEY_OUT
  89. POSITION:
  90.       CJNE R3,#KEY2,VALUE       ;判斷是否為key2,不是跳轉
  91.       CJNE R6,#0FFH,KEY_OUT     ;若未進入修改狀態,跳轉
  92.       INC R0                    ;若進入修改狀態,則移位
  93.       CJNE R0,#33H,JJJ
  94.       MOV R0,#30H
  95. JJJ:
  96.       SJMP KEY_OUT
  97. VALUE:
  98.       CJNE R3,#KEY3,KEY_OUT   ;判斷是否為key3,不是跳出
  99.       CJNE R6,#0FFH,KEY_OUT   ;判斷是否進入修改狀態,沒有-跳出
  100.        CLR TR0      ;若已進入,停止計時,準備修改
  101.        MOV R5,#11H        ;標記置位,表明計時停止
  102.        CJNE R0,#32H,WWW
  103.        MOV @R0,#00H
  104.        SJMP KEY_OUT
  105. WWW:      
  106.        MOV A,@R0       ;在相應的位置加一
  107.        ADD A,#01H
  108.        DA A
  109.        MOV @R0,A
  110.        MOV A,R0
  111.        CJNE A,#30H,SIXTY  ;如果不是小時,加到60,
  112.        CJNE @R0,#24H,KEY_OUT  ;是小時,加到24
  113.        MOV @R0,#00H
  114.        SJMP KEY_OUT
  115. SIXTY:  
  116.        CJNE @R0,#60H,KEY_OUT
  117.        MOV @R0,#00H
  118.        SJMP KEY_OUT
  119. KEY_OUT:
  120.            CJNE R6,#0FFH,NODIS  ;如果已進入修改狀態,進入閃爍顯示狀態
  121.            LCALL FLASHON
  122. NODIS:
  123.            LCALL SIREN           ;調用報警程序
  124.            AJMP MODIFY          ;循環
  125. ;------------------------子程序-------------------------
  126. FLASHON:      
  127.            CJNE R0,#30H,JUMP31  ;如果指針指向小時,則小時位閃爍
  128.            MOV R1,#26H                  
  129.            MOV A,@R0
  130.            MOV R7,A
  131.            LCALL TORAM   ;將小時的BCD碼送到26H,27H
  132.            MOV DPTR,#Z8279     ;閃爍
  133.            MOV A,#86H
  134.            MOVX @DPTR,A
  135.            MOV DPTR,#D8279
  136.            MOV A,#00H
  137.            MOVX @DPTR,A
  138.            MOV DPTR,#Z8279
  139.            MOV A,#87H
  140.            MOVX @DPTR,A
  141.            MOV DPTR,#D8279
  142.            MOV A,#00H
  143.            MOVX @DPTR,A
  144.            LCALL DELAY

  145.            MOV DPTR,#Z8279  ;將小時的值顯示出來
  146.            MOV A,#86H
  147.            MOVX @DPTR,A
  148.            MOV DPTR,#D8279
  149.            MOV A,26H
  150.            MOVX @DPTR,A        
  151.            MOV DPTR,#Z8279  ;將小時的值顯示出來
  152.            MOV A,#87H
  153.            MOVX @DPTR,A
  154.            MOV DPTR,#D8279
  155.            MOV A,27H
  156.            MOVX @DPTR,A
  157.            LCALL DELAY
  158.            RET             ;顯示完畢,跳出
  159. JUMP31:         
  160.            CJNE R0,#31H,JUMP32  ;如果指針指向 分,則分鐘的位置閃爍
  161.            MOV R1,#23H
  162.            MOV A,@R0
  163.            MOV R7,A
  164.            LCALL TORAM
  165.            MOV DPTR,#Z8279
  166.            MOV A,#83H
  167.            MOVX @DPTR,A
  168.            MOV DPTR,#D8279
  169.            MOV A,#00H
  170.            MOVX @DPTR,A
  171.            MOV DPTR,#Z8279
  172.            MOV A,#84H
  173.            MOVX @DPTR,A
  174.            MOV DPTR,#D8279
  175.            MOV A,#00H
  176.            MOVX @DPTR,A
  177.            LCALL DELAY
  178.             
  179.            MOV DPTR,#Z8279
  180.            MOV A,#83H
  181.            MOVX @DPTR,A
  182.            MOV DPTR,#D8279
  183.            MOV A,23H
  184.            MOVX @DPTR,A
  185.            MOV DPTR,#Z8279
  186.            MOV A,#84H
  187.            MOVX @DPTR,A
  188.            MOV DPTR,#D8279
  189.            MOV A,24H
  190.            MOVX @DPTR,A
  191.            LCALL DELAY
  192.            RET
  193. JUMP32:
  194.            CJNE R0,#32H,QIUT  ;如果指針指向秒,則秒位閃爍
  195.            MOV R1,#20H            
  196.            MOV A,@R0
  197.            MOV R7,A
  198.            LCALL TORAM
  199.            MOV DPTR,#Z8279
  200.            MOV A,#80H
  201.            MOVX @DPTR,A
  202.            MOV DPTR,#D8279
  203.            MOV A,#00H
  204.            MOVX @DPTR,A
  205.            MOV DPTR,#Z8279
  206.            MOV A,#81H
  207.            MOVX @DPTR,A
  208.            MOV DPTR,#D8279
  209.            MOV A,#00H
  210.            MOVX @DPTR,A  
  211.            LCALL DELAY
  212.             
  213.            MOV DPTR,#Z8279
  214.            MOV A,#80H
  215.            MOVX @DPTR,A
  216.            MOV DPTR,#D8279
  217.            MOV A,20H
  218.            MOVX @DPTR,A
  219.            MOV DPTR,#Z8279
  220.            MOV A,#81H
  221.            MOVX @DPTR,A
  222.            MOV DPTR,#D8279
  223.            MOV A,21H
  224.            MOVX @DPTR,A
  225.            LCALL DELAY
  226. QIUT:      RET

  227. SIREN:
  228.        PUSH ACC
  229.        MOV A,#00H    ;讀取時間t1,與現在時間比較,
  230.        MOV DPTR,#TIMETABLE      ;若相等,置報警位,輸出報警信號
  231.        MOVC A,@A+DPTR           ;不等,跳轉---比較表中的下一個時間
  232.        CJNE A,30H,NEXT1
  233.        MOV A,#01H
  234.        MOV DPTR,#TIMETABLE
  235.        MOVC A,@A+DPTR
  236.        CJNE A,31H,NEXT1
  237.        MOV A,#02H
  238.        MOV DPTR,#TIMETABLE
  239.        MOVC A,@A+DPTR
  240.        CJNE A,32H,NEXT1
  241.        MOV R4,#0FFH
  242.        SETB P1.0             ;燈1亮2s,燈2滅
  243.        POP ACC
  244.        RET
  245. NEXT1:          ;讀取時間t2,與現在時間比較
  246.        MOV A,#03H ;若相等,置報警位,輸出報警信號
  247.        MOV DPTR,#TIMETABLE  ;不等,跳轉---比較表中的下一個時間
  248.        MOVC A,@A+DPTR
  249.        CJNE A,30H,NEXT2
  250.        MOV A,#04H
  251.        MOV DPTR,#TIMETABLE
  252.        MOVC A,@A+DPTR
  253.        CJNE A,31H,NEXT2
  254.        MOV A,#05H
  255.        MOV DPTR,#TIMETABLE
  256.        MOVC A,@A+DPTR
  257.        CJNE A,32H,NEXT2
  258.        MOV R4,#0FFH
  259.        SETB P1.0         ;燈1亮2s,燈2亮
  260.        SETB P1.1
  261.        POP ACC
  262.        RET
  263. NEXT2:        ;;讀取時間t3,與現在時間比較
  264.        MOV A,#06H
  265.        MOV DPTR,#TIMETABLE
  266.        MOVC A,@A+DPTR
  267.        CJNE A,30H,NEXT3
  268.        MOV A,#07H
  269.        MOV DPTR,#TIMETABLE
  270.        MOVC A,@A+DPTR
  271.        CJNE A,31H,NEXT3
  272.        MOV A,#08H
  273.        MOV DPTR,#TIMETABLE
  274.        MOVC A,@A+DPTR
  275.        CJNE A,32H,NEXT3
  276.        MOV R4,#0FFH
  277.        SETB P1.0     ;燈1亮2s,燈2滅
  278.        CLR P1.1
  279.        POP ACC
  280.        RET
  281.       
  282. NEXT3:   ;讀取時間t4,與現在時間比較
  283.        MOV A,#09H ;若相等,置報警位,輸出報警信號
  284.        MOV DPTR,#TIMETABLE   ;不等,跳轉---比較表中的下一個時間
  285.        MOVC A,@A+DPTR
  286.        CJNE A,30H,NEXT4
  287.        MOV A,#0AH
  288.        MOV DPTR,#TIMETABLE
  289.        MOVC A,@A+DPTR
  290.        CJNE A,31H,NEXT4
  291.        MOV A,#0BH
  292.        MOV DPTR,#TIMETABLE
  293.        MOVC A,@A+DPTR
  294.        CJNE A,32H,NEXT4
  295.        MOV R4,#0FFH                     
  296.        SETB P1.0     ;燈1亮2s,燈2亮
  297.        SETB P1.1
  298.        POP ACC
  299.        RET
  300. NEXT4:   ;;讀取時間t3,與現在時間比較
  301.        MOV A,#0CH
  302.        MOV DPTR,#TIMETABLE
  303.        MOVC A,@A+DPTR
  304.        CJNE A,30H,NEXT5
  305.        MOV A,#0DH
  306.        MOV DPTR,#TIMETABLE
  307.        MOVC A,@A+DPTR
  308.        CJNE A,31H,NEXT5
  309.        MOV A,#0EH
  310.        MOV DPTR,#TIMETABLE
  311.        MOVC A,@A+DPTR
  312.        CJNE A,32H,NEXT5
  313.        MOV R4,#0FFH                     
  314.        SETB P1.0
  315.        CLR P1.1     ;燈1亮2s,燈2滅
  316. NEXT5:
  317.        POP ACC
  318.        RET   
  319.             
  320. INIT8279:
  321.           PUSH ACC
  322.           PUSH R2
  323.           PUSH R1         
  324.           MOV R1,#20H
  325.           MOV R2,#08H
  326.           MOV DPTR,#Z8279
  327.           MOV A,#LEDWRO
  328.           MOVX @DPTR,A
  329.           MOV DPTR,#D8279
  330. LOOP33: MOV A,@R1
  331.         MOVX @DPTR,A
  332.         INC R1
  333.         DJNZ R2,LOOP33
  334.         POP R1
  335.         POP R2
  336.         POP ACC        
  337.         RET
  338.         
  339. DELAY: PUSH 00H
  340.        PUSH 01H
  341.        MOV R0,#00H
  342. DELAY1:MOV R1,#00H
  343.        DJNZ R1,$
  344.        DJNZ R0,DELAY1
  345.        POP 01H
  346.        POP 00H
  347.        RET
  348.       
  349. TORAM:   PUSH ACC
  350.          PUSH R3
  351.          PUSH R4
  352.          MOV A,R7
  353.          MOV R3,A
  354.          MOV R4,A
  355.          MOV A,#0FH
  356.          ANL A,R3
  357.          MOV DPTR,#LEDSEG
  358.          MOVC A,@A+DPTR
  359.          MOV @R1,A
  360.          INC R1
  361.          MOV A,#0F0H
  362.          ANL A,R4
  363.          SWAP A
  364.          MOV DPTR,#LEDSEG
  365.          MOVC A,@A+DPTR
  366.          MOV @R1,A
  367.          POP R4
  368.          POP R3
  369.          POP ACC
  370.          RET
  371. ;---------------------------------中斷服務程序----------
  372. T0INT:
  373.        MOV TH0,#4BH
  374.        MOV TL0,#0FCH
  375.        DJNZ R2,LOOP4
  376.        MOV R2,#14H
  377.        MOV A,32H        ;加一
  378.        ADD A,#01H
  379.        DA A
  380.        MOV 32H,A
  381.        CJNE A,#60H,TRANS
  382.        MOV 32H,#00H
  383.        MOV A,31H
  384.        ADD A,#01H
  385.        DA A
  386.        MOV 31H,A
  387.        CJNE A,#60H,TRANS
  388.        MOV 31H,#00H
  389.        MOV A,30H
  390.        ADD A,#01H
  391.        DA A
  392.        MOV 30H,A
  393.        CJNE A,#24H,TRANS
  394.        MOV 30H,#00H
  395.       
  396. TRANS:            ;拆分送入20H開始的數據段
  397.        MOV R1,#20H
  398.        MOV R7,32H
  399.        LCALL TORAM
  400.        MOV R1,#23H
  401.        MOV R7,31H
  402.        LCALL TORAM      
  403.        MOV R1,#26H
  404.        MOV R7,30H
  405.        LCALL TORAM
  406.        ;CJNE R6,#00H,LOOP4
  407.        LCALL INIT8279   ;顯示
  408.       
  409.        CJNE R4,#00H,PPP     ;如果無報警,燈滅           
  410.        CLR P1.0
  411.        SJMP LOOP4
  412. PPP:       INC R4       ;有報警,r4加一,計時
  413. LOOP4:     RETI

  414. LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
  415.         DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
  416. TIMETABLE: DB  08H,00H,00H
  417.            DB  11H,30H,00H
  418.            DB  12H,30H,00H         
  419.            DB  17H,00H,00H
  420.            DB  17H,10H,00H
  421.         END
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 草久久| 成人一区二区三区在线观看 | 亚洲综合国产 | 精品乱子伦一区二区三区 | 91精品国产91久久久久久最新 | 一区二区三区在线 | 国产精品视频在线观看 | 欧美精品一区二区免费视频 | 中文字幕黄色大片 | 日韩色图在线观看 | 欧美日韩一区不卡 | 日韩在线视频观看 | 欧美另类视频 | 久久91av | 国产伦精品一区二区 | 毛片网站在线观看 | 成人免费看片又大又黄 | 中文字幕精品一区二区三区精品 | 久久se精品一区精品二区 | 成人网在线观看 | 久久久爽爽爽美女图片 | 亚州成人| 黄色片免费在线观看 | 欧美日韩一本 | 亚洲日韩中文字幕 | 欧美精产国品一二三区 | 99精品在线观看 | 国产乱码久久久久久 | 在线国产一区 | 亚洲欧美中文日韩在线v日本 | 日本色高清 | 国产精品一区二区视频 | 亚洲第一天堂 | 国产免费一区 | 三级黄片毛片 | 青青草精品 | www精品美女久久久tv | www亚洲免费国内精品 | 一区二区三区国产精品 | 一区二区三区视频在线免费观看 | 97伦理|