• Webdien.com - Cầu nối dân điện


    1. [HOT] - Webdien đang tuyển các vị trí quản lý cao cấp

      ntech.com.vn

  • Trang 1 của 2 12 CuốiCuối
    Kết quả 1 đến 10 của 14
    1. #1
      Tham gia
      01-06-2011
      Bài viết
      4
      Cảm ơn
      0
      Được cảm ơn 0 lần, trong 0 bài

      Question hiển thị led từ 0000-9999.

      const digit[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
      unsigned char i,tram,chuc,dvi;
      unsigned int del;
      void hex2bcd()
      {
      tram=i/100;
      chuc=(i-100*tram)/10;
      dvi= i%10;
      }
      void hienthi()
      {
      portc = digit[dvi];
      portd = 0b10000000;
      delay_us(100);
      portd=0;
      portc=digit[chuc];
      portd= 0b01000000;
      delay_us(100);
      portd=0;
      portc=digit[tram];
      portd= 0b00100000;
      delay_us(100);
      portd=0;
      }
      void delay()
      {
      while(del<500)
      {
      hienthi();
      del++;
      }
      del=0;
      }
      void main()
      {
      trisc=0;
      trisd=0;
      portb=0;
      portd=0;
      i=000;
      del=0;
      while(1)
      {
      hex2bcd();
      hienthi();
      delay();
      i++;
      }
      }

      đây là code hiển thị led 7 đoạn từ 0-255; bác nào có thể sửa lại để hiển thị từ 0-9999(kèm theo yêu cầu ko hiển thị các số vô nghĩa như 0001 thi chỉ hiển thị số 1 thui...), bác nào sửa lại mạch này dùm em với nhá...nhanh dùm em cái..tks nhiều...

      --------------------------------------------------------------------------------
      Xem bài viết cùng chuyên mục:


    2. #2
      Tham gia
      18-05-2010
      Địa chỉ
      Long Hải
      Bài viết
      1,565
      Cảm ơn
      226
      Được cảm ơn 906 lần, trong 605 bài

      Mặc định Ðề: hiển thị led từ 0000-9999.

      Trích dẫn Gửi bởi battuosai111 Xem bài viết
      const digit[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
      unsigned char i,tram,chuc,dvi;
      unsigned int del;
      void hex2bcd()
      {
      tram=i/100;
      chuc=(i-100*tram)/10;
      dvi= i%10;
      }
      void hienthi()
      {
      portc = digit[dvi];
      portd = 0b10000000;
      delay_us(100);
      portd=0;
      portc=digit[chuc];
      portd= 0b01000000;
      delay_us(100);
      portd=0;
      portc=digit[tram];
      portd= 0b00100000;
      delay_us(100);
      portd=0;
      }
      void delay()
      {
      while(del<500)
      {
      hienthi();
      del++;
      }
      del=0;
      }
      void main()
      {
      trisc=0;
      trisd=0;
      portb=0;
      portd=0;
      i=000;
      del=0;
      while(1)
      {
      hex2bcd();
      hienthi();
      delay();
      i++;
      }
      }

      đây là code hiển thị led 7 đoạn từ 0-255; bác nào có thể sửa lại để hiển thị từ 0-9999(kèm theo yêu cầu ko hiển thị các số vô nghĩa như 0001 thi chỉ hiển thị số 1 thui...), bác nào sửa lại mạch này dùm em với nhá...nhanh dùm em cái..tks nhiều...
      tớ không biết code C cho con vxl ngoài PIC. nhưng chắc cũng giống PIC nên thử coi đúng không
      Code:
      const digit[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
      unsigned char i,tram,chuc,dvi;
      unsigned int del;
      void hex2bcd()
      {
        tram=i/100;
        chuc=(i-100*tram)/10;
        dvi= i%10;
      }
      void hienthi()
      {
        portc = digit[dvi];
        portd = 0b10000000;
        delay_us(100);
        portd=0;
        portc=digit[chuc];
        portd= 0b01000000;
        delay_us(100);
        portd=0;
        portc=digit[tram];
        portd= 0b00100000;
        delay_us(100);
        portd=0;
        }
      void delay()
      {
      while(del<500)
      {
      hienthi();
      del++;
      }
      del=0;
      }
      void main()
      {
      trisc=0;
      trisd=0;
      portb=0;
      portd=0;
      del=0;
      while(1)
      {
      for(i=0;i<=10000;i++)
      {
      hex2bcd();
      for(ii=0;ii<=100;ii++)
      {
      hienthi();
      }
      }
      }
      }
      Cao Văn Hưởng
      Email: vanhuongcao@gmail.com

    3. #3
      Tham gia
      05-10-2009
      Bài viết
      155
      Cảm ơn
      10
      Được cảm ơn 43 lần, trong 30 bài

      Mặc định Ðề: hiển thị led từ 0000-9999.

      Trích dẫn Gửi bởi battuosai111 Xem bài viết
      const digit[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
      unsigned char i,tram,chuc,dvi;
      unsigned int del;
      void hex2bcd()
      {
      tram=i/100;
      chuc=(i-100*tram)/10;
      dvi= i%10;
      }
      void hienthi()
      {
      portc = digit[dvi];
      portd = 0b10000000;
      delay_us(100);
      portd=0;
      portc=digit[chuc];
      portd= 0b01000000;
      delay_us(100);
      portd=0;
      portc=digit[tram];
      portd= 0b00100000;
      delay_us(100);
      portd=0;
      }
      void delay()
      {
      while(del<500)
      {
      hienthi();
      del++;
      }
      del=0;
      }
      void main()
      {
      trisc=0;
      trisd=0;
      portb=0;
      portd=0;
      i=000;
      del=0;
      while(1)
      {
      hex2bcd();
      hienthi();
      delay();
      i++;
      }
      }

      đây là code hiển thị led 7 đoạn từ 0-255; bác nào có thể sửa lại để hiển thị từ 0-9999(kèm theo yêu cầu ko hiển thị các số vô nghĩa như 0001 thi chỉ hiển thị số 1 thui...), bác nào sửa lại mạch này dùm em với nhá...nhanh dùm em cái..tks nhiều...
      cái này dùng 8051 phải không bạn yêu cầu của bài này là hiển thị từ 0->9999 đếm sản phẩm hay ntn( ngắt ngoài, timer...) phần cứng thế nào??????????

    4. #4
      Tham gia
      01-06-2011
      Bài viết
      4
      Cảm ơn
      0
      Được cảm ơn 0 lần, trong 0 bài

      Mặc định Ðề: hiển thị led từ 0000-9999.

      Trích dẫn Gửi bởi ngoctoi789 Xem bài viết
      cái này dùng 8051 phải không bạn yêu cầu của bài này là hiển thị từ 0->9999 đếm sản phẩm hay ntn( ngắt ngoài, timer...) phần cứng thế nào??????????
      Thực ra cũng ko có gì khó lắm...chỉ là hiển thi led 7 đoạn từ 0-9999, cái này thì mình cũng tìm hiểu và biết rùi, luk khai báo biến: unsigned char i,ngan,tram,chuc,dvi;( vì unsigned char là 8bit, nên nó chỉ hiển thị đến 255, muốn nó hiển thị đến 9999 thì ta thay đổi "unsigned char" thành "unsigned int"(16bit nên nó có thể hiển thị đến 9999) và thêm phầm "portc= digit[ngan];
      portd = 0b00010000;
      delay_us(100);
      portd=0;"
      thì tức khắc nó sẽ hiển thị từ 0-9999. tuy nhiên mình vẫn đang tìm hiểu khi led hiển thị nhữn số như 0123 thì tắt số 0 đầu tiên đi chỉ hiển thị là 123....
      ai bít chỉ dùm mình nha..tks
      +++---o0o---+++
      Trích dẫn Gửi bởi caovanhuong Xem bài viết
      tớ không biết code C cho con vxl ngoài PIC. nhưng chắc cũng giống PIC nên thử coi đúng không
      Code:
      const digit[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
      unsigned char i,tram,chuc,dvi;
      unsigned int del;
      void hex2bcd()
      {
        tram=i/100;
        chuc=(i-100*tram)/10;
        dvi= i%10;
      }
      void hienthi()
      {
        portc = digit[dvi];
        portd = 0b10000000;
        delay_us(100);
        portd=0;
        portc=digit[chuc];
        portd= 0b01000000;
        delay_us(100);
        portd=0;
        portc=digit[tram];
        portd= 0b00100000;
        delay_us(100);
        portd=0;
        }
      void delay()
      {
      while(del<500)
      {
      hienthi();
      del++;
      }
      del=0;
      }
      void main()
      {
      trisc=0;
      trisd=0;
      portb=0;
      portd=0;
      del=0;
      while(1)
      {
      for(i=0;i<=10000;i++)
      {
      hex2bcd();
      for(ii=0;ii<=100;ii++)
      {
      hienthi();
      }
      }
      }
      }
      Tks, Nhưng mình đã thử nhưng vẫn ko được, nó báo lỗi chỗ for "(ii=0;ii<=100;ii++)" mình bỏ bớt 1 chữ i ở mỗi chỗ thì nó hiển thị trên led la "102".
      chương trình mình đang viết là ngôn ngữ C trong con pic16f887...

    5. #5
      Tham gia
      01-06-2011
      Bài viết
      4
      Cảm ơn
      0
      Được cảm ơn 0 lần, trong 0 bài

      Mặc định Ðề: hiển thị led từ 0000-9999.

      const digit[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
      unsigned int i,ngan,tram,chuc,dvi;
      unsigned int del;
      void hex2bcd()
      {
      ngan=(i/1000)%10;
      tram=(i/100)%10;
      chuc=(i/10)%10;
      dvi= i%10;
      }
      void hienthi()
      {
      portc = digit[dvi];
      portd = 0b10000000;
      delay_us(100);
      portd=0;
      portc= digit[chuc];
      if(i<=9) goto nhay1;
      portd = 0b01000000;
      delay_us(100);
      nhay1:
      portd=0;
      portc= digit[tram];
      if(i<=99) goto nhay2;
      portd = 0b00100000;
      delay_us(100);
      nhay2:
      portd=0;
      portc= digit[ngan];
      if(i<=999) goto nhay3;
      portd = 0b00010000;
      delay_us(100);
      nhay3:
      portd=0;
      if(i==10000) i=0;
      }

      void delay()
      {
      while(del<500)
      {
      hienthi();
      del++;
      }
      del=0;
      }

      void main()
      {
      trisc=0;
      trisd=0;
      portb=0;
      portd=0;
      i=0;
      del=0;
      while(1)
      {
      hex2bcd();
      hienthi();
      delay();
      i++;
      }
      }
      Đây là bài đầy đủ đếm từ 0-9999 ko hiển thị những số 0 vô nghĩa.

    6. #6
      Tham gia
      12-11-2011
      Bài viết
      4
      Cảm ơn
      0
      Thanked 1 Time in 1 Post

      Mặc định Ðề: hiển thị led từ 0000-9999.

      Trích dẫn Gửi bởi ngoctoi789 Xem bài viết
      cái này dùng 8051 phải không bạn yêu cầu của bài này là hiển thị từ 0->9999 đếm sản phẩm hay ntn( ngắt ngoài, timer...) phần cứng thế nào??????????
      chào anh.
      anh có thể giúp em với LED 7 đoạn đếm từ 0000 đến 9999( bỏe đi những số 0 vô nghĩa). Của em dùng chip họ 8051 và làm với KeilC hoặc avr studio và sau mỗi giây sẽ đếm tăng một đơn vị. Chân thành cảm ơn

    7. #7
      Tham gia
      03-10-2011
      Địa chỉ
      Lớp học HMI Intouch 10.1
      Bài viết
      599
      Cảm ơn
      51
      Được cảm ơn 324 lần, trong 215 bài

      Mặc định Ðề: hiển thị led từ 0000-9999.

      Mình thấy code của bạn battuosai111 là đúng rùi mà?

    8. #8
      Tham gia
      12-11-2011
      Bài viết
      4
      Cảm ơn
      0
      Thanked 1 Time in 1 Post

      Mặc định Ðề: hiển thị led từ 0000-9999.

      Bài của bạn battuosai111 viết bằng gì nhỉ?
      Mình dùng code của bạn viết vào KelC cho con AT89C52 nhưng không chạy

    9. #9
      Tham gia
      18-10-2011
      Bài viết
      14
      Cảm ơn
      3
      Thanked 7 Times in 1 Post

      Mặc định Ðề: hiển thị led từ 0000-9999.

      Mình chay thử trên KeilC thấy ok mà, code bạn ấy viết bằng C, bạn có làm mạch thật không hay chi mô phỏng, nếu làm mạch thật bạn để ý đến chân điều khiển quét led và chân dữ liệu của 8051 vào led 7 thanh và loại led 7 thanh bạn dùng là anod chung hay catot chung.

      ----------------------------------------------
      TRUNG TÂM ĐÀO TẠO CÔNG NGHỆ ĐIỆN TỬ - TỰ ĐỘNG HÓA – CƠ KHÍ – CNTT TOPEDU
      Cơ sở 1: Tòa nhà 32, ngõ 32, Phan Văn Trường, Cầu Giấy, Hà Nội.
      Tel: 042 260 0203
      Hotline:
      Tư vấn đào tạo: 0987 834 312 ( Mr.Mạnh)
      Email: info@topedu.com.vn
      Website: www.topedu.com.vn
      Đào tạo thiết kế điện M&E, cấp thoát nước
      Liên hệ: Mr.Mạnh: 0987 834 312
      www.topedu.com.vn

    10. #10
      Tham gia
      18-05-2010
      Địa chỉ
      Long Hải
      Bài viết
      1,565
      Cảm ơn
      226
      Được cảm ơn 906 lần, trong 605 bài

      Mặc định Ðề: hiển thị led từ 0000-9999.

      Trích dẫn Gửi bởi battuosai111 Xem bài viết
      const digit[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
      unsigned int i,ngan,tram,chuc,dvi;
      unsigned int del;
      void hex2bcd()
      {
      ngan=(i/1000)%10;
      tram=(i/100)%10;
      chuc=(i/10)%10;
      dvi= i%10;
      }
      void hienthi()
      {
      portc = digit[dvi];
      portd = 0b10000000;
      delay_us(100);
      portd=0;
      portc= digit[chuc];
      if(i<=9) goto nhay1;
      portd = 0b01000000;
      delay_us(100);
      nhay1:
      portd=0;
      portc= digit[tram];
      if(i<=99) goto nhay2;
      portd = 0b00100000;
      delay_us(100);
      nhay2:
      portd=0;
      portc= digit[ngan];
      if(i<=999) goto nhay3;
      portd = 0b00010000;
      delay_us(100);
      nhay3:
      portd=0;
      if(i==10000) i=0;
      }

      void delay()
      {
      while(del<500)
      {
      hienthi();
      del++;
      }
      del=0;
      }

      void main()
      {
      trisc=0;
      trisd=0;
      portb=0;
      portd=0;
      i=0;
      del=0;
      while(1)
      {
      hex2bcd();
      hienthi();
      delay();
      i++;
      }
      }
      Đây là bài đầy đủ đếm từ 0-9999 ko hiển thị những số 0 vô nghĩa.
      sao cái hàm delay không viết chung vào chương trình con hiển thị. như vầy nè

      Code:
      void hienthi()
      {
      while(del<500)
      {
        portc = digit[dvi];
        portd = 0b10000000;
        delay_us(100);
        portd=0;
        portc= digit[chuc];
        if(i<=9) goto nhay1;
        portd = 0b01000000;
        delay_us(100);
        nhay1:
        portd=0;
        portc= digit[tram];
        if(i<=99) goto nhay2;
        portd = 0b00100000;
        delay_us(100);
        nhay2:
        portd=0;
        portc= digit[ngan];
        if(i<=999) goto nhay3;
        portd = 0b00010000;
        delay_us(100);
        nhay3:
        portd=0;
        if(i==10000) i=0;
      del++;
      }
       }
      Cao Văn Hưởng
      Email: vanhuongcao@gmail.com

    Trang 1 của 2 12 CuốiCuối

    Trả lời với tài khoản Facebook

    Văn Võ Trạng Nguyên
    Hắc Hiệp Đại Chiến Thánh Bài 2
    Đặc Cảnh Diệt Ma
    Khử Ma Đạo Trưởng
    Cương Thi Diệt Tà
    Sự Hình Thành Của Đế Chế Mông Cổ
    NHỮNG KHOẢNH KHẮC ĐÁNG NHỚ CỦA GIẢI GOLF PHÚ MỸ HƯNG 2016