万年历100天后是几号

作者&投稿:茅雯 (若有异议请与网页底部的电邮联系)
2015年元月4号

100分求12864万年历程序!!!~

18b20
#include<reg52.h> //包含单片机寄存器的头文件
#include<intrins.h> //包含_nop_()函数定义的头文件
#define uchar unsigned char
#define uint unsigned int
/***********************************************************************
以下是DS1302芯片的操作程序
************************************************************************/
unsigned char code digit[10]=; //定义字符数组显示数字
sbit DATA=P3^1; //位定义1302芯片的接口,数据输出端定义在P3.1引脚
sbit RST=P3^2; //位定义1302芯片的接口,复位端口定义在P3.2引脚
sbit SCLK=P3^0; //位定义1302芯片的接口,时钟输出端口定义在P3.0引脚
/*****************************************************
函数功能:延时若干微秒
入口参数:n
***************************************************/
void delaynus(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
;
}
void delay_lcd(uint m) //延时程序
{
uint i,j;
for(i=0;i<m;i++)
for(j=0;j<10;j++);
}
/*****************************************************
函数功能:向1302写一个字节数据
入口参数:x
***************************************************/
void Write1302(unsigned char dat)
{
unsigned char i;
SCLK=0; //拉低SCLK,为脉冲上升沿写入数据做好准备
delaynus(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续写8个二进制位数据
{
DATA=dat&0x01; //取出dat的第0位数据写入1302
delaynus(2); //稍微等待,使硬件做好准备
SCLK=1; //上升沿写入数据
delaynus(2); //稍微等待,使硬件做好准备
SCLK=0; //重新拉低SCLK,形成脉冲
dat>>=1; //将dat的各数据位右移1位,准备写入下一个数据位
}

}
/*****************************************************
函数功能:根据命令字,向1302写一个字节数据
入口参数:Cmd,储存命令字;dat,储存待写的数据
***************************************************/
void WriteSet1302(unsigned char Cmd,unsigned char dat)
{
RST=0; //禁止数据传递
SCLK=0; //确保写数居前SCLK被拉低
RST=1; //启动数据传输
delaynus(2); //稍微等待,使硬件做好准备
Write1302(Cmd); //写入命令字
Write1302(dat); //写数据
SCLK=1; //将时钟电平置于已知状态
RST=0; //禁止数据传递
}
/*****************************************************
函数功能:从1302读一个字节数据
入口参数:x
***************************************************/
unsigned char Read1302(void)
{
unsigned char i,dat;
delaynus(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续读8个二进制位数据
{
dat>>=1; //将dat的各数据位右移1位,因为先读出的是字节的最低位
if(DATA==1) //如果读出的数据是1
dat|=0x80; //将1取出,写在dat的最高位
SCLK=1; //将SCLK置于高电平,为下降沿读出
delaynus(2); //稍微等待
SCLK=0; //拉低SCLK,形成脉冲下降沿
delaynus(2); //稍微等待
}
return dat; //将读出的数据返回
}
/*****************************************************
函数功能:根据命令字,从1302读取一个字节数据
入口参数:Cmd
***************************************************/
unsigned char ReadSet1302(unsigned char Cmd)
{
unsigned char dat;
RST=0; //拉低RST
SCLK=0; //确保写数居前SCLK被拉低
RST=1; //启动数据传输
Write1302(Cmd); //写入命令字
dat=Read1302(); //读出数据
SCLK=1; //将时钟电平置于已知状态
RST=0; //禁止数据传递
return dat; //将读出的数据返回
}
/*****************************************************
函数功能: 1302进行初始化设置
***************************************************/
void Init_DS1302(void)
{
WriteSet1302(0x8E,0x00); //根据写状态寄存器命令字,写入不保护指令
WriteSet1302(0x80,((0/10)<<4|(0%10))); //根据写秒寄存器命令字,写入秒的初始值
WriteSet1302(0x82,((0/10)<<4|(0%10))); //根据写分寄存器命令字,写入分的初始值
WriteSet1302(0x84,((12/10)<<4|(12%10))); //根据写小时寄存器命令字,写入小时的初始值
WriteSet1302(0x86,((15/10)<<4|(15%10))); //根据写日寄存器命令字,写入日的初始值
WriteSet1302(0x88,((11/10)<<4|(12%10))); //根据写月寄存器命令字,写入月的初始值
WriteSet1302(0x8c,((10/10)<<4|(10%10))); //根据写年寄存器命令字,写入年的初始值
}
/*******************************************************************************
以下是对液晶模块的操作程序
*******************************************************************************/
sbit RS=P1^0; //寄存器选择位,将RS位定义为P2.0引脚
sbit WRD=P1^1; //读写选择位,将RW位定义为P2.1引脚
sbit E=P1^2;
sbit PSB = P1^3; //H:并口方式 L:串口方式
void TransferData(char data1,bit DI);
uchar code IC_DAT[]={ "08级电子信息工程"
" 10年12月30日 "
" 气温: ℃ "
" 12点00分58秒 "};
/***************LCD字库初始化程序*********************/
void initinal(void)
{

uint i;
delay_lcd(40); //大于40MS的延时程序
PSB=1; //设置为8BIT并口工作模式
delay_lcd(1); //延时
E=0;
delay_lcd(10);//
TransferData(0x30,0); //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
delay_lcd(100); //大于100uS的延时程序
TransferData(0x08,0); //Display on Control
delay_lcd(100); //大于100uS的延时程序
TransferData(0x10,0); //Cursor Display Control光标设置
delay_lcd(100); //大于100uS的延时程序
TransferData(0x0C,0); //Display Control,D=1,显示开
delay_lcd(100); //大于100uS的延时程序
TransferData(0x01,0); //Display Clear 清屏
delay_lcd(10); //大于10mS的延时程序
TransferData(0x06,0); //Enry Mode Set,光标从右向左加1位移动
delay_lcd(100); //大于100uS的延时程序

TransferData(0x80,0); //Set Graphic Display RAM Address 传地址指令
delay_lcd(100);

for(i=0;i<32;i++)
{
TransferData(IC_DAT[i],1);
delay_lcd(2);
}

TransferData(0x90,0); //Set Graphic Display RAM Address
delay_lcd(100);

for(i=32;i<64;i++)
{
TransferData(IC_DAT[i],1);
delay_lcd(2);
}
}
//********写命令/数据*******************************

void TransferData(char data1,bit DI)//传送数据或者命令,当DI=0是,传送命令,//当DI=1,传送数据
{
WRD=0; //R/W="H",E="H",数据被读到DB7--DB0,R/W="L",E="H→L", DB7--DB0的数据被写到IRDR
RS=DI; //RS="H",表示DB7--DB0为显示数据, RS="L",表示DB7--DB0为显示指令数据
delay_lcd(1);
P0=data1;
E=1;
delay_lcd(1);
E=0;
}
/*****************************************************
函数功能:延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delaynms(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
delay1ms();
}



/**************************************************************
以下是1302数据的显示程序
**************************************************************/
/*****************************************************
函数功能:显示秒
入口参数:x
***************************************************/
void DisplaySecond(unsigned char x)
{
uchar i,j; //j,k,l分别储存温度的百位、十位和个位
i=x/10;//取十位
j=x%10;//取个位
TransferData(0x9D,0); //写显示地址,将在第2行第7列开始显示
TransferData(digit[i],1); //将百位数字的字符常量写入LCD
TransferData(digit[j],1); //将十位数字的字符常量写入LCD
delaynms(50); //延时1ms给硬件一点反应时间
}

/*****************************************************
函数功能:显示分钟
入口参数:x
***************************************************/
void DisplayMinute(unsigned char x)
{
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位
i=x/10;//取十位
j=x%10;//取个位
TransferData(0x9b,0); //写显示地址,将在第2行第7列开始显示
TransferData(digit[i],1); //将百位数字的字符常量写入LCD
TransferData(digit[j],1); //将十位数字的字符常量写入LCD
delaynms(50); //延时1ms给硬件一点反应时间
}
/*****************************************************
函数功能:显示小时
入口参数:x
***************************************************/
void DisplayHour(unsigned char x)
{
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位
i=x/10;//取十位
j=x%10;//取个位
TransferData(0x99,0); //写显示地址,将在第2行第7列开始显示
TransferData(digit[i],1); //将百位数字的字符常量写入LCD
TransferData(digit[j],1); //将十位数字的字符常量写入LCD
delaynms(50); //延时1ms给硬件一点反应时间
}
/*****************************************************
函数功能:显示日
入口参数:x
***************************************************/
void DisplayDay(unsigned char x)
{
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位
i=x/10;//取十位
j=x%10;//取个位
TransferData(0x8D,0); //写显示地址,将在第2行第7列开始显示
TransferData(digit[i],1); //将百位数字的字符常量写入LCD
TransferData(digit[j],1); //将十位数字的字符常量写入LCD
delaynms(50); //延时1ms给硬件一点反应时间
}
/*****************************************************
函数功能:显示月
入口参数:x
***************************************************/
void DisplayMonth(unsigned char x)
{
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位
i=x/10;//取十位
j=x%10;//取个位
TransferData(0x8B,0); //写显示地址,将在第2行第7列开始显示
TransferData(digit[i],1); //将百位数字的字符常量写入LCD
TransferData(digit[j],1); //将十位数字的字符常量写入LCD
delaynms(50); //延时1ms给硬件一点反应时间
}
/*****************************************************
函数功能:显示年
入口参数:x
***************************************************/
void DisplayYear(unsigned char x)
{
unsigned char i,j; //j,k,l分别储存温度的百位、十位和个位
i=x/10;//取十位
j=x%10;//取个位
TransferData(0x89,0); //写显示地址,将在第2行第7列开始显示
TransferData(digit[i],1); //将百位数字的字符常量写入LCD
TransferData(digit[j],1); //将十位数字的字符常量写入LCD
delaynms(50); //延时1ms给硬件一点反应时间
}
void read_1302()
{
unsigned char second,minute,hour,day,month,year; //分别储存苗、分、小时,日,月,年
unsigned char show; //储存从1302读取的数据
day=15;
show = ReadSet1302(0x81); //从秒寄存器读数据
second=((show&0x70)>>4)*10 + (show&0x0F);//将读出数据转化
DisplaySecond(second); //显示秒
show = ReadSet1302(0x83); //从分寄存器读
minute=((show&0x70)>>4)*10 + (show&0x0F); //将读出数据转化
DisplayMinute(minute); //显示分
show = ReadSet1302(0x85); //从分寄存器读
hour=((show&0x70)>>4)*10 + (show&0x0F); //将读出数据转化
DisplayHour(hour); //显示小时
show = ReadSet1302(0x87); //从分寄存器读
day=((show&0x70)>>4)*10 + (show&0x0F); //将读出数据转化
DisplayDay(day); //显示日
show = ReadSet1302(0x89); //从分寄存器读
month=((show&0x70)>>4)*10 + (show&0x0F); //将读出数据转化
DisplayMonth(month); //显示月
show = ReadSet1302(0x8d); //从分寄存器读
year=((show&0x70)>>4)*10 + (show&0x0F); //将读出数据转化
DisplayYear(year); //显示年
}
/*///////////ds12b20的温度采集及显示程序///////// */
sbit DQ=P3^7; //DS18B20数据接口
uint code TAB[]=;
uchar temp; //温度寄存器
bit DS18B20; //18B20存在标志,1---存在 0---不存在
void DS18B20_init(void);
void DS18B20_write(uchar in_data);
uchar DS18B20_read();
///////延时子程序/////////
void delay(uint z)
{
for(;z>0;z--)
{}
}
//****************************DS18B20读取温度函数**************************
/*函数功能:DS18B20读取温度
/*输入参数:无/*输出参数:无 */
void get_temper(void)
{
uchar k,T_sign,T_L,T_H;
DS18B20_init(); //DS18B20初始化
if(DS18B20) //判断DS1820是否存在?若DS18B20不存在则返回
{
DS18B20_write(0xcc); // 跳过ROM匹配
DS18B20_write(0x44); //发出温度转换命令
DS18B20_init(); //DS18B20初始化
if(DS18B20) //判断DS1820是否存在?若DS18B20不存在则返回
{
DS18B20_write(0xcc); //跳过ROM匹配
DS18B20_write(0xbe); //发出读温度命令
T_L=DS18B20_read(); //数据读出
T_H=DS18B20_read();
k=T_H&0xf8;
if(k==0xf8)
T_sign=1; //温度是负数
else
T_sign=0; //温度是正数
T_H=T_H&0x07;
temp=(T_H*256+T_L)*0.0625; //温度转换常数
}
}
}
/****************************DS18B20写数据函数**************************
/*函数功能:DS18B20写数据
/*输入参数:要发送写入的数据
/*输出参数:无/*调用模块:_cror_()*/
void DS18B20_write(uchar in_data) //写DS18B20的子程序(有具体的时序要求)
{

uchar q,out_data,k;
out_data=in_data;
for(q=1;q<9;q++) //串行发送数据
{
DQ=0;
DQ=1;
_nop_();
_nop_();

k=out_data&0x01;
if(k==0x01) //判断数据 写1
{
DQ=1;
}
else //写0
{
DQ=0;
}
delay(4); //延时62us
DQ=1;
out_data=_cror_(out_data,1); //循环右移1位
}
}
/**************************DS18B20读函数**************************

/*函数功能:DS18B20读数据
/*输入参数:无
/*输出参数:读到的一字节内容
/*调用模块:delay() */

uchar DS18B20_read()
{
uchar q,in_data,k;
in_data=0;
for(q=1;q<9;q++) //串行发送数据
{
DQ=0;
DQ=1;
_nop_();
_nop_();
k=DQ; //读DQ端
if(k==1) //读到的数据是1
{
in_data=in_data|0x01;
}
else
{
in_data=in_data|0x00;
}
delay(3); //延时51us
DQ=1;
in_data=_cror_(in_data,1); //循环左移1位
}
return(in_data);
}
/**************************DS18B20初始化函数**************************
/*函数功能:DS18B20初始化
/*调用模块:delay() */
void DS18B20_init(void)
{
uchar a;
DQ=1; //主机发出复位低脉冲
DQ=0;
delay(44); //延时540US
DQ=1;
for(a=0;a<0x36&&DQ==1;a++) //等待DS18B20回应

{
a++;
a--;
}
if(DQ)
DS18B20=0; //18B20不存在
else
{
DS18B20=1; // 18B20存在
delay(120); //复位成功!延时240US
}
}

/**************************十六进制转十进制函数**************************
/*函数功能:十六进制转十进制
/*输入参数:要转换的数据
/*输出参数:转换后的数据*/
uchar htd(uchar a)
{
uchar b,c;
b=a%10;
c=b;
a=a/10;
b=a%10;
c=c|b<<4;
return c;
}
void display_temp(char date)
{

char si,ge;
si=TAB[htd(date/10)];
ge=TAB[htd(date%10)];
TransferData(0x94,0); //Set Graphic Display RAM Address 传地址指令
TransferData(0x30+si,1);
delay(200);
TransferData(0x30+ge,1);
delay(200);
// P_L=~DS18B20;

}


/***********函数功能:主函数*********************/
void main(void)
{

initinal(); //将液晶初始化
Init_DS1302(); //将1302初始化
while(1)
{
get_temper(); //测量温度
display_temp(temp);

read_1302();
}
}

再活100就可以了

从2016年六月14号算起100天是几月几号?
答:由万年历计算得出是: 2016年6月24日

宝宝2017年11月29出生到100天是几月几日
答:2017年11月29出生到100天是2018年3月9日 这是万年历截图,所以肯定是准确的,请你给个好评吧

万年历100天后是几号
答:2015年元月4号

10月24号过100天是哪年哪月哪日?包括二十四号。
答:7(10月)+30(11月)+31(12月)+31(1月)+1=100,所以是2011的二月一日。

农历8月17日100天后日期是多少
答:有万年历计算得出是: 2016年1月7日

小华2019年4月13出生,后100天是什么时候
答:7月22号。根据查询万年历信息显示,新生儿100天是指出生后100天,就是从出生当天就开始算,所以2019年4月13日过100天是7月22号。

201810月20号过后100天是2019几月几号
答:2018年10月20号过后100天是2019年1月28号 这是万年历截图,所以肯定是准确的,请你给个好评吧

2021年农历3月25过后100天是农历几月?
答:2021年农历3月25之后100天是农历的七月初七 这是万年历截图,所以肯定是准确的

5月30日再过100天是几月几日日
答:万年历 公历 2015年9月7日 星期一 农历 七月廿五 乙未年【羊年】甲申月 丙戌日 距离今日还有100天 5月30日再过100天是2015年9月7日 星期一‍

今年2月4号之后的100天是哪日?
答:6.计算两个日期之间间隔多少天 7.计算两个日期之间间隔多少天时,可分别向两个日期中添加节日 (1)选中“第一个日期”后面的“允许插入节日”即可在第一个日期中插入节日。第二个日期同理。8.计算今天之前n天是几月几日 9.计算今天之后n天是几月几日 10.某年某月某日期之前n天是几月几日 11...