Thông báo

Collapse
No announcement yet.

đồng hồ số dùng 8051

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

  • đồng hồ số dùng 8051

    Em lập trình đồng hồ hiển thị dùng led 7 thanh.Dung ngôn ngữ C lập trinh. Dùng proteus mô phỏng. Không hiểu sao chương trình không chạy. Các bác giúp em với. Em mới học nên không rõ lắm
    http://www.mediafire.com/?gkmn4y4lakh
    http://www.mediafire.com/?gkmn4y4lakh

  • #2
    Nguyên văn bởi dol2ph94in Xem bài viết
    Em lập trình đồng hồ hiển thị dùng led 7 thanh.Dung ngôn ngữ C lập trinh. Dùng proteus mô phỏng. Không hiểu sao chương trình không chạy. Các bác giúp em với. Em mới học nên không rõ lắm
    http://www.mediafire.com/?gkmn4y4lakh
    http://www.mediafire.com/?gkmn4y4lakh
    Tôi có vài ý kiến cho bạn :
    Mạch bạn dùng proteus7.5 thì phải , xem qua chương trình và mạch mô phỏng đều không ổn :
    -Bạn không thể nối trực tiếp chân vi điều khiển với B transistor mà phải nối qua điện trở , nối trực tiếp như vậy thì chân vi điều khiển luôn giữ mức cao còn quét led làm sao được (Vb=5-0.6=4,4 --> mức H ) .
    -Chương trình bạn viết hàm delay 1ms dặt sai giá trị bạn chưa hiểu về giá trị đặt nếu muốn tạo trễ 1ms (1000us) dùng Timer0 chế độ 1 phải đặt TH0=-1000/256,TL0=-1000%256, nếu dặt TH0=500/256 thì hóa ra là trễ 65,036ms rồi.
    -Để tạo thời gian cho đồng hồ mà dùng vòng lặp tư 0-165 thì không ổn dùng Timer còn sai số bởi các câu lệnh nữa là!!!!!! .Bạn nên tìm hiểu về đồng hồ thời gian thực còn nếu đơn giản chỉ làm đồng hồ số với sai số lớn thì cũng phải sửa cả mạch và chương trình mới chạy được.
    -Bạn nên Test mạch trước : Đơn giản là chỉ lấy đoạn chương trình hiển thị số ra led .Sau đó chèn thêm chương trình xử lý thời gian.

    Comment


    • #3
      cám ơn bạn. Bạn có mạch và chương trình không cho mình thảm khảo đi

      Comment


      • #4
        có phải tuyendt87 không nhỉ. Nếu phải thì mình đã gửi mail cho bạn rồi mà. nếu không phải thì gửi lại cho nè. Nếu giải nén ko được thì đổi nó lại thành .rar mà giải nén nhé
        Attached Files

        Comment


        • #5
          http://www.mediafire.com/?2ogngytmany

          Bạn xem cái này thử xem. Nhóm mình làm trong 3 4 ngày đó. Đồng hồ casio

          Comment


          • #6
            cám ơn mọi người rất nhiều

            Comment


            • #7
              Ban nen chuyen qua lam DS 1307, con nay chay on dinh ma de su dung. Co pin ngoai nen van chay khi mat dien.
              Dung 89 de tao xung 1s kho chinh xac duoc. Mat dien lai mat du lieu.

              Comment


              • #8
                ai chỉ giùm tôi với. Mình dùng con ds1307 lập trình C dùng trình duyệt keil C, dùng at89s52 chương trình lập ra không hiểu sai chỗ nào nữa, khi dịch ra file Hex thì báo lỗi. Help me.
                #include<at89x52.h>
                #include<ds1307.c>
                #include<i2c.c>
                sbit change=P1^2;
                unsigned char led_code[10]={0xco,0xf9,0xa4,0xb0,0x99,0x82,0xf8,0x80,0x90};
                //-----------------------------------------------------------
                void delay(unsigned int loop)
                {
                unsigned int i;
                for(i=0;i<=loop;i++);
                }
                //-------------------------------------------------------------
                // chuong trinh hien thi gio phut giay
                void display_hour()
                {
                //hien thi chuc gio
                P0=led_code[hourh];
                P2=0x01;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi gio
                P0=led_code[hourl];
                P2=0x02;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi chuc phut
                P0=led_code[minh];
                P2=0x04;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi phut
                P0=led_code[minl];
                P2=0x08;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi chuc giay
                P0=led_code[sech];
                P2=0x10;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi giay
                P0=led_code[secl];
                P2=0x20;
                delay(100);
                P0=0xff;
                delay(1);
                }
                //-----------------------------------------------------
                // chuong trinh hien thi ngay thang nam
                void display_date()
                {
                //hien thi chuc ngay
                P0=led_code[dateh];
                P2=0x01;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi ngay
                P0=led_code[datel];
                P2=0x02;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi chuc thang
                P0=led_code[monh];
                P2=0x04;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi thang
                P0=led_code[monl];
                P2=0x08;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi nghin nam
                P0=led_code[2];
                P2=0x10;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi tram nam
                P0=led_code[0];
                P2=0x20;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi chuc nam
                P0=led_code[yearh];
                P2=0x40;
                delay(100);
                P0=0xff;
                delay(1);
                //hien thi nam
                P0=led_code[yearl];
                P2=0x80;
                delay(100);
                P0=0xff;
                delay(1);
                }
                //-------------------------------------------------------
                void main()
                {
                while(1)
                {
                RTC_ReadTime();
                BCD2ASCII(hour,&hourh,&hourl);
                BCD2ASCII(min,&minh,&minl);
                BCD2ASCII(sec,&sech,&secl);
                display_hour();
                if(change==0)
                {
                RTC_ReadDate();
                BCD2ASCII(date,&dateh,&datel);
                BCD2ASCII(mon,&monh,&monl);
                BCD2ASCII(year,&yearh,&yearl);
                display_date();
                delay(3000);
                }
                }
                }
                Last edited by dol2ph94in; 16-03-2010, 13:13.

                Comment


                • #9
                  Ban lam toi cho ni roi ma sua ko dc ah.
                  Coi lai cac bien da dinh nghia chua.
                  Ma post len bang bao loi nguoi ta moi biet ma sua dc chu.Doc ri thi chiu
                  Xem lai phan change==0, thay kho hieu the nao.
                  Tui lam mach nay chay may cai roi. ngon lanh.Can dua mail tui goi file.c cho.
                  Tim sua>tim sua>...........dung

                  Comment


                  • #10
                    Nguyên văn bởi khaclub Xem bài viết
                    http://www.mediafire.com/?2ogngytmany

                    Bạn xem cái này thử xem. Nhóm mình làm trong 3 4 ngày đó. Đồng hồ casio
                    Đồng hồ này rất hay, nhưng mình có thắc mắc là Led 7 đoạn trong mô phỏng là loại 4 chân mình không hiểu, khi làm mạch thực tế thì led 7 đoạn 10 chân mà.
                    Nhóm của bạn đã làm mạch in của mạch này chưa? Nếu có thì chia sẻ cho mình với. Cảm ơn nhiều

                    Comment


                    • #11
                      Nguyên văn bởi dol2ph94in Xem bài viết
                      ai chỉ giùm tôi với. Mình dùng con ds1307 lập trình C dùng trình duyệt keil C, dùng at89s52 chương trình lập ra không hiểu sai chỗ nào nữa, khi dịch ra file Hex thì báo lỗi. Help me.
                      #include<at89x52.h>
                      #include<ds1307.c>
                      #include<i2c.c>
                      sbit change=P1^2;
                      unsigned char led_code[10]={0xco,0xf9,0xa4,0xb0,0x99,0x82,0xf8,0x80,0x90};
                      //-----------------------------------------------------------
                      void delay(unsigned int loop)
                      {
                      unsigned int i;
                      for(i=0;i<=loop;i++);
                      }
                      //-------------------------------------------------------------
                      // chuong trinh hien thi gio phut giay
                      void display_hour()
                      {
                      //hien thi chuc gio
                      P0=led_code[hourh];
                      P2=0x01;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi gio
                      P0=led_code[hourl];
                      P2=0x02;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi chuc phut
                      P0=led_code[minh];
                      P2=0x04;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi phut
                      P0=led_code[minl];
                      P2=0x08;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi chuc giay
                      P0=led_code[sech];
                      P2=0x10;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi giay
                      P0=led_code[secl];
                      P2=0x20;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      }
                      //-----------------------------------------------------
                      // chuong trinh hien thi ngay thang nam
                      void display_date()
                      {
                      //hien thi chuc ngay
                      P0=led_code[dateh];
                      P2=0x01;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi ngay
                      P0=led_code[datel];
                      P2=0x02;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi chuc thang
                      P0=led_code[monh];
                      P2=0x04;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi thang
                      P0=led_code[monl];
                      P2=0x08;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi nghin nam
                      P0=led_code[2];
                      P2=0x10;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi tram nam
                      P0=led_code[0];
                      P2=0x20;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi chuc nam
                      P0=led_code[yearh];
                      P2=0x40;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      //hien thi nam
                      P0=led_code[yearl];
                      P2=0x80;
                      delay(100);
                      P0=0xff;
                      delay(1);
                      }
                      //-------------------------------------------------------
                      void main()
                      {
                      while(1)
                      {
                      RTC_ReadTime();
                      BCD2ASCII(hour,&hourh,&hourl);
                      BCD2ASCII(min,&minh,&minl);
                      BCD2ASCII(sec,&sech,&secl);
                      display_hour();
                      if(change==0)
                      {
                      RTC_ReadDate();
                      BCD2ASCII(date,&dateh,&datel);
                      BCD2ASCII(mon,&monh,&monl);
                      BCD2ASCII(year,&yearh,&yearl);
                      display_date();
                      delay(3000);
                      }
                      }
                      }
                      cái này chắc là do lỗi không mở được ds1307.c chứ j. có 2 cách để biên dịch ko bị lỗi.
                      1 copy 2 file ds1307.c với i2c.c vào trong keil/c51/inc
                      2 là cài đặt trong thẻ quản lý

                      Comment


                      • #12
                        trong mo phong proteus led 7 thanh co 9 chan ma. vi chan 3 va chan 8 duoc noi voi nhau ma

                        Comment


                        • #13
                          minh da copy roi ma van bao loi nen moi post len hoi moi nguoi, co ai biet loi cho nao khong chi cho minh voi

                          Comment


                          • #14
                            mình đã thử file của tranpic, copy hai thư viện ds1307.c và i2c.c vào trong thư viện của protues rồi, lấy nguyên file dong_ho.C để dịch ra file .HEX nhưng báo lỗi "C:\KEIL\C51\INC\ATMEL\DS1307.C(21): error C202: 'I2C_START': undefined identifier" Vậy lỗi này là do đâu vậy. chỉ giúp mình với

                            Comment


                            • #15
                              Ban thu copy file I2C.c dan vao file nguon luon. Xem nhu la 1 chuong trinh con cua chuong trinh chinh luon. Bien dich lai xem thu.
                              Tui lam theo code may ban viet tren mang chay ngon ru.
                              Da lam may dong ho tang ban be choi roi.
                              Tim va sua se ra thoi, dung nan chi.
                              Dua mail tui goi chuong trinh da test va chay luon cho.Oke

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X