Thông báo

Collapse
No announcement yet.

Mạch Đồng hồ Số ..... !

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Mạch Đồng hồ Số ..... !

    Các bác ơi giúp với ! Cái mạch đồng hồ số của em, bắt chước làm theo sách của Duy Phi mà sao nó ko được. Không biết code nó sai hay nó sai về phần cứng, theo em thì nó sai về code chứ ko thể nào sai về phần cứng. Đây em post lên đây, sẵn em post lên file Proteus mà em đã làm, các bác xem nó có sai ko . Còn đây là link tới 3 file proteus, C, hex : http://www.box.net/shared/p3jlu6vrez.

    GIÚP EM VỚI CÁC BÁC ƠI. ĐÃ LÀM XONG ĐIỀU KHIỂN LED GIỜ LÊN 7 THANH LÀ TRỤC TRẶC.
    Attached Files

  • #2
    Mạch đúng. Chỉ thiếu điện trở treo 10k ở port3 và 1 cái tụ triệt nhiễu ở chân 20.

    Comment


    • #3
      Mạch Đồng hồ Số ..... !

      Mạch đúng. Sao nó lại chạy kỳ nhỉ ? Vậy là chắc code sai rồi .. bó tay !!!
      Để em post code lên anh em xem sao ?
      PHP Code:
      /*
      CLOCK V1.0
      89C2051 + 4-digit 7-SEG led + 4-key switch
      Simple Digital Clock demostrates scanning LED and key switch.
      The clock has 1-bit output port P3.7 for driving AC load through
      MOC3040+triac.
      The source program was compiled by Micro-C with optimize option.
      * **** **** ****
      * * * * * * * *
      * * * * * * *
      * **** * * * *
      * * * * * * *
      * * * * * * * *
      * **** **** ****
      set set time manual
      HOUR MIN ON/OFF ON/OFF
      Copyright (c) 1999 W.SIRICHOTE
      */
      #include <AT89X52.H>
      extern register char cputick;
      unsigned register char
      sec100
      ,sec,sec5,min,hour,flag1,command,ACC,temp,opto;
      /* above must be defined as register for tiny model */
      unsigned register char i,digit,buffer[4],onHour1,onMin1,offHour1,offMin1;
      register char key,delay,count1;
      char convert[10] = {0x3F,0x0c,0x76,0x5e,0x4d,0x5b,0x7b,0x0e,0x7f,0x5f};
      main()
      {
      opto 0xff;
      cputick 0;
      hour 18;
      min 0;
      sec 0;
      key = -1;
      flag1 0;
      onHour1 18/* 18:30 turn lamp on */
      onMin1 01;
      offHour1 18/* 21:30 turn off */
      offMin1 02;
      count1 0;
      buffer[0] = 0x40;
      buffer[1] = 0x40;
      buffer[2] = 0x40;
      buffer[3] = 0x40;
      serinit(9600); /* must be invoked for tiny model */
      while(1)
      {
      while ( 
      cputick 1)
      scanLED();
      cputick 0;
      /*------------- the following tasks execute every 10ms ------*/
      time();
      timeToBuffer();
      blink();
      offmsd();
      keyexe();
      keydelay();
      comparetime();
      /*-----------------------------------------------------------*/
      }
      }
      /* ****************** change constant below for other X-tal ********/
      time ()
      /* update real-time clock */
      {
      sec100++;
      if (
      sec100 >= 100/* 100 * 10 ms = 1 s */
      {sec100 0;
      flag1 |= 0x05/* set bit 0, bit 2 */
      temp 50;
      sec++;
      if (
      sec >= 60)
      {
      sec 0;
      flag1 |= 0x02/* set bit 1 */
      min++;
      if (
      min >= 60)
      {
      min 0;
      hour++;
      if (
      hour >= 24)
      {
      hour 0;
      }
      }
      }
      }
      }
      scanLED() /* scan 4-digit LED and 4-key switch, if key pressed key = 0-3
      else key = -1 */
      {
      int i;
      digit 0x08;
      key = -1;
      for( 
      04i++) /* 4-DIGIT scanning */
      {
      P3 = ~digit opto/* send complement[digit] */
      P1 = ~buffer[i]; /* send complement[segment] */
      pause(1); /* delay a while */
      P1 0xff/* off LED */
      if ((P3 0x10) == 0/* if key pressed P3.4 became low */
      key i/* save key position to key variable */
      digit>>=1/* next digit */
      }
      }
      timeToBuffer()
      {
      buffer[0] = convert[min%10];
      buffer[1] = convert[min/10];
      buffer[2] = convert[hour%10];
      buffer[3] = convert[hour/10];
      }
      blink()
      {
      if((
      flag1 0x04) != 0/* check bit 2 if set decrement temp until zero
      */
      {temp--;
      if (
      temp != 0)
      {
      buffer[1] |= 0x80;
      buffer[2] |= 0x80;
      }
      else( 
      flag1 &= ~0x04);
      }
      }
      keyexe()
      {
      if (
      key != -1)
      {
      if ((
      flag1 0x80) == 0/* within 0.5 sec after 1st press
      the following execution is not allowed
      */
      {
      flag1 |= 0x80;
      delay 50;
      switch(
      key){
      case (
      0): /* key position 0 */
      manualOnOff(); /* service key 0 */
      break;
      case (
      1): /* key position 1 */
      savetimeOnOff1(); /* service key 1 */
      break;
      case (
      2): /* key position 2 */
      setmin(); /* service key 2 */
      break;
      case (
      3): /* key position 3 */
      sethour();
      }
      }
      }
      }
      sethour()
      {
      hour++;
      if ( 
      hour== 24)
      hour 0;
      }
      setmin()
      {
      min++;
      sec 0;
      if( 
      min == 60 )
      min 0;
      }
      savetimeOnOff1()
      {
      count1++;
      if (
      count1 == 1)
      {
      onHour1 hour;
      onMin1 min;
      buffer[0] = 0x00;
      buffer[1] = 0x68;
      buffer[2] = 0x78;
      buffer[3] = 0x71;
      showOnce();
      }
      else
      {
      count1 0;
      savetimeOff1();
      }
      }
      savetimeOff1()
      {
      offHour1 hour;
      offMin1 min;
      buffer[0] = 0x63;
      buffer[1] = 0x63;
      buffer[2] = 0x78;
      buffer[3] = 0x71;
      showOnce();
      }
      manualOnOff()
      {
      opto= ~opto 0x7f/* complement bit 7 which in turn activates P3.7
      */
      if ((opto 0x80) == 0)
      {
      buffer[0] = 0;
      buffer[1] = 0;
      buffer[2] = 0x68;
      buffer[3] = 0x78;
      showOnce();
      }
      else
      {
      buffer[0] = 0;
      buffer[1] = 0x63;
      buffer[2] = 0x63;
      buffer[3] = 0x78;
      showOnce();
      }
      }
      showOnce()
      {
      int i;
      for(
      i=0;i<500;i++)
      scanLED();
      }
      keydelay()
      {
      if ((
      flag1 0x80) !=0)
      {
      delay--;
      if(
      delay == 0)
      flag1 &= ~0x80;
      }
      }
      comparetime()
      {
      if((
      flag1 0x01) != )
      {
      flag1 &= ~0x01;
      if(
      hour == onHour1 && min == onMin1)
      opto 0x7f/* clear P3.7 turning opto on */
      if(hour == offHour1 && min == offMin1)
      opto 0xff/* set bit P3.7 turning opto off */
      }
      }
      offmsd()
      {
      if (
      buffer[3] == 0x3f/* if msd = '0' then put blank unstead */
      buffer[3] = 0x00;
      }
      pause(j)
      int j;
      {
      int i;
      for (
      0ji++)
      ;

      Comment


      • #4
        sorry em, anh chi biết assembly thôi. Chắc nhờ cao nhân khác giải thích hộ.

        Comment


        • #5
          Mạch Đồng hồ Số ..... !

          Sao ko có cao thủ nào giúp hết vậy

          Comment


          • #6
            đưa mình mail cua bạn mình gửi cho bạn code assemlyb mình ko biết cách đưa code len.hichic ngai qua
            INCLUDE 89C51.MC
            ORG 0000H
            JMP MAIN
            ORG 000BH
            JMP ISR_T0
            ORG 0030H
            MAIN:
            MOV IE,#82H
            MOV 10H,#0
            MOV 11H,#0
            MOV 12H,#0
            MOV TMOD,#01H
            MOV 26H,#20
            SETB TF0
            LOOP: CALL TAO_MA
            CALL HIEN_THI
            JMP LOOP
            ;******************************
            ISR_T0:
            CLR TR0
            MOV TH0,#3CH
            MOV TL0,#0B0H
            DEC 26H
            MOV A,@26H
            CJNE A,#0,EXIT
            MOV 26H,20
            CALL DEM_THOI_GIAN
            EXIT:
            SETB TR0
            RETI
            ;******************************
            TAO_MA:
            CALL TM_GIAY
            CALL TM_PHUT
            CALL TM_GIO
            RET
            TM_GIAY:
            MOV A,10H
            CALL BINTOBCD8
            MOV R4,A
            ANL A,#0FH
            CALL XUAT_LED
            MOV 18H,A

            MOV A,R4
            SWAP A
            ANL A,#0FH
            CALL XUAT_LED
            MOV 17H,A
            RET
            TM_PHUT:
            MOV A,11H
            CALL BINTOBCD8
            MOV R4,A
            ANL A,#0FH
            CALL XUAT_LED
            MOV 1AH,A

            MOV A,R4
            SWAP A
            ANL A,#0FH
            CALL XUAT_LED
            MOV 19H,A
            RET
            TM_GIO:
            MOV A,12H
            CALL BINTOBCD8
            MOV R4,A
            ANL A,#0FH
            CALL XUAT_LED
            MOV 1CH,A

            MOV A,R4
            SWAP A
            ANL A,#0FH
            CALL XUAT_LED
            MOV 1BH,A
            RET
            ;******************************
            BINTOBCD8:
            MOV B,#10
            DIV AB
            SWAP A
            ADD A,B
            RET
            ;******************************
            XUAT_LED:
            MOV DPTR,#TABLE
            MOVC A,@A+DPTR
            RET
            TABLE:
            DB 7EH,12H,0BCH,0BAH,0D2H,0EAH,0CEH,32H,0FEH,0FAH
            ;******************************
            DEM_THOI_GIAN:
            MOV R0,#10H
            INC @RO
            CJNE @RO,#60,LOOP1
            MOV @R0,#0
            INC R0
            INC @RO
            CJNE @RO,#60,LOOP1
            MOV @RO,#0
            INC R0
            INC @R0
            CJNE @R0,#24,LOOP1
            MOV 10H,#0
            MOV 11H,#0
            MOV 12H,#0
            LOOP1:
            RET
            ;******************************
            HIEN_THI:
            MOV P2,18H
            MOV P0,#00001000B
            CALL DELAY

            MOV P2,17H
            MOV P0,#00000100B
            CALL DELAY

            MOV P2,1AH
            MOV P0,#00000010B
            CALL DELAY

            MOV P2,19H
            MOV P0,#00000001B
            CALL DELAY
            RET
            ;******************************
            DELAY:
            PUSH 1
            PUST 2
            MOV R1,#4
            LOOP: MOV R2,#250
            DJNZ R2,$
            DJNZ R1,LOOP
            POP 1
            POP 2
            RET

            Comment


            • #7
              email của em đây : minhlong.quangtho.hcm@gmail.com Cảm ơn anh nha

              Comment


              • #8
                bạn có thể gửi luôn cho mình cái code được không vậy? chả là mình đang muốn làm một mạch đồng hồ có báo thức nhưng chưa viết được code, bác nào có code bằng ASM gửi cho mình với. Thnks all !
                mail langtututin2003@yahoo.com

                Comment


                • #9
                  anh ui
                  em đang học lập trình asembly nè khó quá đi mất
                  anh giúp em với

                  Comment


                  • #10
                    Cho mình xin Code với nhé.Email:Thanght@gmail.com
                    Xin cảm ơn

                    Comment


                    • #11
                      ah cái code = asemly mình đã gửi kèm theo rồi đó mấy bạn, tìm hiểu lại rồi nạp vào thôi.
                      minh cũng có code C ae nào cần loại nào thì mail cho mình dinhhoang272@yahoo.com mình nhận dc mail sẽ gửi file cho mình ko biết up lên mạng.

                      Comment


                      • #12
                        Sao mình dùng asm51 dịch code = assembly cùa bác conrongvn85 ra file.hex thì bị báo 29 lỗi như bên dưới.Có ai bít chỉ giúp mình với nhé.Cảm ơn nhiều !
                        DHO PAGE 1

                        1 INCLUDE 89C51.MC
                        ****----------------------------------^-^
                        ****ERROR #4: Illegal digit for radix
                        ****ERROR #23: Illegal or missing directive
                        0000 2 ORG 0000H
                        0000 020030 3 JMP MAIN
                        000B 4 ORG 000BH
                        000B 02004C 5 JMP ISR_T0
                        0030 6 ORG 0030H
                        0030 7 MAIN:
                        0030 750082 8 MOV IE,#82H
                        ****----------------------------^
                        ****ERROR #2: Undefined symbol
                        0033 751000 9 MOV 10H,#0
                        0036 751100 10 MOV 11H,#0
                        0039 751200 11 MOV 12H,#0
                        003C 750001 12 MOV TMOD,#01H
                        ****----------------------------^
                        ****ERROR #2: Undefined symbol
                        003F 752614 13 MOV 26H,#20
                        0042 D200 14 SETB TF0
                        ****-----------------------------^
                        ****ERROR #2: Undefined symbol
                        0044 120063 15 LOOP: CALL TAO_MA
                        0047 1200E7 16 CALL HIEN_THI
                        004A 80F8 17 JMP LOOP
                        18 ;******************************
                        004C 19 ISR_T0:
                        004C C200 20 CLR TR0
                        ****----------------------------^
                        ****ERROR #2: Undefined symbol
                        004E 75003C 21 MOV TH0,#3CH
                        ****----------------------------^
                        ****ERROR #2: Undefined symbol
                        0051 7500B0 22 MOV TL0,#0B0H
                        ****----------------------------^
                        ****ERROR #2: Undefined symbol
                        0054 1526 23 DEC 26H
                        0056 E6 24 MOV A,@26H
                        ****-------------------------------^
                        ****ERROR #21: Illegal indirect register
                        0057 B40006 25 CJNE A,#0,EXIT
                        005A 851426 26 MOV 26H,20
                        005D 1200C9 27 CALL DEM_THOI_GIAN
                        0060 28 EXIT:
                        0060 D200 29 SETB TR0
                        ****-----------------------------^
                        ****ERROR #2: Undefined symbol
                        0062 32 30 RETI
                        31 ;******************************
                        0063 32 TAO_MA:
                        0063 12006D 33 CALL TM_GIAY
                        0066 120084 34 CALL TM_PHUT
                        0069 12009B 35 CALL TM_GIO
                        006C 22 36 RET
                        006D 37 TM_GIAY:
                        006D E510 38 MOV A,10H
                        006F 1200B2 39 CALL BINTOBCD8

                        DHO PAGE 2

                        0072 FC 40 MOV R4,A
                        0073 540F 41 ANL A,#0FH
                        0075 1200BA 42 CALL XUAT_LED
                        0078 F518 43 MOV 18H,A
                        44
                        007A EC 45 MOV A,R4
                        007B C4 46 SWAP A
                        007C 540F 47 ANL A,#0FH
                        007E 1200BA 48 CALL XUAT_LED
                        0081 F517 49 MOV 17H,A
                        0083 22 50 RET
                        0084 51 TM_PHUT:
                        0084 E511 52 MOV A,11H
                        0086 1200B2 53 CALL BINTOBCD8
                        0089 FC 54 MOV R4,A
                        008A 540F 55 ANL A,#0FH
                        008C 1200BA 56 CALL XUAT_LED
                        008F F51A 57 MOV 1AH,A
                        58
                        0091 EC 59 MOV A,R4
                        0092 C4 60 SWAP A
                        0093 540F 61 ANL A,#0FH
                        0095 1200BA 62 CALL XUAT_LED
                        0098 F519 63 MOV 19H,A
                        009A 22 64 RET
                        009B 65 TM_GIO:
                        009B E512 66 MOV A,12H
                        009D 1200B2 67 CALL BINTOBCD8
                        00A0 FC 68 MOV R4,A
                        00A1 540F 69 ANL A,#0FH
                        00A3 1200BA 70 CALL XUAT_LED
                        00A6 F51C 71 MOV 1CH,A
                        72
                        00A8 EC 73 MOV A,R4
                        00A9 C4 74 SWAP A
                        00AA 540F 75 ANL A,#0FH
                        00AC 1200BA 76 CALL XUAT_LED
                        00AF F51B 77 MOV 1BH,A
                        00B1 22 78 RET
                        79 ;******************************
                        00B2 80 BINTOBCD8:
                        00B2 75000A 81 MOV B,#10
                        ****----------------------------^
                        ****ERROR #2: Undefined symbol
                        00B5 84 82 DIV AB
                        00B6 C4 83 SWAP A
                        00B7 2500 84 ADD A,B
                        ****------------------------------^
                        ****ERROR #2: Undefined symbol
                        00B9 22 85 RET
                        86 ;******************************
                        00BA 87 XUAT_LED:
                        00BA 9000BF 88 MOV DPTR,#TABLE
                        00BD 93 89 MOVC A,@A+DPTR
                        00BE 22 90 RET
                        00BF 91 TABLE:
                        00BF 7E12BCBA 92 DB 7EH,12H,0BCH,0BAH,0D2H,0EAH,0CEH,32H,0FEH,0FAH
                        00C3 D2EACE32

                        Comment


                        • #13
                          Giúp mình với các Bác ơi.Mình mới làm lần đầu nên còn gà lắm.Xin cảm ơn !

                          Comment


                          • #14
                            Mình thử dùng Keil51 dịch giúp bạn thì không xảy ra lỗi đâu! Bạn kiểm tra lại!
                            ----------------------
                            Bể học là mênh mông!

                            Comment


                            • #15
                              Nguyên văn bởi hai_abc Xem bài viết
                              Mình thử dùng Keil51 dịch giúp bạn thì không xảy ra lỗi đâu! Bạn kiểm tra lại!
                              Mình thấy để khỏi rắc rối về vấn đề biên dịch thì mình nên gửi file .hex và .asm luôn đi cho tiện

                              Comment

                              Về tác giả

                              Collapse

                              minhlonghm Tìm hiểu thêm về minhlonghm

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X