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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6823|回復: 3
收起左側

51單片機倒計時秒表/可調整時鐘的Keil uVision4和Proteus 7.8仿真+匯編語言

[復制鏈接]
ID:739917 發(fā)表于 2020-6-20 11:09 | 顯示全部樓層 |閱讀模式
(1)控制功能:
啟動/停止:秒表和時鐘選擇功能的總開關允許位。沒按或偶次按下,關閉時鐘和秒表功能選擇。單次按下,允許進行秒表和時鐘功能選擇。
暫停:秒表或時鐘的停止信號。任何時候按下按鈕停止秒表倒計時或停止時鐘計時和撤銷報警信號。
復位:秒表和時鐘復位信號。任何時候按下按鈕秒表顯示或時鐘顯示恢復初始狀態(tài):00.00.00.0
(2)調節(jié)功能:
通過6位按鈕可以對數(shù)碼的六位顯示進行調整。任何時候都可以分別可以通過HHHLMHMLSHSL對時的十位、時的個位、分的十位、分的個位、秒的十位和秒的個位進行調節(jié)并設定。
(3)顯示功能:
8個8段數(shù)碼管進行顯示。顯示精度為0.01秒;最后一段數(shù)碼管顯示工作狀態(tài),“H”代表著是時鐘,“E”代表著秒表倒計時。
按時、分、秒顯示,采用24h制,如示數(shù)為10.05.22.5H”,時鐘顯示讀數(shù)為100522.5示數(shù)為0.05.14.5E”,秒表倒計時顯示,讀數(shù)為514.5秒。
(4)秒表/時鐘選擇功能:
提供兩種模式,秒表倒計時和是時鐘計時。
通過TIMESECONDS按鈕進行選擇。

③兩種模式初始狀態(tài)都為00.00.00,倒計時可以使用調節(jié)按鈕進行設定,時鐘功能可以通過調節(jié)按鈕進行調整時間。
(5)報警功能:
倒計時報警功能,倒計時結束時,報警信號發(fā)出,藍色的LED亮。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
圖片1.png

單片機源程序如下:
  1. /*-------------------------------------------------------------------------------------------*/
  2. /*-----------按鍵定義-----------*/
  3. STRT EQU P1.6        ;啟動
  4. STP EQU P1.7        ;停止
  5. CLRR EQU P3.0        ;復位
  6. SELTS EQU P3.6         ;時鐘
  7. SELTH EQU P3.7        ;秒表

  8. SECL EQU P1.0        ;秒個位
  9. SECH EQU P1.1        ;秒十位
  10. MINL EQU P1.2        ;分
  11. MINH EQU P1.3        ;
  12. HOURL EQU P1.4        ;時
  13. HOURH EQU P1.5        ;
  14. /*-------------------------------------------------------------------------------------------*/
  15. ORG 0000H
  16. SJMP MAIN
  17. ORG 000BH         ;T0定時器入口
  18. AJMP T0INT0        
  19. ORG 001BH         ;T1定時器入口
  20. AJMP T1INT1
  21. ORG 30H
  22. /*-------------------------------------------------------------------------------------------*/
  23. /*-----------初始化函數(shù)-----------*/
  24. MAIN:
  25.         MOV SP,#60H
  26.         MOV R4,#10        ;100ms;時鐘
  27.         MOV R5,#10         ;100ms;秒表

  28.         MOV TMOD,#11H
  29.         MOV TL0,#(65535-7986)MOD 256;#9EH ;定時中斷子程序。重裝定時常數(shù)
  30.         MOV TH0,#(65535-7986)/256;#58H ;10ms

  31.         MOV TL1,#(65535-7986)MOD 256;#9EH ;定時中斷子程序。重裝定時常數(shù)
  32.         MOV TH1,#(65535-7986)/256;#58H ;10ms
  33. /*-------------------------------------------------------------------------------------------*/
  34. /*-----------調節(jié)按鍵檢測-----------*/
  35. KSL:
  36.         LCALL DISP ;秒個調整按鍵
  37.         JB SECL,KSH          ;沒有按下的處理,即SECL為高電平。
  38.         LCALL DISP
  39.         JNB SECL,$-3  ;消除抖動
  40.         AJMP SINCL
  41. KSH: LCALL DISP ;秒10調整按鍵
  42.         JB SECH,KML
  43.         LCALL DISP
  44.         JNB SECH,$-3
  45.         AJMP SINCH
  46. KML: JB MINL,KMH ;分個調整按鍵
  47.         LCALL DISP
  48.         JNB MINL,$-3
  49.         AJMP MINCL
  50. KMH: JB MINH,KHL ;分10調整按鍵
  51.         LCALL DISP
  52.         JNB MINH,$-3
  53.         AJMP MINCH
  54. KHL:
  55.         JB HOURL,KHH ;時個調整按鍵
  56.         LCALL DISP
  57.         JNB HOURL,$-3
  58.         AJMP HINCL
  59. KHH: JB HOURH,K1 ;時10調整按鍵
  60.         LCALL DISP
  61.         JNB HOURH,$-3
  62.         AJMP HINCH
  63. /*-------------------------------------------------------------------------------------------*/
  64. /*-----------調節(jié)按鍵處理-----------*/                        
  65. SINCL:                           /*秒的數(shù)據(jù)處理*/
  66.         INC 20H  ;秒個位的調整 +1
  67.         MOV A,20H
  68.         CJNE A,#10,SINC0L   ;
  69.         MOV 20H,#0        ;滿10的處理
  70. SINC0L: AJMP KSL           ;返回KSL按鍵處理
  71. SINCH:
  72.         INC 21H
  73.         MOV A,21H
  74.         CJNE A,#6,SINC0H   ;60s
  75.         MOV 21H,#0
  76. SINC0H: AJMP KSH
  77. MINCL:                                 /*分的數(shù)據(jù)處理*/
  78.         INC 22H ;分調整                  
  79.         MOV A,22H
  80.         CJNE A,#10,MINC0L        ;60min
  81.         MOV 22H,#0
  82. MINC0L: AJMP KML
  83. MINCH:
  84.         INC 23H ;分調整
  85.         MOV A,23H
  86.         CJNE A,#6,MINC0H        ;60min
  87.         MOV 23H,#0
  88. MINC0H: AJMP KMH
  89. HINCL:                           /*時的數(shù)據(jù)處理*/
  90.         MOV A,25H        ;時調整                    
  91.         CJNE A,#2,LH1   ;時的十位不滿2時的處理
  92.         INC 24H         ;時 >20h
  93.         MOV A,24H
  94.         CJNE A,#4,HINC0L        ;是否到達24                 
  95.         MOV 24H,#0 ;時到24后,數(shù)碼管清零
  96. HINC0L: AJMP KHL
  97. LH1:               
  98.         INC 24H ;時<20h
  99.         MOV A,24H
  100.         CJNE A,#10,HINC0L  ;24h
  101.         MOV 24H,#0
  102. HINCH:
  103.         INC 25H ;時調整
  104.         MOV A,25H
  105.         CJNE A,#3,HINC0H  ;24h
  106.         MOV 25H,#0
  107. HINC0H: AJMP KHH
  108. /*-------------------------------------------------------------------------------------------*/  
  109. /*-----------控制按鍵掃描-----------*/
  110. K1: LCALL DISP ;開始鍵
  111.         JB STRT,K2 ;
  112.         LCALL DISP
  113.         JNB STRT,$-3
  114.         AJMP START
  115. K2: JB STP,K3 ;暫停鍵
  116.         LCALL DISP
  117.         JNB STP,STOP   ;消抖處理
  118. K3:
  119.         JB CLRR,K4        ;沒有按下,轉到K4
  120.         LCALL DISP
  121.         JNB CLRR,CLEAR ;清零鍵
  122.         AJMP KSL           
  123. K4:
  124.         JB SELTS,K5        ;沒有按下,返回數(shù)碼按鍵監(jiān)測
  125.         LCALL DISP
  126.         JNB SELTS,SELTHC ;模式切換
  127. K5:
  128.         JB SELTH,TOKSL        ;沒有按下,返回數(shù)碼按鍵監(jiān)測
  129.         LCALL DISP
  130.         JNB SELTH,SELTSC ;模式切換
  131.         AJMP KSL               
  132. TOKSL:
  133.         AJMP KSL
  134. /*-------------------------------------------------------------------------------------------*/
  135. /*-----------控制按鍵處理-----------*/
  136. START:
  137.         ;打開中斷總開關
  138.         CPL EA
  139.         AJMP K1
  140. STOP:
  141.         CLR TR0 ;暫停
  142.         CLR TR1
  143.         SETB P1.6;停止報警
  144.         AJMP K2
  145. CLEAR:
  146.         CLR TR0 ;清零
  147.         CLR TR1
  148.         MOV A,#0
  149.         MOV 20H,A
  150.         MOV 21H,A
  151.         MOV 22H,A
  152.         MOV 23H,A
  153.         MOV 24H,A
  154.         MOV 25H,A

  155.         MOV 26H,A
  156.         MOV 27H,A

  157.         AJMP K3
  158. SELTHC: ;時鐘模式選擇
  159.         SETB TR0
  160.         SETB ET0
  161.         CLR ET1
  162.         CLR TR1
  163.         AJMP K4
  164. SELTSC:        ;秒表模式選擇
  165.         SETB TR1
  166.         SETB ET1
  167.         SETB P3.1;清除報警燈
  168.         CLR ET0
  169.         CLR TR0
  170.         AJMP K5
  171. /*-------------------------------------------------------------------------------------------*/
  172. /*---------T0中斷處理---------*/
  173. T0INT0:
  174.         MOV TL0,#(65535-7986)MOD 256;#9EH ;定時中斷子程序。重裝定時常數(shù)
  175.         MOV TH0,#(65535-7986)/256;#58H ;10ms        
  176.         DJNZ R4,T0INTR ;10msX10=0.1S,未滿20次,跳出中斷子程序

  177.         MOV R4,#10
  178.         MOV 26H,#76H;最后一位指定顯示H

  179.         INC 27H  ;1S,秒存儲單元內(nèi)數(shù)+1
  180.         MOV A,27H
  181.         CJNE A,#10,T0INTR  ;未滿10S,跳出中斷,返回顯示。;滿10s,往下執(zhí)行清零處理,十位+1                                                
  182.         MOV 27H,#0  ;滿60S,秒單元清零

  183.         INC 20H  ;1S,秒存儲單元內(nèi)數(shù)+1
  184.         MOV A,20H
  185.         CJNE A,#10,T0INTR  ;未滿10S,跳出中斷,返回顯示。;滿10s,往下執(zhí)行清零處理,十位+1                                                
  186.         MOV 20H,#0  ;滿60S,秒單元清零
  187.                     ;秒十位+1
  188.         INC 21H ;秒10位
  189.         MOV A,21H
  190.         CJNE A,#6,T0INTR  ;6
  191.         MOV 21H,#0

  192.         INC 22H  ;分個+1
  193.         MOV A,22H
  194.         CJNE A,#10,T0INTR
  195.         MOV 22H,#0

  196.         INC 23H  ;分十+1
  197.         MOV A,23H
  198.         CJNE A,#6,T0INTR
  199.         MOV 23H,#0

  200.         MOV A,25H           
  201.         CJNE A,#2,L1   ;時的十位不滿2時的處理
  202.         ;時的十位滿2的處理
  203.         INC 24H
  204.         MOV A,24H
  205.         CJNE A,#4,T0INTR        ;是否到達24
  206.                          ;時到24后,數(shù)碼管清零         
  207.         MOV A,#0
  208.         MOV 20H,A
  209.         MOV 21H,A
  210.         MOV 22H,A
  211.         MOV 23H,A
  212.         MOV 24H,A
  213.         MOV 25H,A
  214.         RETI
  215.         ;子程序                                
  216. L1:        INC 24H
  217.         MOV A,24H
  218.         CJNE A,#10,T0INTR
  219.         MOV 24H,#0         ;時的個位清零
  220.         INC 25H         ;時的十位+1
  221.         MOV A,28H
  222. T0INTR: RETI

  223. /*-------------------------------------------------------------------------------------------*/
  224. /*-----------T1中斷處理-----------*/
  225. T1INT1:
  226.         MOV TL1,#(65535-7986)MOD 256;#9EH ;定時中斷子程序。重裝定時常數(shù)
  227.         MOV TH1,#(65535-7986)/256;#58H ;10ms        
  228.         DJNZ R5,T0INTR        ;不滿10次,跳轉
  229.         MOV R5,#10
  230.         MOV A,27H
  231.         CJNE A,#0,TLSL;判斷0.01s是否為0

  232.         MOV A,20H
  233.         CJNE A,#0,TSL  ;判斷秒的個位是否為0
  234.         MOV A,21H
  235.         CJNE A,#0,TSH  ;判斷秒的十位是否為0
  236.         MOV A,22H
  237.         CJNE A,#0,TML  ;判斷分的個位是否為0
  238.         MOV A,23H
  239.         CJNE A,#0,TMH  ;判斷分的十位是否為0
  240.         MOV A,24H
  241.         CJNE A,#0,THL  ;判斷時的個位是否為0
  242.         MOV A,25H
  243.         CJNE A,#0,THH  ;判斷時的十位是否為0

  244.         CLR P3.1  ;計時結束的標志

  245.         RETI;返回中斷處

  246. TLSL:        ;0.01s不為0,進行-1
  247.         DEC 27H
  248.         MOV 26H,#79H;最后一位指定顯示E
  249.         RETI
  250. TSL:         ;秒個位不為0,進行-1
  251.         DEC 20H
  252.         MOV 26H,#79H;最后一位指定顯示E
  253.         MOV 27H,#9
  254.         RETI
  255. TSH:        ;秒十位不為0,進行-1,個位為9
  256.         DEC 21H
  257.         MOV 26H,#79H;最后一位指定顯示E
  258.         MOV 27H,#9
  259.         MOV 20H,#9        
  260.            RETI
  261. TML:
  262.         DEC 22H
  263.         MOV 26H,#79H;最后一位指定顯示E
  264.         MOV 27H,#9
  265.         MOV 21H,#5
  266.         MOV 20H,#9
  267.         RETI
  268. TMH:
  269.         DEC 23H
  270.         MOV 26H,#79H;最后一位指定顯示E
  271.         MOV 27H,#9
  272.         MOV 22H,#9
  273.         MOV 21H,#5
  274.         MOV 20H,#9
  275.         RETI
  276. THL:
  277.         DEC 24H
  278.         MOV 26H,#79H;最后一位指定顯示E
  279.         MOV 27H,#9
  280.         MOV 23H,#5
  281.         MOV 22H,#9
  282.         MOV 21H,#5
  283.         MOV 20H,#9
  284.         RETI                                                        
  285. THH:        
  286.         DEC 25H
  287.         MOV 26H,#79H;最后一位指定顯示E
  288.         MOV 27H,#9
  289.         MOV 24H,#9
  290.         MOV 23H,#5
  291.         MOV 22H,#9
  292.         MOV 21H,#5
  293.         MOV 20H,#9
  294.         RETI
  295. /*-------------------------------------------------------------------------------------------*/
  296. /*-----------顯示處理-----------*/
  297. DISP:
  298.         MOV A,26H  
  299.         MOV P0,A         ;顯示
  300.         CLR P2.0
  301.         ACALL DLY
  302.         SETB P2.0
  303.         MOV A,27H  ;0.1S
  304.         ACALL SEG7
  305.         MOV P0,A
  306.         CLR P2.1
  307.         ACALL DLY
  308.         SETB P2.1

  309.         MOV A,20H  ;秒個位
  310.         ACALL SEG7
  311.         MOV P0,A         ;顯示秒個位
  312.         SETB P0.7
  313.         CLR P2.2
  314.         ACALL DLY
  315.         SETB P2.2
  316.         MOV A,21H  ;秒十位
  317.         ACALL SEG7
  318.         MOV P0,A
  319.         CLR P2.3
  320.         ACALL DLY
  321.         SETB P2.3
  322.         MOV A,22H  ;分個位
  323.         ACALL SEG7
  324.         MOV P0,A
  325.         SETB P0.7
  326.         CLR P2.4
  327.         ACALL DLY
  328.         SETB P2.4
  329.         MOV A,23H  ;分十位
  330.         ACALL SEG7
  331.         MOV P0,A
  332.         CLR P2.5
  333.         ACALL DLY
  334.         SETB P2.5
  335.         MOV A,24H  ;時個位
  336.         ACALL SEG7
  337.         MOV P0,A
  338.         SETB P0.7
  339.         CLR P2.6
  340.         ACALL DLY
  341.         SETB P2.6
  342.         MOV A,25H  ;時十位
  343.         ACALL SEG7
  344.         MOV P0,A
  345.         CLR P2.7
  346.         ACALL DLY
  347.         SETB P2.7
  348.         RET
  349. /*-------------------------------------------------------------------------------------------*/
  350. /*-----------延時部分-----------*/
  351. DLY10:  MOV R3,#30
  352. D0: ACALL DLY
  353.         DJNZ R3,D0
  354.         RET
  355. DLY: MOV R7,#2
  356. D1: MOV R6,#40
  357.         DJNZ R6,$
  358.         DJNZ R7,D1
  359.         RET
  360. /*-------------------------------------------------------------------------------------------*/
  361. /*-----------數(shù)碼管段值-----------*/
  362. SEG7:
  363.         INC A
  364.         MOVC A,@A+PC
  365.         RET
  366.         DB                 03FH  ;0  共陰
  367.         DB      006H  ;1
  368.         DB      05BH  ;2
  369.         DB      04FH  ;3
  370.         DB      066H  ;4
  371.         DB      06DH  ;5
  372.         DB      07DH  ;6
  373.         DB      007H  ;7
  374.         DB      07FH  ;8
  375.         DB      06FH  ;9
  376. END
復制代碼

全部資料51hei下載地址:
秒表 時鐘.zip (121.36 KB, 下載次數(shù): 166)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:739917 發(fā)表于 2020-6-20 11:11 | 顯示全部樓層
(1)控制功能: ①啟動/停止:秒表和時鐘選擇功能的總開關允許位。沒按或偶次按下,關閉時鐘和秒表功能選擇。單次按下,允許進行秒表和時鐘功能選擇。 ②暫停:秒表或時鐘的停止信號。任何時候按下按鈕停止秒表倒計時或停止時鐘計時和撤銷報警信號。 ③復位:秒表和時鐘復位信號。任何時候按下按鈕秒表顯示或時鐘顯示恢復初始狀態(tài):00.00.00.0 。 (2)調節(jié)功能: 通過6位按鈕可以對數(shù)碼的六位顯示進行調整。任何時候都可以分別可以通過HH、HL、MH、ML、SH、SL對時的十位、時的個位、分的十位、分的個位、秒的十位和秒的個位進行調節(jié)并設定。 (3)顯示功能: 同8個8段數(shù)碼管進行顯示。顯示精度為0.01秒;最后一段數(shù)碼管顯示工作狀態(tài),“H”代表著是時鐘,“E”代表著秒表倒計時。 按時、分、秒顯示,采用24h制,如示數(shù)為“10.05.22.5H”,時鐘顯示讀數(shù)為10時05分22.5秒。示數(shù)為“0.05.14.5E”,秒表倒計時顯示,讀數(shù)為5分14.5秒。 (4)秒表/時鐘選擇功能: ①提供兩種模式,秒表倒計時和是時鐘計時。 ②通過TIME和SECONDS按鈕進行選擇。 ③兩種模式初始狀態(tài)都為00.00.00,倒計時可以使用調節(jié)按鈕進行設定,時鐘功能可以通過調節(jié)按鈕進行調整時間。 (5)報警功能: 倒計時報警功能,倒計時結束時,報警信號發(fā)出,藍色的LED亮。
回復

使用道具 舉報

ID:796082 發(fā)表于 2020-7-2 21:54 | 顯示全部樓層
樓主你好,請問設初值這里,7986是怎么來的?求解?
MOV TL0,#(65535-7986)MOD 256;#9EH ;定時中斷子程序。重裝定時常數(shù)
MOV TH0,#(65535-7986)/256;#58H ;10ms
回復

使用道具 舉報

ID:739917 發(fā)表于 2020-7-7 22:47 | 顯示全部樓層
本帖最后由 3031361628 于 2020-7-7 22:50 編輯
禮貌問好 發(fā)表于 2020-7-2 21:54
樓主你好,請問設初值這里,7986是怎么來的?求解?
MOV TL0,#(65535-7986)MOD 256;#9EH ;定時中斷子程序 ...

這里如果要按晶振12MHZ理論精確計算 (一個機器周期的耗時為1us的話),實際程序應格是:
MOV TL0,#(65535-10000)MOD 256  ; 余數(shù)為計數(shù)初值的低字節(jié)
MOV TH0,#(65535-10000)/256  ;商為計數(shù)初值的高字節(jié)
可是實際上程序運行多少會有一點誤差,就需要不斷地對定時器初始值調試,直到調到自己合適的。
*************這部分可以自行修改初始值******************
MOV TL0,#(65535-7986)MOD 256;#9EH ;定時中斷子程序。重裝定時常數(shù)
MOV TH0,#(65535-7986)/256;#58H ;10ms
*****************************************************
而上面提供的電路的晶振是11.0592MHZ的,程序寫的也比較冗余了一點,多少也會有一點誤差。

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人免费观看男女羞羞视频 | 在线亚洲欧美 | 日韩a在线| 操久久 | 久久精品亚洲 | 久久99久久 | 在线亚洲电影 | 成人免费视频网站在线看 | 一区二区三区在线电影 | 欧美日一区二区 | 久久久久久亚洲精品 | 一区二区三区亚洲 | 精品久久精品 | 国产精品18hdxxxⅹ在线 | 欧美成人精品一区二区三区 | 中文字幕在线观看日韩 | 国产精品一区在线 | 亚洲男人的天堂网站 | 羞羞的视频在线看 | 国产麻豆乱码精品一区二区三区 | k8久久久一区二区三区 | 日韩精品免费 | 三级黄色片在线播放 | 人妖videosex高潮另类 | 成人精品一区亚洲午夜久久久 | 日日夜夜草 | 懂色av色香蕉一区二区蜜桃 | 成人免费激情视频 | 午夜影院| 一二三在线视频 | 91视频一区 | 欧美一级在线观看 | 五月婷婷丁香 | 亚洲入口| 久久精品久久久 | 久久精品黄色 | 欧美日韩在线播放 | 免费爱爱视频 | 欧美在线高清 | 韩日精品视频 | 男女羞羞网站 |