⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 edit2.c

📁 控制数码管,键盘,带eeprom,可启动,暂停等功能
💻 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 + -