Hỏi code đếm số lần bấm phím hiển thị trên LED 7 thanh

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • TerryFox
    Thành viên mới
    • Jan 2008
    • 15

    #1

    Hỏi code đếm số lần bấm phím hiển thị trên LED 7 thanh

    Mình đang có bài tập đếm số lần bấm phím hiển thị trên LED 7 thanh. Nhưng ko biết code viết thế nào.. Bạn nào biết chỉ mình với. Mình cần gấp lắm
    Thx các bạn
  • biendt
    Thành viên tích cực
    • Aug 2008
    • 184

    #2
    Chảng biết bạn này dùng vi điều khiển gì nữa! Mà ngôn ngữ lập trình dùng C hay ASbly!

    Comment

    • hoasua_2005
      Thành viên tích cực
      • Mar 2008
      • 487

      #3
      các bac cho em hỏi câu của bạn terryfox vdk là 89C51, lập trình bằng KeilC nhá, em cúng đang mắc ở phần này.

      Comment

      • sangthai
        Banned
        • Aug 2008
        • 137

        #4
        Tôi viết bằng hợp ngữ mong giúp được bạn.

        Trong đoạn code bên dưới P0 xuất ra mã hàng, P1 xuất ra mã cột để điều khiển 3 Led 7 đoạn Anod chung.


        SW BIT P1.0
        DV EQU R2
        CHUC EQU R3
        TRAM EQU R4
        ..........ORG 000H
        TD:.....MOV TRAM,#0
        X3:.....MOV CHUC,#0
        X2:.....MOV DV,#0
        X1:.....LCALL BCD_7DOAN
        ..........LCALL HIENTHI
        ..........JB SW,TD
        ..........LCALL DELAY ;CHỐNG DỘI
        ..........INC DV
        ..........CJNE DV,#10,X1
        ..........INC CHUC
        ..........CJNE CHUC,#10,X2
        ..........INC TRAM
        ..........CJNE TRAM,#10,X3
        ..........JMP TD

        ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

        BCD_7DOAN:
        ..........MOV R0,#02H
        ..........MOV R1,#30H
        ..........MOV DPTR,#500H
        X4:.....MOV A,@R0
        ..........MOVC A,@A+DPTR
        ..........MOV @R1,A
        ..........INC R0
        ..........INC R1
        ..........CJNE R0,#05H,X4
        RET

        ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

        HIENTHI:
        ..........MOV R0,#30H
        ..........MOV A,#0FEH
        X5:......MOV P0,@R0
        ..........MOV P1,A
        ..........LCALL DELAY
        ..........MOV P1,#0FFH ;CHỐNG LEM
        ..........INC R0
        ..........RL A
        ..........CJNE A,#0F7H,X5
        RET

        ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

        DELAY:
        .........MOV R6,#20
        X6:....MOV R7,#100
        .........DJNZ R7,$
        .........DJNZ R6,X6
        RET

        ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

        ORG 500H
        DB 0C0H,0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H

        END

        Chúc bạn thành công !!!

        Comment

        • TerryFox
          Thành viên mới
          • Jan 2008
          • 15

          #5
          Sao mình dịch sang file .hex ko được. Bạn nào chỉ mình với. Dưới đây là sơ đồ mạch của mình .
          Attached Files

          Comment

          • TerryFox
            Thành viên mới
            • Jan 2008
            • 15

            #6
            ai giúp mình với. Mình đang cần lắm

            Comment

            • sangthai
              Banned
              • Aug 2008
              • 137

              #7
              Sơ đồ của bạn post lên có nhiều điều đáng nói:
              + Thứ nhất : Chân EA\ phải treo lên nguồn để vi điều khiển đọc bộ nhớ nội.
              + Thứ hai : Bạn nên mắc thêm con 74HC245 để đệm dòng cho P0.
              + Thứ ba : Dùng transistor A1015 để điều khiển cột.
              + Thứ tư : mạch reset không cần mắc diode gì cả.
              Nếu bạn làm đúng như thế thì độ sáng của led mới được đảm bảo. Tuổi thọ của mạch mới cao.

              Việc dịch qua File.Hex không được là do trình biên dịch chứ không phải do phần cứng.

              Chúc bạn thành công !!!
              Last edited by sangthai; 06-12-2008, 12:00.

              Comment

              • TerryFox
                Thành viên mới
                • Jan 2008
                • 15

                #8
                mình dùng chg trinh Reads51 để dịch, Mình ko biết xài Keil C. Bạn chỉ mình cách dịch được ko

                Comment

                • biendt
                  Thành viên tích cực
                  • Aug 2008
                  • 184

                  #9
                  Đây là chương trình tham khảo dùng 8501 lập trình C.
                  với nút ấn đcj gắn vào P1.0 và LED đc găn vào P2
                  unsigned char i=0;// Khai bao them bien toan cuc de dem so lan an nut
                  unsigned char Doccongtac(void)// Ham tra lai gia tri unsigned char
                  {
                  if( P1_0 ==0)// Neu nut duoc bam
                  {
                  delay(300);// Tre 1 khoang thoi gian qua xung nhieu
                  while(P1_0 ==0) // Cho toi khi nha tay khoi nut bam
                  {
                  ;//Khong lam gi
                  }
                  i++;// Nha ty thi tang i
                  if( i ==10) i=0;// Quay vong gia tri cua i
                  }
                  return i;
                  }
                  void hienthisolannhanphim(unsigned char solan)
                  {
                  switch(solan)// Tuy vao so lan
                  {
                  case 0: { so0(); break; }// Neu so lan =0 hien so 0 thoat khoi switch
                  case 1: { so1(); break; }// Neu so lan =1 hien so 1 thoat khoi switch
                  case 2: { so2(); break; }// ....
                  case 3: { so3(); break; }
                  case 4: { so4(); break; }
                  case 5: { so5(); break; }
                  case 6: { so6(); break; }
                  case 7: { so7(); break; }
                  case 8: { so8(); break; }
                  case 9: { so9(); break; }// Neu so lan =9 hien so 9 thoat khoi switch
                  }
                  }
                  void main(void)
                  {
                  while(1)
                  {
                  Doccongtac(); // Goi ham doc so lan nhan phim
                  hienthisolannhanphim(i);// Hien thi so lan nhan phim, bien i la bien toan cuc
                  }
                  }

                  Comment

                  • pm.long
                    Thành viên mới
                    • Jun 2012
                    • 9

                    #10
                    Nguyên văn bởi biendt Xem bài viết
                    Đây là chương trình tham khảo dùng 8501 lập trình C.
                    với nút ấn đcj gắn vào P1.0 và LED đc găn vào P2
                    unsigned char i=0;// Khai bao them bien toan cuc de dem so lan an nut
                    unsigned char Doccongtac(void)// Ham tra lai gia tri unsigned char
                    {
                    if( P1_0 ==0)// Neu nut duoc bam
                    {
                    delay(300);// Tre 1 khoang thoi gian qua xung nhieu
                    while(P1_0 ==0) // Cho toi khi nha tay khoi nut bam
                    {
                    ;//Khong lam gi
                    }
                    i++;// Nha ty thi tang i
                    if( i ==10) i=0;// Quay vong gia tri cua i
                    }
                    return i;
                    }
                    void hienthisolannhanphim(unsigned char solan)
                    {
                    switch(solan)// Tuy vao so lan
                    {
                    case 0: { so0(); break; }// Neu so lan =0 hien so 0 thoat khoi switch
                    case 1: { so1(); break; }// Neu so lan =1 hien so 1 thoat khoi switch
                    case 2: { so2(); break; }// ....
                    case 3: { so3(); break; }
                    case 4: { so4(); break; }
                    case 5: { so5(); break; }
                    case 6: { so6(); break; }
                    case 7: { so7(); break; }
                    case 8: { so8(); break; }
                    case 9: { so9(); break; }// Neu so lan =9 hien so 9 thoat khoi switch
                    }
                    }
                    void main(void)
                    {
                    while(1)
                    {
                    Doccongtac(); // Goi ham doc so lan nhan phim
                    hienthisolannhanphim(i);// Hien thi so lan nhan phim, bien i la bien toan cuc
                    }
                    }
                    mình dùng keil c dịch ra hex thì bão lỗi ở phần 04 " if(p1_0==0)// Neu nut duoc bam"

                    Comment

                    • pm.long
                      Thành viên mới
                      • Jun 2012
                      • 9

                      #11
                      Nguyên văn bởi sangthai Xem bài viết
                      Trong đoạn code bên dưới P0 xuất ra mã hàng, P1 xuất ra mã cột để điều khiển 3 Led 7 đoạn Anod chung.


                      SW BIT P1.0
                      DV EQU R2
                      CHUC EQU R3
                      TRAM EQU R4
                      ..........ORG 000H
                      TD:.....MOV TRAM,#0
                      X3:.....MOV CHUC,#0
                      X2:.....MOV DV,#0
                      X1:.....LCALL BCD_7DOAN
                      ..........LCALL HIENTHI
                      ..........JB SW,TD
                      ..........LCALL DELAY ;CHỐNG DỘI
                      ..........INC DV
                      ..........CJNE DV,#10,X1
                      ..........INC CHUC
                      ..........CJNE CHUC,#10,X2
                      ..........INC TRAM
                      ..........CJNE TRAM,#10,X3
                      ..........JMP TD

                      ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                      BCD_7DOAN:
                      ..........MOV R0,#02H
                      ..........MOV R1,#30H
                      ..........MOV DPTR,#500H
                      X4:.....MOV A,@R0
                      ..........MOVC A,@A+DPTR
                      ..........MOV @R1,A
                      ..........INC R0
                      ..........INC R1
                      ..........CJNE R0,#05H,X4
                      RET

                      ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                      HIENTHI:
                      ..........MOV R0,#30H
                      ..........MOV A,#0FEH
                      X5:......MOV P0,@R0
                      ..........MOV P1,A
                      ..........LCALL DELAY
                      ..........MOV P1,#0FFH ;CHỐNG LEM
                      ..........INC R0
                      ..........RL A
                      ..........CJNE A,#0F7H,X5
                      RET

                      ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                      DELAY:
                      .........MOV R6,#20
                      X6:....MOV R7,#100
                      .........DJNZ R7,$
                      .........DJNZ R6,X6
                      RET

                      ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                      ORG 500H
                      DB 0C0H,0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H

                      END

                      Chúc bạn thành công !!!
                      cho mình xin sơ đồ mạch với. hiển thị số lần bấn nút đến 99 nhé. thank

                      Comment

                      • nvthanh020
                        Thành viên mới
                        • May 2013
                        • 1

                        #12
                        cho em hỏi code số lần bấm phím hiển thị trên led 7 đoạn trên con pic 16f887 với!!!
                        Last edited by nvthanh020; 29-11-2014, 16:01.

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...