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

📄 dianzizhong.c

📁 本文设计实现的是一个多功能数字电子钟
💻 C
字号:
#include<reg52.h>
#include<ds1302.h>
#include<lcd1602.h>
#include<ds18b20.h>
#include<panduan.h>
#include<kaiguan.h>
#include<paobiao.h>
sbit s4=P1^3;
sbit s5=P1^4;
sbit buzzer=P2^5;
uchar tc,s5num,flag1,flag2;
uchar code  table[]="20  -  -        ";
uchar code table1[]="  :  :         C";
void init()
{	
	uint i;
	flag=0;
	flag1=0;
	flag2=1;
	tc=0;
	lcden=0;
	s1num=0;
	s5num=0;
	buzzer=1;
	TMOD=0x10;
	TH1=(65536-10000)/256;
	TL1=(65536-10000)%256;
	EA=1;
	ET1=1;
	write_com(0x38);
	write_com(0x0c);
	write_com(0x06);
	write_com(0x01);
	write_com(0x80);
	for(i=0;i<15;i++)
	{
		write_date(table[i]);
		delay(5);
	}
	write_com(0x80+0x40);
	for(i=0;i<16;i++)
	{
		write_date(table1[i]);
		delay(5);
	}
	
}
void didi()
{
	buzzer=0;
	delay(200);
	buzzer=1;
	delay(200);
}

void shijian_dis()
{		
		
		read_serial(aa);	
			miao=aa[0]/16*10+aa[0]%16;
		write_sfm(6,miao);
			fen=aa[1]/16*10+aa[1]%16;
			if(fen==0)
			//buzzer=0;
			didi();
			else if(fen==1)
			buzzer=1;	
		write_sfm(3,fen);
			shi=aa[2]/16*10+aa[2]%16;
		write_sfm(0,shi);
			ri=aa[3]/16*10+aa[3]%16;
		write_yr(8,ri);
			yue=aa[4]/16*10+aa[4]%16;
		write_yr(5,yue);
			week=aa[5]/16*10+aa[5]%16;	
		write_week(11,week);
			nian=aa[6]/16*10+aa[6]%16;
		write_yr(2,nian);
}


void key_paobiao()
{
	if(s5==0)
	{
		delay(10);
		if(s5==0)
		while(!s5);
		s5num++;
		if(s5num==2)
			s5num=0;
	}
}

void  key4scan()
{		
		if(s4==0)
		{
			delay(5);
			if(s4==0)
			while(!s4)
				write_a(0x80,0x50);
				write_a(0x82,0x59);	
				write_a(0x84,0x15);
				write_a(0x86,3);
				write_a(0x88,5);
				write_a(0x8a,1);
				write_a(0x8c,9);			
		}
}

void main()
{
	init();
	while(1)
	{
		run(nian);
		panduan();
		keyscan();
		key_paobiao();
		while((s5num==1)&&(s1num==0))
		{
				TR1=1;
				flag1=1;
				key_paobiao();
				if(flag2==1)
				{	
					write_com(0x01);
					write_mbinit();
					flag2=0;
				}
				key3scan();

			
		}
		
		if((s5num==0)&&flag1==1)
		{
			uchar i;
			flag1=0;
			flag2=1;
			write_com(0x01);
			write_com(0x80);
			for(i=0;i<15;i++)
			{
				write_date(table[i]);
				delay(5);
			}
			write_com(0x80+0x40);
			for(i=0;i<16;i++)
			{
				write_date(table1[i]);
				delay(5);
			}
			min=0;
			sec=0;
			haosec=0;
	
			
		}
		if((s1num==0)&&(s5num==0))
		{
				TR1=0;
				key4scan();
			shijian_dis();
			wendu_dis();
		
		}
	}
	
		
}

void timer1() interrupt 3
{
	TH1=(65536-1000)/256;
	TL1=(65536-1000)%256;
	tc++;
	if(tc==10)
	{
		flag=1;
		tc=0;
	
	}
}

⌨️ 快捷键说明

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