Thông báo

Collapse
No announcement yet.

Giải mã BCD sang LED 7 thanh dùng 7447.

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

  • Giải mã BCD sang LED 7 thanh dùng 7447.

    Các bạn giúp mình với. Hiện tại mình đang làm 1 mạch đếm sản phẩm dùng VI ĐIều Khiển AVR. Số xung mình định đếm là từ 0--99, sau đó ngắt. Kết quả hiển thị ra 2 LED 7 thanh. Mình chỉ biết nối ra 1 led và cho nó đếm từ 0-9 thôi. Còn sang Led thứ 2 thì mình ko biết làm như thế nào cả. Mã BCD từ 0-->99 mình lấy từ 8 chân của PORTB của Vi điều khiển. Các chỉ giúp mình cách ghép nối 2 LED đc ko. Mình cám ơn nhiều

  • #2
    led 7 vạch hiển thị đc 1 số.
    mà số bạn muốn hiển thị là số 2 chữ sô. thì cậu cứ xem như là hiển thị 2 số đơn lẻ thôi..
    cậu phải tách đc số hàng chục và hàng đv ra. rồi cho hiển thị từng giá trị trên mỗi led riêng

    Comment


    • #3
      Mình viết code cho AVR như thế này rồi mà chạy mô phỏng không thể đc . Các bạn giúp mình sửa lỗi được ko. Mình cám ơn nhiêu
      int main(void){
      DDRB=0xFF; //PORTB la output PORT
      PORTB=0x00;
      DDRD=0x00; //khai bao PORTD la input de ket noi Button kich vao chan T0
      PORTD=0xFF; //su dung dien tro keo len cho PORTD

      TCCR0=6;// CS02=1, CS01=1, CS00=0: xung nhip tu chan T0, up
      TCNT0=0;

      while (1){ //vòng lặp
      if (TCNT0<10) PORTB=TCNT0;
      BCD=TCNT0/10; //Chuyển từ mã nhị phân sang số BCD
      BCD<<4;// Dịch BCD sang trái 4 bit
      BCD=TCNT0%10+BCD;//Lấy phần dư của phép chia TCNT0 cho 10 cộng với BCD
      PORTB=BCD;
      if (bit_is_clear(PIND,7)) TCNT0=0; //Reset bo dem neu chan PD7=0
      }
      return 0;
      }

      Comment


      • #4
        Có phải bạn định dùng 4bit thấp điều khiển 1 con 7447 cho số ở hàng đơn vị, còn 4bit cao cho hàng chục?

        Comment


        • #5
          đã dùng vđk còn tốn tiền mua con 7447 làm gì. mình mới làm đếm sp bằng con at8 đây chỉ cần 1 port đưa mã led 4 chân của 1 port quét led là ok rồi
          vd code:

          #include <mega8.h>
          #include <delay.h>

          #define data PORTD //??t bi?n data là PORTD
          #define led1 PORTC.0
          #define nut PINC.3
          #define led2 PORTC.1
          #define xung PINC.5
          #define bao PORTB.0

          unsigned char led7[10]={ 0b11000000, // so "0"
          0b11111001, // so "1"
          0b10100100, // so "2"
          0b10110000, // so "3"
          0b10011001, // so "4"
          0b10010010, // so "5"
          0b10000010, // so "6"
          0b11111000, // so "7"
          0b10000000, // so "8"
          0b10011000 // so "9"
          };
          unsigned char chucai[2]={ 0b10100001, //d
          0b11000001 //u
          };
          int a,b,i,xung_truoc,check,count;
          void hienthi(int k)
          {a=k/10;
          b=k%10;
          led1=1;
          led2=0;
          data=led7[a];
          delay_us(20);
          led1=led2=0;
          led1=0;
          led2=1;
          data=led7[b];
          delay_us(20);
          led1=led2=0;
          }
          void hiendu()
          {
          led1=1;
          led2=0;
          data=chucai[0];
          delay_us(20);
          led1=0;
          led2=1;
          data=chucai[1];
          delay_us(20);
          led1=led2=0;

          }



          void main(void)
          {
          // Declare your local variables here

          // Input/Output Ports initialization
          // Port B initialization
          // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
          // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=0
          PORTB=0x00;
          DDRB=0x01;

          // Port C initialization
          // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
          // State6=T State5=P State4=P State3=P State2=T State1=0 State0=0
          PORTC=0x38;
          DDRC=0x03;

          // Port D initialization
          // Func7=In Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
          // State7=T State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
          PORTD=0x7F;
          DDRD=0x7F;



          i=00;
          check=0;
          count=0;
          while (1)
          { if(nut==0) //tr??ng h?p ??m t? do
          {
          hienthi(i);
          if(xung==1) //n?u xung=1
          xung_truoc=1; //gán xung_truoc=1
          if(xung==0 && xung_truoc==1) //n?u xung ?ang chuy?n wa 0 và xung tr??c =1
          {
          i++;
          if(i>99)
          i=0;
          xung_truoc=0;
          }
          }
          else //tr??ng h?p ??m 10 thì báo ??
          { if(xung==1)
          xung_truoc=1;
          if(xung==0 && xung_truoc==1)
          {
          i++;
          check=0;
          xung_truoc=0;
          }

          if(check==1) //xét ?i?u ki?n check n?u check=1 thì nó th?c hi?n l?nh d??i hi?n ch? "du"
          {
          hiendu();
          bao=1;
          }
          else //ng??c l?i khi check=0
          {
          bao=0; //?èn báo ko sag1
          if(i==10) //n?u s?n ph?m =10
          {
          hienthi(i); //hi?n s?n ph?m ra
          if(count<150)
          {
          count++;
          continue; //t? câu l?nh if là ?? hi?n ?c s? 10, l?nh continue là g?p nó s? quay v? vòng code ??u tiên
          }
          else //n?u count l?n h?n 150
          count = 0;
          delay_ms(50);
          bao=1;
          check=1;
          i=0;
          }
          else
          hienthi(i);
          }

          }

          };

          }

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X