Thông báo

Collapse
No announcement yet.

thắc mắc về code 7seg HELP!

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

  • thắc mắc về code 7seg HELP!

    Tình hình là e đã tạo được code cho 4 led 7 đoạn, quét số từ bàn phím rồi hiện thị số trên 4 led 7seg 4 con số được nhập từ phím. e có thắc mắc là khi đã nhập xog 4 chữ số (vd: 0123) thì khi nhập tiếp số 4 led 7 đoạn sẽ quay về giá trị 0000 và led thứ nhất(hàng nghìn) nhận giá trị số vừa nạp từ bàn phím. e muốn hỏi phải làm sao khi đã nhập 4 giá trị cho 4 led 7 đoạn và khi nhập tiếp 1 chữ số từ bàn phím thì led 7seg "hàng nghìn" sẽ lấy giá trị của led "hàng trăm" trc đó, tương tự cho led "hàng trăm và chục", còn led 7seg hàng đơn vị sẽ nhận giá trị vừa nhập.
    VD: nhập 4 giá trị từ bàn phím là "1, 2, 3, 4" ,trên 4 led 7seg sẽ là "1234" thì sau đó nhập thêm số 5 từ phím thì 4 led 7 seg sẽ hiện thị là "2345" tương tự nhập tiếp số 7 thì sẽ là "3457" ... và khi nhập chữ từ bàn phím thì sẽ hiện chữ "err".
    Mong mọi người giúp đỡ, e xin chân thành cám ơn!

  • #2
    post code len moi nguoi moi giup dc chu pro

    Comment


    • #3
      đây bạn:
      #include <reg51.h>
      #include <absacc.h>
      #define Data_LED 0x4000
      #define LED0 0x6000
      #define LED1 0x6001
      #define LED2 0x6002
      #define LED3 0x6003


      sbit h1 = P1^0;
      sbit h2 = P1^1;
      sbit h3 = P1^2;
      sbit h4 = P1^3;
      sbit C1 = P1^4;
      sbit C2 = P1^5;
      sbit C3 = P1^6;
      sbit C4 = P1^7;



      void kiemtra(void);

      //#define Chot_LED 0x6000;
      //--------------------------
      //ham delay
      /*void delay(unsigned long x)
      {
      unsigned long i, j;
      for(i=0;i<x;i++);
      {
      for(j=0;j<125;j++);
      }
      } */
      void delay(unsigned long x)
      {
      TL0=(65535-x)%256;
      TH0=(65535-x)/256;
      TR0=1; //bat timer0
      while(!TF0)
      {

      }
      TR0=0; //tat timer0
      TF0=0; //tat co ngat

      }
      //--------------------------
      //ham tra ma bcd

      unsigned char bcd(unsigned char x)
      {
      unsigned char y[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0,0xFF};
      return y[x];
      }
      //doc phim
      unsigned char Read_key(void)
      {
      P1=0xFF;
      C1=0;
      if(h1==0)
      {
      return 0;
      }
      if(h2==0)
      {
      return 4;
      }
      if(h3==0)
      {
      return 8;
      }
      if(h4==0)
      {
      return 0x0C;
      }
      //-----------------
      P1=0xFF;
      C2=0;
      if(h1==0)
      {
      return 1;
      }
      if(h2==0)
      {
      return 5;
      }
      if(h3==0)
      {
      return 9;
      }
      if(h4==0)
      {
      return 0x0D;
      }
      //-------------------------
      P1=0xFF;
      C3=0;
      if(h1==0)
      {
      return 2;
      }
      if(h2==0)
      {
      return 6;
      }
      if(h3==0)
      {
      return 0x0A;
      }
      if(h4==0)
      {
      return 0x0E;
      }
      //-----------------------------
      P1=0xFF;
      C4=0;
      if(h1==0)
      {
      return 3;
      }
      if(h2==0)
      {
      return 7;
      }
      if(h3==0)
      {
      return 0x0B;
      }
      if(h4==0)
      {
      return 0x0F;
      }
      return 0xFF;
      }

      //--------------------------
      //hien thi LEd
      void screen(unsigned long x)
      {
      unsigned long z;
      unsigned char temp0,temp1,temp2,temp3;
      z=x;
      temp0=x%10; //so hang don vi
      x=x/10;
      temp1=x%10; //so hang chuc
      x=x/10;
      temp2=x%10; //so hang tram
      temp3=x/10; //so hang nghin
      if(z<1000)
      {
      temp3=10; // m xoa lED
      }
      if(z<100)
      {
      temp3=10; // m xoa lED
      temp2=10;
      }
      if(z<10)
      {
      temp3=10; // m xoa lED
      temp2=10;
      temp1=10;
      }
      //tat LED0,LED1,LED2,LED3
      /* XBYTE[Data_LED]=0xFF;
      XBYTE[LED0]=0x00;
      XBYTE[LED1]=0x00;
      XBYTE[LED2]=0x00;
      XBYTE[LED3]=0x00; */
      //hien thi LED0
      XBYTE[Data_LED]=bcd(temp0);
      XBYTE[LED3]=1;
      delay(50000);
      XBYTE[LED3]=0x00;
      //hien thi LED1
      XBYTE[Data_LED]=bcd(temp1);
      XBYTE[LED2]=1;
      delay(50000);
      XBYTE[LED2]=0x00;
      //hien thi LED2
      XBYTE[Data_LED]=bcd(temp2);
      XBYTE[LED1]=1;
      delay(50000);
      XBYTE[LED1]=0x00;
      //hien thi LED3
      XBYTE[Data_LED]=bcd(temp3);
      XBYTE[LED0]=1;
      delay(50000);
      XBYTE[LED0]=0x00;
      }
      //============================================
      //doc ban phim don gian
      unsigned long read_data_1(void)
      {

      unsigned char i,key,x0,x1,x2,x3;
      //nhap hang nghin
      do
      {
      key=Read_key();
      x3=key;
      }while(key==255);
      for(i=0;i<20;i++)
      {
      screen(x3*1000);
      }
      //nhap hang tram
      do
      {
      key=Read_key();
      x2=key;
      }while(key==255);
      for(i=0;i<20;i++)
      {
      screen(x3*1000+x2*100);
      }
      //nhap hang chuc
      do
      {
      key=Read_key();
      x1=key;
      }while(key==255);
      for(i=0;i<20;i++)
      {
      screen(x3*1000+x2*100+x1*10);
      }
      //nhap hang don vi
      do
      {
      key=Read_key();
      x0=key;
      }while(key==255);
      for(i=0;i<20;i++)
      {
      screen(x3*1000+x2*100+x1*10+x0);
      }
      return (x3*1000+x2*100+x1*10+x0);
      }

      //--------------------------
      void main(void)
      {
      TMOD = 0x01;
      while(1)
      {
      kiemtra();
      }
      }

      Comment


      • #4
        Chào bạn
        Bạn khai báo x0, x1, x2, x3 là biến static hoặc global, Khởi tạo ban đầu tất cả đều = 0;
        mỗi khi nhập một số bạn thực hiện đoạn code sau:
        key = Read_key();
        if(key >= 0 && key <= 9)
        {
        x3 = x2;
        x2 = x1 ;
        x1 = x0;
        x0 = key;
        screen(x3*1000+x2*100+x1*10+x0) để hiển thị
        }else
        {
        err_display();
        }

        ví dụ:
        nhập 1 => x3 = x2 = 0; x2 = x1 = 0; x1 = x0 = 0; x0 = key = 1; screen(x3*1000+x2*100+x1*10+x0) <=> screen(1);
        nhập 2 => x3 = x2 = 0; x2 = x1 = 0; x1 = x0 = 1; x0 = key = 2; screen(x3*1000+x2*100+x1*10+x0) <=> screen(12);
        nhập 3 => x3 = x2 = 0; x2 = x1 = 1; x1 = x0 = 2; x0 = key = 3; screen(x3*1000+x2*100+x1*10+x0) <=> screen(123);
        nhập 4 => x3 = x2 = 1; x2 = x1 = 2; x1 = x0 = 3; x0 = key = 4; screen(x3*1000+x2*100+x1*10+x0) <=> screen(1234);
        nhập 5 => x3 = x2 = 2; x2 = x1 = 3; x1 = x0 = 4; x0 = key = 5; screen(x3*1000+x2*100+x1*10+x0) <=> screen(2345);
        .
        .
        .
        .
        .
        .
        Chúc bạn thành công
        0945061338(vocam.h@gmail.com,lehanhdtk3@gmail.com)
        ||
        PROGRAMING(C,ASM),HARDWARE,LMD,RTC,GPRS,GPS....ALL OF VDK

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        • mansion123
          Bật mí những điều ít ai biết về thi công gỗ óc chó
          bởi mansion123
          Thi công gỗ óc chó giúp không gian trở nên sang trọng, ấm cúng, gần gũi hơn. Sự kết hợp giữa thẩm mỹ và chất lượng cao của gỗ óc chó chắc chắn sẽ mang lại giá trị lâu dài và làm hài lòng ngay cả những khách hàng khó tính nhất. Vậy đằng
          ...
          hôm nay, 16:08
        • tuyennhan
          Trả lời cho Tiếng Anh cho người Việt
          bởi tuyennhan
          Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
          Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
          hôm nay, 07:44
        • vi van pham
          Trả lời cho Tiếng Anh cho người Việt
          bởi vi van pham
          Cám ơn những lời chúc tốt đẹp của em.

          Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

          Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
          hôm nay, 02:00
        • nhathung1101
          Trả lời cho Tiếng Anh cho người Việt
          bởi nhathung1101
          Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

          Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

          Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
          Hôm qua, 22:18
        • dinhthuong80
          Trả lời cho Tiếng Anh cho người Việt
          bởi dinhthuong80
          Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

          Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
          Hôm qua, 14:51
        • dinhthuong80
          Trả lời cho Tiếng Anh cho người Việt
          bởi dinhthuong80
          Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

          Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
          Hôm qua, 14:39
        • dinhthuong80
          Trả lời cho Tiếng Anh cho người Việt
          bởi dinhthuong80
          Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

          Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
          Hôm qua, 14:28
        • bqviet
          Trả lời cho Tiếng Anh cho người Việt
          bởi bqviet
          Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
          21-02-2025, 20:26
        • mèomướp
          Trả lời cho Tiếng Anh cho người Việt
          bởi mèomướp
          Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
          21-02-2025, 12:32
        • vi van pham
          Trả lời cho Tiếng Anh cho người Việt
          bởi vi van pham
          Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

          Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
          20-02-2025, 21:31
        Đang tải...
        X