Clock 8051+DS1307: hiển thị Giờ + Phút + Giây + Ngày trong tuần + ngày + tháng + năm

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • chau0105_bt
    Thành viên mới
    • Jan 2010
    • 18

    #106
    bạn download trên mạng về là xài được à.

    Comment

    • chau0105_bt
      Thành viên mới
      • Jan 2010
      • 18

      #107
      Code DS1307:

      ************************************************** ***************************************
      #define WRITE 0xd0
      #define READ 0xd1
      #define SEC 0
      #define MIN 1
      #define HOUR 2
      #define DAY 3
      #define DATE 4
      #define MONTH 5
      #define YEAR 6
      #define CONTROL 7
      #define BYTE_COUNT 7
      #define NVRAM_START 8
      #define HZ 0x10
      char gca_ds1307[BYTE_COUNT];
      // char ngay_thang[3];
      char bin_bcd(char bin)
      {
      char temp,i;
      temp = bin;
      i = 0;
      while(1)
      {
      if(temp>=10)
      {
      temp -= 10;
      i += 0x10;
      }
      else
      {
      i += temp;
      }
      }
      return i;
      }
      char bcd_bin(char bcd)
      {
      char temp;
      temp = bcd;
      temp >>= 1;
      temp &= 0x78;
      return (temp+(temp >> 2)+(bcd & 0x0f));
      }

      void DS1307_Set()
      {
      char i;
      for(i=0;i<7;i++)
      {
      gca_ds1307[i]=bin_bcd(gca_ds1307[i]);
      }
      gca_ds1307[SEC] &= 0x7F;
      gca_ds1307[HOUR] &= 0x3F;
      disable_interrupts(GLOBAL);
      i2c_start();
      i2c_write(WRITE);
      i2c_write(SEC);
      for(i=0;i<7;i++)
      {
      i2c_write(gca_ds1307[i]);
      }
      i2c_write(HZ);
      i2c_stop();
      enable_interrupts(GLOBAL);
      }
      void DS1307_Read()
      {
      char i;
      disable_interrupts(GLOBAL);
      i2c_start();
      i2c_write(WRITE);
      i2c_write(SEC);
      i2c_start();
      i2c_write(READ);
      gca_ds1307[SEC] = i2c_read() & 0x7F;
      gca_ds1307[MIN] = i2c_read() & 0x7F;
      gca_ds1307[HOUR] = i2c_read() & 0x3F;
      gca_ds1307[DAY] = i2c_read() & 0x7F;
      gca_ds1307[DATE] = i2c_read() & 0x3F;
      gca_ds1307[MONTH] = i2c_read() & 0x1F;
      gca_ds1307[YEAR] = i2c_read(0);
      i2c_stop();
      enable_interrupts(GLOBAL);
      for(i=0;i<7;i++)
      {
      gca_ds1307[i]=bcd_bin(gca_ds1307[i]);
      }
      }
      char Read_Byte(char addr)
      {
      char i;
      disable_interrupts(GLOBAL);
      i2c_start();
      i2c_write(WRITE);
      i2c_write(addr);
      i2c_start();
      i2c_write(READ);
      i = i2c_read(0);
      i2c_stop();
      enable_interrupts(GLOBAL);
      return i;
      }
      void Write_Byte(char addr,char n)
      {
      disable_interrupts(GLOBAL);
      i2c_start();
      i2c_write(WRITE);
      i2c_write(addr);
      i2c_write(n);
      i2c_stop();
      enable_interrupts(GLOBAL);
      }
      ************************************************** *************************************

      Code LCD16x2:

      ************************************************** *************************************
      /************************************************** ************************

      THE 1602 CHAR LCD LIB

      COPYRIGHT (c) 2005 BY JJJ.
      -- ALL RIGHTS RESERVED --

      File Name: LCD.h
      Author: Jiang Jian Jun
      Created: 2005/4/3
      Modified: NO
      Revision: 1.0

      ************************************************** *************************/

      #ifndef LCD_CHAR_1602_2005_4_9
      #define LCD_CHAR_1602_2005_4_9

      #include <intrins.h>

      //Port Definitions*************************************** *******************
      sbit LcdRs = P2^0;
      sbit LcdRw = P2^1;
      sbit LcdEn = P2^2;
      sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.Êý¾Ý¶Ë¿Ú

      //ÄÚ²¿µÈ´ýº¯Êý************************************** ************************************
      unsigned char LCD_Wait(void)
      {
      LcdRs=0;
      LcdRw=1; _nop_();
      LcdEn=1; _nop_();
      //while(DBPort&0x80);//ÔÚÓÃProteus·ÂÕæÊ±£¬×¢ÒâÓÃÆÁ±Î´ËÓï¾ä£¬ÔÚµ÷ÓÃGotoXY( )ʱ£¬»á½øÈëËÀÑ­»·£¬
      //¿ÉÄÜÔÚд¸Ã¿ØÖÆ×Öʱ£¬¸ÃÄ£¿éûÓзµ»ØÐ´ÈëÍ걸ÃüÁ¼´ DBPort&0x80==0x80
      //ʵ¼ÊÓ²¼þʱ´ò¿ª´ËÓï¾ä
      LcdEn=0;
      return DBPort;
      }
      //ÏòLCDдÈëÃüÁî»òÊý¾Ý******************************* *****************************
      #define LCD_COMMAND 0 // Command
      #define LCD_DATA 1 // Data
      #define LCD_CLEAR_SCREEN 0x01 // ÇåÆÁ
      #define LCD_HOMING 0x02 // ¹â±ê·µ»ØÔ­µã
      void LCD_Write(bit style, unsigned char input)
      {
      LcdEn=0;
      LcdRs=style;
      LcdRw=0; _nop_();
      DBPort=input; _nop_();//×¢Òâ˳Ðò
      LcdEn=1; _nop_();//×¢Òâ˳Ðò
      LcdEn=0; _nop_();
      LCD_Wait();
      }

      //ÉèÖÃÏÔʾģʽ************************************** **********************
      #define LCD_SHOW 0x04 //ÏÔʾ¿ª
      #define LCD_HIDE 0x00 //ÏÔʾ¹Ø

      #define LCD_CURSOR 0x02 //ÏÔʾ¹â±ê
      #define LCD_NO_CURSOR 0x00 //ÎÞ¹â±ê

      #define LCD_FLASH 0x01 //¹â±êÉÁ¶¯
      #define LCD_NO_FLASH 0x00 //¹â±ê²»ÉÁ¶¯

      void LCD_SetDisplay(unsigned char DisplayMode)
      {
      LCD_Write(LCD_COMMAND, 0x08|DisplayMode);
      }

      //ÉèÖÃÊäÈëģʽ************************************** **********************
      #define LCD_AC_UP 0x02
      #define LCD_AC_DOWN 0x00 // default

      #define LCD_MOVE 0x01 // »­Ãæ¿ÉÆ½ÒÆ
      #define LCD_NO_MOVE 0x00 //default

      void LCD_SetInput(unsigned char InputMode)
      {
      LCD_Write(LCD_COMMAND, 0x04|InputMode);
      }

      //ÒÆ¶¯¹â±ê»òÆÁÄ»************************************ ************************
      /*
      #define LCD_CURSOR 0x02
      #define LCD_SCREEN 0x08
      #define LCD_LEFT 0x00
      #define LCD_RIGHT 0x04
      void LCD_Move(unsigned char object, unsigned char direction)
      {
      if(object==LCD_CURSOR)
      LCD_Write(LCD_COMMAND,0x10|direction);
      if(object==LCD_SCREEN)
      LCD_Write(LCD_COMMAND,0x18|direction);
      }
      */
      //³õʼ»¯LCD***************************************** *******************
      void LCD_Initial()
      {
      LcdEn=0;
      LCD_Write(LCD_COMMAND,0x38); //8λÊý¾Ý¶Ë¿Ú,2ÐÐÏÔʾ,5*7µãÕó
      LCD_Write(LCD_COMMAND,0x38);
      LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //¿ªÆôÏÔʾ, ÎÞ¹â±ê
      LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //ÇåÆÁ
      LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //ACµÝÔö, »­Ãæ²»¶¯
      }

      //************************************************** **********************
      void GotoXY(unsigned char x, unsigned char y)
      {
      if(y==0)
      LCD_Write(LCD_COMMAND,0x80|x);
      if(y==1)
      LCD_Write(LCD_COMMAND,0x80|(x-0x40));
      }
      void Print(unsigned char *str)
      {
      while(*str!='\0')
      {
      LCD_Write(LCD_DATA,*str);
      str++;
      }
      }
      /*
      void LCD_LoadChar(unsigned char user[8], unsigned char place)
      {
      unsigned char i;
      LCD_Write(LCD_COMMAND,0x40|(place*8));
      for(i=0; i<8; i++)
      LCD_Write(LCD_DATA,user[i]);
      }
      */
      //************************************************** **********************
      #endif

      Comment

      • lee_nguyen
        Thành viên tích cực
        • Dec 2009
        • 336

        #108
        hi bạn ơi! mình chờ hồi âm của bạn mãi mà không thấy, bạn có thể gửi mail nguyensiluan@gmail.com cho mình 2 thư viện đó được không? nếu ở trên mạng có , bạn gửi link cho mình cũng được, cám ơn bạn trước!

        Comment

        • chau0105_bt
          Thành viên mới
          • Jan 2010
          • 18

          #109
          Link ne:

          Doi_Lich_am.h

          DS1307.h

          LCD1602.h

          Comment

          • lee_nguyen
            Thành viên tích cực
            • Dec 2009
            • 336

            #110
            Nguyên văn bởi chau0105_bt Xem bài viết
            Click image for larger version

Name:	Untitled.png
Views:	1
Size:	38.0 KB
ID:	1375331
            bạn ơi mình downd về biên dịch thử nó báo lỗi này! hình như thư viện không phải của chương trình này thì phải: Clock van nien mach thuc_LCD16x2
            bạn cho mình cái file gốc đi!!!

            Comment

            • lee_nguyen
              Thành viên tích cực
              • Dec 2009
              • 336

              #111
              Nguyên văn bởi chjpchjp1991
              Bạn down về nhưng phải xem định nghĩa file chuẩn với file main chưa..rồi chân trong các file đó..rồi kiểm tra các hàm lệnh có khớp để gọi không, mình không lập trình được món Đồng Hồ này nhưng cũng biết sơ sơ chân vào ra mấy tí..^^"
              hi tất nhiên là không phải rồi, bạn đó đâu có cho file thư viện của chương trình ấy đâu, copy 1 cái nào ở đâu ấy! chán

              Comment

              • lee_nguyen
                Thành viên tích cực
                • Dec 2009
                • 336

                #112
                Nguyên văn bởi chjpchjp1991
                Mình nhìn thư viện LCD cũng quen lắm..chương trình của bạn ấy..nhưng không nhớ là ở chỗ nào..ngày trước có tháy..giờ tìm không ra..Thôi chấp nhận đi bạn lee_nguyen..không có xài theo kiểu ko có..^^"
                mình chỉ muốn chỉnh sửa 1 chút code để phù hợp với mạch phần cứng của mình thôi, vì mình mù tịt phần alarm nên muốn tham khảo bài này! muốn học hỏi tý mà....

                Comment

                • lee_nguyen
                  Thành viên tích cực
                  • Dec 2009
                  • 336

                  #113
                  Nguyên văn bởi chjpchjp1991
                  me too...Mình cũng có đồng hồ LCD nhưng chứ có mấy món âm lich ^^
                  Vậy bạn có địa chỉ email hay gì mình liên lạc cho tiện, cùng trao đổi nhé, email mình là: nguyensiluan@gmail.com

                  Comment

                  • lee_nguyen
                    Thành viên tích cực
                    • Dec 2009
                    • 336

                    #114
                    ko biết các mem chạy đâu hết, up cái cho lên đầu nào!

                    Comment

                    • the_thanhntt
                      Thành viên mới
                      • Mar 2013
                      • 1

                      #115
                      hi cac cả nhà, em cung đang muốn lam một đề hiện thi LCD ( thơi gian + ngay thang nam) co hiệu chỉnh nhưng em gap một số vấn đề trong vẽ mạch va mô phỏng, bác nào có ý tương chỉ em vơi để em tham khảo

                      Comment

                      • 01642555134
                        Thành viên tích cực
                        • Jul 2012
                        • 626

                        #116
                        bạn phải đọc dc dữ liệu từ ds1307, và hiện dc trên led 7 doan, mới làm dc trên lcd
                        không tiếp nhận cuộc gọi qua điện thoại vì đi làm toàn tập, tính khí thất thường, hay nóng võ công lại cao

                        Comment

                        • phamennho
                          Thành viên tích cực
                          • Jun 2012
                          • 112

                          #117
                          Nguyên văn bởi viboyth.haui Xem bài viết
                          Hiển thị giờ phút giây ngày tháng năm trên LCD
                          Dong Ho Thoi Gian Thuc LCD.rar
                          minh làm mạch của bạn lcd 0 hiển thị gì hết, giờ khắc phuc thế nào?

                          Comment

                          • huathanhlong
                            Thành viên mới
                            • Feb 2009
                            • 7

                            #118
                            reup lại giùm em link full với ạ thank

                            Comment

                            • ChuTieu_Quay
                              Thành viên chính thức
                              • Mar 2013
                              • 47

                              #119
                              cho m hỏi ké nhe , m dùng tip 41 kéo led 7 đoạn ( Led 7 Thanh 1.2 Inch Anot 1 Số(3x4cm)_LED 7 Thanh_LED_BanLinhKien.Vn - MinhHaGroup.Com ) , nhưng giả sử độ sáng khi cấp nguồn + vào chân anot là 100% thì , m dùng tip chỉ đc 70 % , m test thử thấy bỏ trở từ chân điều khiển đến chân B tip 41 thì led sáng hơn , và dùng típ sáng hơn C1815 , và nếu mắc thêm trzito C18515 đệm cho Tip , led vẫn sáng thế


                              ( chả hiu sao , tải file lên k đc )

                              Comment

                              • toi ngu kinh
                                Thành viên tích cực
                                • Jun 2013
                                • 374

                                #120
                                delete. xoa bài hộ em.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...