万年历算法全集

万年历算法全集
万年历算法全集

万年历算法全集

程序匠人发表于 2006-3-31 19:39:00 阅读全文(3135) | 回复(1) | 引用通告(1) | 编辑万年历全集

程序可以实现如下三种功能:

求某个日期对应的星期

求某年某月有的天数

输出某年的日历.

例如,打印2006年日历如下:

--------------------------------------------------------------------------

2006 年

--------------------------------------------------------------------------

一月二月

周日周一周二周三周四周五周六周日周一周二周三周四周五周六

1 3 5 7 9 11 13 1 3 5 7

14 15 16 17 18 19 20 8 9 10 11 12 13 14

21 22 23 24 25 26 27 15 16 17 18 19 20 21

28 29 30 31 22 23 24 25 26 27 28

三月四月

周日周一周二周三周四周五周六周日周一周二周三周四周五周六

1 3 5 7 1

8 9 10 11 12 13 14 2 3 4 5 6 7 8

15 16 17 18 19 20 21 9 10 11 12 13 14 15

22 23 24 25 26 27 28 16 17 18 19 20 21 22

29 30 31 23 24 25 26 27 28 29

30

五月六月

周日周一周二周三周四周五周六周日周一周二周三周四周五周六 1 3 5 7 9 11 1 3 5

12 13 14 15 16 17 18 6 7 8 9 10 11 12

19 20 21 22 23 24 25 13 14 15 16 17 18 19

26 27 28 29 30 31 20 21 22 23 24 25 26

27 28 29 30

七月八月

周日周一周二周三周四周五周六周日周一周二周三周四周五周六 1 1 3 5 7 9

2 3 4 5 6 7 8 10 11 12 13 14 15 16

9 10 11 12 13 14 15 17 18 19 20 21 22 23

16 17 18 19 20 21 22 24 25 26 27 28 29 30

23 24 25 26 27 28 29 31

30 31

九月十月

周日周一周二周三周四周五周六周日周一周二周三周四周五周六 1 3 1 3 5 7 9 11 13

4 5 6 7 8 9 10 14 15 16 17 18 19 20

11 12 13 14 15 16 17 21 22 23 24 25 26 27

18 19 20 21 22 23 24 28 29 30 31

25 26 27 28 29 30

十一月十二月

周日周一周二周三周四周五周六周日周一周二周三周四周五周六

1 3 5 7 1 3

8 9 10 11 12 13 14 4 5 6 7 8 9 10

15 16 17 18 19 20 21 11 12 13 14 15 16 17

22 23 24 25 26 27 28 18 19 20 21 22 23 24

29 30 25 26 27 28 29 30 31

原代码如下:

一,非打印版(:即只能输出到屏幕,不可输出到文件)

/*万年历全集:程序可以实现如下三种功能:

求某个日期对应的星期

求某年某月有的天数

输出某年的日历

*/

/*2006-1-2 梁见斌*/

#i nclude

#i nclude

struct mon

{

int maxdata;

int data;

};

void SeekWeekDay(void); //求某个日期对应的星期函数

int WeekDay(int year, int month, int day); //根据输入的日期,返回对应的星期void HowManyDays(void);//求某年某月有的天数函数

int MonthDays(int year, int month);//根据输入的年号和月份,返回该月的天数void PrintWeek(int weekday);//打印星期几

void PrintMonth(int month); //打印月份

void PrintData(); //打印日历

int main(void)

{

int choice;

while(1)

{

puts("------------------------------------------");

puts("请输入您的选择:");

puts("输入1求某个日期对应的星期");

puts("输入2求某年某月有的天数");

puts("输入3输出某年的日历");

puts("输入4结束程序");

puts("------------------------------------------");

scanf("%d", &choice); fflush(stdin);

switch(choice)

{

case 1: SeekWeekDay(); break;

case 2: HowManyDays(); break;

case 3: PrintData(); break;

case 4: return 0;

default: puts("输入错误,请重新输入"); break;

}

printf("\n"); printf("\n");

}

system("pause");

return 0;

}

void HowManyDays(void) //求某年某月有的天数函数

{

int year, month, days;

puts("请输入年号和月份:");

scanf("%d%d", &year, &month); fflush(stdin);

printf("你的输入为 %d年%d月,", year, month);

days = MonthDays(year, month); //根据输入的年号和月份,返回该月的天数 printf(" %d年%d月有%d天\n", year, month, days);

}

void SeekWeekDay(void) //求某个日期对应的星期函数

{

int year, month, day, weekday;

puts("请输入年,月,日:");

scanf("%d%d%d", &year, &month, &day); fflush(stdin);

printf("你的输入为 %d年%d月%d日\n", year, month, day);

weekday = WeekDay(year, month, day); //根据输入的日期,返回对应的星期 printf("这天是 ");

PrintWeek(weekday); //打印星期几

void PrintWeek(int weekday)//打印星期几

{

switch(weekday)

{

case 0 : printf("%s","周日 "); break;

case 1 : printf("%s","周一 "); break;

case 2 : printf("%s","周二 "); break;

case 3 : printf("%s","周三 "); break;

case 4 : printf("%s","周四 "); break;

case 5 : printf("%s","周五 "); break;

case 6 : printf("%s","周六 "); break;

}

}

void PrintMonth(int month) //打印月份

{

switch(month)

{

case 1 : printf("%s","一月 "); break;

case 2 : printf("%s","二月 "); break;

case 3 : printf("%s","三月 "); break;

case 4 : printf("%s","四月 "); break;

case 5 : printf("%s","五月 "); break;

case 6 : printf("%s","六月 "); break;

case 7 : printf("%s","七月 "); break;

case 8 : printf("%s","八月 "); break;

case 9 : printf("%s","九月 "); break;

case 10: printf("%s","十月 "); break;

case 11: printf("%s","十一月 "); break;

case 12: printf("%s","十二月 "); break;

}

}

int WeekDay(int year, int month, int day) //根据输入的日期,返回对应的星期{

int i;

int run=0, ping=0;

long sum;

for(i=1; i {

if(i%4==0 && i%100!=0 || i%400==0)

run++;

else

ping++;

}

sum = 366*run + 365*ping;

for(i=1; i sum += MonthDays(year, i);

sum += day; //计算总天数

return (int)sum%7;

}

int MonthDays(int year, int month)//根据输入的年号和月份,返回该月的天数{

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12: return 31;

case 4:

case 6:

case 9:

case 11: return 30;

case 2: if(year%4==0 && year%100!=0 || year%400==0)

return 29;

else

return 28;

default: puts("这是一个错误的月份!"); system("pause"); return 0; }

}

void PrintData(void)//打印日历,对输出格式的控制较复杂

{

struct mon month[13];

int i, j, k;

int year, mon, week;

puts("请输入年号:");

scanf("%d", &year);

for(i=1; i<13; i++) //存储该年每个月的总天数和初始日期

{

month[i].data = 1;

month[i].maxdata = MonthDays(year, i);

}

for(i=0; i<6; i++) //总共输出6排

{

for(j=1; j<=2; j++) //每排输出2个月

{

mon = 2*i + j;

printf("%15s", " ");

PrintMonth(mon); //第一行打印月份

printf("%15s", " ");

if(j==1)

printf("\t");

}

printf("\n"); printf("\n");

for(j=1; j<=2; j++)

{

for(k=0; k<7; k++)

{

PrintWeek(k); //第2行打印星期

}

printf("\t");

}

printf("\n");

for(j=1; j<=2; j++)

{

mon = 2*i + j;

week = WeekDay(year, mon, 1);//根据输入的日期,返回对应的星期

printf("%*d ", week*5+2, month[mon].data++); //控制输出格式,把每月的1日打印在对应星期的下面

week++;

while(week < 7) //接着在该行打印该周剩余的日期

{

printf("%2d ", month[mon].data++);

week++;

}

if(j==1)

printf("\t");

}

printf("\n"); printf("\n");//从第4行起打印该月剩余的日期,每7个一行;直至该月日期打印完毕

while(month[2*i+1].data<=month[2*i+1].maxdata || month[2*i+2].data<=month[2*i+2].maxdata)

{

for(j=1; j<=2; j++)

{

mon = 2*i + j;

for(k=0; k<7; k++)

{ //如果该月日期未打印完,打印该日期

if(month[mon].data<=month[mon].maxdata)

printf("%2d ", month[mon].data++);

else //否则输出空格

printf(" ");

}

if(j==1)

printf("\t");

}

printf("\n"); printf("\n");

}

printf("\n");

}

}

二,打印版(:即既能输出到屏幕,又可输出到文件)

/*万年历全集:程序可以实现如下三种功能:

求某个日期对应的星期

求某年某月有的天数

输出某年的日历

*/

/*2006-1-2 梁见斌*/

#i nclude

#i nclude

struct mon

{

int maxdata;

int data;

};

void SeekWeekDay(void); //求某个日期对应的星期函数

int WeekDay(int year, int month, int day); //根据输入的日期,返回对应的星期void HowManyDays(void);//求某年某月有的天数函数

int MonthDays(int year, int month);//根据输入的年号和月份,返回该月的天数void PrintWeek(int weekday, FILE *fp);//打印星期几

void PrintMonth(int month, FILE *fp); //打印月份

void PrintData(); //打印日历

int main(void)

{

int choice;

while(1)

{

puts("------------------------------------------");

puts("请输入您的选择:");

puts("输入1求某个日期对应的星期");

puts("输入2求某年某月有的天数");

puts("输入3输出某年的日历");

puts("输入4结束程序");

puts("------------------------------------------");

scanf("%d", &choice); fflush(stdin);

switch(choice)

{

case 1: SeekWeekDay(); break;

case 2: HowManyDays(); break;

case 3: PrintData(); break;

case 4: return 0;

default: puts("输入错误,请重新输入"); break;

}

printf("\n"); printf("\n");

}

system("pause");

return 0;

}

void HowManyDays(void) //求某年某月有的天数函数

{

int year, month, days;

puts("请输入年号和月份:");

scanf("%d%d", &year, &month); fflush(stdin);

printf("你的输入为 %d年%d月,", year, month);

days = MonthDays(year, month); //根据输入的年号和月份,返回该月的天数 printf(" %d年%d月有%d天\n", year, month, days);

}

void SeekWeekDay(void) //求某个日期对应的星期函数

{

FILE *fp;

int year, month, day, weekday;

if ( (fp=fopen("wnlweek.txt","w+")) == NULL)

{

fprintf(stderr,"\nError opening file\n");

exit(1);

}

puts("请输入年,月,日:");

scanf("%d%d%d", &year, &month, &day); fflush(stdin);

printf("你的输入为 %d年%d月%d日\n", year, month, day);

weekday = WeekDay(year, month, day); //根据输入的日期,返回对应的星期

printf("这天是 ");

PrintWeek(weekday, fp); //打印星期几

}

void PrintWeek(int weekday, FILE *fp)//打印星期几

{

switch(weekday)

{

case 0 : fprintf(stdout, "%s","周日 "); fprintf(fp, "%s","周日 "); break;

case 1 : fprintf(stdout, "%s","周一 "); fprintf(fp, "%s","周一 ");break;

case 2 : fprintf(stdout, "%s","周二 "); fprintf(fp, "%s","周二 ");break;

case 3 : fprintf(stdout, "%s","周三 "); fprintf(fp, "%s","周三 ");break;

case 4 : fprintf(stdout, "%s","周四 "); fprintf(fp, "%s","周四 "); break;

case 5 : fprintf(stdout, "%s","周五 "); fprintf(fp, "%s","周五 ");break;

case 6 : fprintf(stdout, "%s","周六 "); fprintf(fp, "%s","周六 ");break;

}

}

void PrintMonth(int month, FILE *fp) //打印月份

{

switch(month)

{

case 1 : fprintf(stdout, "%s","一月 "); fprintf(fp, "%s","一月 ");break; case 2 : fprintf(stdout, "%s","二月 "); fprintf(fp, "%s","二月 ");break; case 3 : fprintf(stdout, "%s","三月 "); fprintf(fp, "%s","三月 ");break; case 4 : fprintf(stdout, "%s","四月 "); fprintf(fp, "%s","四月 ");break; case 5 : fprintf(stdout, "%s","五月 "); fprintf(fp, "%s","五月 ");break; case 6 : fprintf(stdout, "%s","六月 "); fprintf(fp, "%s","六月 ");break; case 7 : fprintf(stdout, "%s","七月 "); fprintf(fp, "%s","七月 ");break; case 8 : fprintf(stdout, "%s","八月 "); fprintf(fp, "%s","八月 ");break; case 9 : fprintf(stdout, "%s","九月 "); fprintf(fp, "%s","九月 ");break; case 10: fprintf(stdout, "%s","十月 "); fprintf(fp, "%s","十月 ");break; case 11: fprintf(stdout, "%s","十一月 "); fprintf(fp, "%s","十一月 "); break; case 12: fprintf(stdout, "%s","十二月 "); fprintf(fp, "%s","十二月 "); break; }

}

int WeekDay(int year, int month, int day) //根据输入的日期,返回对应的星期

{

int i;

int run=0, ping=0;

long sum;

for(i=1; i {

if(i%4==0 && i%100!=0 || i%400==0)

run++;

else

ping++;

}

sum = 366*run + 365*ping;

for(i=1; i sum += MonthDays(year, i);

sum += day; //计算总天数

return (int)sum%7;

}

int MonthDays(int year, int month)//根据输入的年号和月份,返回该月的天数{

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12: return 31;

case 4:

case 6:

case 9:

case 11: return 30;

case 2: if(year%4==0 && year%100!=0 || year%400==0)

return 29;

else

return 28;

default: puts("这是一个错误的月份!"); system("pause"); return 0; }

}

void PrintData(void)//打印日历,对输出格式的控制较复杂

{

FILE *fp;

struct mon month[13];

int i, j, k;

int year, mon, week;

if ( (fp=fopen("wnldata.txt","w+")) == NULL)

{

fprintf(stderr,"\nError opening file\n");

exit(1);

}

puts("请输入年号:");

scanf("%d", &year);

fprintf(stdout,

"--------------------------------------------------------------------------\n"); fprintf(fp,

"--------------------------------------------------------------------------\n"); fprintf(stdout, "%35d %s\n", year, "年"); fprintf(fp, "%35d %s\n", year,"年"); fprintf(stdout,

"--------------------------------------------------------------------------\n"); fprintf(fp,

"--------------------------------------------------------------------------\n"); for(i=1; i<13; i++) //存储该年每个月的总天数和初始日期

{

month[i].data = 1;

month[i].maxdata = MonthDays(year, i);

}

for(i=0; i<6; i++) //总共输出6排

{

for(j=1; j<=2; j++)//每排输出2个月

{

mon = 2*i + j;

fprintf(stdout, "%15s", " "); fprintf(fp, "%15s", " ");

PrintMonth(mon, fp); //第一行打印月份

fprintf(stdout, "%15s", " "); fprintf(fp, "%15s", " ");

if(j==1)

{ fprintf(stdout, "\t"); fprintf(fp, "\t"); }

}

fprintf(stdout, "\n"); fprintf(stdout, "\n"); fprintf(fp, "\n"); fprintf(fp, "\n");

for(j=1; j<=2; j++)

{

for(k=0; k<7; k++)

{

PrintWeek(k, fp); //第2行打印星期

}

fprintf(stdout, "\t"); fprintf(fp, "\t");

}

printf("\n"); fprintf(fp, "\n");

for(j=1; j<=2; j++)

{

mon = 2*i + j;

week = WeekDay(year, mon, 1); //根据输入的日期,返回对应的星期

//控制输出格式,把每月的1日打印在对应星期的下面

fprintf(stdout, "%*d ", week*5+2, month[mon].data); fprintf(fp, "%*d ", week*5+2, month[mon].data);

month[mon].data++;

week++;

while(week < 7) //接着在该行打印该周剩余的日期

{

fprintf(stdout, "%2d ", month[mon].data++); fprintf(fp, "%2d ", month[mon].data++);

week++;

}

if(j==1)

{ fprintf(stdout, "\t"); fprintf(fp, "\t"); }

}

fprintf(stdout, "\n"); fprintf(stdout, "\n"); fprintf(fp, "\n"); fprintf(fp, "\n");

//从第4行起打印该月剩余的日期,每7个一行;直至该月日期打印完毕

while(month[2*i+1].data<=month[2*i+1].maxdata || month[2*i+2].data<=month[2*i+2].maxdata)

{

for(j=1; j<=2; j++)

{

mon = 2*i + j;

for(k=0; k<7; k++)

{

if(month[mon].data<=month[mon].maxdata)

{ //如果该月日期未打印完,打印该日期

fprintf(stdout, "%2d ", month[mon].data);

fprintf(fp, "%2d ", month[mon].data);

month[mon].data++;

}

else //否则输出空格

{ fprintf(stdout, " "); fprintf(fp," "); }

}

if(j==1)

{ fprintf(stdout, "\t"); fprintf(fp, "\t"); }

}

fprintf(stdout, "\n"); fprintf(stdout, "\n"); fprintf(fp, "\n"); fprintf(fp, "\n");

}

fprintf(stdout, "\n"); fprintf(fp, "\n");

}

fclose(fp);

}

基于AT89C51的数字万年历设计

江西理工大学南昌校区 毕业设计(论文) 题目:基于AT89C51的数字万年历设计 系别:信息工程系 专业:电气自动化 班级:09电子自动化1班 学生: 学号:09321131 指导教师:职称:助教

摘要 电子万年历是一种日常广泛应用的计时工具,在现代社会中越来越流行。数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周、时、分、秒、温度等信息,还具有时间校准等功能。第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。 本文中万年历的设计过程在硬件与软件方面进行同步设计,硬件部分主要由AT89C51单片机,液晶显示电路,复位电路,时钟电路,稳压电路电路等组成。在单片机的选择上使用了AT89C51单片机,该单片机适合于许多较为复杂控制应用场合,显示器使用液晶LCD1602。软件方面主要包括日历程序、液晶驱动程序、显示程序等,这些程序采用C语言编写。所有程序编写完成后,在Keil C51软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。并且利用Protel软件进行制图,画出PCB图并且制作出实物。 关键词: 时钟电钟;液晶LCD1602;单片机

ABSTRACT E-calendar is a very extensive daily timing tool, more popular in modern society. For digital electronic calendar using intuitive digital display, simultaneously displays year, month, day, day, hour, minute, second, temperatures and other information, also with a time calibration capabilities. The third revolution is a single-chip digital timing technology ( electronic calendar ), so that the timing product walk time difference from graded narrowing to 1/ 6000000 of a second, from the original traditional pointer timing for the development of people's daily more familiar luminous digital display, intuitive and clear, and the increase of the full automatic date, week, temperature and other daily auxiliary information display function, which is more in line with consumer needs. Therefore, the electronic calendar brings a watch industry a big progress. Synchronizing design of calendar is based on hardware and software design. Hardware part by AT89C51 microcontroller, circuit for LCD, reset circuit, clock circuits, voltage-stabilizing circuit and serial download circuits and other components of the circuit. On the choice of using single-chip microcomputer AT89C51 microcontroller, the microcontroller is suitable for a host of complex control applications. Monitor LCD LCD1602. Software includes calendar, LCD drivers, display program. Programs using a language. All the programming is completed, Kiel C51 debugging software, sure no problem, in Proteus software embedded in single-chip microcomputer in the simulation. And the use of Portal software for drawing and draw the PCB. Keywords : clock electric clock II

数字万年历的制作

数字万年历的制作 数字显示万年历,它采用一枚专用软封装的时钟芯片,驱动15只红色共阳极数码管,可同时显示公历年、月、日、时、分、星期,以及农历月、日,还有秒点显示和整点报时、定时闹钟功能,使用220V市电供电,预留有备用电池座,外形尺寸为长21cm×宽14.5cm×厚3cm,最厚处6cm,适合放置在办公桌面上使用,具有很好的实用性。成品外观如图1所示。 图1 图2 原理简介 电路原理图如图2所示,为了读图方便,连线稍作了简化。从图中可以看出,IC1是一枚专用时钟芯片,Y1是32768Hz的晶振,为芯片提供时基频率信号,经过芯片内部处理后,输出各显示位的驱动信号,经过PNP(8550)型三极管做功率放大后驱动各数码管显示。芯片采用了动态扫描的输出

方式,由于人眼存在视觉暂留现象,且扫描速度比较快,因此看上去所有数码管都是在显示的。这种方式可以有效减少芯片的输出引脚数量,简化了线路,降低了功耗。 在电源部分中,整流二极管VD1~VD4组成了桥式整流电路,将变压器输出的交流电转换为直流电,经C6滤波后,送至三端稳压块7805,输出5V直流稳压电源,为电路供电。VD3和VD8组成互相隔离的供电电路,目的是在市电停电时,后备纽扣电池通过VD3,自动为芯片IC1提供后备电源,保证芯片计时数据不中断。同时由于VD8、VD9的存在,后备电池将不再向数码管供电,以节约后备电池的耗电量。由于芯片自身耗电较低,因此靠纽扣电池也可以维持芯片在很长时间里,内部计时不中断。当市电恢复后,7805输出经过VD8、VD9分别向芯片和数码管供电,由于DV3的存在,且纽扣电池电压为3V,低于7805输出的5V,因此纽扣电池将自动停止供电,7805输出也不会对纽扣电池充电。 VT9是唯一一只NPN(8050)型三极管,用于驱动喇叭,做为整点报时和定闹发声。LED10、LED14是用于秒点显示的发光二极管,LED11和LED12分别是整点报时显示和定闹显示的发光二极管,均为红色。 图3是万年历的全套散件的照片。表1是元器件清单。 图3 表1 元器件清单 序号元件名称参数元件数量序号元件名称参数元件数量 1 电阻10Ω 1 21 三极管8050 1 2 电阻33Ω8 22 三端稳压块7805 1 3 电阻47Ω 3 23 晶振32768Hz 1 4 电阻75Ω7 24 IC1软封装芯片 1 5 电阻100Ω 1 25 0.5’数码管红11 6 电阻150Ω8 26 0.8’数码管红 4

推荐-电子万年历的设计与制作课程设计 精品

华南农业大学 电子工程学院应用物理系 课程设计(报告)任务书 设计题目:电子万年历的设计与制作 任务与要求(请按所选题目自行总结) 任务:设计一个电子万年历,利用实时时钟芯片ds1302和51单片机制作实时时钟。 要求: 1.使用LCD1602显示屏显示日期和时间; 2.能够显示新历和农历; 3. 包括时钟模块,能够显示实时时钟; 4. 要有时间设置按键部分; 5. 完成硬件电路的设计后,编写程序,实现时间和日期的显示等功能; 6. 调试程序,完成功能验证,写出完整的课程设计。 实验器材: 1.单片机最小系统:单片机(插座),晶振,电阻,电容,按键; 2.电源模块:自锁开关,LED灯,USB插座; 3.按键模块:按键; 4.1602显示模块:1602(排母),电位器,电容; 5.RTC模块:DS1302芯片(插座),晶振,CR2032电池(插座); 6.DIY小部件:漆包线,杜邦线,排针,排母,IC插座,电阻包,电容包,烙铁套装; 开始日期20XX 年 3 月 4 日完成日期20XX 年3 月 23 日

电子万年历设计 摘要:本系统是由单片机最小系统、电源模块、按键模块、LCD1602显示模块及RTC模块组成的电子万年历系统。通过时钟模块实时进行时间和日期的计数,进而传递给单片机处理,单片机再将其传递给LCD1602模块显示当前时间,另设有按键模块可以完成时间设置以及日期查询等功能操作。其设计简单,性能优良,时间设置可调,同时同步显示农历和星期,具有较强的实用性。本文先简要介绍每个模块的工作原理,再作整个系统电路的综合分析,说明该电子万年历的实现过程。 Summary:This system,electronic calendar system,is posed of SCM minimum system, power supply module, keys module, LCD1602 display module and RTC module .Through RTC module for counting the time and date, and then transmit to SCM for processing,and then send it to the LCD1602 module to show the current time, also operates key modules can be pleted time setting and operating date query function.Its simple design, excellent performance, adjustable time setting, synchronous display lunar calendar and week at the same time, has strong practicability.This paper first briefly introduces the working principle of each module, and then a prehensive analysis of the circuit.The last,illustrate the whole system implementation process of the electronic calendar. 关键词:万年历,计时,显示,农历 Keywords: calendar、timing、display、

用EXCEL制作新年万年历

用EXCEL制作新年万年历 新年伊始,制作一个新年万年历送给别人新年的祝福,这份心意是非常重要的。制作新年万年历有很多办法,但用Office的Excel表格制作你又试过没?下面给大家介绍用Excel 制作万年历。 今天我们介绍用Excel制作万年历的方法。这个新年万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便。如果你愿意,还可以让它在特殊的日子里显示不同的提醒文字,一起来试试吧! 本文所涉及到的函数有: 1、AND (logical1,logical2, ...) 2、DATE (year,month,day) 3、DAY (serial_number) 4、IF (Logical,Value_if_true,Value_if_false) 5、INT (number) 6、MONTH (serial_number) 7、NOW () 8、OR (logical1,logical2, ...) 1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。

2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。 选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。 注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。 3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。

简单万年历设计

信电学院 电子信息工程专业CDIO一级项目项目设计说明书(2013/2014学年第一学期) 项目名称:简单万年历的设计 专业班级:电子信息工程 学生姓名: 学号: 指导教师: 设计周数:一周 设计成绩: 2013 年12 月29 日

目录 1项目设计目的及任务--------------------------------------------------------------2 2 设计方案--------------------------------------------------------------2 3 电路仿真与分析--------------------------------------------------------------9 4项目设计心得-------------------------------------------------------------17 5参考文献-------------------------------------------------------------17

1.项目设计目的及任务 用51单片机或52单片机为主体,设计并制作一台数字万年历。基本要求有时钟显示(时/分/秒);日期、星期显示,可设定月份;上电即可显示当前系统的时间该系统的设计电路是以 AT89C51单片机为核心控制器,其外围电路主要包括时钟模块,液晶模块,和与电脑主机通信模块等。通过 PC 机在 Internet 上同步时间,整个系统使用C语言进行编程,实现其设计的各种功能。输出方式灵活、功耗低、计时准确、性能稳定、维护方便等优点。实用电子时钟是一个时间控制系统,既能作为一般的时间显示器,同时可以根据需要扩展其功能。系统上电自检后,实时实现小时、分钟、秒以及日历的显示等指示信息的显示,通过按键可实现校对时间等功能。 2 设计方案 2.1总方案设计:设计简单万年历一般有三个可行方案,方案一:纯硬件电路系统,各功能采用分离的硬件电路模块实现。用时序逻辑电路实现时钟功能,用555定时器实现闹钟的设定。但这种实现方法可靠性差、控制精度低,灵活性小、线路复杂、安装调试不方便,而且不方便实现对系统的扩展。方案二:用可编程逻辑器件(PLD)实现。这种方案与前一种相比,可靠性增加,同时可以很好的完成时钟的功能。同时这种方案只能选用数码管显示,显示的效果不够理想,无法很好的完成扩展功能的要求。同时,系统的灵活性不够。方案三:采用单片机作为系统的控制核心。随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。集成技术的最新发展之一是将CPU和外围芯片,如程序存储器、数据存储器、并行I/O口、串行I/O口、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片计算机。而近年来推出的一些高档单片机还包括有许多特殊功能单元,如A/D、D/A转换器、调制解调器、通信控制器、锁相环、DMA、浮点运算单元、PWM控制输出单元、PWM输出时的死区可编程控制功能等。因此,只要外加一些扩展电路及必要的通道接口就可以构成各种计算机应用系统,如工业流水线控制系统、作为家用电器的主控制器、分布式控制系统的终端节点或作为其主控制节点起中继的作用、数据采集系统、自动测试系统等。我们选用的是方案三。因为单片机的出现,并在各技术领域中得到如此迅猛的发展,与单片机构成计算机应用系统所形成的下述特点有关:

中华万年历评测——简单粗暴有内涵的日历

中华万年历评测——简单粗暴有内涵的日历 作者:梦想屠夫 一个菜鸟的肺腑之言: 对于万年历我想大部分的人都会感到熟悉而陌生,特别是作为年轻的一代。熟悉的是,我们每天都会无意识的记起日历上的数字,陌生的是,年轻的我们已经渐渐的忽略了农历以及那些节气,于是“出门看黄历”这句话慢慢的也只在口头禅里面出现了。 还好,我遇见了中华万年历,简单的APP承载了不简单的内容。以下我来阐述使用中华万年历一小段时间以来我所领略到的各种鬼斧神工。 ------------------------------------------------------------------------------ 老煤油一枚,所持机型:魅族MX2 中华万年历版本:6. 1.0 ------------------------------------------------------------------------------ 【软件主要功能】 ●日历:节假日及特殊节日提示、农历节气、老黄历 ●天气状况:近5天天气状况趋势图、气温湿度、PM2.5污染物提示、各项生活指数提示 ●记录:日程表、记事以及待办事项记录提醒、最近节日倒计时、闹钟 ●订阅:可订阅时事热点、财经、美食、星座、旅行、健康养生等各项资讯频道●便民工具:查违章、找工作、找媳妇、租房子,医院挂号,还带抽签算卦等多般武艺 ●社交娱乐:生活圈功能,实时了解圈内圈外的生活动态,好比一个微信朋友圈诸多功能,不胜枚举。

话说百闻不如一见,那我就带大伙来瞧瞧我们这个简约而不简单的万年历…… ------------------------------------------------------------------------------ ▼1.【软件下载】 魅友们可以前往系统自带的应用中心去下载,也可以到360助手以及其他的应用中心去下载。软件容量不大,但是功能强悍。从下载量我们就不难看出使用人数的庞大,所以相信这是一枚好软件,值得推荐给大家。 ▼2.【登录开启云服务】 打开软件,首先看到的就是简约的界面,扁平化的风格,可以说是跟魅族fl yme系统门当户对。

用EXCEL制作新年万年历

用EXCEL制作新年万年历(修正版) 新年伊始,制作一个新年万年历送给别人新年的祝福,这份心意是非常重要的。制作新年万年历有很多办法,但用Office的Excel表格制作你又试过没?下面给大家介绍用Excel制作万年历。 今天我们介绍用Excel制作万年历的方法。这个新年万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便。如果你愿意,还可以让它在特殊的日子里显示不同的提醒文字,一起来试试吧! 本文所涉及到的函数有: 1、AND (logical1,logical2, ...) 2、DA TE (year,month,day) 3、DAY (serial_number) 4、IF (Logical,Value_if_true,Value_if_false) 5、INT (number) 6、MONTH (serial_number) 7、NOW () 8、OR (logical1,logical2, ...) 1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。 2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。 选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。

注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。 3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。 选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。 注意:①上述前面一个公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。 ②上述第二个函数(NOW())用于提取当前系统日期和时间,也请将系统日期和时间调整准确。 4、在I1、I2单元格分别输入1900、1901,然后同时选中I1、I2单元格,用“填充柄”向下拖拉至I151单元格,输入1900—2050年份序列。 同样的方法,在J1至J12单元格中输入1—12月份序列。 5、选中D13单元格,执行“数据→有效性”命令,打开“数据有效性”对话框(如图3),按“允许”右侧的下拉按钮,选中“序列”选项,在“来源”下面的方框输入:=$I$1:$I$151,“确定”退出。 同样的操作,将F15单元格数据有效性设置为“=$J$1:$J$12”序列。 注意:经过这样的设置以后,当我们选中D15(或F15)单元格时,在单元格右侧出现一个下拉按钮,按此下拉按钮,即可选择年份(或月份)数值,快速输入需要查询的年、月值。 6、选中A2单元格(不一定非得是A2哟),输入公式:=IF(F13=2,IF(OR(D13/400=INT(D13/400),AND(D13/4=INT(D13/4),D13/100=INT(D13/100))),29,28),IF(OR(F13=4,F13=6,F13=9,F13=11),30,31)),用于获取查询“月份”所对应的天数(28、29、30、31)。 注意:上述函数的含义是:如果查询“月份”为“2月”(F13=2)时,并且“年份”数能被400整除[D13/400=INT(D13/400)],或者(OR)“年份”能被4整除,但不能被100整除[AND(D13/4=INT(D13/4),D13/100 INT(D13/100))],则该月为29天(也就是我们通常所说的“闰年”),否则为28天。如果“月份”不是2月,但是“4、6、9、11”月,则该月为30天。其他月份天数为31天。 7、选中B2单元格,输入公式:=IF(WEEKDAY(DATE($D$13,$F$13,1),2)=B3,1,0)。再次选中B2单元格,用“填充柄”将上述公式复制到C2—H2单元格中。 注意:①上述B2公式的含义是:如果“查询年月”的第1天是星期“7”(WEEKDAY(DATE)($D$13,$F$13,1),2)=B3)时,在该单元格显示“1”,反之显示“0”),为“查询年月”获取一个对

用Excel怎样制作万年历

可以把Excel表格内容设置为桌面背景么? 悬赏分:10 - 解决时间:2007-2-15 08:32 由于经常要查一个Excel表,就想如果把它设置为桌面背景就会很方便了,求教高手,怎么做才能办到? 提问者:firtre - 三级 最佳答案 文件-另存为网页-在桌面上点右键-属性-桌面-自定义桌面-web-钩上就搞定了 用Excel怎样制作万年历 Excel 2010-02-07 15:18:53 阅读578 评论29 字号:大中小 准备工作,制作如下电子表格:

第一步:在C2中输入=TODAY()回车。TODAY()函数用于提取当前系统日期。 第二步:在F2中输入=IF(WEEKDAY(C2,2)=7,"日",WEEKDAY(C2,2)) 回车。 第三步:在H2中输入 =NOW() 回车。NOW()用于提取当前系统时间。 第四步:在D14中设置下拉菜单,数值为1900—2029。参见“怎样制作下拉菜单”

第五步:在F14中设置下拉菜单,数值为1—12。

将查询日期调为当前日期,如下图:

第六步:在A3中输入: =IF(F14=2,IF(OR(D14/400=INT(D14/400),AND(D14/4=INT(D14/4),D14/100<>INT(D14/100))),29, 28),IF(OR(F14=4,F14=6,F14=9,F14=11),30,31))回车。 第七步:B3中输入=IF(WEEKDAY(DATE($D$14,$F$14,1),2)=B4,1,0)回车。选中B3向右复制公式 至H3。 第八步:B6中输入=IF(B3=1,1,0)回车。 第九步:在B7中输入=H6+1回车,选中B7,向下复制公式至B9。 第十步:在B10中输入=IF(H9>=A3,0,H9+1)回车。 第十一步:在B11中输入=IF(H10>=A3,0,IF(H10>0,H10+1,0))回车。 第十二步:在C6中输入=IF(B6>0,B6+1,IF(C3=1,1,0))回车。 第十三步:在C7中输入=B7+1回车。 第十四步:选中C7向下复制公式至C9。 第十五步:在C10中输入=IF(B10>=$A$3,0,IF(B10>0,B10+1,IF(C6=1,1,0)))回车。 第十六步:选中C6,向右复制公式至H6。 选中C7,向右复制公式至H7。 选中C8,向右复制公式至H8。

单片机万年历程序..

单片机万年历程序 #include //调用单片机头文件 #define uchar unsigned char //无符号字符型宏定义变量范围0~255 #define uint unsigned int //无符号整型宏定义变量范围0~65535 #include "eeprom52.h" #include "nongli.h" bit flag_200ms ; bit flag_100ms ; sbit beep = P3^7; //蜂鸣器定义 bit flag_beep_en; uint clock_value; //用作闹钟用的 sbit dq = P3^1; //18b20 IO口的定义 uint temperature ; //温度变量 uchar flag_nl; //农历阳历显示标志位 uchar menu_1,menu_2; uchar key_time,flag_value; //用做连加的中间变量 bit key_500ms ; uchar n_nian,n_yue,n_ri; //农历显示的函数

#include "ds1302.h" #include "lcd1602.h" /******************把数据保存到单片机内部eeprom中******************/ void write_eeprom() { SectorErase(0x2000); byte_write(0x2000, fen1); byte_write(0x2001, shi1); byte_write(0x2002, open1); byte_write(0x2058, a_a); } /******************把数据从单片机内部eeprom中读出来*****************/ void read_eeprom() { fen1 = byte_read(0x2000); shi1 = byte_read(0x2001); open1 = byte_read(0x2002); a_a = byte_read(0x2058); } /**************开机自检eeprom初始化*****************/ void init_eeprom() { read_eeprom(); //先读 if(a_a != 1) //新的单片机初始单片机内问eeprom { fen1 = 3;

基于PFGA的万年历的设计

郑州大学西亚斯国际学院 本科毕业论文(设计) 题目基于FPGA的万年历的设计 指导教师周晓平职称讲师 学生姓名陈重学号20111521131 专业电子信息工程班级电信(1)班 院(系)电子信息工程学院 完成时间2015年4月7号

基于FPGA的万年历的设计 摘要 基于FPGA的万年历的设计,基本功能是用来显示年月日时分秒及时间修改功能。数字日历是采用数字电路实现对ho、mi、se计时的装置,主要包括组合逻辑电路与时序电路,主要完成的功能是使用VerilogHDL语言,在QuartusII上完成电路设计,模拟程序开发,基本功能是能够显示/修改ho、mi、se,主要有:主要遥控模块、时间及其数据显示调设、时间多路选择、显示调整、日期的自动工作与设置、秒表计时模块、钟表模块、频率选取模块、译码器组成万年历的系统电路设计。软件模拟直接在FPGA软件上进行编译仿真与实验开发板共同完成。对于程序的编写使用VerilogHDL语言,根据不同模块的功能和各个模块之间的相互作用控制关系进行编译仿真。 电子万年历是采用的是以秒表计时显示时间的工具,大量运用于居室、办公室、商场、汽车站、火车站等场合。与古老的钟表进行比较拥有较好的精准性、灵活性、美观性、并拥有较长的使用年限。数字万年历主要包括组合逻辑电路与时序电路,还能展现自动报警、定时广播信息等功能。数字电子万年历采用软件开发模拟,使开发生产的成本大大降低,而且功能上有很强的灵活性,如果想改变它的功能只需要在软件上进行修改就能完成。相对于老式钟表来讲精度大大增加,并且维修改动更为方便,也不用像日历一样每天翻页,使人们的的生活更加方便。因此研究数字万年历有非常重要现实意义,匹配当前电子仪器的开发优势,对于当前市场也有相当大的潜力。 关键词FPGA /万年历/VerilogHDL/QuartusII

日历2020日历黄道吉日

日历2020日历黄道吉日 导读:黄道吉日的选择已经与我们的生活息息相关,不管你是要出行,要开业,要结婚,要入宅,或者是要动土也好,都离不开查询黄道吉日。选择最适合的黄道吉日做事,不仅能利于事情更好进行,更是给自己一个好的预示和运势。那么,2020年黄道吉日有哪些呢?2020年每个月哪几天是黄道吉日呢?以下是万年历小编带来的2020年黄道吉日一览表,快点来看。 2020年黄道吉日一览表 2020年1月黄道吉日一览 公元2020年1月2日,星期四,农历二零一九年十二月(大)初八,冲狗(戊戍)煞南,黄道定日 公元2020年1月5日,星期日,农历二零一九年十二月(大)十一,冲牛(辛丑)煞西,黄道危日 公元2020年1月6日,星期一,农历二零一九年十二月(大)十二,冲虎(壬寅)煞南,黄道危日 公元2020年1月9日,星期四,农历二零一九年十二月(大)十五,冲蛇(乙巳)煞西,黄道开日 公元2020年1月12日,星期日,农历二零一九年十二月(大)十八,冲猴(戊申)煞北,黄道除日

公元2020年1月16日,星期四,农历二零一九年十二月(大)廿二,冲鼠(壬子)煞北,黄道执日 公元2020年1月18日,星期六,农历二零一九年十二月(大)廿四,冲虎(甲寅)煞南,黄道危日 公元2020年1月21日,星期二,农历二零一九年十二月(大)廿七,冲蛇(丁巳)煞西,黄道开日 公元2020年1月24日,星期五,农历二零一九年十二月(大)三十,冲猴(庚申)煞北,黄道除日 公元2020年1月27日,星期一,农历二零二零年正月(小)初三,冲猪(癸亥)煞东,黄道定日 公元2020年1月30日,星期四,农历二零二零年正月(小)初六,冲虎(丙寅)煞南,黄道危日 公元2020年1月31日,星期五,农历二零二零年正月(小)初七,冲兔(丁卯)煞东,黄道成日 2020年2月黄道吉日一览 公元2020年2月2日,星期日,农历二零二零年正月(小)初九,冲蛇(己巳)煞西,黄道开日 公元2020年2月10日,星期一,农历二零二零年正月(小)十七,冲牛(丁丑)煞西,黄道执日 公元2020年2月12日,星期三,农历二零二零年正月(小)十九,冲兔(己卯)煞东,黄道危日

电子万年历的设计与仿真

摘要 单片机技术发展迅速,由于他的微小、易用、多功能在智能仪器、家用电器、电子通信、工业控制等方面应用广泛。单片机是集CPU ,RAM ,ROM,定时,计数和多种接口于一体的微控制器,它体积小、成本低、功能强,而51系列单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用从而达到学习、设计、开发软、硬的能力。 电子万年历主要采用AT89S52单片机作为主控核心,由DS1302时钟芯片提供时钟、LED动态扫描显示屏显示。AT89S52单片机功耗小、电压可选用2.0~6V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时;数字显示是采用的LCD液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒和温度等信息。 关键词:万年历;AT89S52单片机;1602液晶显示屏;DS1302时钟芯片;温度。

ABSTRACT Single chip microcomputer development is rapid, because of his tiny, is easy to use,and multi-function in intelligent instrument, home appliances, electronic communication, industry control, wide application. SCM is set for the CPU, RAM, ROM, time, count and a variety of interface in one of the micro controller. Its small size, low cost, the function is strong, and 51 series microcontroller is the most typical of single chip microcomputer and the most representative of a kind. The graduation design through to its study, application, so as to study, design, and develop the ability of soft and hard. The electronic calendar mainly USES the AT89S52 SCM as the master its core, and the DS1302 clock chip provide clock, LED dynamic scanning display shows. AT89S52 SCM power consumption is small, voltage can choose 2.0 ~ 6 V voltage power supply; DS1302 clock chip is the United States out Juan DALLAS has fine current charge function of low power consumption real time clock chip, it can be to year, month, day, week, when, minutes and seconds for timing; Digital display is USES LED LCD screen to display, can also shows that year, month, day, week, when, minutes and seconds and temperature and other information. KEY WORDS Calendar;AT89S52 SCM;1602 LCD; DS1302 clock chip;temperature

[1285]《中国文化中的天地观》

西南大学网络与继续教育学院 课程代码: 1285 学年学季:20182 单项选择题 1、五服包括_。 .候、甸、彝、男、析 .候、甸、男、析、采 .甸、候、绥、要、荒 .甸、候、卫、粦、绥 2、就考古发现论,在我国出土最早的古人类遗址,是______。 .北京市西南的周口店龙骨坡 .云南元谋县大那乌村 .陕西省蓝田县公王岭、 .巫山大溪龙骨坡 3、以下句子中没有体现天人合一思想的是_。 .天命之谓性,率性之谓道,修道之谓教 .有收无收在于雨,收多收少在于肥 .人有悲欢离合,月有阴晴圆缺,此事古难全 .木铎响而天下应 4、“天人合一”这一思想最先出自于_。 .《易.乾卦》中所言:天行健,君子贵自强不息;地势坤,君子以厚德载物。 .《中庸》中所言:唯天下至诚,为能尽其性;能进其性,则能尽之性;能尽人之性,则能尽物之性尽物之性,则可以赞天地之化育;可以赞天地之化育,则可以与天地参矣。

.墨子所言:天必欲人之相爱相利 .庄子所言:天地与我并生,而万物与我合一。 5、考古证明,_______化石是中国,乃至东亚迄今发现最早的人类化石。 .巫山大溪龙骨坡发现的巫山人 .陕西省蓝田县的蓝田猿人 .北京房山县周口店的北京猿人 .云南省元谋县的元谋人 6、人之行事通过_于天地间立足。 .从已知事物出发,去图式陌生事物 .顺天道以安排人事 .呵护大地之万物生生不息,关爱生命 .尽人事、听天命 7、对山水的崇敬,在儒家那里,被看作是_的象征。 .礼义精神 .仁义精神 .仁智精神 .礼智精神 8、先贤曰:“天有九霄”,其中九霄分为_。 .神霄、青霄、碧霄、丹霄、景霄、玉霄、振霄、紫霄、太霄 .圣霄、青霄、碧霄、丹霄、景霄、玉霄、振霄、紫霄、宸霄 .神霄、青霄、碧霄、丹霄、景霄、玉霄、振霄、紫霄、宸霄 .圣霄、青霄、碧霄、丹霄、景霄、玉霄、振霄、紫霄、太霄

简易万年历的设计设计

漳州师范学院 简易万年历的设计 系别:物理与电子信息工程系 专业:电子信息科学与技术 2013年6月

目录 1. 设计任务 (4) 1.1设计任务 (4) 1.2设计要求 (4) 2.设计方案 (4) 2.1设计思路 (4) 2.2方案比较与论证 (4) 2.2.1 数码管显示模块 (4) 2.2.2 温度传感器的选择 (5) 2.2.3 时钟计时的选择 (5) 2.3系统结构框图 (6) 3.各功能模块设计 (6) 3.1显示模块原理 (6) 3.2参数计算 (7) 3.3独立式按键模块 (7) 3.4时钟模块 (8) 3.4.1 DS1302特性介绍 (8) 3.4.2 DS1302引脚介绍 (8) 3.4.3 DS1302有关日历、时间的寄存器 (9) 3.4.4 DS1302控制字介绍 (9) 3.4.5 DS1302单字节读写时序介绍 (10) 3.4.6 DS1302操作指令介绍 (11) 3.4.7 DS1302与单片机接口电路 (11) 3.5温测模块 (11) 3.5.1 单总线介绍 (11) 3.5.2 DS18B20特性介绍 (12) 3.5.3 DS18B20管脚介绍 (12) 3.5.4 DS18B20内部结构 (12) 3.5.5 DS18B20温度转化示例 (13) 3.5.6 DS18B20时序介绍 (13) 3.5.7 DS18B20操作步骤 (15) 3.5.8 DS18B20与单片机的接口电路 (16) 3.6总系统原理图 (16) 4.软件设计 (16) 4.1I/O口分配 (17) 4.2按键扫描 (17)

5.流程图 (17) 5.1主程序流程图 (17) 5.2 WORK0模块流程图 (18) 5.3 WORK1模块流程图 (18) 5.4 WORK2模块流程图 (19) 5.5获取温度子程序流程图 (19) 5.6按键扫描 (20) 5.7中断服务子程序 (21) 5.8显示方式1 (21) 5.9初始化DS1302子程序流图 (22) 5.10温显模块子程序流图 (22) 5.11读取时间模块子程序流图 (23) 6.程序代码 (23) 6.1主程序部分 (23) 6.2包含文件部分 (31) 6.3包含文件部分 (33) 7.调试要点 (41) 7.1硬件调试 (41) 7.2软件调试 (41) 7.3结果分析及设计工作总结 (41) 8.参考文献及附件 (42) 8.1参考文献 (42) 8.2元器件清单 (42) 8.3PCB版图 (42) 8.4实物图正面 (43) 8.5实物图背面 (44)

用EXCEL制作一份万年历

用EXCEL制作一份万年历 [导读]今天我们介绍用Excel制作万年历的方法。这个万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便。如果你愿意,还可以让它在特殊的日子里显示不同的提醒文字,一起来试试吧! 本文所涉及到的函数有: 1、AND (logical1,logical2, ...) 2、DATE (year,month,day) 3、DAY (serial_number) 4、IF (Logical,Value_if_true,Value_if_false) 5、INT (number) 6、MONTH (serial_number) 7、NOW () 8、OR (logical1,logical2, ...) 1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。 2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。

选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。 注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。 3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。 选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。 注意:①上述前面一个公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。 ②上述第二个函数(NOW())用于提取当前系统日期和时间,也请将系统日期和时间调整准确。 4、在I1、I2单元格分别输入1900、1901,然后同时选中I1、I2单元格,用“填充柄”

相关文档
最新文档