Thông báo

Collapse
No announcement yet.

mạch đếm 00 đến 9999 dùng 8051

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

  • mạch đếm 00 đến 9999 dùng 8051

    mình đang làm bài tập lớn về vi xử lý sủ dụng 8051 và asm quét led 7 đoạn hiển thị từ 00 đến 9999.
    Lâu rùi không động đến nên quên hết rùi mong các bạn giúp đỡ. thank

  • #2
    Gần 40 lần đọc mà không ai trả lời vậy

    Comment


    • #3
      Nguyên văn bởi hahuyquyen
      Sao không ai trả lời nhỉ chán quá !

      Comment


      • #4
        mình chỉ có cái code C thôi. 00->99 bạn chỉ cần thay vào thành 0000->9999
        1 #include <reg52.h>
        2 //================
        3 sbit led1 = P3^0;
        4 sbit led2 = P3^1;
        5 //=================
        6 unsigned char
        7 M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
        8 int a,b,c,d,k;
        9 void delay(unsigned int t)
        10 {
        11 1 unsigned int i,j;
        12 1 for(j=0;j<=t;j++){
        13 2
        14 2 for(i=0;i<=125;i++ ){}}
        15 1 }
        16 //=================
        17 void main()
        18 {
        19 1 while(1)
        20 1 {
        21 2 for(k=0;k<=99;k++ ){
        22 3 a=k/10;
        23 3 b=k%10;
        24 3 for(c=0;c<=9;c++) {
        25 4 led1=1; //led dau tien sang
        26 4 P2=M[a];
        27 4 delay(40);
        28 4 led1=0;
        29 4 P2=0xff;//xoa du lieu
        30 4 led2=1; //led 2 sang
        31 4 P2=M[b];
        32 4 delay(40);
        33 4 led2=0;
        34 4 P2=0xff;//xoa du lieu
        35 4 }
        36 3 }
        37 2 }
        38 1 }

        Comment


        • #5
          asm thì trên diễn đàn nhiều lắm. bạn chịu khó tìm 1 chút là thấy ngay. chak mọi ng không trả lời vì chủ đề này có nhiều trên diễn đàn rồi

          Comment


          • #6
            của bạn đây chúc bạn thành công

            00-9999.zip
            email
            nick: bangbigboy_bigboy
            sdt :01203380789

            Comment


            • #7
              tài liệu rất hay.
              cảm ơn bạn hieuthai2011 chúc bạn thành công trong cuộc sống

              Comment


              • #8
                nhân tiện mọi người giúp mình đoạn code nay nhé. Minh muốn đếm đến 60s thì hang tram giảm. Số đếm sẽ do mình tự cài đặt.
                #include <REGX51.H>
                #define led1 P2_0
                #define led2 P2_1
                #define led3 P2_2
                #define led4 P2_3
                #define chay P1_7
                #define led6 P2_4


                unsigned char nghin, tram, chuc, donvi;
                char k,i,gio, giay2, giay1;
                unsigned int dem;

                // ma hex cua led 7 doan
                unsigned char ma[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

                //khoi tao timer 0 de quyet led
                void delay_timer0(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)
                TR1=1; //khoi dong bo dinh thoi timer0 chay
                while (!TF1); //cho co tran bat len 1
                TF1=0; //xoa co tran
                TR1=0; // ngung bo dinh thoi
                }

                //ham quet led de hien thi so
                void quet_led(void)
                {
                //for(dem=1500;dem>0;dem--) // 30000 thoi gian cai dat de dem lui
                //for (i=0;i<20;i++) //thoi gian dua du lieu len port 1 (1s= 20lan lap)

                led1=1;
                P1=ma[nghin];
                delay_timer0();
                led1=0;
                //P1=0x00;

                led2=1;
                P1=ma[tram] ;
                delay_timer0();
                led2=0;
                //P1=0x00;

                led3=1;
                P1=ma[chuc];
                delay_timer0();
                led3=0;
                //P1=0x00;

                led4=1;
                P1=ma[donvi];
                delay_timer0();
                led4=0;
                //P1=0x00;

                donvi=dem%10;
                chuc= (dem/10)%10;
                tram= (dem/100)%10;
                nghin=(dem/1000)%10;
                }



                void main()
                {
                dem=1500;
                delay_timer0();
                IE=0x8a;
                IP=0x02; // uu tien ngat timer 0
                TMOD = 0x20 ; //timer 0 16bit reload
                TH0 = 0xFC;
                TL0 = 0x18;
                /*bat' dau` dem' tu` 0xf000*/
                TR0 = 1;//run timer 0
                EA = 1 ;//enable global interrupt: cho phep' ngat' toan` khu vu.c trong chip
                ET0 = 1; //cho phep' ngat' timer 0
                while (1)
                {


                quet_led();

                }
                }

                void Timer0() interrupt 1
                {
                TR0 = 0;//stop timer 0
                /*nap lai gia tri dem*/
                TH0 = 0xFC;
                TL0 = 0x18;
                TF0 = 0;//xo'a co` ngat' cua timer 0
                //cac' lenh dc xu ly o day
                i++;
                if(i==20)
                {
                i=0;
                giay2++;
                if(giay2>60)
                {
                giay2=0;
                giay1++;
                if(giay1>60)
                {
                giay1=0;
                }

                TR0 = 1; //khoi dong lai timer 0
                }
                }}


                thanks!

                Comment


                • #9
                  bai nay cua ban dung 2 con led 7 doan rieng ak hay la dung led doi! t nghi la dung 2 led don
                  !

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X