Thông báo

Collapse
No announcement yet.

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

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

  • 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

  • #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


    • #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


      • #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


        • #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


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

            Comment


            • #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


              • #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


                • #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


                  • #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


                    • #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


                      • #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...
                        X