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

📄 shizhong.c

📁 51单片机学习C源代码包含多个例子程序由实际经验丰富老师编写
💻 C
字号:
#include<reg52.h>
#include<define.h>
void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}

void didi() 
{
	beep=0;
	delay(50);
	beep=1;
	delay(100);
	beep=0;
	delay(50);
	beep=1;
}
void write_com(uchar com)
{
	rs=0;
	lcden=0;
	P0=com;
	delay(5);
	lcden=1;
	delay(5);
	lcden=0;	
}

void write_date(uchar date)
{
	rs=1;
	lcden=0;
	P0=date;
	delay(5);
	lcden=1;
	delay(5);
	lcden=0;	
}

void init()
{
	uchar num;
	EA=1;
	EX0=1;
	IT0=1;

	dula=0;
	wela=0;
	lcden=0;
//	set_time();
	set_alarm(14,13,10);
	write_ds(0x0B,0x26);
	read_ds(0x0c);
//	fen=59;
//	miao=53;
//	shi=23;
	write_com(0x38);
	write_com(0x0c);
	write_com(0x06);
	write_com(0x01);
	write_com(0x80);
	for(num=0;num<15;num++)
		{
			write_date(table[num]);
			delay(5);
		}
	write_com(0x80+0x40);
	for(num=0;num<12;num++)
		{
			write_date(table1[num]);
			delay(5);
		}

}

void write_sfm(uchar add,uchar date)
{
	uchar shi,ge;
	shi=date/10;
	ge=date%10;
	write_com(0x80+0x40+add);
	write_date(0x30+shi);
	write_date(0x30+ge);
}

void keyscan()
{
	rd=0;
	if(flag1==1)
	{
		if(s2==0)
		{	
			delay(5);
			if(s2==0)
			{
				while(!s2);
				flag1=0;
			}
			 	
		}
		if(s3==0)
		{	
			delay(5);
			if(s3==0)
			{
				while(!s3);
				flag1=0;
			}
			 	
		}
	}
		
	if(s1==0)	
	{
		delay(5);
		if(s1==0)
		{	s1num++;
			flag=1;
			flag1=0;
			while(!s1);
			if(s1num==1)
			{
				TR0=0;
				write_com(0x80+0x40+10);
				write_com(0x0f);
			}
	}
			if(s1num==2)
			{
				write_com(0x80+0x40+7);
			}
			if(s1num==3)
			{
				write_com(0x80+0x40+4);
			}
			if(s1num==4)
			{
				s1num=0;
				write_com(0x0c);
				flag=0;
				write_ds(0,miao);
				write_ds(2,fen);
				write_ds(4,shi);
			}

				
		}
		if(s1num!=0)
		{
			if(s2==0)
			{
				delay(1);
				if(s2==0)
				{
					while(!s2);
					if(s1num==1)
					{
						miao++;
						if(miao==60)
							miao=0;
						write_sfm(10,miao);
						write_com(0x80+0x40+10);
						
						
					}
					if(s1num==2)
					{
						fen++;
						if(fen==60)
							fen=0;
						write_sfm(7,fen);
						write_com(0x80+0x40+7);
					}
					if(s1num==3)
					{
						shi++;
						if(shi==24)
							shi=0;
						write_sfm(4,shi);
						write_com(0x80+0x40+4);
					}
				}
			}
			if(s3==0)
			{
				delay(1);
				if(s3==0)
				{
					while(!s3);
					if(s1num==1)
					{
					/*	if(miao==0)
						{
							miao=59;
							write_sfm(10,miao);
							write_com(0x80+0x40+10);
						}*/
						miao--;
						if(miao==-1)
							miao=59;
						write_sfm(10,miao);
						write_com(0x80+0x40+10);
					}
					if(s1num==2)
					{
						fen--;
						if(fen==-1)
							fen=59;
						write_sfm(7,fen);
						write_com(0x80+0x40+7);
					}
					if(s1num==3)
					{
						shi--;
						if(shi==-1)
							shi=23;
						write_sfm(4,shi);
						write_com(0x80+0x40+4);
					}
				}
			}
		}
}

void write_ds(uchar add,uchar date)
{
	dscs=0;
	dsas=1;
	dsds=1;
	dsrw=1;
	P0=add;
	dsas=0;
	dsrw=0;
	P0=date;
	dsrw=1;
	dsas=1;
	dscs=1;				
}

uchar read_ds(uchar add)
{
 	uchar ds_date;
	dsas=1;
	dsds=1;
	dsrw=1;
	dscs=0;
	P0=add;
	dsas=0;
	dsds=0;
	P0=0xff;
	ds_date=P0;
	dsds=1;
	dsas=1;
	dscs=1;
	return ds_date;	
}

void set_time()
{
	write_ds(4,10);
	write_ds(2,32);
	
}

void set_alarm(uchar ashi,uchar afen,uchar amiao)
{
	write_ds(1,amiao);
	write_ds(3,afen);
	write_ds(5,ashi);
}
void main()
{
	init();
	while(1)
	{
		keyscan();
		if(flag1==1)
			didi();
		if(flag==0)
		{
			miao=read_ds(0);	
			fen=read_ds(2);
			shi=read_ds(4);
			write_sfm(10,miao);
			write_sfm(7,fen);
			write_sfm(4,shi);
		}
	}
}

void exter() interrupt 0
{	uchar c;
	flag1=1;
	c=read_ds(0x0c);
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -