Thông báo

Collapse
No announcement yet.

Giúp về mạch LCD này các bạn

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Giúp về mạch LCD này các bạn

    mình có sơ đồ mô phỏng .Mach mo phong Proteus.rar

    Click image for larger version

Name:	10560_291053271001188_898338734_n.jpg
Views:	1
Size:	68.7 KB
ID:	1414541







    code codeC.rar

    Giờ mình muốn led trong sơ đồ của mình sáng trong thời gian từ 26-23g..còn lại led tắt..

    Mong anh em giúp đỡ mình...mình k biết phải thêm vô như thế nào nữa ak...

  • #2
    muốn vậy thì bạn viết một chương trình con nữa để điều khiển led,và bạn phải mắc thêm trở kéo ở chân P0

    Comment


    • #3
      mình hiểu mắc trở bạn ak..bạn có thể viết chương trình con đó cho mình biết được không???? mình mới học VĐK nên chưa biết hết ak....

      Comment


      • #4
        cậu cho chương trình của cậu lên đi...nói yêu cầu cụ thể mọi người mới hỉu mà còn biết giúp ntn chứ

        Comment


        • #5
          Nguyên văn bởi tan0710 Xem bài viết
          cậu cho chương trình của cậu lên đi...nói yêu cầu cụ thể mọi người mới hỉu mà còn biết giúp ntn chứ
          chương trinh code của mình ne codeC.rar tan0710 ...giờ mình muốn Con led sáng vào lúc 16-23g,và còn lại led sẽ tắt,, tan0710 giúp mình nha

          Comment


          • #6
            chương trình chính chỉ cần sửa thế này thôi..

            Code:
            void main()
              {	
                 P0=1;
                 P1=P2=P3=0;      
            	khoitaoLCD();
            	ghilenhLCD(1);
            	///////////////////////////////////////////////////////////////////////////////////////////////
                ghilenhLCD(0x80);
            	ghi_chuoi("CD CONG NGHE");
            	ghilenhLCD(0xc0);
            	ghi_chuoi("DO AN TONG HOP");
            	delay(5000);
            	ghilenhLCD(0x80);
            	ghi_chuoi("GVHD:T.D.CHUNG");
            	ghilenhLCD(0xc0);
            	ghi_chuoi("SV:QUANG CUONG");
            	delay(5000);
            	///////////////////////////////////////////////////////////////////////////////////////////////
            	ghilenhLCD(1);
            	kiemtra_rtc();
            	IE=0x81;// EA_ET2.ES.ET1.EX1.ET0.EX0 => cho phep ngat ngoai 0 ta co 1(0)00 0001  = 81
            	doccacdulieu();
            	while(1)
            	{	doccacdulieu();
            		hienthi_rtc();
            		if((docdulieu(2)>15)and(docdulieu(2)<24)   P0=0;
            		else P0=1;
            		if(co==1)  //co =1 ngat 0 xay ra => cai dat gio
            	     	  { 
            			    caidat_rtc();
            				co=0;	
            	          	}
             
            	}
              }

            Comment


            • #7
              Nguyên văn bởi tan0710 Xem bài viết
              chương trình chính chỉ cần sửa thế này thôi..

              Code:
              void main()
                {	
                   P0=1;
                   P1=P2=P3=0;      
              	khoitaoLCD();
              	ghilenhLCD(1);
              	///////////////////////////////////////////////////////////////////////////////////////////////
                  ghilenhLCD(0x80);
              	ghi_chuoi("CD CONG NGHE");
              	ghilenhLCD(0xc0);
              	ghi_chuoi("DO AN TONG HOP");
              	delay(5000);
              	ghilenhLCD(0x80);
              	ghi_chuoi("GVHD:T.D.CHUNG");
              	ghilenhLCD(0xc0);
              	ghi_chuoi("SV:QUANG CUONG");
              	delay(5000);
              	///////////////////////////////////////////////////////////////////////////////////////////////
              	ghilenhLCD(1);
              	kiemtra_rtc();
              	IE=0x81;// EA_ET2.ES.ET1.EX1.ET0.EX0 => cho phep ngat ngoai 0 ta co 1(0)00 0001  = 81
              	doccacdulieu();
              	while(1)
              	{	doccacdulieu();
              		hienthi_rtc();
              		if((docdulieu(2)>15)and(docdulieu(2)<24)   P0=0;
              		else P0=1;
              		if(co==1)  //co =1 ngat 0 xay ra => cai dat gio
              	     	  { 
              			    caidat_rtc();
              				co=0;	
              	          	}
               
              	}
                }
              mình muốn chuơng trình là khi led sáng là đồng hồ vẫn chạy bình thường bạn ak...
              chứ chương trình bạn viết là khi led sáng thì nhảy qua cài đặt lại giờ
              Last edited by huongpt; 12-10-2012, 19:11.

              Comment


              • #8
                Nguyên văn bởi tan0710 Xem bài viết
                chương trình chính chỉ cần sửa thế này thôi..

                Code:
                void main()
                  {	
                     P0=1;
                     P1=P2=P3=0;      
                	khoitaoLCD();
                	ghilenhLCD(1);
                	///////////////////////////////////////////////////////////////////////////////////////////////
                    ghilenhLCD(0x80);
                	ghi_chuoi("CD CONG NGHE");
                	ghilenhLCD(0xc0);
                	ghi_chuoi("DO AN TONG HOP");
                	delay(5000);
                	ghilenhLCD(0x80);
                	ghi_chuoi("GVHD:T.D.CHUNG");
                	ghilenhLCD(0xc0);
                	ghi_chuoi("SV:QUANG CUONG");
                	delay(5000);
                	///////////////////////////////////////////////////////////////////////////////////////////////
                	ghilenhLCD(1);
                	kiemtra_rtc();
                	IE=0x81;// EA_ET2.ES.ET1.EX1.ET0.EX0 => cho phep ngat ngoai 0 ta co 1(0)00 0001  = 81
                	doccacdulieu();
                	while(1)
                	{	doccacdulieu();
                		hienthi_rtc();
                		if((docdulieu(2)>15)and(docdulieu(2)<24)   P0=0;
                		else P0=1;
                		if(co==1)  //co =1 ngat 0 xay ra => cai dat gio
                	     	  { 
                			    caidat_rtc();
                				co=0;	
                	          	}
                 
                	}
                  }
                mình muốn chuơng trình là khi led sáng là đồng hồ vẫn chạy bình thường bạn ak...
                chứ chương trình bạn viết là khi led sáng thì nhảy qua cài đặt lại giờ
                Last edited by huongpt; 12-10-2012, 19:11.

                Comment


                • #9
                  ah...thế thì cho vào cái hàm hienthi_rtc(); ấy
                  cậu up code của cậu vào thẻ code giống trên đi..dễ nói.. hôm trước down về nhưng xóa mất rồi. ngại down lại

                  Comment


                  • #10
                    Nguyên văn bởi tan0710 Xem bài viết
                    ah...thế thì cho vào cái hàm hienthi_rtc(); ấy
                    cậu up code của cậu vào thẻ code giống trên đi..dễ nói.. hôm trước down về nhưng xóa mất rồi. ngại down lại
                    code mình nè giúp mình với

                    #include <AT89X51.H>
                    #include <INTRINS.H>

                    // DINH NGHIA 1 SO CONG
                    #define sda P1_1
                    #define scl P1_0
                    #define rs P3_7
                    #define rw P3_6
                    #define en P3_5
                    #define menu P3_2
                    #define tang P3_1
                    #define giam P3_0
                    #define congLCD P2
                    #define D7 P2_7

                    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[8];



                    /************************************************** ********************************/
                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~//
                    // CAC CHUONG TRINH CON GIAO TIEP VOI LCD //
                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~//

                    void busy()
                    {
                    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]);
                    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 chu
                    void 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;
                    _nop_();
                    _nop_();
                    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;
                    _nop_();
                    _nop_();
                    sda=1;
                    }
                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
                    void gui_rtc(unsigned char x)
                    {
                    unsigned char i;
                    for(i=0;i<8;i++)
                    {
                    sda=(x&0x80)? 1:0; //dua bit du lieu ra chan SDA
                    scl=1;
                    _nop_();
                    _nop_();
                    scl=0;
                    x<<=1; //bit co trong so lon hon dc truyen truoc
                    }
                    scl=1; //nhan bit ACK tu SLAVER bao hieu ket thuc mot byte du lieu
                    _nop_();
                    _nop_();
                    scl=0;
                    }
                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
                    unsigned char nhan_rtc(void)
                    {
                    unsigned char Data,i;
                    for(i=0;i<8;i++) // nhan vao 8 bit
                    {
                    scl=1;
                    Data<<=1;
                    Data=Data|sda;
                    scl=0;
                    }
                    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
                    _nop_();
                    scl=0;
                    _nop_();//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<9;t++)
                    {
                    start_rtc();
                    gui_rtc(0xd0);
                    gui_rtc(t);
                    gui_rtc(giatrikhoitao_rtc[t]);
                    stop_rtc();
                    }

                    }


                    /************************************************** ********************************/
                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~//
                    // HIEN THI GIO , NGAY THANG TREN LCD //
                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~//
                    void hienthi_rtc(void)

                    {
                    ghilenhLCD(0xca); // ep con tro den vi tri thu 11 dong thu 2
                    hienthi_dulieu_rtc(docdulieu(0)); //hien thi giay , du lieu doc ra la ma bcd nhung ham hienthi_dulieu_rtc da chuyen sang dec roi
                    ghilenhLCD(0xc7); // ep con tro den vi tri thu 8 dong thu 2
                    hienthi_dulieu_rtc(docdulieu(1)); // hien thi phut
                    ghi_kytu(':');
                    ghilenhLCD(0xc4); // ep con tro den vi tri thu 5 dong thu 2
                    hienthi_dulieu_rtc(docdulieu(2)); //hien thi gio
                    ghi_kytu(':');
                    ghilenhLCD(0x80); //ep con tro den dau dong thu 1
                    ghi_chuoi(day[docdulieu(3)-1]); //hien thi thu
                    ghi_kytu(',');
                    ghilenhLCD(0x86); //ep con tro den vi tri thu 7 dong thu 1
                    hienthi_dulieu_rtc(docdulieu(4));//hien thi ngay
                    ghi_kytu('-');
                    hienthi_dulieu_rtc(docdulieu(5));//hien thi thang
                    ghi_chuoi("-20");
                    hienthi_dulieu_rtc(docdulieu(6)); //nam
                    }






                    /************************************************** ********************************/
                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
                    // TAO THOI GIAN TRE DUNG TIMER 0 //
                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
                    void delay(long time)//tre time ms
                    {
                    while(time--)
                    {
                    TMOD=0x01;// che do 16 bit khong tu nap lai
                    TH0=0xFC;TL0=0x67; // 6*( 65536 - FC67+1)*(1/12000)=1000us =1ms
                    TR0=1;
                    while(TF0!=1){};
                    TF0=0;
                    TR0=0;}
                    }

                    /************************************************** ********************************/
                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~//
                    // 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 thanh ghi 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(300);
                    goto caidatgio; }
                    if(giam==0)
                    {
                    gio--;
                    if(gio==0xff) gio=23;
                    ghilenhLCD(0xC4);
                    ghiso(gio);
                    ghilenhLCD(0xC5);
                    delay(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(300);
                    goto caidatphut;}
                    if(giam==0)
                    {
                    phut--;
                    if(phut==0xff) phut=59;
                    ghilenhLCD(0xC7);
                    ghiso(phut);
                    ghilenhLCD(0x10);
                    delay(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(100);
                    goto caidatgiay;
                    }
                    if(giam==0)
                    {
                    giay--;
                    if(giay==0xff) giay=59;
                    ghilenhLCD(0xCA);
                    ghiso(giay);
                    ghilenhLCD(0xCB);
                    delay(100);
                    goto caidatgiay;
                    }

                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
                    // 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(300);
                    goto caidatngay;
                    }

                    if(giam==0)
                    {
                    ngay--;
                    if(ngay==0) ngay=31;
                    ghilenhLCD(0xC4);
                    ghiso(ngay);
                    ghilenhLCD(0x10);
                    delay(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(300);
                    goto caidatthang;
                    }
                    if(giam==0)
                    {
                    thang--;
                    if(thang==0) thang=12;
                    ghilenhLCD(0xC7);
                    ghiso(thang);
                    ghilenhLCD(0x10);
                    delay(300);
                    goto caidatthang;
                    }

                    ////////////////////////////////////////////////////////
                    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(300);
                    goto caidatnam;
                    }

                    if(giam==0)
                    {
                    nam--;
                    if(nam==0xff) nam=99;
                    ghilenhLCD(0xCC);
                    ghiso(nam);
                    ghilenhLCD(0xCD);
                    delay(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(300);
                    goto caidatthu;
                    }

                    if(giam==0)
                    { thu--;
                    if(thu==0) thu=7;
                    ghilenhLCD(0xC4);
                    ghi_chuoi(day[thu-1]);
                    delay(300);
                    goto caidatthu;
                    }

                    while(menu==0); // ket thuc cai dat
                    ghilenhLCD(1); //thi thuc hien xoa man hinh
                    ghilenhLCD(0x0C); //bat hien thi tat con tro
                    //CAP NHAT THOI GIAN VAO RTC
                    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 theo y 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){ int i;
                    for(i=0;i<=6;i++){docdulieu(i);} }

                    //////////////////////////////////////////////////////////////////////////////

                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~//
                    // CHUONG TRINH CHINH //
                    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~//
                    bit co=0;
                    void caidatco() interrupt 0 //ngat ngoai 0 thi co =1
                    {
                    co=1;
                    }
                    void main()
                    {
                    khoitaoLCD();
                    ghilenhLCD(1);
                    ///////////////////////////////////////////////////////////////////////////////////////////////
                    ghilenhLCD(0x80);
                    ghi_chuoi("CD CONG NGHE");
                    ghilenhLCD(0xc0);
                    ghi_chuoi("DO AN TONG HOP");
                    delay(5000);
                    ghilenhLCD(0x80);
                    ghi_chuoi("GVHD:T.D.CHUNG");
                    ghilenhLCD(0xc0);
                    ghi_chuoi("SV:QUANG CUONG");
                    delay(5000);
                    ///////////////////////////////////////////////////////////////////////////////////////////////
                    ghilenhLCD(1);
                    kiemtra_rtc();
                    IE=0x81;// EA_ET2.ES.ET1.EX1.ET0.EX0 => cho phep ngat ngoai 0 ta co 1(0)00 0001 = 81
                    doccacdulieu();
                    while(1)
                    { doccacdulieu();
                    hienthi_rtc();
                    if(co==1) //co =1 ngat 0 xay ra => cai dat gio
                    {
                    caidat_rtc();
                    co=0;
                    }

                    }
                    }

                    Comment


                    • #11
                      ô..mình thấy cái mình sửa trước đấy có sai đâu sao lại bảo như lúc cài đặt giờ là sao.??
                      nó có làm thay đổi giá trị biến co đâu.... với lại cái timer0 cậu dùng làm gì đấy.?

                      Comment


                      • #12
                        Nguyên văn bởi tan0710 Xem bài viết
                        ô..mình thấy cái mình sửa trước đấy có sai đâu sao lại bảo như lúc cài đặt giờ là sao.??
                        nó có làm thay đổi giá trị biến co đâu.... với lại cái timer0 cậu dùng làm gì đấy.?
                        bạn mô phỏng là biết ak,,,cứ môi lấn bật thì nó hiện lên chỉnh giờ...mà k chỉnh được..

                        tm0 minh làm nút chinh giờ bạn ak...\
                        bạn coi giúp mình đi

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X