实时时钟DS1302应用

实时时钟DS1302应用, protues仿真demo,protus 用来仿真DS1302,protus仿真实时时钟,Protues8.5及以上软件打开仿真

应用介绍

实时时钟DS1302应用, protues仿真demo,protus 用来仿真DS1302,protus仿真实时时钟,Protues8.5及以上软件打开仿真


#include<reg51.h>
#include<ds1302.c>

unsigned char flash;
unsigned char cp1,cp2,cp3;													//定义变量
sbit P1_0 = P1^0;															
code unsigned char seven_seg[13] = {0xc0,0xf9,0xa4,0xb0,0x99,
										0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0x7f};			//数字0~9的显示方法
code unsigned char scan[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};		//位选数组
bit conv;

void send(unsigned int x,unsigned int y)									//x表示位选,y表示段选
{
	P1_0 = 0;
	P1_0 = 1;
	P0 = scan[x];
	P1_0 = 0;																//P1.0端口高电平允许存储,P1.0为低电平保存存储
	P0 = seven_seg[y];			
}
void time0_isr(void) interrupt 1											//利用中断对数码管上显示的数据进行刷新
{
	TH0 = (65536 - 2000) / 256;											   //TH0重置函数
	TL0 = (65536 - 2000) % 256;											  //TL0重置函数
	cp1++;
	if(cp1 >= 250)															//0.5秒
	{
		cp1 = 0;
		flash = ~flash;														//产生闪烁变量
		cp2++;
		if(cp2 >= 5)
		{  
			cp2 = 0;
			conv = ~conv;												//产生交替显示变量	
		}	
	}
	if(conv == 1)
	{
		P0 = 0xff;
		switch(cp3)
		{
			case 0:	send(0,sec % 10);break;								//显示秒个位
			case 1: send(1,sec / 10);break;								//显示秒十位
			case 2:	if(flash)send(2,11);								//不显示
					else send(2,10);break;								//显示 -
			case 3: send(3,min % 10);break;								//显示分个位
			case 4:	send(4,min / 10);break;								//显示分十位
			case 5:	if(flash)send(5,11);								//不显示
					else send(5,10);break;								//显示 -
			case 6:	send(6,hour % 10);break;							//显示小时个位
			case 7:	send(7,hour / 10);break;							//显示小时十位		
		}
	}
	else
	{	
		P0 = 0xff;														//消隐
		switch(cp3)
		{
			case 0:	send(0,date % 10);break;								//显示天个位
		 	case 1:	send(1,date / 10);break;								//显示天十位
			case 2:	send(2,month % 10);break;								//显示月个位,
			case 3:	send(3,month / 10);break;								//显示月十位
			case 4:	send(4,year % 10);break;								//显示年个位
			case 5:	send(5,year / 10);break;								//显示年十位
			case 6:	send(6,0);break;										//显示0
			case 7:	send(7,2);break;										//显示2
		}
	}  
	cp3++;
	if(cp3 >= 8)cp3 = 0;			
}
void timer0_init(void)														//Timer0初始化
{																			//方式一
	TMOD = 0x01;															//TH0 预置,65536十六进制低8位。
	TH0 = (65536 - 2000) / 256;												//TL0 预置,65536十六进制低8位。
	TL0 = (65536 - 2000) % 256;
	TR0 = 1;															   //定时器T0开
	ET0 = 1;															   //溢出中断控制位T0开
	EA  = 1;															   //总开关打开
}
void main(void)
{
	unsigned char i = 46;											//举例,比如要调整时间,分钟设定为46分
	i = DEC_BCD_conv(i);
	timer0_init();
	write_ds1302_add_dat(0x8e,0x00);						    	//写操作,可以对DS1302调整
	write_ds1302_add_dat(0x80,0x30);								//写秒,30秒
	write_ds1302_add_dat(0x82,i);							    	//写分,46分
	write_ds1302_add_dat(0x84,0x12);								//写时,12时
	write_ds1302_add_dat(0x86,0x28);								//写日,28日
	write_ds1302_add_dat(0x88,0x05);								//写月,5月 
	write_ds1302_add_dat(0x8a,0x03);								//写星期,星期三
	write_ds1302_add_dat(0x8c,0x12);								//写年,(20)12年
	write_ds1302_add_dat(0x8e,0x80);								//写保护
	while(1)
	{
		get_ds1302_time();
	}
}

文件列表(部分)

名称 大小 修改日期
Last Loaded 实时时钟DS1302.DBK13.56 KB2019-09-03
实时时钟DS1302.DSN14.66 KB2019-09-03
实时时钟DS1302.pdsprj.J8X8KE978YQ8Z68.Administrator.workspace0.22 KB2019-09-03
实时时钟DS1302.PWI0.38 KB2019-09-03
ds1302.c1.18 KB2019-09-03
main.c1.25 KB2019-09-03
main.LST1.91 KB2019-09-03
main.OBJ4.21 KB2019-09-03
实时时钟DS13023.62 KB2019-09-03
实时时钟DS1302.hex0.88 KB2019-09-03
实时时钟DS1302.lnp0.03 KB2019-09-03
实时时钟DS1302.M512.09 KB2019-09-03
实时时钟DS1302.plg0.17 KB2019-09-03
实时时钟DS1302.uvgui.Administrator4.94 KB2019-09-03
实时时钟DS1302.uvopt1.57 KB2019-09-03
实时时钟DS1302.uvproj2.87 KB2019-09-03
实时时钟DS1302_uvopt.bak5.78 KB2019-09-03
实时时钟DS1302_uvproj.bak2.73 KB2019-09-03
仿真0.00 KB2019-09-03
程序0.00 KB2019-09-03
项目14-实时时钟DS1302应用0.00 KB2019-09-03

立即下载

相关下载

[这样的嵌入式经验,没十年,你悟的出来吗?] 嵌入式行业需要什么样的技术人才?仔细观察各种招聘的岗位要求吧,无非是两方面。
[用单片机实现温度远程显示资料] 此文档是用单片机实现温度远程显示资料。 文档介绍了用AT89S8252单片机的串行接口与智能温度巡回检测仪(XJ-08S)通过RS—485总线相互通讯实现热水温度远程显示的一种低成本解决方案,内容涉及RS—485总线通讯、单片机驱动数码管显示、数据转换以及键盘处理软硬件设计等内容。
[基于GSM短信模块的家庭防盗报警系统论文资料] 此文档是基于GSM短信模块的家庭防盗报警系统论文资料。 文档的系统主要由单片机和GSM短信模块组成,借助最可靠、最成熟的GSM移动网络,以最直观的中文短消息或电话形式,直接把报警地点的情况反映到您的手机屏幕上。
[基于单片机的简易逻辑分析仪设计论文资料] 此文档基于单片机的简易逻辑分析仪设计论文资料。
[多功能出租车计价器设计论文资料] 此文档是多功能出租车计价器设计论文资料。 文档讲解了用单片机技术来实现一台多功能出租车计价器,具有性能可靠、电路简单、成本低等特点。
[单片机C语言程序设计实训100例——基于8051+Proteus仿真] 此文档是单片机C语言程序设计实训100例——基于8051+Proteus仿真。 文档中包括:基础部分、硬件应用、综合设计、程序、基于8051+PROTEUS仿真100实例。

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部