Thông báo

Collapse
No announcement yet.

Bỏ số 0 vô nghĩa khi đếm

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

  • Bỏ số 0 vô nghĩa khi đếm

    Chào mọi người,
    Mình làm cái mạch đếm từ 0-999 nhưng không biết cách bỏ số không ở hàng chục và trăm, mọi người giúp minh nhé.
    Thanks,
    đây
    #include <REGX51.H>

    #define led1 P2_0
    #define led2 P2_1
    #define led3 P2_2
    #define led4 P2_3
    #define chay P1_7

    unsigned int nghin, tram, chuc, donvi;
    char i,j,dem,k,n,m;

    // ma hex cua led 7 doan
    unsigned char ma[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
    /khoi tao timer 1 de quyet led
    void delay_timer1(void)
    {
    TMOD=0x10; //chon che do dinh thoi 16bit
    TH1=-9215/256; //nap gia tri cho bit cao (26ms)
    TL1=-9215/256; //nap gia tri cho bit thap (26ms)
    TF1=0; //xoa co tran
    TR1=1; //khoi dong bo dinh thoi timer0 chay
    while (!TF1); //cho co tran bat len 1
    TR1=0; // ngung bo dinh thoi
    }

    //ham quet led de hien thi so
    void quet_led(void)
    {
    led1=1;
    P1=ma[nghin];
    delay_timer1();
    led1=0;
    led2=1;
    P1=ma[tram] ;
    delay_timer1();
    led2=0;
    led3=1;
    P1=ma[chuc];
    delay_timer1();
    led3=0;
    led4=1;
    P1=ma[donvi];
    delay_timer1();
    led4=0;

    tram= i%10;
    nghin=i/10;
    donvi=j%10;
    chuc= j/10;
    }

    void main()
    {

    dem=100;
    while(1)
    {
    while (!chay) //khoi dong he thong
    delay(10); //Chong soc dien
    {


    for (i=dem;i>=0;i--) //giam hang nghin, tram
    {
    for (j=59;j>=0;j--) //giam hang don vi, chuc
    {
    {

    for (k=0;k<20;k++) //thoi gian chay 1s
    {
    quet_led();
    }}}}
    }

  • #2
    Cái này có gì khó đâu nhỉ , giả xử số hàng trăm là a , vậy khi quét so sánh

    If(a==0) không bật nguồn led hàng trăm đó;
    else bật nguồn led hàng tram đó ;

    Chèn đoạn này vào hàm quét led.

    Comment


    • #3
      Minh chèn vào thì nó chỉ thiện hiện đúng khi dem>9; moi hien hang chuc nhung khi chay thi an hien hang chuc la sao vay ban!

      Comment


      • #4
        mỗi 1 con led bạn đều phải khai báo 1 câu lệnh như vậy, nếu giá trị tại led đó =0 thì nguồn =0 else nguồn =1, kiểm tra kĩ lại đi bạn
        Website chính thức đổi địa chỉ website thành
        Mời các bạn ghé thăm !!!

        Comment


        • #5
          uhm quên mất ở hàng chục phải kiểm tra thêm ,nếu hàng tram bằng 0 và chục bằng 0 thì mới bỏ số 0 hàng đơn vị đi

          Comment


          • #6
            ASM thì chịu

            Comment


            • #7
              Nguyên văn bởi mast090 Xem bài viết
              mỗi 1 con led bạn đều phải khai báo 1 câu lệnh như vậy, nếu giá trị tại led đó =0 thì nguồn =0 else nguồn =1, kiểm tra kĩ lại đi bạn
              cho vào bảng mã giá trị thứ 11 là mã thay thế số 0 vô nghĩa, tại phần code chia lấy số, bạn kiểm tra thương nếu là 0 thì gán cho thương mã 11 của giá trị thay thế số 0

              Comment


              • #8
                bạn có thể chỉ minh cụ thể vào trong lập trình của minh được không? Minh mới biết lập trình nên không rành lắm, thanks

                Comment


                • #9
                  Nguyên văn bởi chung1608 Xem bài viết
                  cho vào bảng mã giá trị thứ 11 là mã thay thế số 0 vô nghĩa, tại phần code chia lấy số, bạn kiểm tra thương nếu là 0 thì gán cho thương mã 11 của giá trị thay thế số 0
                  làm thế này cũng đc, nói chung là có nhiều cách
                  nghĩa là khi nó quét con số 0 vô nghĩa thì bạn xuất ra 0xff thay vì xuất ra mã con số 0
                  Website chính thức đổi địa chỉ website thành
                  Mời các bạn ghé thăm !!!

                  Comment


                  • #10
                    Nguyên văn bởi khachgianlai Xem bài viết
                    bạn có thể chỉ minh cụ thể vào trong lập trình của minh được không? Minh mới biết lập trình nên không rành lắm, thanks
                    chèn giúp bạn vài dòng code:
                    Code:
                              #include <REGX51.H>
                    
                    #define led1 P2_0
                    #define led2 P2_1
                    #define led3 P2_2
                    #define led4 P2_3
                    #define chay P1_7
                    
                    unsigned int h;
                    char k,n,m,nghin,tram,chuc,donvi,dem,i,j,ma_bo_0=0;
                    
                    // ma hex cua led 7 doan
                    unsigned char ma[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
                    //khoi tao timer 1 de quyet led
                    void delay_timer1(void)
                    {
                    TMOD=0x10; //chon che do dinh thoi 16bit
                    TH1=-9215/256; //nap gia tri cho bit cao (26ms)
                    TL1=-9215/256; //nap gia tri cho bit thap (26ms)
                    TF1=0; //xoa co tran
                    TR1=1; //khoi dong bo dinh thoi timer0 chay
                    while (!TF1); //cho co tran bat len 1
                    TR1=0; // ngung bo dinh thoi
                    }
                    
                    //ham quet led de hien thi so
                    void quet_led(void)
                    {
                    tram= i;
                    nghin=i/10;
                    donvi=j;
                    chuc= j/10;
                     if(nghin==0)
                        {
                         ma_bo_0=1;//bo nghin
                          if(tram==0)
                          {
                           ma_bo_0=2;//    bo nghin,tram
                            if(    chuc==0)
                             {
                               ma_bo_0=3;//    bo nghin,tram,chuc
                               if( donvi==0)
                                 {
                                   ma_bo_0=4;//    bo nghin,tram,chuc,dv
                                 }
                             }
                          } 
                        }
                    switch (ma_bo_0)
                    {
                    case 0:
                    {
                    led1=1;
                    P1=ma[nghin];
                    delay_timer1();
                    led1=0;
                    led2=1;
                    P1=ma[tram] ;
                    delay_timer1();
                    led2=0;
                    led3=1;
                    P1=ma[chuc];
                    delay_timer1();
                    led3=0;
                    led4=1;
                    P1=ma[donvi];
                    delay_timer1();
                    led4=0;
                         break;
                    }
                    case 1:
                    {
                    led1=0;
                    led2=1;
                    P1=ma[tram] ;
                    delay_timer1();
                    led2=0;
                    led3=1;
                    P1=ma[chuc];
                    delay_timer1();
                    led3=0;
                    led4=1;
                    P1=ma[donvi];
                    delay_timer1();
                    led4=0;
                         break;
                       }
                       case 2:
                    {
                    led1=0;
                    led2=0;
                    led3=1;
                    P1=ma[chuc];
                    delay_timer1();
                    led3=0;
                    led4=1;
                    P1=ma[donvi];
                    delay_timer1();
                    led4=0;
                         break;
                       }
                          case 3:
                    {
                    led1=0;
                    led2=0;
                    led3=0;
                    led4=1;
                    P1=ma[donvi];
                    delay_timer1();
                    led4=0;
                         break;
                       }
                          case 4:
                       {
                         
                        break;
                       }
                     }
                    }
                    
                    void main()
                    {
                    chay=1;//input
                    dem=10;//chua gia tri tu 0......99
                    while(1)
                    {
                    while (!chay) //khoi dong he thong
                     {
                    delay_timer1(); //Chong soc dien
                    ma_bo_0=0;
                    for (i=dem;i>=0;i--) //giam hang nghin, tram
                    {
                    for (j=59;j>=0;j--) //giam hang don vi, chuc
                    {
                    for (k=0;k<1;k++) //giam gia tri de test thuat toan
                    {
                    quet_led();
                    }}
                    }}
                    }}
                    Last edited by tdm; 03-03-2012, 00:27.
                    |

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    Đang tải...
                    X