Thông báo

Collapse
No announcement yet.

cần code về giao tiếp bàn phím với 89C51

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

  • cần code về giao tiếp bàn phím với 89C51

    Mình đang cần code giao tiếp phím ấn với 89c51. bao gồm 4 phím 1.chọn chức năng(chọn phím tăng hay phím giảm) 2. phím tăng(tăng dữ liệu ô nhớ) 3.giảm 4.enter(hoan thanh tac vu)
    Nhờ anh em giúp đỡ chút nha. Cảm ơn nhiều!!

  • #2
    sao hổng có ai giúp mình cả vậy nè

    Comment


    • #3
      đầu tiên là khai báo 4 chân của 89C51 để làm 4 nút bấm

      #define select P3_3
      #define up P3_4
      #define down P3_5
      #define ok P3_2

      Khai báo 1 mảng để lưu dữ liệu cần thay đổi

      mang[5] = {0,0,0,0,0};

      Lập trình cho các nút bấm
      -nút Select là để chọn phần tử trong mảng cần thay đổi
      -nút Up là tăng giá trị của phần tử trong mảng đã được chọn
      -nút Down là giảm giá trị của phần tử trong mảng đã được chọn
      -nút OK là lưu giá trị đã thay đổi vào vị trí của phần tử trong mảng đã được chọn

      while(1)
      {
      if(!select) // copy phan tu trong mang da duoc chon vao bien buffer
      {
      phantu++;
      if(phantu>5) {phantu = 0;}
      buffer = mang[phantu];
      }

      if(!up) // tang bien buffer
      {
      buffer++;
      tre(20); //tre 20ms
      }

      if(!down)
      {
      buffer--; // giam bien buffer
      tre(20); //tre 20ms
      }


      if(!ok) // luu bien buffer vao phan tu trong mang
      {
      mang[phantu] = buffer;
      tre(20) // tre 20ms
      }

      }

      Comment


      • #4
        Trong diễn đàn có rất nhiều bài viết về quét phím mà, sao bạn không tìm các bài viết trước.
        http://dientuvietnam.net/forums/showthread.php?t=23141
        http://www.dientuvietnam.net/forums/...ad.php?t=21148

        Bạn tham khảo các bài viết trên nhé. Có giải thích và cả code nữa.

        Comment


        • #5
          ///////////////////////
          en bit p1.2
          rw bit p1.1
          rs bit p1.0
          databus equ 30h
          org 000h
          ////

          /////////////////////
          mov r5,#38h
          acall command
          mov r5,#0eh
          acall command
          mov r5,#01h
          acall command
          mov r5,#80h
          acall command
          mov r5,#'k'
          acall data_display
          acall phim
          mov r5,#databus
          acall data_display

          ///////////////

          phim: Acall k1
          acall k2

          k1: Mov p2,#0fh
          mov a,p2
          anl a,#11111000b
          cjne a,#0ffh,k1
          k2: Acall delay
          mov a,p2
          anl a,#11111000b
          cjne a,#0ffh,over1
          sjmp k2
          over1: Acall delay
          mov a,p2
          anl a,#11111000b
          cjne a,#0ffh, over2
          sjmp k2
          over2: Mov p2,#11101111b
          mov a,p2
          anl a,#11111000b
          cjne a,#0ffh,row_a
          mov p2,#11011111b
          mov a,p2
          anl a,#11111000b
          cjne a,#0ffh,row_b
          mov p2,#10111111b
          mov a,p2
          anl a,#11111000b
          cjne a,#0ffh,row_c
          mov p2,#01111111b
          mov a,p2
          anl a,#11111000b
          cjne a,#0ffh,row_d
          sjmp k2
          row_a: Mov dptr,#kcode0
          sjmp find
          row_b: Mov dptr,#kcode1
          sjmp find
          row_c: Mov dptr,#kcode2
          sjmp find
          row_d: Mov dptr,#kcode3
          sjmp find
          find: Rrc a
          jnc match
          inc dptr
          sjmp find
          match: Clr a
          movc a,@a+dptr
          mov databus,a
          ljmp k1
          delay: Mov tmod,#01h
          mov tl0,#0e0h
          mov th0,#0b1h
          setb tr0
          acall bac
          clr tr0
          clr tf0
          bac:jb tf0,bac
          ret
          kcode3: Db '*','0','#'
          kcode2: Db '7','8','9'
          kcode1: Db '4','5','6'
          kcode0: Db '1','2','3'
          /////////// /////////////

          command:
          Acall ready
          mov p0,r5
          clr rs
          clr rw
          setb en
          clr en
          ret
          data_display:
          Acall ready
          mov p0,r5
          setb rs
          clr rw
          setb en
          clr en
          ret
          ready: Setb p0.7
          clr rs
          setb rw
          back: Clr en
          setb en
          jb p0.7,back
          ret
          end
          e mới học asem mà ngồi mãi ko viết đc cái code hiển thị nút bấm của bàn phím, anh nào biết chỉ e với, thaks ạ!

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X