backup 1

Embed Size (px)

DESCRIPTION

code

Citation preview

  • 7/18/2019 backup 1

    1/10

    //***************************************************//CHUONH TRINH CHO HE THONG DONG HO THOI GIAN THUC// Version 01// Mua Dong 2012////Gmail : [email protected]//Website: traitimlanhgia.jimdo.Com//// Copyright TrungSonKMT//***************************************************#include #device *=16#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT#use delay(clock=20000000)#include

    ///////////////////DINH NGHIA CAC CHAN DK////////////////////////

    //DIA CHI PHIM DIEU KHIEN#BIT menu =0X06.0#BIT tang =0X06.1#BIT giam =0X06.2

    //KET NOI DS1307#BIT sda = 0X07.0#BIT scl = 0X07.1#BIT scl = 0X07.2//KET NOI LCD#BIT en = 0X09.0#BIT rs = 0X09.1#BIT rw = 0X09.2

    #BYTE congLCD = 0X08#BIT D7 = 0X08.7

    //KHAI BAO BIEN

    int1 co = 0;unsigned char *rtc[]={"0","1","2","3","4","5","6","7","8","9"};unsigned char *day[]={"CNhat","Thu 2","Thu 3","Thu 4","Thu 5","Thu 6","Thu 7"};unsigned char giatrikhoitao_rtc[9];

    #INT_EXTvoid set(){co=1;}

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

    ****/ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//// CAC CHUONG TRINH CON GIAO TIEP VOI LCD////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//void busy() {

  • 7/18/2019 backup 1

    2/10

    D7=1; rs=0; rw=1; while(D7!=0) { en=0; en=1; } }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//void ghilenhLCD(unsigned char x) { busy(); congLCD=x; // gia tri x rs=0; // chon thanh ghi lenh rw=0; // ghi len lcd en=1; // cho phep muc cao en=0; //xung cao xuong thap }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//void khoitaoLCD(void) { ghilenhLCD(0X38); // hai dong va ma tran 5x7 ghilenhLCD(0X0C); //bat man hinh , tat con tro

    ghilenhLCD(0X01); //xoa man hinh ghilenhLCD(0X06); // dich hien thi sang phai(tang con tro sang phai) }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//void ghi_kytu(unsigned char value) { busy(); congLCD=value; rs=1; rw=0; en=1; en=0; }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//void ghi_chuoi(unsigned char *string) { unsigned char i; for(i=0;string[i]!='\0';i++) ghi_kytu(string[i]); }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//

    void ghiso(unsigned char a) { unsigned char i; i=a/10;

    ghi_chuoi(rtc[i]); i=a%10; ghi_chuoi(rtc[i]); }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//void hienthi_dulieu_rtc(unsigned char x) { unsigned char temp; temp = x/16; ghi_chuoi(rtc[temp]);

  • 7/18/2019 backup 1

    3/10

    temp = x%16; ghi_chuoi(rtc[temp]); }

    /**********************************************************************************/ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//// CAC CHUONG TRINH CON GIAO TIEP VOI RTC////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//// ca 2 dk start va stop dc tao ra boi thiet bi chuvoid start_rtc(void) //dk start: 1 su cdoi tthai tu cao xuong thap tren duong sda trong khi { //duong scl dang o muc cao scl=1; sda=1;

    delay_cycles(2); sda=0; scl=0; }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//

    void stop_rtc(void) //dk stop: 1 su cdoi trang thai tu muc thap len cao tren duong sda trong khi duong{ // slc dang o muc cao

    sda=0; scl=1; delay_cycles(2); sda=1; }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//void gui_rtc(unsigned char x) {

    unsigned char i;for(i=0;i

  • 7/18/2019 backup 1

    4/10

    sda=1; // trong qua trinh doc mot chuoi byte tu slaver master gui bit ACK=> sda=1 scl=1; //master nhan/gui bit du lieu(sda) khi scl o muc cao delay_cycles(2); scl=0; delay_cycles(2);//du lieu(sda) thay doi khi scl muc thap/ return Data;//tra gia tri cho ham}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//char docdulieu(unsigned char diachi){

    unsigned char Data; start_rtc(); gui_rtc(0xd0); gui_rtc(diachi); start_rtc(); gui_rtc(0xd1); //0xd0 + 0xd1 la dia chi cua ds107 va che do doc du lieu Data=nhan_rtc();

    stop_rtc();//Stop I2C return Data;}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//void ghivaoDS1307(void) {

    unsigned char t; for(t=0;t

  • 7/18/2019 backup 1

    5/10

    // ghi_chuoi("-20");hienthi_dulieu_rtc(docdulieu(6)); //nam

    }

    /**********************************************************************************/ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//// CHUONG TRINH CON THUC HIEN VIEC CAI DAT NGAY GIO, THANG NAM////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//

    unsigned char bcd_dec(unsigned char bcd)//chuyen tu bcd sang decima{return((bcd/16)*10+(bcd%16)); //vd bcd=66 -> dec =42}

    unsigned char dec_bcd(unsigned char dec)// chuyen tu decima sang bcd{return((dec/10)*16+(dec%10));}

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//

    void caidat_rtc(){ unsigned char giay,phut,gio,thu,ngay,thang,nam; giay = bcd_dec(docdulieu(0)&0x7f); // de bit 7 (bit clock halt) cua thanhghi giay = 0 => ko bi treo) phut = bcd_dec(docdulieu(1)); gio = bcd_dec(docdulieu(2)& 0x3f); //che do 24 h thu = bcd_dec(docdulieu(3)); ngay = bcd_dec(docdulieu(4)); thang = bcd_dec(docdulieu(5)); nam = bcd_dec(docdulieu(6));//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// // CAI DAT GIO

    ghilenhLCD(1);// ghi_chuoi("CHINH");// ghi_chuoi(" GIO :"); ghilenhLCD(0x0e); ghilenhLCD(0xc4); ghiso(gio); ghi_kytu(':'); ghiso(phut); ghi_kytu(':'); ghiso(giay); ///////////////////////////////////////// ghilenhLCD(0xC5); while(menu==0);

    caidatgio:while(tang!=0 && giam!=0 && menu!=0); if(tang==0) { gio++; if(gio==24) gio=0; ghilenhLCD(0xC4); ghiso(gio); ghilenhLCD(0xC5); delay_ms(300); goto caidatgio; }

  • 7/18/2019 backup 1

    6/10

    if(giam==0) { gio--; if(gio==0xff) gio=23; ghilenhLCD(0xC4); ghiso(gio); ghilenhLCD(0xC5); delay_ms(300); goto caidatgio;}

    //////////////////////////////////////////// while(menu==0); ghilenhLCD(0xC8); caidatphut: while(tang!=0 && giam!=0 && menu!=0); if(tang==0) { phut++; if(phut==60) phut=0; ghilenhLCD(0xC7); ghiso(phut); ghilenhLCD(0x10); delay_ms(300); goto caidatphut;} if(giam==0)

    { phut--; if(phut==0xff) phut=59; ghilenhLCD(0xC7); ghiso(phut); ghilenhLCD(0x10); delay_ms(300); goto caidatphut; }

    ////////////////////////////////////////////// while(menu==0); ghilenhLCD(0xCB);

    caidatgiay: while(tang!=0 && giam!=0 && menu!=0); if(tang==0) { giay++; if(giay==60) giay=0; ghilenhLCD(0xCA); ghiso(giay); ghilenhLCD(0xCB); delay_ms(100); goto caidatgiay;

    } if(giam==0) {

    giay--; if(giay==0xff) giay=59; ghilenhLCD(0xCA); ghiso(giay); ghilenhLCD(0xCB); delay_ms(100); goto caidatgiay; }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • 7/18/2019 backup 1

    7/10

    ~~~~// // CAI DAT NGAY - THANG - NAM

    while(menu==0); ghilenhLCD(1);// ghi_chuoi("CHINH NGAY :"; ghilenhLCD(0xc4); ghiso(ngay); ghi_kytu('-'); ghiso(thang);// ghi_chuoi("-20"); ghiso(nam); /////////////////////////////////////////////////// ghilenhLCD(0xc5); caidatngay:while (tang!=0 && giam!=0 && menu!=0); if(tang==0) { ngay++; if(ngay==32) ngay=1; ghilenhLCD(0xC4); ghiso(ngay); ghilenhLCD(0x10); delay_ms(300); goto caidatngay;

    }

    if(giam==0) { ngay--; if(ngay==0) ngay=31; ghilenhLCD(0xC4); ghiso(ngay); ghilenhLCD(0x10); delay_ms(300); goto caidatngay; }

    //////////////////////////////////////////////////// while(menu==0); ghilenhLCD(0xC8); caidatthang:while(tang!=0 && giam!=0 && menu!=0); if(tang==0) { thang++; if(thang==13) thang=1; ghilenhLCD(0xC7); ghiso(thang); ghilenhLCD(0x10); delay_ms(300); goto caidatthang;

    } if(giam==0) { thang--; if(thang==0) thang=12; ghilenhLCD(0xC7); ghiso(thang); ghilenhLCD(0x10); delay_ms(300); goto caidatthang;

  • 7/18/2019 backup 1

    8/10

    }

    //////////////////////////////////////////////////////// while(menu==0); ghilenhLCD(0xCD); caidatnam:while(tang!=0 && giam!=0 && menu!=0); if(tang==0) { nam++; if(nam==100) nam=0; ghilenhLCD(0xCC); ghiso(nam); ghilenhLCD(0xCD); delay_ms(300); goto caidatnam; }

    if(giam==0) { nam--; if(nam==0xff) nam=99; ghilenhLCD(0xCC); ghiso(nam); ghilenhLCD(0xCD);

    delay_ms(300); goto caidatnam;}

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// // CAI DAT THU while(menu==0); ghilenhLCD(1);// ghi_chuoi("CHINH THU :"); ghilenhLCD(0xc4); ghi_chuoi(day[thu-1]);

    caidatthu:while(tang!=0 && giam!=0 && menu!=0); if(tang==0) { thu++; if(thu==8) thu=1; ghilenhLCD(0xC4); ghi_chuoi(day[thu-1]); delay_ms(300); goto caidatthu; }

    if(giam==0) { thu--; if(thu==0) thu=7;

    ghilenhLCD(0xC4); ghi_chuoi(day[thu-1]); delay_ms(300); goto caidatthu; }

    while(menu==0); // ket thuc cai datghilenhLCD(1); //thi thuc hien xoa man hinh

    ghilenhLCD(0x0C); //bat hien thi tat con tro //CAP NHAT THOI GIAN VAO RTC

  • 7/18/2019 backup 1

    9/10

    giatrikhoitao_rtc[0] = dec_bcd(giay); giatrikhoitao_rtc[1] = dec_bcd(phut); giatrikhoitao_rtc[2] = dec_bcd(gio); giatrikhoitao_rtc[3] = dec_bcd(thu); giatrikhoitao_rtc[4] = dec_bcd(ngay); giatrikhoitao_rtc[5] = dec_bcd(thang); giatrikhoitao_rtc[6] = dec_bcd(nam); giatrikhoitao_rtc[7] = 0x00; giatrikhoitao_rtc[8] = 'c'; //ghi vao vi tri dau tien cua ram 1 co (flag)

    ghivaoDS1307(); ghilenhLCD(1);

    }

    /**********************************************************************************/ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//// CHUONG TRINH CON KIEM TRA DU LIEU TU DS1307 KHI KHOI DONG

    ////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//void kiemtra_rtc(void){ unsigned char temp; start_rtc(); gui_rtc(0xd0); gui_rtc(0x08);//doc du lieu tu thanh ghi co dia chi 0x08 (vi tri ram dau tien) start_rtc(); gui_rtc(0xd1); temp=nhan_rtc();//con tro dang tro toi dia chi 0x08 chua du lieu flag (co?`)

    xem da cai dat hay chua stop_rtc(); if(temp!='c')//neu gia tri thu 8 nhan duoc khac voi co 'c' cap nhat khi cai dat gio {// thi tuc la lan dau duoc khoi tao, ta se chon gia tri ghi vao ban dau theoy minh

    giatrikhoitao_rtc[0]=0x50; giatrikhoitao_rtc[1]=0x59; giatrikhoitao_rtc[2]=0x09; giatrikhoitao_rtc[3]=0x04; giatrikhoitao_rtc[4]=0x04; giatrikhoitao_rtc[5]=0x05; giatrikhoitao_rtc[6]=0x11;

    giatrikhoitao_rtc[7]=0x00; giatrikhoitao_rtc[8]='c'; ghivaoDS1307(); }}

    ///////////////////////////////////////////////////////////////////////////////void doccacdulieu(void){

  • 7/18/2019 backup 1

    10/10

    int i;for(i=0;i cai dat gio {

    caidat_rtc(); co=0; }

    }}