📄 dh_lcd_4.c
字号:
#include<pic.h>
#include <stdio.h>
#include <math.h>
#define rs RD0
#define rw RD1
#define e RD2
#define d PORTD
unsigned char g;
unsigned char i,j,p,h,n,pn,hn;
unsigned char const a[]= { 0x28, 0x0c, 1, 6};
unsigned char const *thu[]={"Monday","Tue","Wen","Thu","Fri","Sat","Sun"};
void ghi(unsigned char x,unsigned char y);
unsigned char doc();
void toado( unsigned char x, unsigned char y);
unsigned char swit(unsigned int k);
void hienchu(unsigned char const *str,unsigned char const x,unsigned char const y);
void CT1();
void CT2();
void CT3();
void CT4();
// Interrupt Handler
void interrupt TM1()
{
// Timer1 Interrupt - Freq = 60.00 Hz - Period = 0.01666560 seconds
if (INTF==1)
{INTF=0;
n++;}
if (TMR1IF == 1)
{
TMR1IF = 0;
TMR1IE = 1;
TMR1H = 215;
TMR1L = 80;
i++;
if(i==60)
{
j++;
i=0;
if(j==60)
{p=p++;
j=0;
if(p==60)
{h++;
p=0;
if(h==24)
h=0;
}
}
}
}
}
void delay_us(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++);
}
void delay_ms(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++) delay_us(255);
}
void khoitao()
{
int i;
rs=0;
rw=0;
e=0;
ghi(0,a[0]>>4);
for(i=1;i<=4;++i)
ghi(0,a[i]);
}
void init()
{
TRISB=0xff;
TRISC=0;
PORTC=0;
TRISD=0;
PORTD=0;
i=0;n=0;
j=0;p=0;h=0;
pn=0;hn=0;
//Timer1 Registers Prescaler= 8 - TMR1 Preset = 3036 - Freq = 10.00 Hz - Period = 0.100000 seconds
T1CKPS1 = 1;
T1CKPS0 = 1;
T1OSCEN = 0;
T1SYNC = 1;
TMR1CS = 0;
TMR1ON = 0;
TMR1H = 215;
TMR1L = 80;
// Interrupt Registers
INTCON = 0;
INTE = 1;
INTF = 0;
TMR0IE = 0;
TMR1IF = 0;
TMR1IE = 1;
TMR0IF = 0;
GIE = 1;
PEIE = 1;
}
// code starts here...
void main()
{
init();
khoitao();
delay_us(100);
ghi(0,0x28);
while(n==0){}
while(1)
{
while(n%2==1)
{if((n%2==1)&&n>3) n=3;
TMR1ON = 0;
CT4();
CT1();
hienchu("Good Luck!",3,2);}
if(n==2)
{pn=p;
hn=h;
p=0;
h=0;
n=4;}
if(n==4)
{TMR1ON = 1;
CT1();
hienchu("Good Luck!",3,2);}
/* if(n==3)
{TMR1ON = 0;
CT2();}
if(n==4)
{TMR1ON = 0;
CT3();}
if(n>4) {TMR1ON=1;}*/
if(pn!=0|hn!=0&&h==hn&&p==pn)
{while(p==pn)
{if(n%2==1) TMR1ON=0;
else TMR1ON=1;
CT1();
hienchu("Be oi day thoi!",1,2);}
if(p==(pn+1)&&j==0)
{delay_ms(50);
ghi(0,0x01);
delay_us(10);}}
}
}
//end void main
unsigned char swit(unsigned int k)
{
switch(k)
{case 0:g='0';break;
case 1:g='1';break;
case 2:g='2';break;
case 3:g='3';break;
case 4:g='4';break;
case 5:g='5';break;
case 6:g='6';break;
case 7:g='7';break;
case 8:g='8';break;
case 9:g='9';break;
}
return(g);
}
void CT1()
{
toado(4,1);
swit(h/10);
ghi(1,g);
delay_us(10);
swit(h%10);
ghi(1,g);
delay_us(10);
ghi(1,':');
delay_us(1);
swit(p/10);
ghi(1,g);
delay_us(10);
swit(p%10);
ghi(1,g);
delay_us(10);
ghi(1,':');
delay_us(10);
swit(j/10);
ghi(1,g);
delay_us(10);
swit(j%10);
ghi(1,g);
delay_us(10);
}
/*
unsigned char doc()
{
unsigned char dat;
d=0x80;
//rs=0;
rw = 1;
e = 1;
dat = d;
e = 0;
return(dat);
}
void CT2()
{
if(RB1==1)
{delay_ms(50);
if(RB1==1)
{while(RB1==1) CT1();
//{for(i=1;i<=600;i++) CT1();
//p++;}
p++;
if(p==60) {p=0;h++;}}}
if(RB2==1)
{delay_ms(50);
if(RB2==1)
{while(RB2==1) CT1();}
if (p>0) p--;}
}
void CT3()
{
if(RB1==1)
{delay_ms(50);
if(RB1==1)
{while(RB1==1) CT1();}
h++;
if(h>24) h=0;}
if(RB2==1)
{delay_ms(50);
if(RB2==1)
{while(RB2==1) CT1();}
if (h>0) h--;}
}
*/
void CT4()
{
if(RB1==1)
{delay_ms(1);
if(RB1==1)
{while(RB1==1) CT1();
p=p+5;
if(p==60) {p=0;h++;}}}
if(RB2==1)
{delay_ms(1);
if(RB2==1)
{while(RB2==1) CT1();}
if (p>0) p=p-5;
else if (h>0) {p=60-5;h--;}}
}
void hienchu(unsigned char const *str,unsigned char const x,unsigned char const y)
{
toado(x,y);
while(*str)
{ghi(1,*str++);
delay_us(10);}
ghi(0,0x02);
delay_us(10);
}
void ghi(unsigned char x,unsigned char y)
{
//rs=0;
//while ( doc()&0x80);
rs=x; //x=0 ghi lenh, x=1 ghi du lieu
delay_us(10);
rw=0;
delay_us(10);
e=0;
d=(y&0xf0)|(PORTD&0x0f);
delay_us(10);
e=1;
delay_us(10);
e=0;
delay_ms(10);
d=(y<<4)|(PORTD&0x0f);
delay_us(10);
e=1;
delay_us(10);
e=0;
delay_ms(10);
}
void toado( unsigned char x, unsigned char y)
{
unsigned char address;
switch(y)
{
case 1 : address=0x80;break;
case 2 : address=0xC0;break;
case 3 : address=0x94;break;
case 4 : address=0xD4;break;
}
address+=x;
ghi(0,address);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -