Cần giúp sửa code chế tạo đồng hồ hiển thị ngày,tháng,năm trên LCD 16*2.giây k chạy

quycoi1997

Học sinh phổ thông
#1
Mã:
#include<reg52.h>
#include<string.h>
#define Bat 1
sbit Rs=P1^5;
sbit Rw=P1^6;
sbit En=P1^7;
sbit tang=P3^5;
sbit menu=P3^2;
sbit giam=P3^4;
sbit Bf  =P2^7;
unsigned char bcd_dec(unsigned char bcd);   // Chuyen doi so BCD sang Thap phan hien thi len LCD
unsigned char bcd_dec(unsigned char bcd)
              {
       return((bcd/16)*10+(bcd%16));
  }
void caidat(); // Ham phim bam cai dat ngay gio
void hienngay(); // Ham hien thi ngay thang nam
void hiengio();  // Ham Hien thi Gio Phut Giay
unsigned char mode=0;
bit tang0=1,tang1=1,giam0=1,giam1=1,mode0=1,mode1=1;
char giay,phut,gio,h1,h2,m1,m2,s1,s2,ngay,thang,nam,ng1,ng2,th1,th2,n1,n2,thu,day; // cac gia tri
// giay,phut,gio,thu,ngay,thang,nam duoc tach thanh 2 so de hien thi


// Ham tre t(ms)
void delay(int t)
{
  int a,b;
  for(a=0;a<t;a++)
  {
    for(b=0;b<125;b++)
 {}
  }
}
// Ham tre t(us)
void delay_us(int t)
{
  int a;
  for(a=0;a<t;a++)
  {}
}

// CAC CHUONG TRINH GIANH CHO LCD
// Ham kiem tra ban
void ban()
{
  P2=0xFF;
  Rs=0;
  Rw=1;
  while(Bf)
  {
    En=0;
 delay_us(50);
 En=1;
  }
}
// Ham ghi lenh
void lenh(unsigned char x)
{
  ban();
  P2=x;
  Rs=0;
  Rw=0;
  delay_us(20);
  En=1;
  delay_us(20);
  En=0;
}
// Ham ghi du lieu
void kitu(unsigned char x)
{
  ban();
  P2=x;
  Rs=1;
  Rw=0;
  delay_us(20);
  En=1;
  delay_us(20);
  En=0;
}
// Ham ghi chuoi
void chuoi(unsigned char *s)
{
  char i;
  for(i=0;i<strlen(s);i++)
  {
    kitu(s);
  }
}
// Ham ghi cham 1 chuoi
void chuoi_cham(unsigned char *s)
{
  char i;
  for(i=0;i<strlen(s);i++)
  {
    kitu(s);
 delay(75);
  }
}
// Ham khoi tao LCD
void khoitao()
{
  lenh(0x38);
  lenh(0x01);
  lenh(0x0c);
  lenh(0x80);
}
//Tach gia tri de hien thi
void tach()
{
  s1=giay/10+48;s2=giay%10+48;
  m1=phut/10+48;m2=phut%10+48;
  h1=gio/10+48;h2=gio%10+48;
  day=thu+48;
  ng1=ngay/10+48;ng2=ngay%10+48;
  th1=thang/10+48;th2=thang%10+48;
  n1=nam/10+48;n2=nam%10+48;
}
//Ham hien thi thoi gian
void hienthi()
{
  tach();
  lenh(0x80);
  if(thu!=7)
  {
    chuoi("Thu ");
 kitu(day+1);
 kitu(' ');
  }
  else chuoi("CNHAT ");
  kitu(ng1);kitu(ng2);
  kitu('/');
  kitu(th1);kitu(th2);
  kitu('/');
  chuoi("20");
  kitu(n1);kitu(n2);
  lenh(0xc0);
  chuoi("Time: ");
  kitu(h1);kitu(h2);
  kitu(':');
  kitu(m1);kitu(m2);
  kitu(':');
  kitu(s1);kitu(s2);
  chuoi("  ");
}
//Hien thi thu ngay thang nam
void hienngay()
{
  tach();
  lenh(0xc0);
  if(thu!=7)
  {
    chuoi("Thu ");
 kitu(day+1);
 kitu(' ');
  }
  else chuoi("CNHAT ");
  kitu(ng1);kitu(ng2);
  kitu('/');
  kitu(th1);kitu(th2);
  kitu('/');
  chuoi("20");
  kitu(n1);kitu(n2);
}
//Hien giay phut gio
void hiengio()
{
  tach();
  lenh(0xc0);
  chuoi("Time: ");
  kitu(h1);kitu(h2);
  kitu(':');
  kitu(m1);kitu(m2);
  kitu(':');
  kitu(s1);kitu(s2);
  kitu(' ');
}
//----------------------------------------------------------------------
//Ham cai dat gia tri thoi gian
void caidat()
{
  if(mode==1) // Gio
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   gio=gio+1;
   if(gio==24)
   gio=0;
 }
 if(giam0==0 && giam1==1)
 {
   gio=gio-1;
   if(gio<0)
   gio=23;
 }
  }
  else
  {
  if(mode==2)   // Phut
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   phut=phut+1;
   if(phut==60)
   phut=0;
 
 }
 if(giam0==0 && giam1==1)
 {
   phut=phut-1;
   if(phut<0)
   phut=59;
 }
  }
  else
  {
  if(mode==3)   // Thu
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   thu=thu+1;
   if(thu==8)
   thu=1;
 
 }
 if(giam0==0 && giam1==1)
 {
   thu=thu-1;
   if(thu==0)
   thu=7;
 }
  }
  else
  {
  if(mode==4)   // Ngay
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   ngay=ngay+1;
   if(ngay==32)
   ngay=1;
 
 }
 if(giam0==0 && giam1==1)
 {
   ngay=ngay-1;
   if(ngay==0)
   ngay=31;
 }
  }
  else
  {
  if(mode==5)   // Thang
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   thang=thang+1;
   if(thang==13)
   thang=1;
 
 }
 if(giam0==0 && giam1==1)
 {
   thang=thang-1;
   if(thang==0)
   thang=12;
 }
  }
  else
  {
  if(mode==6)   // Nam
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   nam=nam+1;
   if(nam==100)
   nam=0;
 
 }
 if(giam0==0 && giam1==1)
 {
   nam=nam-1;
   if(nam<0)
   nam=99;
 }
  }
  }
  }
  }
  }
  }
  if(mode==1)
  {
    lenh(0x80);
 chuoi("   CHINH GIO:   ");
 lenh(0xc0);
 hiengio();
  }
  else
  {
  if(mode==2)
  {
    lenh(0x80);
 chuoi("   CHINH PHUT:  ");
 lenh(0xc0);
 hiengio();
  }
  else
  {
  if(mode==3)
  {
    lenh(0x80);
 chuoi("   CHINH THU:   ");
 lenh(0xc0);
 hienngay();
  }
  else
  {
  if(mode==4)
  {
    lenh(0x80);
 chuoi("   CHINH NGAY:  ");
 lenh(0xc0);
 hienngay();
  }
  else
  {
  if(mode==5)
  {
    lenh(0x80);
 chuoi("   CHINH THANG: ");
 lenh(0xc0);
 hienngay();
  }
  else
  {
  if(mode==6)
  {
    lenh(0x80);
 chuoi("   CHINH NAM:   ");
 lenh(0xc0);
 hienngay();
  }
  }
  }
  }
  }
  }
  }
// HAM CHINH
void main()
{
  khoitao();
  //khoitao_DS();
  lenh(0x80);
  chuoi_cham("     HELLO       ");
  lenh(0xc0);
  chuoi_cham("     ONGCHU     ");
  delay(1000);
  lenh(0x01);
  lenh(0x80);
  chuoi_cham("  XIN DOI LENH  ");
  lenh(0xc0);
  chuoi_cham("     ONGCHU     ");
  delay(1000);
  lenh(0x01);

  while(1)
  {
    mode0=mode1;mode1=menu;
 if(mode0==0 && mode1==1)
 {
   mode=mode+1;
   if(mode==7)
   mode=0;
 }
    if(mode!=0)
   caidat();
 else
 hienthi();
 /*if((gio==a_hour)&&(phut==a_min))
 {
 Led=Bat;
 delay(100);
 } */
  }
}
 
Sửa lần cuối bởi điều hành viên:

mta_cdt

Super Moderator
Thành viên BQT
#2
Mã:
#include<reg52.h>
#include<string.h>
#define Bat 1
sbit Rs=P1^5;
sbit Rw=P1^6;
sbit En=P1^7;
sbit tang=P3^5;
sbit menu=P3^2;
sbit giam=P3^4;
sbit Bf  =P2^7;
unsigned char bcd_dec(unsigned char bcd);   // Chuyen doi so BCD sang Thap phan hien thi len LCD
unsigned char bcd_dec(unsigned char bcd)
              {
       return((bcd/16)*10+(bcd%16));
  }
void caidat(); // Ham phim bam cai dat ngay gio
void hienngay(); // Ham hien thi ngay thang nam
void hiengio();  // Ham Hien thi Gio Phut Giay
unsigned char mode=0;
bit tang0=1,tang1=1,giam0=1,giam1=1,mode0=1,mode1=1;
char giay,phut,gio,h1,h2,m1,m2,s1,s2,ngay,thang,nam,ng1,ng2,th1,th2,n1,n2,thu,day; // cac gia tri
// giay,phut,gio,thu,ngay,thang,nam duoc tach thanh 2 so de hien thi


// Ham tre t(ms)
void delay(int t)
{
  int a,b;
  for(a=0;a<t;a++)
  {
    for(b=0;b<125;b++)
 {}
  }
}
// Ham tre t(us)
void delay_us(int t)
{
  int a;
  for(a=0;a<t;a++)
  {}
}

// CAC CHUONG TRINH GIANH CHO LCD
// Ham kiem tra ban
void ban()
{
  P2=0xFF;
  Rs=0;
  Rw=1;
  while(Bf)
  {
    En=0;
 delay_us(50);
 En=1;
  }
}
// Ham ghi lenh
void lenh(unsigned char x)
{
  ban();
  P2=x;
  Rs=0;
  Rw=0;
  delay_us(20);
  En=1;
  delay_us(20);
  En=0;
}
// Ham ghi du lieu
void kitu(unsigned char x)
{
  ban();
  P2=x;
  Rs=1;
  Rw=0;
  delay_us(20);
  En=1;
  delay_us(20);
  En=0;
}
// Ham ghi chuoi
void chuoi(unsigned char *s)
{
  char i;
  for(i=0;i<strlen(s);i++)
  {
    kitu(s);
  }
}
// Ham ghi cham 1 chuoi
void chuoi_cham(unsigned char *s)
{
  char i;
  for(i=0;i<strlen(s);i++)
  {
    kitu(s);
 delay(75);
  }
}
// Ham khoi tao LCD
void khoitao()
{
  lenh(0x38);
  lenh(0x01);
  lenh(0x0c);
  lenh(0x80);
}
//Tach gia tri de hien thi
void tach()
{
  s1=giay/10+48;s2=giay%10+48;
  m1=phut/10+48;m2=phut%10+48;
  h1=gio/10+48;h2=gio%10+48;
  day=thu+48;
  ng1=ngay/10+48;ng2=ngay%10+48;
  th1=thang/10+48;th2=thang%10+48;
  n1=nam/10+48;n2=nam%10+48;
}
//Ham hien thi thoi gian
void hienthi()
{
  tach();
  lenh(0x80);
  if(thu!=7)
  {
    chuoi("Thu ");
 kitu(day+1);
 kitu(' ');
  }
  else chuoi("CNHAT ");
  kitu(ng1);kitu(ng2);
  kitu('/');
  kitu(th1);kitu(th2);
  kitu('/');
  chuoi("20");
  kitu(n1);kitu(n2);
  lenh(0xc0);
  chuoi("Time: ");
  kitu(h1);kitu(h2);
  kitu(':');
  kitu(m1);kitu(m2);
  kitu(':');
  kitu(s1);kitu(s2);
  chuoi("  ");
}
//Hien thi thu ngay thang nam
void hienngay()
{
  tach();
  lenh(0xc0);
  if(thu!=7)
  {
    chuoi("Thu ");
 kitu(day+1);
 kitu(' ');
  }
  else chuoi("CNHAT ");
  kitu(ng1);kitu(ng2);
  kitu('/');
  kitu(th1);kitu(th2);
  kitu('/');
  chuoi("20");
  kitu(n1);kitu(n2);
}
//Hien giay phut gio
void hiengio()
{
  tach();
  lenh(0xc0);
  chuoi("Time: ");
  kitu(h1);kitu(h2);
  kitu(':');
  kitu(m1);kitu(m2);
  kitu(':');
  kitu(s1);kitu(s2);
  kitu(' ');
}
//----------------------------------------------------------------------
//Ham cai dat gia tri thoi gian
void caidat()
{
  if(mode==1) // Gio
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   gio=gio+1;
   if(gio==24)
   gio=0;
 }
 if(giam0==0 && giam1==1)
 {
   gio=gio-1;
   if(gio<0)
   gio=23;
 }
  }
  else
  {
  if(mode==2)   // Phut
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   phut=phut+1;
   if(phut==60)
   phut=0;
 
 }
 if(giam0==0 && giam1==1)
 {
   phut=phut-1;
   if(phut<0)
   phut=59;
 }
  }
  else
  {
  if(mode==3)   // Thu
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   thu=thu+1;
   if(thu==8)
   thu=1;
 
 }
 if(giam0==0 && giam1==1)
 {
   thu=thu-1;
   if(thu==0)
   thu=7;
 }
  }
  else
  {
  if(mode==4)   // Ngay
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   ngay=ngay+1;
   if(ngay==32)
   ngay=1;
 
 }
 if(giam0==0 && giam1==1)
 {
   ngay=ngay-1;
   if(ngay==0)
   ngay=31;
 }
  }
  else
  {
  if(mode==5)   // Thang
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   thang=thang+1;
   if(thang==13)
   thang=1;
 
 }
 if(giam0==0 && giam1==1)
 {
   thang=thang-1;
   if(thang==0)
   thang=12;
 }
  }
  else
  {
  if(mode==6)   // Nam
  {
    tang0=tang1;tang1=tang;
 giam0=giam1;giam1=giam;
 if(tang0==0 && tang1==1)
 {
   nam=nam+1;
   if(nam==100)
   nam=0;
 
 }
 if(giam0==0 && giam1==1)
 {
   nam=nam-1;
   if(nam<0)
   nam=99;
 }
  }
  }
  }
  }
  }
  }
  if(mode==1)
  {
    lenh(0x80);
 chuoi("   CHINH GIO:   ");
 lenh(0xc0);
 hiengio();
  }
  else
  {
  if(mode==2)
  {
    lenh(0x80);
 chuoi("   CHINH PHUT:  ");
 lenh(0xc0);
 hiengio();
  }
  else
  {
  if(mode==3)
  {
    lenh(0x80);
 chuoi("   CHINH THU:   ");
 lenh(0xc0);
 hienngay();
  }
  else
  {
  if(mode==4)
  {
    lenh(0x80);
 chuoi("   CHINH NGAY:  ");
 lenh(0xc0);
 hienngay();
  }
  else
  {
  if(mode==5)
  {
    lenh(0x80);
 chuoi("   CHINH THANG: ");
 lenh(0xc0);
 hienngay();
  }
  else
  {
  if(mode==6)
  {
    lenh(0x80);
 chuoi("   CHINH NAM:   ");
 lenh(0xc0);
 hienngay();
  }
  }
  }
  }
  }
  }
  }
// HAM CHINH
void main()
{
  khoitao();
  //khoitao_DS();
  lenh(0x80);
  chuoi_cham("     HELLO       ");
  lenh(0xc0);
  chuoi_cham("     ONGCHU     ");
  delay(1000);
  lenh(0x01);
  lenh(0x80);
  chuoi_cham("  XIN DOI LENH  ");
  lenh(0xc0);
  chuoi_cham("     ONGCHU     ");
  delay(1000);
  lenh(0x01);

  while(1)
  {
    mode0=mode1;mode1=menu;
 if(mode0==0 && mode1==1)
 {
   mode=mode+1;
   if(mode==7)
   mode=0;
 }
    if(mode!=0)
   caidat();
 else
 hienthi();
 /*if((gio==a_hour)&&(phut==a_min))
 {
 Led=Bat;
 delay(100);
 } */
  }
}
- Lần sau bạn đưa code vào thẻ code cho mọi người dễ đọc.
- Giây bạn ko chạy như thế nào? Set s<60 chưa.
 

quycoi1997

Học sinh phổ thông
#3
- Lần sau bạn đưa code vào thẻ code cho mọi người dễ đọc.
- Giây bạn ko chạy như thế nào? Set s<60 chưa.
ok bn, mình mới vào diễn đàn. chưa biết hết đc. bài của mình gặp vấn đề là hiển thị ra giờ phút giây, ngày tháng năm rồi ý. nhưng mà đồng hồ k có chạy. có nghĩa là giây k chạy, giờ k nhảy, phút cungxv ấy. chỉ điều chỉnh đc ấy
 

mta_cdt

Super Moderator
Thành viên BQT
#4
ok bn, mình mới vào diễn đàn. chưa biết hết đc. bài của mình gặp vấn đề là hiển thị ra giờ phút giây, ngày tháng năm rồi ý. nhưng mà đồng hồ k có chạy. có nghĩa là giây k chạy, giờ k nhảy, phút cungxv ấy. chỉ điều chỉnh đc ấy
Bạn đã có các hàm giao tiếp I2c đâu mà nó chạy được. Bạn search đồng hồ thời gian thực dùng 8051 trên forum tràn ngập ấy.
 

Quảng cáo Google