?? edit2.c
字號:
#include <reg51.h>
sbit button1=P1^2;
sbit button2=P1^1;
sbit button3=P1^0;
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit BUZZER=P2^3;
//sfr DATA_LCD=0x80;
sbit ENABLE=P2^6;
sbit R_W=P2^5;
sbit RS=P2^4;
sbit pulse_in=P2^2;
bit init_flag,comp_flag,long_true,count_end,count_mode;
//#define CLEAR 0x01;
unsigned char timing_num,command,data1,display_data[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39},count_mode_char[]={0x55,0x44},init_data[]={0x0,0x0,0x0,0x0,0x0,0x0,0x0},comp_data[]={0x00,0x0,0x0,0x0,0x1,0x0,0x0};
unsigned long num,num1,num2;
void INT0_fun() interrupt 1
{
TR0=0;
TH0=0x4c;
TL0=0x00;
TR0=1;
timing_num++;
if(timing_num==0x3c)
{
long_true=1;
TR0=0;
}
}
void relay()
{
unsigned int i=0;
for(i;i<1000;i++)
;
}
void send_command()
{
RS=0;
R_W=0;
ENABLE=1;
P0=command;
relay();
ENABLE=0;
RS=1;
R_W=1;
}
void send_data( )
{
RS=1;
R_W=0;
ENABLE=1;
P0=data1;
relay();
ENABLE=0;
RS=0;
R_W=1;
}
void display_count_mode()
{
if(count_mode==0)
data1=count_mode_char[0];
else
data1=count_mode_char[1];
command=0x80;
send_command();
send_data();
}
void display_init_data()
{
num=num2;
init_data[0]=num/1000000;
num-=(unsigned long)init_data[0]*1000000;
init_data[1]=num/100000;
num-=(unsigned long)init_data[1]*100000;
init_data[2]=num/10000;
num-=(unsigned long)init_data[2]*10000;
init_data[3]=num/1000;
num-=(unsigned long)init_data[3]*1000;
init_data[4]=num/100;
num-=(unsigned long)init_data[4]*100;
init_data[5]=num/10;
init_data[6]=num%10;
command=0xc1;
send_command();
data1=display_data[init_data[0]];
send_data();
data1=display_data[init_data[1]];
send_data();
data1=display_data[init_data[2]];
send_data();
data1=display_data[init_data[3]];
send_data();
data1=display_data[init_data[4]];
send_data();
data1=display_data[init_data[5]];
send_data();
data1=display_data[init_data[6]];
send_data();
}
void display_comp_data()
{
num=num1;
comp_data[0]=num/1000000;
num-=(unsigned long)comp_data[0]*1000000;
comp_data[1]=num/100000;
num-=(unsigned long)comp_data[1]*100000;
comp_data[2]=num/10000;
num-=(unsigned long)comp_data[2]*10000;
comp_data[3]=num/1000;
num-=(unsigned long)comp_data[3]*1000;
comp_data[4]=num/100;
num-=(unsigned long)comp_data[4]*100;
comp_data[5]=num/10;
comp_data[6]=num%10;
command=0x81;
send_command();
data1=display_data[comp_data[0]];
send_data();
data1=display_data[comp_data[1]];
send_data();
data1=display_data[comp_data[2]];
send_data();
data1=display_data[comp_data[3]];
send_data();
data1=display_data[comp_data[4]];
send_data();
data1=display_data[comp_data[5]];
send_data();
data1=display_data[comp_data[6]];
send_data();
}
void reset_fun()
{
BUZZER=0;
TMOD=0X01;
TH0=0x4c;
TL0=0x00;
EA=1;
ET0=1;
TR0=0;
LED1=0;
LED2=0;
//P0=0xff;
P0=0x00;
num1=100;
num2=0;
timing_num=0x0;
count_mode=0x0;
long_true=0;
init_flag=0;
comp_flag=0;
count_end=1;
command=0x38;
send_command();
//command=0x38;
//send_command();
// command=0x20;
// send_command();
command=0x01;
send_command();
command=0x02;
send_command();
//command=0x04;
//send_command();
command=0x0c;
send_command();
command=0x06;
send_command();
display_count_mode();
//command=0x06;
//send_command();
display_init_data();
//command=0x06;
//send_command();
display_comp_data();
}
void button1_fun()
{
relay();
if(button1==0)
{
if(comp_flag==0)
{
comp_flag=1;
LED1=1;
}
else
{
comp_flag=0;
LED1=0;
}
}
while(button1==0)
{
}
}
void button2_fun()
{
relay();
if(button2==0)
{
if(init_flag==0)
{
init_flag=1;
LED2=1;
}
else
{
init_flag=0;
LED2=0;
}
}
while(button2==0)
{
}
}
void button3_excute()
{
if(init_flag==1)
{
TR0=1;
if(num2==0)
{
if(count_mode==0)
num2++;
else
num2=9999999;
}
else if(num2==9999999)
{
if(count_mode==0)
num2=0;
else
num2--;
}
else
{
if(count_mode==0)
num2++;
else
num2--;
}
display_init_data();
}
if(comp_flag==1)
{
TR0=1;
if(num1==0)
{
if(count_mode==0)
num1++;
else
num1=9999999;
}
else if(num1==9999999)
{
if(count_mode==0)
num1=0;
else
num1--;
}
else
{
if(count_mode==0)
num1++;
else
num1--;
}
display_comp_data();
}
if(comp_flag==0&&init_flag==0)
{
count_mode=~count_mode;
display_count_mode();
}
}
void button3_fun()
{
relay();
if(button3==0)
button3_excute();
while(button3==0)
{
if(long_true)
button3_excute();
;
}
long_true=0;
timing_num=0;
}
void count_fun()
{
if(init_flag==0&&comp_flag==0)
{
if(count_mode==0)
{
if(num2==9999999)
num2=0;
else
num2++;
}
else
{
if(num2==0)
num2=9999999;
else
num2--;
}
}
display_init_data();
while(pulse_in==0)
{
}
}
void main()
{
///RS=0;
//R_W=0;
//num=999999;
//init_data[2]=9;
//num-=(unsigned long)(init_data[2]*100000);
reset_fun();
while(count_end)
{
if(button1==0)
button1_fun();
if(button2==0)
button2_fun();
if(button3==0)
button3_fun();
if(pulse_in==0)
count_fun();
if(num1==num2&&comp_flag==0&&init_flag==0)
count_end=0;
}
relay();
while(1)
{
BUZZER=1;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -