• 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 4 1234 CuốiCuối
    Kết quả 1 đến 10 của 33
    1. #1
      Tham gia
      24-10-2009
      Bài viết
      2
      Cảm ơn
      2
      Thanked 4 Times in 1 Post

    2. The Following 4 Users Say Thank You to sanh50ddtpro For This Useful Post:


    3. #2
      Tham gia
      08-04-2011
      Bài viết
      2
      Cảm ơn
      1
      Thanked 1 Time in 1 Post

      Mặc định Ðề: mạch đồng hồ thới gian thực 8051

      sao khong thay code chuong trinh dau vay ban?

    4. Những thành viên đã cảm ơn hoangkr vì bài viết hữu ích:


    5. #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 Ðề: mạch đồng hồ thới gian thực 8051

      #include
      #define scl P3_0
      #define sda P3_1
      #define gio1 P2_0
      #define gio2 P2_1
      #define phut1 P2_2
      #define phut2 P2_3
      #define giay1 P2_4
      #define giay2 P2_5
      #define mode P1_0
      #define up P1_1
      #define down P1_2
      #define sdata P3_2
      #define sclock P3_3
      #define lclock P3_4
      unsigned char d,e,f;//bien dung khi cai dat lai gio
      //******************************* ************************************************** *
      // ma led 7 thanh
      unsigned char font[]=
      {
      0xc0, //0
      0xf9, //1
      0xa4, //2
      0xb0, //3
      0x99, //4
      0x92, //5
      0x82, //6
      0xf8, //7
      0x80, //8
      0x90, //9
      };
      //******************************* ************************************************** *
      //bien chua thoi gian
      unsigned char h,m,s;
      //******************************* ************************************************** *
      // ham tao tre ms
      void delay(unsigned char t)
      {
      unsigned char i,j;
      for(j=0;j<=100;j++)
      for(i=0;i<=t;i++);
      }
      //******************************* ************************************************** *
      //tao do rong xung
      void delay_us(unsigned char t)
      {
      while(t>0)t--;
      }
      //******************************* ************************************************** *
      //ham tao bit start i2c
      void start ()
      {
      scl=1;
      sda=1;
      sda=0;
      scl=0;
      }
      //******************************* ************************************************** *
      //ham tao bit stop i2c
      void stop()
      {
      sda=0;
      scl=1;
      // delay_us(5);
      sda=1;
      }
      //******************************* ************************************************** *
      //ham ghi du lieu vao ds1307
      void write_data(unsigned char du_lieu)
      {
      unsigned char i;
      scl=0;
      for(i=0;i<=7;i++)
      {
      sda= (du_lieu&0x80);
      du_lieu<<=1;
      scl=1;
      delay_us(5);
      scl=0;
      }
      sda=1;
      scl=1; // cho xung ack
      scl=0; //
      }
      //******************************* ************************************************** *
      //ham doc giu lieu tu ds1307 gui toi
      unsigned char read_data (unsigned char c)
      {
      unsigned char a,b;
      sda=1;
      for(a=0;a<=7;a++)
      {
      scl=1;
      b<<=1;
      b=(b|sda);
      scl=0;
      }
      sda=c;
      scl=1;
      scl=0;
      return b;
      }
      //******************************* ************************************************** *
      unsigned char read_byte(unsigned char addres)
      {
      unsigned char d;//
      start();
      write_data(0xd0);
      write_data(addres);
      start();
      write_data(0xd1);
      d=read_data(nack);
      stop();
      return d; //tra du lieu
      }
      //******************************* ************************************************** *
      void write_byte(unsigned char addres,unsigned char d)
      {
      start(); //khoi tao i2c
      write_data(0xd0);//dia chi ds1307 la 0xd0
      write_data(addres);//addres dia chi thanh ghi can ghi trong rtc
      write_data(d); //du lieu can ghi
      stop(); //dung i2c
      }
      //******************************* ************************************************** *
      //
      void check_switch()
      {
      if(mode==0)
      {
      d++;
      if(d>3)d=0;
      }
      }
      //******************************* ************************************************** *
      // cap nhat gio tu rtc
      void tra_gio()
      {
      if(d==0)
      {
      if(e==1)
      {
      write_byte(0x0,s);//*****************************
      write_byte(0x1,m);//cap nhat thoi gian cho rtc ||
      write_byte(0x2,h);//*****************************
      e=0;
      }
      else
      {
      s=read_byte(0x00);
      m=read_byte(0x01);
      h=read_byte(0x02);
      }
      }
      }
      //******************************* ************************************************** *
      //ham quet led
      void hien_thi()
      { unsigned char i;
      for(i=0;i<=5;i++)
      {
      if((d!=3)||(d==3)&&(f<5))
      {
      P0=font[(s/0x10)]; giay1=1; delay(2); giay1=0;
      P0=font[(s%0x10)]; giay2=1; delay(2); giay2=0;
      }
      if((d!=2)||(d==2)&&(f<5))
      {
      P0=font[(m%0x10)]; phut2=1; delay(2); phut2=0;
      P0=font[(m/0x10)]; phut1=1; delay(2); phut1=0;
      }
      if((d!=1)||(d==1)&&(f<5))
      {
      P0=font[(h%0x10)]; gio2=1; delay(2); gio2=0;
      P0=font[(h/0x10)]; gio1=1; delay(2); gio1=0;
      }
      }
      }
      //******************************* ************************************************** ************
      //******************************* ************************************************** ************
      //
      void main()
      {
      while(1)
      {
      tra_gio();
      hien_thi();
      check_switch();
      switch(d)
      {
      case 0:

      break;
      case 1:// cai dat gio
      if(up==0)
      {
      h++;
      if((h==0xa)||(h==0x1a))h-=0x6;
      e=1;
      if(h>0x24)h=0;
      }
      if(down==0)
      {
      h--;
      if((h==0xf)||(h==0x1f))h-=0x6;
      e=1;
      if(h>0x24)h=0x24;
      }
      break;
      case 2: //cai dat phut
      if(up==0)
      {
      m++;
      if((m==0xa)||(m==0x1a)||(m==0x2a)||(m==0x3a)||(m== 0x4a))m+=0x6;
      e=1;
      if(m>0x59)m=0;
      }
      if(down==0)
      {
      m--;
      if((m==0xf)||(m==0x1f)||(m==0x2f)||(m==0x3f)||(m== 0x4f))m-=0x6;
      e=1;
      if(m>0x59)m=0x59;
      }
      break;
      case 3: //cai dat giay
      if(up==0)
      {
      s++;
      if((s==0xa)||(s==0x1a)||(s==0x2a)||(s==0x3a)||(s== 0x4a))s+=0x6;
      e=1;
      if(s>0x59)s=0;
      }
      if(down==0)
      {
      s--;
      if((s==0xf)||(s==0x1f)||(s==0x2f)||(s==0x3f)||(s== 0x4f))s-=0x6;
      e=1;
      if(s>0x59)s=0x59;
      }
      }
      }

      }
      code viết cùi mong các bạn cấm chê

    6. Những thành viên đã cảm ơn ngoctoi789 vì bài viết hữu ích:


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

      Mặc định Ðề: mạch đồng hồ thới gian thực 8051

      the nay ma cui ha bac e co doan code ma viet mai chang xg ne bac jup e dc k:?co ji pm vao mail cua e:thuyphuc02@gmail.com

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

      Mặc định Ðề: mạch đồng hồ thới gian thực 8051

      Các bạn cho mình hỏi mạch này chạy có đúng thời gian không. Thanks

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

      Mặc định Ðề: mạch đồng hồ thới gian thực 8051

      Trích dẫn Gửi bởi minhthanh29 Xem bài viết
      Các bạn cho mình hỏi mạch này chạy có đúng thời gian không. Thanks
      nếu đồng hồ có sử dụng IC thời gian thực thì thời gian rất chính xác. mấy con real-time là lựa chọn tốt nhất để làm đồng hồ, nó lưu trữ được giờ, phút, giây, ngày, thứ, tháng, năm đến tận năm 2100
      Cao Văn Hưởng
      Email: vanhuongcao@gmail.com

    10. #7
      Tham gia
      03-11-2011
      Bài viết
      2
      Cảm ơn
      0
      Được cảm ơn 0 lần, trong 0 bài

      Mặc định Ðề: mạch đồng hồ thới gian thực 8051

      cho mình hỏi file mo phỏng sao không chạy được vậy bạn.Thanks

    11. #8
      Tham gia
      25-09-2009
      Bài viết
      21
      Cảm ơn
      11
      Được cảm ơn 6 lần, trong 3 bài

      Mặc định Ðề: mạch đồng hồ thới gian thực 8051

      Trích dẫn Gửi bởi ngoctoi789 Xem bài viết
      #include
      Code:
      #define    scl    P3_0
      #define    sda    P3_1
      #define    gio1  P2_0
      #define    gio2  P2_1
      #define    phut1  P2_2
      #define    phut2  P2_3
      #define    giay1  P2_4
      #define    giay2  P2_5
      #define    mode  P1_0
      #define    up    P1_1
      #define    down  P1_2
      #define    sdata  P3_2
      #define    sclock  P3_3
      #define    lclock  P3_4
      unsigned char d,e,f;//bien dung khi cai dat lai gio
      //******************************* ***************************************************
      // ma led 7 thanh
      unsigned char font[]=
      {
        0xc0, //0
        0xf9, //1
        0xa4, //2
        0xb0, //3
        0x99, //4
        0x92, //5
        0x82, //6
        0xf8, //7
        0x80, //8
        0x90, //9
      };
      //******************************* ***************************************************
      //bien chua thoi gian
      unsigned char h,m,s;
      //******************************* ***************************************************
      // ham tao tre ms
      void delay(unsigned char t)
      {
        unsigned char i,j;
        for(j=0;j<=100;j++)
        for(i=0;i<=t;i++);
      }
      //******************************* ***************************************************
      //tao do rong xung
      void delay_us(unsigned char t)
      {
        while(t>0)t--;
      }
      //******************************* ***************************************************
      //ham tao bit start i2c
      void start ()
      {    
        scl=1;
        sda=1;
        sda=0;
        scl=0;
      }
      //******************************* ***************************************************
      //ham tao bit stop i2c
      void stop()
      {
        sda=0;
        scl=1;
      //  delay_us(5);
        sda=1;
      }
      //******************************* ***************************************************
      //ham ghi du lieu vao ds1307
      void write_data(unsigned char du_lieu)
      {
        unsigned char i;
        scl=0;
        for(i=0;i<=7;i++)
          {
            sda= (du_lieu&0x80);
            du_lieu<<=1;
            scl=1;
            delay_us(5);
            scl=0;
          }
          sda=1;
          scl=1; // cho xung ack
          scl=0;  //  
      }  
      //******************************* ***************************************************
      //ham doc giu lieu tu ds1307 gui toi
      unsigned char read_data (unsigned char c)
      {
        unsigned char a,b;
        sda=1;
        for(a=0;a<=7;a++)
        {
          scl=1;
          b<<=1;
          b=(b|sda);
          scl=0;
        }
        sda=c;
        scl=1;
        scl=0;
        return b;
      }
      //******************************* ***************************************************
      unsigned char read_byte(unsigned char addres)
      {
        unsigned char d;//
        start();
        write_data(0xd0);
        write_data(addres);
        start();
        write_data(0xd1);
        d=read_data(nack);
        stop();
        return d;  //tra du lieu
      }
      //******************************* ***************************************************
      void write_byte(unsigned char addres,unsigned char d)
      {
        start();    //khoi tao i2c
        write_data(0xd0);//dia chi ds1307 la 0xd0
        write_data(addres);//addres dia chi thanh ghi can ghi trong rtc
        write_data(d);    //du lieu can ghi
        stop();      //dung i2c
      }
      //******************************* ***************************************************
      //
      void check_switch()
      {
        if(mode==0)
          {
          d++;
          if(d>3)d=0;
         }
      }
      //******************************* ***************************************************
      // cap nhat gio tu rtc
      void tra_gio()
      {
        if(d==0)
        {
        if(e==1)
        {
          write_byte(0x0,s);//*****************************
          write_byte(0x1,m);//cap nhat thoi gian cho rtc ||
          write_byte(0x2,h);//*****************************
          e=0;
        }
        else
        {
          s=read_byte(0x00);
          m=read_byte(0x01);
          h=read_byte(0x02);
        }
        }
      }
      //******************************* ***************************************************
      //ham quet led  
      void hien_thi()
      {  unsigned char i;
        for(i=0;i<=5;i++)
        {
          if((d!=3)||(d==3)&&(f<5)) 
          {
            P0=font[(s/0x10)]; giay1=1; delay(2); giay1=0;
            P0=font[(s%0x10)]; giay2=1; delay(2); giay2=0;
          }
          if((d!=2)||(d==2)&&(f<5))
          {
            P0=font[(m%0x10)]; phut2=1; delay(2); phut2=0;
            P0=font[(m/0x10)]; phut1=1; delay(2); phut1=0;
          }
          if((d!=1)||(d==1)&&(f<5))
          {
            P0=font[(h%0x10)]; gio2=1; delay(2); gio2=0;
            P0=font[(h/0x10)]; gio1=1; delay(2); gio1=0;
          }
        }
      }
      //******************************* **************************************************************
      //******************************* **************************************************************
      // 
      void main()
      {
        while(1)
        {  
          tra_gio();
          hien_thi();
          check_switch();
          switch(d)
            {
              case 0:
                
                break;
              case 1:// cai dat gio
                if(up==0)
                {
                  h++;
                  if((h==0xa)||(h==0x1a))h-=0x6;
                  e=1;
                  if(h>0x24)h=0;
                }
                if(down==0)
                {
                  h--;
                  if((h==0xf)||(h==0x1f))h-=0x6;
                  e=1;
                  if(h>0x24)h=0x24;
                }
                break;
              case 2:   //cai dat phut
                if(up==0)
                {
                  m++;
                  if((m==0xa)||(m==0x1a)||(m==0x2a)||(m==0x3a)||(m==0x4a))m+=0x6;
                  e=1;
                  if(m>0x59)m=0;
                }
                if(down==0)
                {
                  m--;
                  if((m==0xf)||(m==0x1f)||(m==0x2f)||(m==0x3f)||(m==0x4f))m-=0x6;
                  e=1;
                  if(m>0x59)m=0x59;
                }
                break;
              case 3:  //cai dat giay
                if(up==0)
                {
                  s++;
                  if((s==0xa)||(s==0x1a)||(s==0x2a)||(s==0x3a)||(s==0x4a))s+=0x6;
                  e=1;
                  if(s>0x59)s=0;
                }
                if(down==0)
                {
                  s--;
                  if((s==0xf)||(s==0x1f)||(s==0x2f)||(s==0x3f)||(s==0x4f))s-=0x6;
                  e=1;
                  if(s>0x59)s=0x59;
                }  
            }
        }
      
      }
      code viết cùi mong các bạn cấm chê

      Cái này muốn có 1 đường điểu khiển chuông để canh giờ thì cổng điểu khiển là chân nào của IC vậy bạn? Xuất bằng chân 12 (P3.2 INT0) hay chân 13 (P3.3 INT1)




      Mình định dùng thằng này làm mạch chuông cho để tài mạch chuông báo tiết học.
      7h vào lớp
      7h45 báo kết thúc tiết 1
      8h30 báo kết thúc tiết 2 và ra chơi. (2 hồi chuông)
      8h45 báo vào lớp
      ....
      .

      Do hơi cùi phần này nên mong bạn nào có code xin giúp với.
      Thank
      Sửa lần cuối bởi caovanhuong; 12-01-2012 lúc 14:15.

    12. #9
      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 325 lần, trong 215 bài

      Mặc định Ðề: mạch đồng hồ thới gian thực 8051

      Trích dẫn Gửi bởi nickaopccc Xem bài viết
      Cái này muốn có 1 đường điểu khiển chuông để canh giờ thì cổng điểu khiển là chân nào của IC vậy bạn? Xuất bằng chân 12 (P3.2 INT0) hay chân 13 (P3.3 INT1)




      Mình định dùng thằng này làm mạch chuông cho để tài mạch chuông báo tiết học.
      7h vào lớp
      7h45 báo kết thúc tiết 1
      8h30 báo kết thúc tiết 2 và ra chơi. (2 hồi chuông)
      8h45 báo vào lớp
      ....
      .

      Do hơi cùi phần này nên mong bạn nào có code xin giúp với.
      Thank
      bạn dùng chân nào cũng được mà!

    13. The Following 2 Users Say Thank You to binhcdt43 For This Useful Post:


    14. #10
      Tham gia
      23-01-2011
      Địa chỉ
      Hà Nội
      Bài viết
      437
      Cảm ơn
      919
      Được cảm ơn 62 lần, trong 54 bài

      Mặc định Ðề: mạch đồng hồ thới gian thực 8051

      Cho mình hỏi là mạch này chỉ dùng mỗi con 8051 là được và real-time là con gì vậy.Thanks các bạn!!!
      Sửa lần cuối bởi T_dragon; 13-01-2012 lúc 20:13.

    Trang 1 của 4 1234 CuốiCuối

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

    Các Chủ đề tương tự

    1. Trợ giúp - Xem giúp em 8051 qua RS232 với VDK 8051 truyền dữ liệu 64H
      Bởi abcxyz1209 trong diễn đàn Vi xử lý - Vi điều khiển
      Trả lời: 1
      Bài cuối: 27-06-2014, 16:59
    2. Cần bán - Thanh lý Rơ le thời gian 3 dải thời gian: Giờ, phút, giây. (T48N)
      Bởi Suaxungxinh trong diễn đàn Biến tần, PLC, LOGO, thiết bị điều khiển
      Trả lời: 0
      Bài cuối: 15-10-2013, 10:26
    3. Trợ giúp - cách tạo thời gian trễ (delay) cho 8051
      Bởi i'myour trong diễn đàn Vi xử lý - Vi điều khiển
      Trả lời: 3
      Bài cuối: 26-10-2011, 06:26
    4. Trợ giúp - Dùng 01 role thời gian TB35N(Camsco), 02 role trung gian tùy chọn đk tủ ATS((Socomec)
      Bởi kcs trong diễn đàn Máy phát điện - ATS
      Trả lời: 13
      Bài cuối: 27-02-2011, 14:20
    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