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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

電子秒表課程設計 帶ppt 仿真 單片機c51和匯編程序

  [復制鏈接]
跳轉到指定樓層
樓主
電子秒表課程設計

1. 設計要求
   用AT89C52設計一個用液晶顯示作為“秒表”:顯示時間為時,分,秒,每秒自動加1,另設計四個按鍵,按下按鍵1后,可發現led停止閃爍,即時鐘停止走時,時鐘停在當前時刻,按下按鍵2和按鍵3后,可改變時間,按下按鍵4后,時鐘復位到修改后的時間,時鐘重新開始運轉。
2. 實驗原理
   題目難點在于通過對鍵盤的掃描對時鐘的走時/停止進行控制,項目采用定時器T0作為計時器,每10ms發生一次中斷,每100次中斷加1s。在此期間,如“開始”按鍵按下,程序方將TR0置為1,從而開啟中斷,時鐘開始走時。
  系統總體方案
   本系統采用AT89C52單片機為中心器件,利用其定時器/計數器定時和記數的原理,結合硬件電路如電源電路,復位電路,顯示電路,以及一些按鍵電路等來設計計時器,將軟、硬件有機地結合起來。其中軟件系統采用匯編語言編寫程序,包括顯示程序,計數程序,中斷,硬件系統利用PROTEUS強大的功能來實現,簡單切易于觀察,在仿真中就可以觀察到實際的工作狀態。
  仿真圖


      設計是培養學生綜合運用所學知識,發現,提出,分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程,在此次的設計中我學會很多,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對單片機匯編語言掌握得不好……通過這次課程設計之后,一定把以前所學過的知識重新溫故。
     在做設計的日子里老師和同學給了我們很大的幫助,再次對你們表示衷心的感謝!





秒表匯編程序:
  1.             LCDRS  BIT   P2.0
  2.                 lCDEN  BIT   P2.2
  3.         LCD    EQU   P3
  4.                
  5.                 LED    BIT   P2.4       
  6.    
  7.             NUM    EQU   20H
  8.                 MIAO   EQU   21H
  9.                 FEN    EQU   22H
  10.                 SHI    EQU   23H   
  11.         SITE   EQU   24H
  12.             MIAO_L EQU   25H
  13.                 FEN_L  EQU   26H
  14.                 SHI_L  EQU   26H
  15.                 KNUM   EQU   27H


  16.              ORG    0000H
  17.                 LJMP   MAIN
  18.                 ORG    000BH
  19.                 LJMP   IT0P
  20.                

  21. MAIN:   LCALL  INITL
  22.         LCALL  INITT
  23.         MOV    SP,   #60H
  24.                 MOV    MIAO, #00H   
  25.                 MOV    FEN,  #00H
  26.                 MOV    SHI,  #00H
  27.                 MOV    KNUM, #00H
  28.                 SETB   LED
  29.                
  30. HERE:   LCALL   SM
  31.                 LCALL   SF
  32.                 LCALL   SS
  33.                 LCALL   KEY4
  34.                 LCALL   KEY1
  35.                 LCALL   JIA
  36.                 LCALL   JIAN
  37.         LJMP   HERE

  38.                
  39. INITL:  CLR    LCDEN
  40.         MOV    R1,   #38H  
  41.         LCALL  LCDWC
  42.         MOV    R1,   #0CH
  43.         LCALL  LCDWC
  44.         MOV    R1,   #06H
  45.         LCALL  LCDWC
  46.         MOV    R1,   #01H
  47.         LCALL  LCDWC
  48.                 MOV    R1,   #80H
  49.         LCALL  LCDWC
  50.                 LCALL  LCDT1
  51.                 LCALL  LCDT3
  52.                 MOV    R1,   #0C9H
  53.                 LCALL  LCDWC
  54.                 MOV    R1,   #3AH
  55.                 LCALL  LCDWD
  56.                 MOV    R1,   #0CCH
  57.                 LCALL  LCDWC
  58.                 MOV    R1,   #3AH
  59.                 LCALL  LCDWD
  60.                 RET

  61. INITT:  CLR    A
  62.                 MOV    B,     #10
  63.         MOV    R4,    #0FH
  64.             MOV    NUM,   #0AH
  65.         MOV    TMOD,  #01H
  66.             MOV    TH0,   #4CH
  67.             MOV    TL0,   #0D0H
  68.                 SETB   EA
  69.                 SETB   ET0
  70.             SETB   TR0
  71.                 RET         

  72. LCDWC:  CLR    LCDRS
  73.         MOV    LCD,  R1
  74.         LCALL  DELYMS       
  75.         SETB   LCDEN
  76.                 LCALL  DELYMS
  77.                 CLR    LCDEN
  78.         RET   

  79. LCDWD:  SETB   LCDRS
  80.         MOV    LCD,  R1
  81.         LCALL  DELYMS       
  82.         SETB   LCDEN
  83.                 LCALL  DELYMS
  84.                 CLR    LCDEN
  85.         RET

  86. DELYMS: MOV    R7,  #5
  87.         MOV    R6,  #110                                
  88. DEL:    DJNZ   R7,  DEL1
  89. DEL1:   DJNZ   R6,  DEL
  90.                 RET

  91. DELY:   MOV    R7,  #40
  92. DEL12:  MOV    R6,  #123                                
  93. DEL11:  DJNZ   R6,  DEL11
  94.         NOP
  95.         DJNZ   R7,  DEL12
  96.                 RET

  97. LCDT1:  MOV    DPTR, #0000H
  98.         MOV    R2,  #12
  99.         MOV           B,   #80H
  100.         MOV    DPTR,#TAB1
  101.                 MOVC   A,   @A + DPTR
  102.                 MOV    R1,  B
  103.                 LCALL  LCDWC
  104.                 MOV    R1,  A
  105.                 LCALL  LCDWD
  106. LCDT2:  CLR    A
  107.                 INC    DPTR
  108.                 INC    B
  109.                 MOVC   A,   @A + DPTR
  110.                 MOV    R1,  B
  111.                 LCALL  LCDWC
  112.                 MOV    R1,  A
  113.                 LCALL  LCDWD
  114.                 DJNZ   R2,  LCDT2
  115.                 RET

  116. LCDT3:  MOV   R2, #4
  117.         MOV          B, #0BFH
  118. LCDT4:  CLR    A
  119.                 INC    DPTR
  120.                 INC    B
  121.                 MOVC   A,   @A + DPTR
  122.                 MOV    R1,  B
  123.                 LCALL  LCDWC
  124.                 MOV    R1,  A
  125.                 LCALL  LCDWD
  126.                 DJNZ   R2,  LCDT4
  127.                 RET         

  128. IT0P:   PUSH   PSW
  129.         PUSH   Acc
  130.         MOV    TH0,   #4CH
  131.             MOV    TL0,   #0D0H
  132.             DJNZ   NUM,   LOOPT
  133.                 MOV    NUM,   #14H
  134.         INC    MIAO
  135.                 MOV    A,     MIAO
  136.             CJNE   A,     #60,   LOOPT
  137.             MOV    MIAO,  #00
  138.                 INC    FEN
  139.                 MOV    A,     FEN
  140.                 CJNE   A,     #60,   LOOPT
  141.             MOV    FEN,   #00      
  142.                 MOV    A,     SHI
  143.                 CJNE   A,     #24,   LOOPT
  144.             MOV    SHI,   #00
  145.                
  146. LOOPT:  POP    Acc
  147.                 POP    PSW
  148.         RETI            

  149. SM:     MOV    A,     MIAO
  150.         DIV    AB
  151.                 MOV    MIAO_L,B
  152.                 MOV           SITE,  #0CDH
  153.                 LCALL  SHOW
  154.                 MOV    SITE,  #0CEH
  155.                 MOV    A,     MIAO_L
  156.                 LCALL  SHOW
  157.                 MOV    B,     #10
  158.                 RET


  159.                
  160. SF:            MOV    A,     FEN
  161.         DIV    AB
  162.                 MOV    FEN_L, B
  163.                 MOV           SITE,  #0CAH
  164.                 LCALL  SHOW
  165.                 MOV    SITE,  #0CBH
  166.                 MOV    A,     FEN_L
  167.                 LCALL  SHOW
  168.                 MOV    B,     #10
  169.                 RET

  170. SS:     MOV    A,    SHI
  171.         DIV    AB
  172.                 MOV    SHI_L, B
  173.                 MOV           SITE,  #0C7H
  174.                 LCALL  SHOW
  175.                 MOV    SITE,  #0C8H
  176.                 MOV    A,     SHI_L
  177.                 LCALL  SHOW
  178.                 MOV    B,     #10
  179.                 RET

  180. SHOW:   MOV    DPTR,  #0000H
  181.         MOV    DPTR,  #TAB2
  182.             MOVC   A,     @A + DPTR
  183.                 MOV    R1,    SITE
  184.                 LCALL  LCDWC
  185.                 MOV    R1,    A
  186.                 LCALL  LCDWD
  187.                 RET
  188.                
  189. KEY1:   MOV    A,     P1
  190.                 CJNE   A,     #0FEH,  LOOPK2
  191.             LCALL  DELY
  192.                 CJNE   A,     #0FEH,  LOOPK2
  193. WAIT1:  JNB    P1.0,  WAIT1
  194.         CPL    TR0
  195.                 CPL    LED
  196.                 RET

  197. LOOPK2: RET                                                           

  198. KEY4:   MOV    A,     P1
  199.                 CJNE   A,     #0F7H,  LOOPK2  
  200.             LCALL  DELY
  201.                 CJNE   A,     #0F7H,  LOOPK       
  202. WAIT4:  JNB    P1.3,  WAIT4
  203.         INC    KNUM
  204.                 MOV    R4,    KNUM
  205. K1:                  CJNE   R4,    #01,    k2       
  206.                 CPL           TR0
  207.                    MOV    DPTR, #TABM
  208.                 LCALL  TISHI
  209. K2:            CJNE   R4,    #02,    K3       
  210.                 MOV    DPTR, #TABF
  211.                 LCALL  TISHI
  212. K3:                CJNE   R4,    #03,    K4       
  213.                 MOV    DPTR, #TABS
  214.                 LCALL  TISHI
  215. k4:                CJNE   R4,    #04,    LOOPK       
  216.                 MOV    KNUM,  #00H
  217.             MOV    R4,    #00H
  218.             SETB   TR0
  219.                 MOV    DPTR, #TABI
  220.                 LCALL  TISHI
  221.                 RET

  222. TISHI:
  223.         MOV    R2,  #7
  224.         MOV           B,   #86H
  225.                 MOVC   A,   @A + DPTR
  226.                 MOV    R1,  B
  227.                 LCALL  LCDWC
  228.                 MOV    R1,  A
  229.                 LCALL  LCDWD
  230. LCDT5:  CLR    A
  231.                 INC    DPTR
  232.                 INC    B
  233.                 MOVC   A,   @A + DPTR
  234.                 MOV    R1,  B
  235.                 LCALL  LCDWC
  236.                 MOV    R1,  A
  237.                 LCALL  LCDWD
  238.                 DJNZ   R2,  LCDT5
  239.           RET
  240. TABM:      DB "  SECOND  "
  241. TABF:      DB "  MINUTE  "
  242. TABS:      DB "  HOUR   "
  243. TABI:      DB "  CHINA  "
  244.         

  245. LOOPK:  RET

  246. JIA:    MOV    A,     KNUM
  247.                 CJNE   A,     #00H,  KEY2       
  248.                 RET
  249. KEY2:   MOV    A,     P1
  250.         CJNE   A,     #0FDH,  LOOPK
  251.                 LCALL  DELY
  252.                 CJNE   A,     #0FDH,  LOOPK
  253. WAIT2:  JNB    P1.1,  WAIT2
  254.                 MOV    A,     KNUM
  255. MJIA:        CJNE   A,     #01,    FJIA
  256.                 INC    MIAO
  257.                 LCALL  LOOPKM
  258.                 MOV    A,     MIAO
  259.                 CJNE   A,     #60,  LOOPK
  260.             MOV    MIAO,  #00H
  261.                 LCALL  LOOPKM
  262. FJIA:        CJNE   A,     #02,  SJIA
  263.         INC    FEN
  264.                 LCALL  LOOPKF
  265.                 MOV    A,     FEN
  266.                 CJNE   A,     #60,  LOOPK
  267.             MOV    FEN,   #00H
  268.                 LCALL  LOOPKF
  269. SJIA:        CJNE   A,     #03,  LOOPK
  270.         INC    SHI
  271.                 LCALL  LOOPKS
  272.                 MOV    A,     SHI
  273.                 CJNE   A,     #24,  LOOPK
  274.                 MOV    SHI,   #00H
  275.                 LCALL  LOOPKS
  276.                 RET

  277. JIAN:   MOV    A,     KNUM
  278.                 CJNE   A,     #00H,  KEY3       
  279.                 RET
  280. KEY3:   MOV    A,     P1
  281.         CJNE   A,     #0FBH, LOOPK
  282.                 LCALL  DELY
  283.                 CJNE   A,     #0FBH, LOOPK
  284. WAIT3:  JNB    P1.2,  WAIT3
  285.                 MOV    A,     KNUM
  286. MJIAN:        CJNE   A,     #01,   FJIAN
  287.                 MOV    A,     MIAO
  288.                 CJNE   A,     #00,   MJIAN0
  289.             MOV    MIAO,  #59
  290.                 LCALL  LOOPKM
  291.                 RET
  292. MJIAN0: DEC    MIAO
  293.                 LCALL  LOOPKM
  294. FJIAN:        CJNE   A,     #02,  SJIAN
  295.         MOV    A,     FEN
  296.                 CJNE   A,     #00,  FJIAN0
  297.             MOV    FEN,   #59
  298.                 LCALL  LOOPKF
  299.                 RET
  300. FJIAN0: DEC    FEN
  301.                 LCALL  LOOPKF
  302. SJIAN:        CJNE   A,     #03,  LOOPK1
  303.         MOV    A,     SHI
  304.                 CJNE   A,     #00,  SJIAN0
  305.                 MOV    SHI,   #23
  306.                 LCALL  LOOPKS
  307.                 RET
  308. SJIAN0:        DEC    SHI
  309.         LCALL  LOOPKS
  310.                 RET

  311. LOOPK1: RET
  312. LOOPKM: LCALL   SM
  313.         RET

  314. LOOPKF: LCALL   SF
  315.         RET

  316. LOOPKS: LCALL   SS
  317.         RET
  318.        


  319.                
  320. TAB1:   DB "H.I.T.  CHINA", "TIME"
  321. TAB2:   DB 30H, 31H, 32H, 33H, 34H, 35H, 36H, 37H, 38H,39H
  322.                 END                     
復制代碼


單片機秒表c語言程序
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. uchar code china[] = " H.I.T  CHINA";
  5. uchar code time[] = " TIME  ";
  6. void delayms(uchar xms);
  7. void key_scan();
  8. void write_sfm(uchar add, uchar date);
  9. sbit lcdrs = P2^0;
  10. sbit write = P2^1;
  11. sbit lcden = P2^2;
  12. sbit led = P2^4;
  13. sbit key1 = P1^0;
  14. sbit key2 = P1^1;
  15. sbit key3 = P1^2;
  16. sbit key4 = P1^3;
  17. uchar num, miao, shi, fen, knum;

  18. void delayms(uchar xms){
  19.   uchar i,j;
  20.   for(i = xms; i > 0; i --)
  21.     for(j = 110;j>0;j--);   
  22. }

  23. void write_com(uchar com){
  24.      lcdrs = 0;
  25.          P3 = com;
  26.          delayms(5);
  27.          lcden = 1;
  28.          delayms(5);
  29.          lcden = 0;
  30. }

  31. void write_date(uchar date){
  32.      lcdrs = 1;
  33.          P3 = date;
  34.          delayms(5);
  35.          lcden = 1;
  36.          delayms(5);
  37.          lcden = 0;
  38. }

  39. void write_sfm(uchar add, uchar date){
  40.      uchar shi,ge;
  41.          shi = date/10;
  42.          ge = date%10;
  43.          write_com(0x80 + 0x40 + add);
  44.          write_date(0x30 + shi);
  45.          write_date(0x30 + ge);

  46. }
  47. void init(){
  48.      lcden = 0;
  49.          write_com(0x38);
  50.          write_com(0x0c);
  51.          write_com(0x06);
  52.          write_com(0x01);
  53.          write_com(0x80);
  54.          write = 0;
  55.          for(num = 0;num < 13;num++){
  56.              write_date(china[num]);
  57.                  delayms(5);
  58.          }
  59.          write_com(0x80 + 0x40);
  60.          for(num = 0;num < 6;num++){
  61.              write_date(time[num]);
  62.                  delayms(5);
  63.          }
  64.          write_com(0x80 + 0x40 + 8);
  65.          write_date(':');
  66.          write_com(0x80 + 0x40 + 11);
  67.          write_date(':');
  68.          write_sfm(6, 0);
  69.          write_sfm(9, 0);
  70.          write_sfm(12, 0);
  71.          TMOD = 0x01;
  72.          TH0 = (65536 - 45872)/256;
  73.          TL0 = (65536 - 45872)%256;
  74.      EA = 1;
  75.          ET0 = 1;
  76.          TR0 = 1;
  77. }

  78. void key_scan(){
  79.        if(key1 == 0) {
  80.              delayms(5);
  81.                  if(key1 == 0) {
  82.                     while(!key1);
  83.                         TR0 = ~TR0;
  84.                         led = ~led;
  85.                   }
  86.             }
  87.                        
  88.           if(key4 == 0) {
  89.              delayms(5);
  90.                  if(key4 == 0) {
  91.                     knum++;
  92.                     while(!key4);
  93.                         if(knum == 1){
  94.                        TR0 = ~TR0;
  95.                            write_com(0x80 + 0x40 + 12);
  96.                            write_com(0x0f);
  97.                          }
  98.                          if(knum == 2){
  99.                            write_com(0x80 + 0x40 + 9);
  100.                          }
  101.                          if(knum == 3){
  102.                            write_com(0x80 + 0x40 + 6);
  103.                          }
  104.                          if(knum == 4){
  105.                            knum = 0;
  106.                            write_com(0x0c);
  107.                            TR0 = 1;
  108.                          }
  109.                    }
  110.                 }
  111.                 if(knum != 0){
  112.                    if(key2 == 0){
  113.                       delayms(5);
  114.                           if(key2 == 0){
  115.                              while(!key2);
  116.                                  if(knum == 1){
  117.                                     miao++;
  118.                                         if(miao == 60)
  119.                                            miao = 0;
  120.                                         write_sfm(12, miao);
  121.                                         write_com(0x80 + 0x40 + 12);
  122.                                  }
  123.                                  if(knum == 2){
  124.                                     fen++;
  125.                                         if(fen == 60)
  126.                                            fen = 0;
  127.                                         write_sfm(9, fen);
  128.                                         write_com(0x80 + 0x40 + 9);
  129.                                  }
  130.                                  if(knum == 3){
  131.                                     shi++;
  132.                                         if(shi == 24)
  133.                                            shi = 0;
  134.                                         write_sfm(6, shi);
  135.                                         write_com(0x80 + 0x40 + 6);
  136.                                  }
  137.                           }
  138.                    }
  139.                    if(key3 == 0){
  140.                       delayms(5);
  141.                           if(key3 == 0){
  142.                              while(!key3);
  143.                                  if(knum == 1){
  144.                                     miao--;
  145.                                         if(miao == -1)
  146.                                            miao = 59;
  147.                                         write_sfm(12, miao);
  148.                                         write_com(0x80 + 0x40 + 12);
  149.                                  }
  150.                                  if(knum == 2){
  151.                                     fen--;
  152.                                         if(fen == -1)
  153.                                            fen = 59;
  154.                                         write_sfm(9, fen);
  155.                                         write_com(0x80 + 0x40 + 9);
  156.                                  }
  157.                                  if(knum == 3){
  158.                                     shi--;
  159.                                         if(shi == -1)
  160.                                            shi = 23;
  161.                                         write_sfm(6, shi);
  162.                                         write_com(0x80 + 0x40 + 6);
  163.                                  }
  164.                           }
  165.                    }
  166.                 }


  167. }

  168. void T0_time() interrupt 1{
  169.     TH1 = (65536 - 45872)/256;
  170.         TL1 = (65536 - 45872)%256;
  171.     num++;
  172.         if(num == 20){         
  173.            num = 0;
  174.            miao++;
  175.            if(miao== 60){
  176.               miao = 0;
  177.               fen++;
  178.                   if(fen == 60){
  179.                      fen = 0;
  180.                          shi++;
  181.                          if(shi == 24){
  182.                             shi = 0;
  183.                          }
  184.                          write_sfm(6, shi);
  185.                   }
  186.                   write_sfm(9, fen);
  187.            }
  188.           write_sfm(12, miao);
  189.          }
  190. }



  191. void main(){
  192.      init();
  193.          
  194.          while(1){
  195.              //write_sfm(10, 10);
  196.              key_scan();
  197.          }
  198. }


復制代碼


單片機課程設計.rar

413.14 KB, 下載次數: 160, 下載積分: 黑幣 -5

評分

參與人數 3黑幣 +60 收起 理由
通信工程 + 5 贊一個!
鑫人 + 5 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:128153 發表于 2016-6-26 10:57 | 只看該作者
感謝樓主,程序可以使用
回復

使用道具 舉報

板凳
ID:265075 發表于 2017-12-22 13:50 | 只看該作者
謝謝分享
回復

使用道具 舉報

地板
ID:134542 發表于 2018-6-23 19:50 | 只看該作者
感謝樓主,感謝您分享的資料
回復

使用道具 舉報

5#
ID:726372 發表于 2020-5-11 16:30 | 只看該作者
感謝樓主,感謝您分享的資料
回復

使用道具 舉報

6#
ID:776788 發表于 2020-6-12 12:48 | 只看該作者
非常感謝!
回復

使用道具 舉報

7#
ID:776379 發表于 2020-6-14 17:34 | 只看該作者
為什么解壓不了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人一区二区在线 | 久久久久一区 | 国产伦一区二区三区四区 | 国产一区二区三区日韩 | 91国内精精品久久久久久婷婷 | 在线一区观看 | 56pao在线| 一区二区三区久久久 | 亚洲精品国产第一综合99久久 | 91精品国产色综合久久 | 91看片网址| 国产高清免费视频 | 日韩av福利在线观看 | 国产精品一区二区无线 | 久久天堂网 | 久草青青 | 日本大片在线播放 | 久久蜜桃av一区二区天堂 | 欧美日韩中文字幕在线播放 | 国产视频中文字幕 | 97精品超碰一区二区三区 | 国产成人免费一区二区60岁 | 视频在线日韩 | 久久久青草婷婷精品综合日韩 | 亚洲成人免费视频 | 日韩av成人在线 | 国内精品视频一区二区三区 | 欧美群妇大交群中文字幕 | 亚洲成av人片在线观看无码 | 在线午夜 | 日本久久精品 | 欧美日本在线观看 | 午夜在线影院 | av入口| 色综合99 | 草草在线观看 | 日韩精品一区二区三区视频播放 | 午夜精品久久久久久久星辰影院 | 日韩免费视频 | 国产精品久久久精品 | 亚洲一区二区三区免费观看 |