اطلاعیه

Collapse
No announcement yet.

(RTC WITH DS1307 ON GLCD (KS0108

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    (RTC WITH DS1307 ON GLCD (KS0108

    با سلام
    تو این پروژه نحوه راه اندازی DS1307 و ( GLCD( KS0108 و جهت نمایش زمان و تاریخ و ایام هفته میلادی ارائه شده .
    کامپایلر : CodeVisionAVR V2.05.3
    توضیحات برنامه و اتصالات به صورت کامند داخل برنامه ارائه شده.

    فایل برنامه:

    RTC_DS1307_GLCD.rar

    برنامه :

    کد:
    #include <90usb162.h>
    
    // I2C Bus functions
    #include <i2c.h>
    
    // DS1307 Real Time Clock functions
    #include <ds1307.h>
    
    // Graphic LCD functions
    #include <glcd.h>
    
    /* include the prototype for sprintf */
    #include <stdio.h>
    
    
    /* include the prototypes for the delay functions */
    #include <delay.h>
    
    
    char display_buffer[17]; /* LCD display buffer for 1 line */
    // Font used for displaying text
    // on the graphic LCD
    #include <font5x7.h>
    
    
    
    
    // Declare your global variables here
    
    void main(void)
    {
    // Declare your local variables here
    unsigned char hour,min,sec,week_day,day,month,year;
    char i,name[]="Mojtaba Rostami";
    struct days{ char d[4];} daysofweek[7]={{"Sun"},{"Mon"},{"Tue"},{"Wed"},{"Thu"},{"Fri"},{"Sat"}};
    
    // Graphic LCD initialization data
    GLCDINIT_t glcd_init_data;
    
    // Crystal Oscillator division factor: 1
    #pragma optsize-
    CLKPR=0x80;
    CLKPR=0x00;
    #ifdef _OPTIMIZE_SIZE_
    #pragma optsize+
    #endif
    
    // I2C Bus initialization
    // I2C Port: PORTD
    // I2C SDA bit: 6
    // I2C SCL bit: 7
    // Bit Rate: 100 kHz
    // Note: I2C settings are specified in the
    // Project|Configure|C Compiler|Libraries|I2C menu.
    i2c_init();
    
    // DS1307 Real Time Clock initialization
    // Square wave output on pin SQW/OUT: On
    // Square wave frequency: 1Hz
    rtc_init(0,1,0);
    
    /*note: to adjast the time and date delete the back slash then ste them*/
    //rtc_set_time(16,54,0); /* set time 12:00:00 */
    
    //rtc_set_date(2,3,13,12); /* set date Tuesday 1/02/2011 */
    
    // Graphic LCD initialization
    // The KS0108 connections are specified in the
    // Project|Configure|C Compiler|Libraries|Graphic LCD menu:
    // DB0 - PORTB Bit 0
    // DB1 - PORTB Bit 1
    // DB2 - PORTB Bit 2
    // DB3 - PORTB Bit 3
    // DB4 - PORTB Bit 4
    // DB5 - PORTB Bit 5
    // DB6 - PORTB Bit 6
    // DB7 - PORTB Bit 7
    // E - PORTD Bit 2
    // RD /WR - PORTD Bit 1
    // RS - PORTD Bit 0
    // /RST - PORTD Bit 5
    // CS1 - PORTD Bit 3
    // CS2 - PORTD Bit 4
    
    // Specify the current font for displaying text
    glcd_init_data.font=font5x7;
    // No function is used for reading
    // image data from external memory
    glcd_init_data.readxmem=NULL;
    // No function is used for writing
    // image data to external memory
    glcd_init_data.writexmem=NULL;
    
    glcd_init(&glcd_init_data);
    
    //Turns LCD on
    glcd_display(1);
    //Sets the current background color:black(pixel --> off) 
    glcd_setbkcolor(0);
    //Sets the current foreground color:white(pixel --> on)
    glcd_setcolor(1);
    //Clears the LCD 
    glcd_clear();
    //Specifies the current font used for displaying text
    glcd_setfont(font5x7)
    
    //start:
    glcd_outtextxy(0, 0, " In The Name Of Allah");
    
    glcd_putcharxy(10, 15, ' ');
    
    //write a string on glcd with glcd_putchar function
    for(i=0;i<15;i++)
    glcd_putchar(name[i]);
    
    
    
    
    while (1)
       {
       
       /* read the time from the RTC */
       rtc_get_time(&hour,&min,&sec);
       /* read the date from the RTC */
       rtc_get_date(&week_day,&day,&month,&year);
       
       /* display the time on the LCD */
       sprintf(display_buffer,"Time: %2d:%02d:%02d\n",hour,min,sec);
       glcd_outtextxy(0, 30,display_buffer);  
       /* display the date on the LCD */
       sprintf(display_buffer,"Date: %2d/%02d/%d",day,month,2000+year);
       glcd_outtextxy(0, 50,display_buffer);
       /* display the daysofweek on the LCD */  
       rtc_get_date(&week_day,&day,&month,&year);
       glcd_outtextxy(128-28, 50,daysofweek[week_day].d);
        
       }
    }

لطفا صبر کنید...
X