User Tag List

Trang 1/2 12 cuốicuối
kết quả từ 1 tới 10 trên 16
Cây cảm ơn6Cảm ơn

Ðề tài: hẹn giờ với LCD và ds1307 ,giúp e với ạ =.=

  
  1. #1
    Thành viên tích cực voiconvuive's Avatar
    Tham gia
    May 2010
    Nơi Cư Ngụ
    nơi tình yêu bắt đầu ^^
    Bài viết
    723


    Nhóm xã hội



    SVDTSGHồ Chí Minh - Nhật TảoDIY - dientuvietnam.net - Hà Nội

    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Unhappy hẹn giờ với LCD và ds1307 ,giúp e với ạ =.=

    hic , e đang làm đồ án về hẹn giờ tắt mở tải mà e mới viết code cho hẹn giờ bật tải thôi mà thấy rối qá,khó qá ạ , trước giờ e chưa viết bao giờ mà thầy giao đồ án nên e sắp toi con choi choi rồi ạ ,hic phải làm đồ án với VDK lun mới chết em chứ ,e đọc vật vã mà k kịp ạ Click here to enlargeClick here to enlarge ,e dùng pic 16f887a ,các bác giúp e với ,hic viết sai qá mà càng sửa càng sai càng đau đầu Click here to enlargeClick here to enlargeClick here to enlarge

    code e viết đây ạ Click here to enlargeClick here to enlarge,e đang tập viết thôi ạ , e viết =C ,sử dụng trình dịch Hi tech C ạ Click here to enlarge



    Code:
    /*********************************************************/
     +chuong trinh hen gio bat tai hien thi LCD voi PIC 16f887a //
    // tai noi vao chan RB0//
    // su dung 2 nut nhan de dieu chinh time hen gio //
    // 2 nut nhan noi vao chan RA0,RA1//
    //RA0 de chon che do dieu chinh time//
    //RA1 de cai  time hen gio //
    
    /************************************************/
    
    #include <htc.h>
    #include "i2c.h"
    #include "lcd.h"
    __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF); //1st config. Word
    
    __CONFIG(BOR4V_BOR21V); //2st config. Word 
    #define _XTAL_FREQ 4000000
    #define SLAVE_ADD 0x68
    #define READ 1
    #define WRITE 0
    
    char time[7];
    char c[14];
    int a=0;
    char M,H,m,h;
    /**************************************************
    + khai bao port 
    ************************************************/
    void port_init()
    {
    ANSEL=0;// ngo ra la digital
    ANSELH=0;
    TRISB=0xFF;// PORTB la output
    PORTB=0xFF;
    TRISA=0X00;//port A la input 
    }
    /**************************************************
    +khai bao cai dat time cho ds1307
    ***************************************************/
    void set_time()
    {
    i2c_start(); // send start condition 
    i2c_write((SLAVE_ADD<<1)|WRITE); //send dia chi slave + yeu cau ghi du lieu 
    i2c_write(0x00);//send dia chi thanh ghi can ghi data 
    i2c_write(0x00);//set second=00
    i2c_write(0x00);//set minute=00,
    i2c_write(0x23);//set hour=23 
    i2c_write(0x06);//set day of week : thu 6
    i2c_write(0x02);//set date =2 
    i2c_write(0x12);//set month=12 
    i2c_write(0x11);//set year --> 2011
    i2c_stop();
    }
    /**************************************************
    + khai bao doc time tu ds1307
    ****************************************************/
    void read_time()
    {
    int i;
    i2c_start();
    i2c_write((SLAVE_ADD<<1)|WRITE);
    i2c_write(0x00);
    i2c_stop();
    i2c_start();
    i2c_write((SLAVE_ADD<<1)|READ);
    for (i=0;i<6;i++)
       {
          time[i]= i2c_read(0);
       }
    time[6]= i2c_read(1); // ket thuc doc nam 
    i2c_stop();
    }   
    /*******************************************************
    + doc time tu ds1307 va hien thi len lcd 
    *******************************************************/
    void display(char b[])
    {
    //chuyen doi BCD sang ASCII
    int i,j=0;
    for(i=0;i<7;i++)
    {
    c[j]=( b[i] >> 4) & 0x0F + '0'; // lay nibble cao
    c[j+1]= (b[i] & 0x0F) + '0'; // lay nibble thap
    j+=2;
    }
    //****************hien thi len lcd***************************//
    
    
    lcd_clear();
    lcd_puts("Thu ");
    lcd_putc(c[7]); // thu trong tuan
    lcd_puts(", ");
    lcd_putc(c[8]); // ngay
    lcd_putc(c[9]);
    lcd_puts("/");
    lcd_putc(c[10]); // thang
    lcd_putc(c[11]);
    lcd_puts("/");
    lcd_putc(c[12]); // nam
    lcd_putc(c[13]);
    //lcd_puts("\r\n"); // xuong hang
    lcd_gotoxy(0,1);
    
    lcd_putc(c[4]); // gio
    lcd_putc(c[5]);
    lcd_puts(" : ");
    lcd_putc(c[2]); // phut
    lcd_putc(c[3]);
    lcd_puts(" : ");
    lcd_putc(c[0]); // giay
    lcd_putc(c[1]);
    }
    
    
    
    /******************cai time bat tai**********************/
    void settime_run()     
    {
    if(RA0==0) //nut nhan chon che do dieu chinh gio hoac phut
    {
    int i,j,k,l=0;
    __delay_ms(150);
    if(RA0==1) // nhan nut nhan 
    	{
    	__delay_ms(150);
    	__delay_ms(150);
    	do
    		{
    		a++;
    		__delay_ms(150);
    		switch(a)
    			{
    			case 1: // hen gio: phut hang don vi 
    				{
    			  loop1:   if(RA1==1)
    					   {
    					   i++;
    					   __delay_ms(150);
    					   m=i%10+0x30;
    					   lcd_gotoxy(16,1);
    					   lcd_putc(m);
    					   }
    					   else 
    					   {
    						  goto loop1;
    					   }
    				break;
    				}
    			case 2: // hen gio: phut hang chuc 
    				{
    			  loop2:   if(RA1==1)
    					   {
    					   j++;
    					   __delay_ms(150);
    					   M=j%10+0x30;
    					   lcd_gotoxy(15,1);
    					   lcd_putc(M);
    					   }
    					   else
    						{
    						goto loop2;
    						}
    					break;
    				}
    			case 3: // hen gio: gio hang don vi 
    				{
    			  loop3:if(RA1==1)
    					{
    					k++;
    					__delay_ms(150);
    					h=k%10+0x30;
    					lcd_gotoxy(13,1);
    					lcd_putc(h);
    					}
    					else
    					{
    					   goto loop3;
    					}
    				break;
    				}
    			  
    			case 4: //hen gio: gio hang chuc 
    				{
    			  loop4:if(RA1==1)
    					{
    					l++;
    					__delay_ms(150);
    					H=l%10+0x30;
    					lcd_gotoxy(16,1);
    					   lcd_putc(H);
    					}
    					else
    					  { 
    					   goto loop4;
    					  }
    					break;
    				}
    		   case 5: // thoat cai dat time 
    				{
    					display(time);
    					a=0;
    					break;
    				}
    				
    			}
    		}
    	while(RA1==1);
    	}
    }
    }
    
    
    /******************************************************************
    + kiem tra thoi gian hien tai so thoi gian cai dat +
    ******************************************************************/
    
    void check_open_load()
    {
    char phut,gio,i,j,k,l;
    i=time[1]/16;
    j=time[1]-i*16; // lay gia tri phut hien thoi de so sanh 
    phut=i*10+j;
    k=time[2]/16;
    l=time[2]-i*16;
    gio=k*10+l;// lay gia tri gio hien thoi de so sanh 
    settime_run;
    phut_set=(m-0x30)*10+(M-0x30);
    gio_set=(h-0x30)*10+(H-0x30);
    if ((phut_set==phut) &&(gio_set==gio))
    	{
    	RB0=1;// neu dung gio bat tai ,tai o chan RB0
    	}
    }
    
    
    /*******************************main***********************/
    void main(void)
    {
    port_init();
    lcd_init();
    i2c_init();
    __delay_ms(150);
    set_time();
    __delay_ms(150);
    while(1)
    {
    read_time();
    __delay_ms(150);
    check_open_load;
    display(time);
    __delay_ms(150);
    __delay_ms(150);
    }
    }


    CHỦ ĐỀ TƯƠNG TỰ:

    superhieu1 đã cảm ơn nội dung này.

  2. #2
    Thành viên tích cực voiconvuive's Avatar
    Tham gia
    May 2010
    Nơi Cư Ngụ
    nơi tình yêu bắt đầu ^^
    Bài viết
    723


    Nhóm xã hội



    SVDTSGHồ Chí Minh - Nhật TảoDIY - dientuvietnam.net - Hà Nội

    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    hic , k ai viết C giúp e với ak ,k định hướng 1 cách đơn giản hơn giúp e viết với ,chứ mí viết chưa qen ,e rối qá ạ >"<


  3. #3
    Thành viên tích cực vd2020's Avatar
    Tham gia
    Sep 2011
    Nơi Cư Ngụ
    TB - HCM
    Bài viết
    142


    Nhóm xã hội



    Hồ Chí Minh - Nhật Tảo

    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    sửa một số lỗi cho e nè :
    /************************************************** *******/
    //chuong trinh hen gio bat tai hien thi LCD voi PIC 16f887a //
    // tai noi vao chan RB0//
    // su dung 2 nut nhan de dieu chinh time hen gio //
    // 2 nut nhan noi vao chan RA0,RA1//
    //RA0 de chon che do dieu chinh time//
    //RA1 de cai time hen gio //

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

    #include <htc.h>
    #include "i2c.h"
    #include "lcd.h"
    __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF); //1st config. Word

    __CONFIG(BOR4V_BOR21V); //2st config. Word
    #define _XTAL_FREQ 4000000
    #define SLAVER_ADD 0x68
    #define READ 1
    #define WRITE 0

    char time[7];
    char c[14];
    int a=0;
    char M,H,m,h;
    /**************************************************
    + khai bao port
    ************************************************/
    void port_init()
    {
    ANSEL=0;// ngo ra la digital
    ANSELH=0;
    TRISB=0xFF;// PORTB la output
    PORTB=0xFF;
    TRISA=0X00;//port A la input
    }
    /**************************************************
    +khai bao cai dat time cho ds1307
    ************************************************** */
    void set_time()
    {
    i2c_start(); // send start condition
    i2c_write((SLAVER_ADD<<1)|WRITE); //send dia chi slave + yeu cau ghi du lieu
    i2c_write(0x00);//send dia chi thanh ghi can ghi data
    i2c_write(0x00);//set second=00
    i2c_write(0x00);//set minute=00,
    i2c_write(0x23);//set hour=23
    i2c_write(0x06);//set day of week : thu 6
    i2c_write(0x02);//set date =2
    i2c_write(0x12);//set month=12
    i2c_write(0x11);//set year --> 2011
    i2c_stop();
    }
    /**************************************************
    + khai bao doc time tu ds1307
    ************************************************** **/
    void read_time()
    {
    int i;
    i2c_start();
    i2c_write((SLAVER_ADD<<1)|WRITE);
    i2c_write(0x00);
    i2c_stop();
    i2c_start();
    i2c_write((SLAVER_ADD<<1)|READ);
    for (i=0;i<6;i++)
    {
    time[i]= i2c_read(0);
    }
    time[6]= i2c_read(1); // ket thuc doc nam
    i2c_stop();
    }
    /************************************************** *****
    + doc time tu ds1307 va hien thi len lcd
    ************************************************** *****/
    void display(char b[])
    {
    //chuyen doi BCD sang ASCII
    int i,j=0;
    for(i=0;i<7;i++)
    {
    c[j]=( b[i] >> 4) & 0x0F + '0'; // lay nibble cao
    c[j+1]= (b[i] & 0x0F) + '0'; // lay nibble thap
    j+=2;
    }
    //****************hien thi len lcd***************************//


    lcd_clear();
    lcd_puts("Thu ");
    lcd_putc(c[7]); // thu trong tuan
    lcd_puts(", ");
    lcd_putc(c[8]); // ngay
    lcd_putc(c[9]);
    lcd_puts("/");
    lcd_putc(c[10]); // thang
    lcd_putc(c[11]);
    lcd_puts("/");
    lcd_putc(c[12]); // nam
    lcd_putc(c[13]);
    //lcd_puts("\r\n"); // xuong hang
    lcd_gotoxy(0,1);

    lcd_putc(c[4]); // gio
    lcd_putc(c[5]);
    lcd_puts(" : ");
    lcd_putc(c[2]); // phut
    lcd_putc(c[3]);
    lcd_puts(" : ");
    lcd_putc(c[0]); // giay
    lcd_putc(c[1]);
    }



    /******************cai time bat tai**********************/
    void settime_run()
    {
    if(RA0==0) //nut nhan chon che do dieu chinh gio hoac phut
    {
    int i =0 ,j=0,k=0,l=0;
    __delay_ms(150);
    if(RA0==1) // nhan nut nhan
    {
    __delay_ms(150);
    __delay_ms(150);
    do
    {
    a++;
    __delay_ms(150);
    switch(a)
    {
    case 1: // hen gio: phut hang don vi
    {
    loop1: if(RA1==1)
    {
    i++;
    __delay_ms(150);
    m=i%10+0x30;
    lcd_gotoxy(16,1);
    lcd_putc(m);
    }
    else
    {
    goto loop1;
    }
    break;
    }
    case 2: // hen gio: phut hang chuc
    {
    loop2: if(RA1==1)
    {
    j++;
    __delay_ms(150);
    M=j%10+0x30;
    lcd_gotoxy(15,1);
    lcd_putc(M);
    }
    else
    {
    goto loop2;
    }
    break;
    }
    case 3: // hen gio: gio hang don vi
    {
    loop3:if(RA1==1)
    {
    k++;
    __delay_ms(150);
    h=k%10+0x30;
    lcd_gotoxy(13,1);
    lcd_putc(h);
    }
    else
    {
    goto loop3;
    }
    break;
    }

    case 4: //hen gio: gio hang chuc
    {
    loop4:if(RA1==1)
    {
    l++;
    __delay_ms(150);
    H=l%10+0x30;
    lcd_gotoxy(16,1);
    lcd_putc(H);
    }
    else
    {
    goto loop4;
    }
    break;
    }
    case 5: // thoat cai dat time
    {
    display(time);
    a=0;
    break;
    }

    }
    }
    while(RA1==1);
    }
    }
    }


    /************************************************** ****************
    + kiem tra thoi gian hien tai so thoi gian cai dat +
    ************************************************** ****************/

    void check_open_load()
    {
    char phut,gio,i,j,k,l,phut_set,gio_set;
    i=time[1]/16;
    j=time[1]-i*16; // lay gia tri phut hien thoi de so sanh
    phut=i*10+j;
    k=time[2]/16;
    l=time[2]-i*16;
    gio=k*10+l;// lay gia tri gio hien thoi de so sanh
    settime_run;
    phut_set=(m-0x30)*10+(M-0x30);
    gio_set=(h-0x30)*10+(H-0x30);
    if ((phut_set==phut) &&(gio_set==gio))
    {
    RB0=1;// neu dung gio bat tai ,tai o chan RB0
    }
    }


    /*******************************main*************** ********/
    void main(void)
    {
    port_init();
    lcd_init();
    i2c_init();
    __delay_ms(150);
    set_time();
    __delay_ms(150);
    while(1)
    {
    read_time();
    __delay_ms(150);
    check_open_load;
    display(time);
    __delay_ms(150);
    __delay_ms(150);
    }
    }


    Last edited by vd2020; 15-12-11 at 21:54.
    voiconvuive đã cảm ơn nội dung này.
    Đời là mộng, mộng ách sẽ tan.

    email:isaacduy@live.com
    đt : 0902102132
    đ/c : Tân Bình, tp HCM

  4. #4
    Thành viên tích cực voiconvuive's Avatar
    Tham gia
    May 2010
    Nơi Cư Ngụ
    nơi tình yêu bắt đầu ^^
    Bài viết
    723


    Nhóm xã hội



    SVDTSGHồ Chí Minh - Nhật TảoDIY - dientuvietnam.net - Hà Nội

    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    ôi hay thế , build mà cứ ra 1 lô xích xông lỗi ,nản hết cả ng ,bik k chạy mà k thể si nghĩ đc hướng code tiếp ,he he ,để e tiếp tục code xem sao ,chiều h chán hơn con gián bị xe cáng Click here to enlarge


  5. #5
    Thành viên chính thức thaichiendt's Avatar
    Tham gia
    Jan 2009
    Bài viết
    58
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    vấn đề về DS thì dc bàn nhìu rùi và chủ yếu là Updata time DS. pp hay nhất là bạn nên sử dụng ngắt RB0 trên chân 1Hz của DS để Updata time. tiếp theo là giao tiếp I2C cho tốt, nếu bạn làm chủ dc DS và giải thuật xử lý chuyển đổi time thì bạn sẽ dễ dàng hiển thị và điều khiển.....

    voiconvuive đã cảm ơn nội dung này.
    Kết Nối Dân Kỹ Thuật tại facebook để Trao đổi - học hỏi
    https://www.facebook.com/dankythuat.pro
    Thích chém gió bốn phương zô đây
    https://www.facebook.com/groups/chemgio4f/

  6. #6
    Thành viên tích cực voiconvuive's Avatar
    Tham gia
    May 2010
    Nơi Cư Ngụ
    nơi tình yêu bắt đầu ^^
    Bài viết
    723


    Nhóm xã hội



    SVDTSGHồ Chí Minh - Nhật TảoDIY - dientuvietnam.net - Hà Nội

    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Click here to enlarge Nguyên văn bởi thaichiendt Click here to enlarge
    vấn đề về DS thì dc bàn nhìu rùi và chủ yếu là Updata time DS. pp hay nhất là bạn nên sử dụng ngắt RB0 trên chân 1Hz của DS để Updata time. tiếp theo là giao tiếp I2C cho tốt, nếu bạn làm chủ dc DS và giải thuật xử lý chuyển đổi time thì bạn sẽ dễ dàng hiển thị và điều khiển.....
    ôi làm chủ được còn nói làm gì ,hic , h e code mà đang lật lại xem cú pháp lệnh đây ạ , đuối qá cơ , mà sai nhìu qá e tìm lỗi hoài đau cả đầu ,mừng qá tạm thời đã hết lỗi , vđề bây h là hoàn thành code ,hic =.=


  7. #7
    Thành viên chính thức thaichiendt's Avatar
    Tham gia
    Jan 2009
    Bài viết
    58
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    vậy Ok rùi . xem lại từng câu lệnh hoàn thành nó rùi chia se cho ae xem nhé.... Chờ Click here to enlarge

    Kết Nối Dân Kỹ Thuật tại facebook để Trao đổi - học hỏi
    https://www.facebook.com/dankythuat.pro
    Thích chém gió bốn phương zô đây
    https://www.facebook.com/groups/chemgio4f/

  8. #8
    Thành viên tích cực voiconvuive's Avatar
    Tham gia
    May 2010
    Nơi Cư Ngụ
    nơi tình yêu bắt đầu ^^
    Bài viết
    723


    Nhóm xã hội



    SVDTSGHồ Chí Minh - Nhật TảoDIY - dientuvietnam.net - Hà Nội

    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Click here to enlarge Nguyên văn bởi thaichiendt Click here to enlarge
    vậy Ok rùi . xem lại từng câu lệnh hoàn thành nó rùi chia se cho ae xem nhé.... Chờ Click here to enlarge
    he he , có có Click here to enlarge

    mà e đang xem lại lệnh của C á ,chứ PIC phần ngắt chưa kịp xem nữa ,chắc k sài qá ,đọc phần i2c với lcd dang làm với nó ,vì đồ án của e còn có thêm phần ADC nữa mà e chia ra viết đấy chứ >"<


  9. #9
    Thành viên chính thức thaichiendt's Avatar
    Tham gia
    Jan 2009
    Bài viết
    58
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    đúng rùi cứ làm từng phần cái nào Ok thì bỏ một bên Ok hết thì gom code thành lịch vạn niên luôn. ACD chắc điều khiển qua nhiệt độ à. Chúc mau thành công..... có dùng face thì kết nối dân kỹ thuật nhé
    https://www.facebook.com/dankythuat.pro

    Kết Nối Dân Kỹ Thuật tại facebook để Trao đổi - học hỏi
    https://www.facebook.com/dankythuat.pro
    Thích chém gió bốn phương zô đây
    https://www.facebook.com/groups/chemgio4f/

  10. #10
    Thành viên tích cực voiconvuive's Avatar
    Tham gia
    May 2010
    Nơi Cư Ngụ
    nơi tình yêu bắt đầu ^^
    Bài viết
    723


    Nhóm xã hội



    SVDTSGHồ Chí Minh - Nhật TảoDIY - dientuvietnam.net - Hà Nội

    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Click here to enlarge Nguyên văn bởi thaichiendt Click here to enlarge
    đúng rùi cứ làm từng phần cái nào Ok thì bỏ một bên Ok hết thì gom code thành lịch vạn niên luôn. ACD chắc điều khiển qua nhiệt độ à. Chúc mau thành công..... có dùng face thì kết nối dân kỹ thuật nhé
    https://www.facebook.com/dankythuat.pro
    mí like xong ,hihi ,mà đc cái face e rất ít dùng Click here to enlarge


Trang 1/2 12 cuốicuối

Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không được gửi luồng mới
  • Bạn không được trả lời bài viết
  • Bạn không được gửi file đính kèm
  • Bạn không được sửa bài viết của mình
  •