PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   PIC - Thiết kế và Ứng dụng (http://www.picvietnam.com/forum/forumdisplay.php?f=23)
-   -   dong ho so hien thi gio phut giay len lcd (http://www.picvietnam.com/forum/showthread.php?t=23253)

daklak 05-06-2012 03:21 PM

dong ho so hien thi gio phut giay len lcd
 
mình đang làm đề tài môn vi điều khiển dùng pic 18f4620 thiết kế đồng hồ số hiển thị trên lcd dùng ma trận phím 4*4 mình làm xong phần hiển thị số rùi nhưng con phần hẹn giờ dùng ma trận phím mình không biết lập trình thế nào bạn nào có thể chỉ giúp mình hướng lập trình với.

#include <p18f4620.h>
#include <delays.h>
#define rs LATEbits.LATE0
#define rw LATEbits.LATE1
#define en LATEbits.LATE2
#define hang1 PORTDbits.RD0
#define hang2 PORTDbits.RD1
#define hang3 PORTDbits.RD2
#define hang4 PORTDbits.RD3
#define cot1 PORTDbits.RD4
#define cot2 PORTDbits.RD5
#define cot3 PORTDbits.RD6
#define cot4 PORTDbits.RD7

char x,y,tt,ch_gio,dv_gio,ch_phut,dv_phut,ch_giay,dv_gi ay,time=0;
long s;
unsigned char i,li,lj;
unsigned char so[]={'0','1','2','3','4','5','6','7','8','9'};
unsigned int gio=0,phut=0,giay=0;
void delay (unsigned char time )
{
for ( li=0 ; li<80; li++ )
{ for ( lj=0 ; lj<time; lj++)
{;}
}
}


void lenh_LCD (unsigned char s)
{
LATC=s;
rs=0;
rw=0;
en=1;
delay(10);
en=0;
delay(10);
}

void data_LCD (unsigned char s)
{
LATC=s;
rs=1;
rw=0;
en=1;
delay(10);
en=0;
delay(10);
}

void hienthi(void)
{
ch_gio=gio/10;
dv_gio=gio%10;
ch_phut=phut/10;
dv_phut=phut%10;
ch_giay=giay/10;
dv_giay=giay%10;

}
void quetphim(void)
{

//====================0123=====================
PORTD=0xfe;
if(PORTDbits.RD0==0&&tt==0)
{x=0;tt=1;
PORTC=so[x];
}
else if(PORTDbits.RD0==0&&tt==1)
{y=0;tt=0;
PORTC=so[y];
delay(3000);
}
else if(PORTDbits.RD1==0&&tt==0)
{x=1;tt=1;
PORTC=so[x];
}
else if(PORTDbits.RD1==0&&tt==1)
{y=1;tt=0;
PORTC=so[y];
delay(3000);
}
else if(PORTDbits.RD2==0&&tt==0)
{x=2;tt=1;
PORTC=so[x];
}
else if(PORTDbits.RD2==0&&tt==1)
{y=2;tt=0;
PORTC=so[y];
delay(3000);
}
else if(PORTDbits.RD3==0&&tt==0)
{x=3;tt=1;
PORTC=so[x];
}
else if(PORTDbits.RD3==0&&tt==1)
{y=3;tt=0;
PORTC=so[y];
delay(3000);
}
//====================4567=====================
PORTD=0xfd;
if(PORTDbits.RD0==0&&tt==0)
{x=4;tt=1;
PORTC=so[x];
}
else if(PORTDbits.RD0==0&&tt==1)
{y=4;tt=0;
PORTC=so[y];
delay(3000);
}
else if(PORTCbits.RC1==0&&tt==0)
{x=5;tt=1;
PORTB=so[x];
}
else if(PORTDbits.RD1==0&&tt==1)
{y=5;tt=0;
PORTC=so[y];
delay(3000);
}
else if(PORTDbits.RD2==0&&tt==0)
{x=6;tt=1;
PORTC=so[x];
}
else if(PORTDbits.RD2==0&&tt==1)
{y=6;tt=0;
PORTC=so[y];
delay(3000);
}
else if(PORTDbits.RD3==0&&tt==0)
{x=7;tt=1;
PORTC=so[x];
}
else if(PORTDbits.RD3==0&&tt==1)
{y=7;tt=0;
PORTC=so[y];
delay(3000);
}
//====================89+-=====================
PORTD=0xfc;
if(PORTDbits.RD0==0&&tt==0)
{x=8;tt=1;
PORTC=so[x];
}
else if(PORTDbits.RD0==0&&tt==1)
{y=8;tt=0;
PORTC=so[y];
delay(3000);
}
else if(PORTDbits.RD1==0&&tt==0)
{x=9;tt=1;
PORTC=so[x];
}
else if(PORTDbits.RD1==0&&tt==1)
{y=9;tt=0;
PORTC=so[y];
delay(3000);
}
}



void initCOUNTER0(void)
{
T0CON=0;
T0CONbits.T0SE=1;
T0CONbits.T0CS=1;
T0CONbits.PSA=1;

}


void interrupt_COUNTER0(void)
{
INTCONbits.GIE=0;
INTCONbits.TMR0IE=0;
INTCONbits.TMR0IF=0;
T0CONbits.TMR0ON=1;
}

void main(void)
{


TRISD=0xff;
TRISC=0x00;
TRISE=0x00;

lenh_LCD(0x38);
lenh_LCD(0x0E);
lenh_LCD(0x01);

initCOUNTER0();



while (1)

{
giay++;
if (giay==60)giay=0,phut++;
if (phut==60)phut=0,gio++;
if (gio ==24)gio=phut=giay=0;

hienthi();
lenh_LCD(0x80);
data_LCD(so[ch_gio]);
delay(50);
lenh_LCD(0x81);
data_LCD(so[dv_gio]);
delay(50);
lenh_LCD(0x82);
data_LCD(':');
lenh_LCD(0x83);
data_LCD(so[ch_phut]);
delay(50);
lenh_LCD(0x84);
data_LCD(so[dv_phut]);
delay(50);
lenh_LCD(0x85);
data_LCD(':') ;
lenh_LCD(0x86);
data_LCD(so[ch_giay]);
delay(50);
lenh_LCD(0x87);
data_LCD(so[dv_giay]);
delay(50);



}

}


Múi giờ GMT. Hiện tại là 02:18 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam