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

📄 ds1302.c

📁 能用串口修改时间的时钟程序
💻 C
字号:
/************************************/
/*ds1302+ds18b20温度时钟            */       
/*目标器件:AT89S51					*/
/*晶振:11.0592MHZ					*/
/*编译环境:Keil 7.50A              */
/*串口修改时间的格式为:以a开头加年 */
/*加月加日加星期加时加分加秒加b结束 */
/*如a0807281163812b.                */          
/************************************/

/*********************************包含头文件********************************/
#include <at89x52.h>
#include <intrins.h>

/*********************************端口定义**********************************/
sbit DS1302_CLK = P1^0;
sbit DS1302_IO  = P1^1;
sbit DS1302_RST = P1^2;
sbit K1 = P3^2;
sbit K2 = P3^3;
sbit DQ=P3^3;
/*******************************共阳LED段码表*******************************/
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc6,0x7f};

/******************************定义全局变量*********************************/
unsigned char second,minute,hour,week,day,month,year;	//秒、分、时、星期、日、月、年
//unsigned char minute1,hour1;
unsigned char second1,minute1,hour1,week1,day1,month1,year1;
unsigned char t1,t2,i;
unsigned char secondchar,minutechar,hourchar,weekchar,daychar,monthchar,yearchar;
unsigned char keysum ;
unsigned char key_s, key_v, tmp;
unsigned char key_s1, key_v1;
unsigned char  tab1[10];
unsigned char dat;				//定义全局变量
unsigned long dat1;
unsigned char ii,jj;
unsigned char RxdFlag;
//char code str[] = "www.jiundingantong.com  ";



/*********************************定义全局变量******************************/
unsigned char tempL=0; 			//临时变量低位
unsigned char tempH=0;			//临时变量高位
float temperature;     			//温度值


//串行口初始化程序
void Init_Com(void)
{
     TMOD = 0x20; 	// 定时器1工作于8位自动重载模式, 用于产生波特率
     PCON = 0x00;   // 波特率不倍增//
     SCON = 0x50;	// 串口工作方式1//		
     TH1 = 0xFd;    // 9600Kbps//
     TL1 = 0xFd;
     TR1 = 1;		// 启动定时器1,开启中断//		
}


void send_char(unsigned char txd)     // 传送一个字符
{
	SBUF = txd;             // 传送数据
	while(!TI);				// 等特数据传送
	TI = 0;					// 清除数据传送标志
}




/****************************************************************************
函数功能:延时子程序(温度显示部分用)
入口参数:k
出口参数:
****************************************************************************/
void delayy(unsigned int k)

{         
	unsigned int n;     
	n=0;       
	while(n < k)      
	{n++;}        
	return;       
} 
   
/****************************************************************************
函数功能:延时子程序(时间显示部分用)
入口参数:
出口参数:
****************************************************************************/

void delay1(void)
{
	int k;
	for(k=0;k<400;k++);
}     

/****************************************************************************
函数功能:数码管显示子程序(正常显示温度)
入口参数:k
出口参数:
****************************************************************************/
void displayy(int k)
{
	/*P2=0xfe;			
	P0=tab[k/1000];
	delay1();
	P2=0xfd;
	P0=tab[k%1000/100];
	delay1();*/
	P2=0xff;           //关闭P2口//
	P2=0xfb;           //温度显示的十位的位选//
	P0=tab[k%100/10];  //温度显示的十位//
	delay1();
	P2=0xf7;           //温度显示的个位的位选//
	P0=tab[k%10];      //温度显示的个位//
	delay1();
    P2=0xdf;           //字符C的位选//
	P0=0xc6;   //从DP段开始倒数:DP、G、F、E、D、C、B、A/11000110即16进制C6,显示字符

⌨️ 快捷键说明

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