标题:
单片机液晶24秒倒计时可暂停继续重置
[打印本页]
作者:
zero^
时间:
2021-12-29 09:54
标题:
单片机液晶24秒倒计时可暂停继续重置
#include <reg51.h>
#include <intrins.h>
sbit RS=P0^7;
sbit RW=P0^6;
sbit E=P0^5;
sbit S2=P3^3;
unsigned char count=0;
unsigned char s=24;
unsigned char m=0;
unsigned char h=0;
void lcd_w_cmd(unsigned char com);
void lcd_w_dat(unsigned char dat);
unsigned char lcd_r_start();
void lcd_int();
void delay(unsigned int i);
void delay1();
void int_1() interrupt 2{
if(S2==0){
delay(1200);
if(S2==0){
s=24;
count=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
}
}
}
bit b=0;
void int_0() interrupt 0
{if(b==0)
{TR1=0;b=1;P1=0xfe;}
else{b=0;TR1=1;P1=0xff;}
}
void timer_1() interrupt 3{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
count++;
if(count==20){
count=0;
s--;
if(s==0){
s=24;
}
}
}
void delay1(){
_nop_();
_nop_();
_nop_();
}
void lcd_int(){
lcd_w_cmd(0x3c);
lcd_w_cmd(0x0c);
lcd_w_cmd(0x01);
lcd_w_cmd(0x06);
lcd_w_cmd(0x80);
}
unsigned char lcd_r_start(){
unsigned char s;
RW=1;
delay1();
RS=0;
delay1();
E=1;
delay1();
s=P2;
delay1();
E=0;
delay1();
RW=0;
delay1();
return(s);
}
void lcd_w_cmd(unsigned char com){
unsigned char i;
do{
i=lcd_r_start();
i=i&0x80;
delay(2);
}while(i!=0);
RW=0;
delay1();
RS=0;
delay1();
E=1;
delay1();
P2=com;
delay1();
E=0;
delay1();
RW=1;
delay(255);
}
void lcd_w_dat(unsigned char dat){
unsigned char i;
do{
i=lcd_r_start();
i=i&0x80;
delay(2);
}while(i!=0);
RW=0;
delay1();
RS=1;
delay1();
E=1;
delay1();
P2=dat;
delay1();
E=0;
delay1();
RW=1;
delay(255);
}
void main(){
unsigned char lcd[]="0123456789";
unsigned char i;
TMOD=0x10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
ET1=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
EA=1;
TR1=1;
P2=0xff;
lcd_int();
delay(255);
lcd_w_cmd(0x84);
delay(255);
while(1){
for(i=0;i<9;i++){
switch(i){
case 0:lcd_w_dat(lcd[h/10]);break;
case 1:lcd_w_dat(lcd[h%10]);break;
case 2:lcd_w_dat(':');break;
case 3:lcd_w_dat(lcd[m/10]);break;
case 4:lcd_w_dat(lcd[m%10]);break;
case 5:lcd_w_dat(':');break;
case 6:lcd_w_dat(lcd[s/10]);break;
case 7:lcd_w_dat(lcd[s%10]);break;
case 8:lcd_w_cmd(0x84);break;
}
}
}
}
void delay(unsigned int i){
unsigned int k;
for(k=0;k<i;k++);
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1