Kết quả 1 đến 5 của 5
-
04-15-2015, 02:08 AM #1Silver member
- Ngày tham gia
- Jan 2016
- Bài viết
- 0
Giúp tạo thêm hiệu ứng cho LCD 20X4 hiển thị giờ-phút-giây
chào mọi người.mình có viết đoạn code lập trình cho LCD 20X4 hiển thị giờhút:giây và có phím bấm chỉnh giờ như sau:MOD-chọn chế độ chỉnh giây,phút hay giờ..phím UP-tăng thời gian.Phím DW-giảm thời gian..về phần này mình viết dc rồi nhưng mình muốn có thêm điều kiện là khi nhấn MOD (bất kỳ ở chế độ chỉnh nào) thì nếu ko nhấn khoản 10s thì tự động MOD=0 và đồng hồ lại tự động đếm như chưa nhấn MOD.
Trong đoạn code mình không liệt kê các hàm mình tạo sẵng vì sẽ rất dài.Ý tưởng của mình là dùng timer0 để đếm.khi timer0 đếm thì timer1 dừng đếm nhưng không biết đặt vào dòng lệnh ntn cả!Xin các bạn góp ý.
dưới đây là đoạn code của mình!
#include <TV_P89V51RD2_SHIFT.C>
#include <TV_P89V51RD2_LCD.C>
const unsigned char code HANG1[20]={"*SU PHAM KY THUAT"};
const unsigned char code HANG2[20]={"DONG HO: "};
unsigned char j,GIAY=0,PHUT=0,BDN=0,GIO=0,GT_MOD=0;
void timer1_interrupt() interrupt 3 using 0
{
BDN++;TH1=0X4B;TL1=0XB0;
}
void HIENTHI_CLOCK()
{
LCD_COMMAND(ADDR_LINE2+10);
LCD_DATA(GT_MOD+0X30);
LCD_DATA(':');
LCD_DATA(GIO/10+0X30);
LCD_DATA(GIO%10+0X30);
LCD_DATA(':');
LCD_DATA(PHUT/10+0X30);
LCD_DATA(PHUT%10+0X30);
LCD_DATA(':');
LCD_DATA(GIAY/10+0X30);
LCD_DATA(GIAY%10+0X30);
}
//******************************
void PHIM_UP()
{
if(!UP)
{
DELAY_MS(20);
if(!UP)
{
switch(GT_MOD)
{
case 1: if(GIAY==59)GIAY=0;
else GIAY++;
break;
case 2: if(PHUT==59)PHUT=0;
else PHUT++;
break;
case 3: if(GIO==23)GIO=0;
else GIO++;
break;
default:break;
}
HIENTHI_CLOCK();
DELAY_MS(100);
}
}
}
//***************************X
void PHIM_DW()
{
if(!DW)
{
DELAY_MS(20);
if(!DW)
{
switch(GT_MOD)
{
case 1: if(GIAY==0) GIAY=59;
else GIAY--;
break;
case 2: if(PHUT==0) PHUT=59;
else PHUT--;
break;
case 3: if(GIO==0) GIO=23;
else GIO--;
break;
default: break;
}
HIENTHI_CLOCK();
DELAY_MS(100);
}
}
}
//*********************
void PHIM_MOD()
{
if(!MOD)
{
DELAY_MS(20);
if(!MOD)
{
GT_MOD++;
if(GT_MOD>=4) GT_MOD=0;
HIENTHI_CLOCK();
do{}while(!MOD);
}
}
}
//*********************************XX
void CHINH_CLOCK()
{
PHIM_MOD();
if(GT_MOD!=0)
{
TR1=1;
do
{
PHIM_UP();
PHIM_DW();
PHIM_MOD();
}
while(GT_MOD!=0);
TR1=1;
}
}
void main()
{
SETUP_LCD();
TMOD=0X15; TR1=1;
EA=1;ET1=1;
LCD_COMMAND(ADDR_LINE1);
for(j=0;j<20;j++){LCD_DATA(HANG1[j]);}
LCD_COMMAND(ADDR_LINE2);
for(j=0;j<20;j++){LCD_DATA(HANG2[j]);}
HIENTHI_CLOCK();
while(1)
{
if(BDN==40)
{
if(GIAY==59)
{
GIAY=0;
if(PHUT==59)
{
PHUT=0;
if(GIO==24) GIO=0;
else GIO++;
}
else PHUT++;
}
else GIAY++;
BDN=0;
HIENTHI_CLOCK();
}
else
{ CHINH_CLOCK();
}
}
}View more random threads:
- thực tập tốt nghiệp
- Anh/chị cho em hỏi về code arduino interrup với ạ
- 2 tỷ đồng đầu tư được những BĐS Nhà Đất gì?
- mong a e nào làm rồi thì giúp e với
- mạch nguồn cho rc servo
- Anh/ Chị cho em hỏi về cách dùng mạch cao thế này với ạ.
- Bạn nào sử dụng keo Epoxy rồi cho mình hỏi.!
- Cần tư vấn - Viết code cho 8051 điều khiển LED (Luxeon)
- Mong mấy sư huynh tư vấn giùm em
- XIN GIÚP MẠCH KHÓA SỐ ĐIỆN TỬ!
-
04-15-2015, 02:09 AM #2Junior Member
- Ngày tham gia
- Jan 2016
- Bài viết
- 0
đoạn code mình gửi dưới đây để các bạn dễ nhìn hơn!Xin cảm ơn các bạn!
-
04-15-2015, 06:40 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
HIC..Cao thủ đâu hết rồi..ra tay tương trợ với..fight)fight)
-
04-15-2015, 07:48 PM #4Silver member
- Ngày tham gia
- Apr 2016
- Bài viết
- 0
Gửi bởi Kiếm Định
Mã:#include <TV_P89V51RD2_SHIFT.C> #include <TV_P89V51RD2_LCD.C> const unsigned char code HANG1[20]={"*DAI HOC SU PHAM KY"}; const unsigned char code HANG2[20]={"DONG HO: "}; unsigned char j,GIAY=0,PHUT=0,BDN=0,GIO=0,GT_MOD=0; unsigned long TIMER_OUT=0; void timer1_interrupt() interrupt 3 using 0 { BDN++;TH1=0X4B;TL1=0XB0; TIMER_OUT++;IF(TIMER_OUT>500)TIMER_OUT=501;//TINH LAI O DAY CHO DU 10S } void HIENTHI_CLOCK() { LCD_COMMAND(ADDR_LINE2+10); LCD_DATA(GT_MOD+0X30); LCD_DATA(':'); LCD_DATA(GIO/10+0X30); LCD_DATA(GIO%10+0X30); LCD_DATA(':'); LCD_DATA(PHUT/10+0X30); LCD_DATA(PHUT%10+0X30); LCD_DATA(':'); LCD_DATA(GIAY/10+0X30); LCD_DATA(GIAY%10+0X30); } //****************************** void PHIM_UP() { if(!UP) { DELAY_MS(20); if(!UP) { switch(GT_MOD) { case 1: if(GIAY==59)GIAY=0; else GIAY++; break; case 2: if(PHUT==59)PHUT=0; else PHUT++; break; case 3: if(GIO==23)GIO=0; else GIO++; break; default:break; } HIENTHI_CLOCK(); DELAY_MS(100); } } } //***************************X void PHIM_DW() { if(!DW) { DELAY_MS(20); if(!DW) { switch(GT_MOD) { case 1: if(GIAY==0) GIAY=59; else GIAY--; break; case 2: if(PHUT==0) PHUT=59; else PHUT--; break; case 3: if(GIO==0) GIO=23; else GIO--; break; default: break; } HIENTHI_CLOCK(); DELAY_MS(100); } } } //********************* void PHIM_MOD() { if(!MOD) { DELAY_MS(20); if(!MOD) { GT_MOD++; if(GT_MOD>=4) GT_MOD=0; HIENTHI_CLOCK(); do{}while(!MOD); } } } //*********************************XX void CHINH_CLOCK() { PHIM_MOD(); if(GT_MOD!=0) { TR1=1; do { PHIM_UP(); PHIM_DW(); PHIM_MOD(); } while(GT_MOD!=0); TR1=1; } } void main() { SETUP_LCD(); TMOD=0X15; TR1=1; EA=1;ET1=1; LCD_COMMAND(ADDR_LINE1); for(j=0;j<20;j++){LCD_DATA(HANG1[j]);} LCD_COMMAND(ADDR_LINE2); for(j=0;j<20;j++){LCD_DATA(HANG2[j]);} HIENTHI_CLOCK(); while(1) { IF(GT_MOD==0)TIMER_OUT=0; ELSE {IF(TIMER_OUT>500){TIMER_OUT=0;GT_MOD=0;}} if(BDN==40) { if(GIAY==59) { GIAY=0; if(PHUT==59) { PHUT=0; if(GIO==24) GIO=0; else GIO++; } else PHUT++; } else GIAY++; BDN=0; HIENTHI_CLOCK(); } else { CHINH_CLOCK(); } } }
-
04-15-2015, 09:43 PM #5Banned
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
vẫn không dc bạn à..mình nhấn MOD là nó đứng hình luôn..lúc này nhấn MOD nó ko tự tăng giá trị nữa mà nó ko đếm tg như trước khi chưa bấm..giống như bị treo vậy....
Bán dụng cụ tình yêu cho les loại...
Hôm qua, 08:53 PM in Rao vặt tổng hợp