万年历阴历星期温度
2024年日历表(含农历 每月一张)

2024年10月
2024年,是公历闰年,共366天、53周。
农历甲辰年(龙年),无闰月,共354天,农历起止日期为2024年2月10日—2025年1月28日。
2024年假日安排
一、元旦:1月1日放假,与周末连休。
二、春节:2月10日至17日放假调休,共8天。
2月4日(星期日)、2月18日(星期日)上班。
鼓励各单位结合带薪年休假等制度落实,安排职工在除夕(2月9日)休息。
三、清明节:4月4日至6日放假调休,共3天。
4月7日(星期日)上班。
四、劳动节:5月1日至5日放假调休,共5天。
4月28日(星期日)、5月11日(星期六)上班。
五、端午节:6月10日放假,与周末连休。
六、中秋节:9月15日至17日放假调休,共3天。
9月14日(星期六)上班。
七、国庆节:10月1日至7日放假调休,共7天。
9月29日(星期日)、10月12日(星期六)上班。
万年历功能介绍及操作说明

基于51单片机的液晶万年历设计
1、本设计基于STC89C52(与AT89S5
2、AT89C52通用,可任选)单片机以及DS1302时钟芯片、DS18B20温度传感器构成的万年历系统。
2、有闹钟和阴历功能,有闰年补偿,可以准确及正确的显示时间等信息。
3、可以显示年、月、日、时、分、秒、星期、温度、农历和闹钟设定。
4、掉电走时,不用重新调时,当按键按下时背光亮,更节能。
使用方法:
一共4个按键:设置、加、减、切换
按下设置的时候秒会闪,这时可以加减调节,然后再按设置是设置分钟,依次设置,最后按一下设置就是推出并保存,主界面按切换的时候是显示阴历(ping是平年,run是闰年),再按下切换是显示闹钟界面,此时可以按设置调整闹钟。
电子万年历

电子万年历设计摘要随着现代生活节奏的不断加快,时间对于我们每个人来说也越来越重要,我们都需要有工具来度量时间。
电子万年历作为一种应用广泛的日常计时工具,由于它具有读取方便、显示直观、价格低廉等诸多优点,在当代社会中的应用也越来越广泛,大大方便了人们的生活和工作。
本设计是基于单片机技术原理,采用AT89S52单片机芯片作为主控制器,并采用时钟芯片DS1302来实现时钟,通过硬件电路的制作及软件程序的编制,利用单片机的控制作用通过共阳极数码管显示时间,实现显示阳历的年、月、日、星期、时、分、秒以及阴历的月、日的功能,还具有掉电继续计时的功能。
本设计主要由按键模块、显示模块、DS1302时钟模块、AT89S52主控制系统组成,其中按键电路采用3个按键构成独立连接式键盘,显示电路采用19个共阳极数码管构成,并利用74LS164译码器将二进制代码转化为对应的高低电平信号,并利用74LS138芯片来实现数码管的动态选择。
时钟模块采用DS1302芯片,它的使用寿命长、误差小,满足电子万年历需要精确计时的要求。
关键词:AT89S52,DS1302,数码管,译码器THE DESIGN OF ELECTRONIC CALENDARABSTRACTAs the pace of modern life continues to increase,time is becoming more and more important for us. We all need the tools to measure time. As a widely used timing tool, Electronic calendar has many advantages, such as easy to read, direct display and low cost. In modern society, it is becoming more and more extensive and makes our life and work easier.This design is based on principles of single-chip computer, using chip AT89S52 as the core controller and clock chip DS1302 as the clock. By combining the hardware circuits and software programs preparation, using common anode LED to display time under the control of single-chip computer. It can display the date of solar calendar and lunar calendar. It can continue to measure time after power lost.This design consists of four main parts, including key module, display module, DS1302 clock module and AT89S52 master control system. Buttons circuit uses three buttons to make up the independent keyboard. Display circuit consists of 19 common anodes LED. It uses 74LS164 to translate binary code into the corresponding high level signal and uses 74ls138 to choose the corresponding digital tube. The clock module uses clock chip DS1302, DS1302 meets the requirement of accurate timekeeping because of its long service life and small error.KEY WORDS:AT89S52,DS1302,Digital tube,Decoder目录前言 (1)第1章系统设计方案的选择 (3)§1.1电子万年历的设计意义 (3)§1.2 国内外同类设计的发展概况 (3)§1.3 设计要求 (4)§1.4 设计方案的选择与论证 (5)§1.4.1 单片机芯片的选择 (5)§1.4.2 时钟芯片的选择 (5)§1.4.3 显示模块的选择 (6)§1.4.4 键盘模块的选择 (6)§1.5 本设计的最终方案 (6)第2章系统的硬件设计与实现 (7)§2.1 电路设计总框图 (7)§2.2 系统的硬件概述 (7)§2.3 主要单元电路的设计 (8)§2.3.1 AT89S52主控制系统设计 (8)§2.3.2 键盘模块设计 (13)§2.3.3 时钟模块设计 (14)§2.3.4 显示模块的设计 (18)第3章系统的软件设计 (23)§3.1 主程序流程图 (23)§3.2 阳历程序设计 (24)§3.2.1 DS1302初始化 (24)§3.2.2 BCD码转化为十进制子程序 (27)§3.3 时间调整程序的设计 (27)§3.4 阴历程序的设计 (29)§3.4.1 计算阳历天数的程序设计 (29)§3.4.2 阳历转阴历程序 (32)结论 (33)参考文献 (34)致谢 (36)附录 (37)前言在当代繁忙的工作与生活中,时间与我们每个人都有非常密切的关系,每个人都受到时间的影响。
农历大小月卦口诀

农历大小月卦口诀闰月指的是阴历中的一种现象,阴历是按照月亮的圆缺即朔望月安排大月和小月,一个朔望月的长度是29.5306日,是月相盈亏的周期,阴历规定,大月30天,小月29天,这样一年12个月共354天,阴历的月份没有季节意义,这样一年就与阳历的一年相差11天,只需经过17年,阴阳历日期就同季节发生倒置,譬如,某年新年是在瑞雪纷飞中度过,17年后,便要摇扇过新年了。
使用这样的历法,自然是无法满足农业生产的需要的,所以我国的阴历自秦汉以来,一直和24节气并行,用24节气来指导农业生产。
二十四节气又可分为“节气”和“中气”二组:古人把从小寒起每隔黄经300为一节气;从冬至起每隔黄经300为一中气,一年有12个节气,12个中气。
12节气把一年分为12个节月,每个节月各有一个节气和一个中气。
节气是节月的起点;中气是节日的中点。
我国传统历法对于日序和月序以及大月、小月、平年和闰年,不象一般历法那样采用长期安排的方法,而是强调逐年逐月的推算,国家设有专门的机构从事历法的推算。
(一)以月相定日序。
它逐一推算日月合朔的日期和时刻,每月的初一就是合朔的日期;根据先后二次合朔包含的日数,确定前月的大小。
如果从这一合朔到下一次合朔的间隔是30天,那么当月便是大月;如果只隔29天,便为小月。
(二)以中气定月序。
首先,以历月中有无中气区分历月和闰月,我们知道一个回归年有12个中气,但却包含365.2422÷29.5306=2.3682个朔望月,经过几番历月轮转之后,必有一个历月没有中气。
《汉书·律历表》载:“朔不不得中,谓之闰月”。
这个没有中气的月份便是闰月。
它前一历日为几月即为闰几月。
例如,1984年的那次闰月出现在旧历十月之后,因而叫它“闰十月”。
闰月是推算出来的,在一年的月序中不固定,除农历十一月、十二月、正月外,闰几月都可能,十九年七闰。
综上所述,闰年是阳历中的一种现象,固定在二月,比平年加一天,29天;闰月是阴历中的一个现象,闰一个月,那一年阴历有13个月,那一年叫闰月年。
2024年全年阴历阳历日历表含农历A4纸一张打印

一二三四五六日
1 廿九 2345678 三十 初一 初二 初三 初四 白露 初六 9 10教 11 12 13 14 15 初七 师节 初九 初十 十一 十二 十三 16 17中 18 19 20 21 22 十四 秋节 十六 十七 十八 十九 秋分 23 24 25 26 27 28 29 廿一 廿二 廿三 廿四 廿五 廿六 廿七 30 廿八
2024年10月
一二三四五六日
1国 2 3 4 5 6 庆节 三十 初一 初二 初三 初四 7 8 9 10 11重 12 13 初五 寒露 初七 初八 阳节 初十 十一 14 15 16 17 18 19 20 十二 十三 十四 十五 十六 十七 十八 21 22 23 24 25 26 27 十九 二十 霜降 廿二 廿三 廿四 廿五 28 29 30 31 廿六 廿七 廿八 廿九
2024年9月
一二三四五六日
1建 2 3男 4 军节 廿八 人节 初一 5 6 7 8 9 10七 11 初二 初三 立秋 初五 初六 夕节 初八 12 13 14 15 16 17 18中 初九 初十 末伏 十二 十三 十四 元节 19 20 21 22 23 24出 25 十六 十七 十八 处暑 二十 伏 廿二 26 27 28 29 30 31 廿三 廿四 廿五 廿六 廿七 廿八
2024年5月
一二三四五六日
123
廿一 廿二 九九
4 5 6 7女 8妇 9 10
廿四 惊蛰 廿六 生节 女节 廿九 初一
11龙 12植 13 14 15 16 17
头节 树节 初四 初五 初六 初七 初八
18 初九 25
19 初十 26
20 春分 27
21 十二 28
单片机万年历带阴历

程序说明:1: 公农历自动转换,星期根据公历日期自动换算。
2: 没有采用时间IC(如DS1302 等),而是直接用单片机内的定时器。
3: 可显示简单的国家法定节假日,如到了农历8 月15,“单片机学徒”五个字会变成“中秋节”。
4: 在农历日期中采用初,廿等符合农历的用字。
5: 公历日期和时间可调,农历与星期是根据公历日期自动换算所得,所以不必调整。
6: 程序最终显示如下图所示。
实际在本人办公桌上使用中。
7: 在实际制作中如有疑问,欢迎大家交流.单片机学徒于2011 年3 月。
#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define port P0#define TT 49962uchar month,day,week,one,two,thr,fou,fiv,key_v,key_t,flagt;uchar year,yyear,ymonth,yday,key;char hour,min,sec;bit flagjr = 0;bit flagturn;bit flagnl = 0;sbit e = P2^3;sbit rw = P2^4;sbit rs = P2^5;sbit cs1 = P2^6;sbit cs2 = P2^7;sbit add = P3^3;sbit ok = P3^4;sbit set = P3^5;sbit dec = P3^6;sbit armn = P3^1;sbit armh = P3^7;void refweek();void key_t0(key_v);void displayday();void lcd_datey(uint x,uchar y,uchar z);uchar monthcode[]={0,31,0,31,30,31,30,31,31,30,31,30,31};uchar code day_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3}; uint code day_code2[3]={0x111,0x130,0x14e};uchar code year_code[]={0x4d,0x4A,0xB8, //20010x0d,0x4A,0x4C, //20020x0d,0xA5,0x41, //20030x25,0xAA,0xB6, //20040x05,0x6A,0x49, //20050x7A,0xAd,0xBd, //20060x02,0x5d,0x52, //20070x09,0x2d,0x47, //20080x5C,0x95,0xBA, //20090x0A,0x95,0x4e, //20100x0B,0x4A,0x43, //20110x4B,0x55,0x37, //20120x0A,0xd5,0x4A, //20130x95,0x5A,0xBf, //20140x04,0xBA,0x53, //20150x0A,0x5B,0x48, //20160x65,0x2B,0xBC, //20170x05,0x2B,0x50, //20180x0A,0x93,0x45, //20190x47,0x4A,0xB9, //20200x06,0xAA,0x4C, //20210x24,0xdA,0xB6, //2023 0x04,0xB6,0x4A, //2024 0x69,0x57,0x3d, //2025 0x0A,0x4e,0x51, //2026 0x0d,0x26,0x46, //2027 0x5e,0x93,0x3A, //2028 0x0d,0x53,0x4d, //2029 0x05,0xAA,0x43, //2030 0x36,0xB5,0x37, //2031 0x09,0x6d,0x4B, //2032 0xB4,0xAe,0xBf, //2033 0x04,0xAd,0x53, //2034 0x0A,0x4d,0x48, //2035 0x6d,0x25,0xBC, //2036 0x0d,0x25,0x4f, //2037 0x0d,0x52,0x44, //2038 0x5d,0xAA,0x38, //2039 0x0B,0x5A,0x4C, //2040 0x05,0x6d,0x41, //2041 0x24,0xAd,0xB6, //2042 0x04,0x9B,0x4A, //2043 0x7A,0x4B,0xBe, //2044 0x0A,0x4B,0x51, //2045 0x0A,0xA5,0x46, //2046 0x5B,0x52,0xBA, //2047 0x06,0xd2,0x4e, //2048 0x0A,0xdA,0x42, //2049 0x35,0x5B,0x37, //2050 0x09,0x37,0x4B, //2051 0x84,0x97,0xC1, //2052 0x04,0x97,0x53, //2053 0x06,0x4B,0x48, //2054 0x66,0xA5,0x3C, //2055 0x0e,0xA5,0x4f, //2056 0x06,0xB2,0x44, //2057 0x4A,0xB6,0x38, //2058 0x0A,0xAe,0x4C, //2059 0x09,0x2e,0x42, //2060 0x3C,0x97,0x35, //2061 0x0C,0x96,0x49, //2062 0x7d,0x4A,0xBd, //2063 0x0d,0x4A,0x51, //2064 0x0d,0xA5,0x45, //20650x05,0x6A,0x4e, //20670x0A,0x6d,0x43, //20680x45,0x2e,0xB7, //20690x05,0x2d,0x4B, //20700x8A,0x95,0xBf, //20710x0A,0x95,0x53, //20720x0B,0x4A,0x47, //20730x6B,0x55,0x3B, //20740x0A,0xd5,0x4f, //20750x05,0x5A,0x45, //20760x4A,0x5d,0x38, //20770x0A,0x5B,0x4C, //20780x05,0x2B,0x42, //20790x3A,0x93,0xB6, //20800x06,0x93,0x49, //20810x77,0x29,0xBd, //20820x06,0xAA,0x51, //20830x0A,0xd5,0x46, //20840x54,0xdA,0xBA, //20850x04,0xB6,0x4e, //20860x0A,0x57,0x43, //20870x45,0x27,0x38, //20880x0d,0x26,0x4A, //20890x8e,0x93,0x3e, //20900x0d,0x52,0x52, //20910x0d,0xAA,0x47, //20920x66,0xB5,0x3B, //20930x05,0x6d,0x4f, //20940x04,0xAe,0x45, //20950x4A,0x4e,0xB9, //20960x0A,0x4d,0x4C, //20970x0d,0x15,0x41, //20980x2d,0x92,0xB5, //2099};uchar code shuzi[][16]={{0xFF,0x0F,0x07,0xF3,0xFB,0xFB,0xF3,0x07,0xFF,0xF0,0xE0,0xCF,0xDF,0xD F,0xCF,0xE0},{0xFF,0xFF,0xF7,0xF7,0x03,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xC 0,0xFF,0xFF},{0xFF,0xCF,0xC7,0xF3,0xFB,0xFB,0x73,0x07,0xFF,0xCF,0xC7,0xD3,0xD9,0xD C,0xDE,0xDF},{0xFF,0xEF,0xE7,0x73,0x7B,0x7B,0x33,0x87,0xFF,0xF7,0xE7,0xCF,0xDF,0xD F,0xCE,0xE0},B,0xC0,0xC0},{0xFF,0x03,0x03,0x3B,0xBB,0xBB,0x3B,0x7B,0xFF,0xF6,0xE6,0xCF,0xDF,0xD F,0xCF,0xE0},{0xFF,0x0F,0x07,0x33,0xBB,0xBB,0x33,0x67,0xFF,0xF0,0xE0,0xCF,0xDF,0xD F,0xCF,0xE0},{0xFF,0xFB,0xFB,0xFB,0x7B,0x1B,0x8B,0xE3,0xFF,0xFF,0xFF,0xC3,0xC0,0xF C,0xFF,0xFF},{0xFF,0xCF,0x87,0x33,0x7B,0x7B,0x33,0x87,0xFF,0xF1,0xE0,0xCE,0xDF,0xD F,0xCE,0xE0},{0xFF,0x0F,0x07,0xF3,0xFB,0xFB,0xF3,0x07,0xFF,0xF7,0xE6,0xCC,0xDD,0xD D,0xCC,0xE0}};uchar code shisu[][16]={{0xFF,0x3F,0x0F,0x87,0xE7,0xF7,0x07,0x0F,0xFF,0xF8,0xF0,0xF7,0xF3,0xF 0,0xF8,0xFE},{0xFF,0xFF,0xDF,0x5F,0x0F,0x07,0xE7,0xFF,0xFF,0xFF,0xF3,0xF0,0xF8,0xF F,0xFF,0xFF},{0xFF,0xFF,0xFF,0xCF,0x47,0x77,0x37,0x87,0xFF,0xF5,0xF1,0xF8,0xF2,0xF 3,0xF3,0xF3},{0xFF,0xFF,0xEF,0xCF,0x47,0x77,0x37,0x87,0xFF,0xF9,0xF1,0xF7,0xF7,0xF 7,0xF0,0xF8},{0xFF,0xFF,0xFF,0x7F,0x3F,0x9F,0x0F,0x07,0xFF,0xFD,0xFC,0xFC,0xF5,0xF 0,0xF0,0xFC},{0xFF,0xBF,0x8F,0x87,0xA7,0x27,0x67,0xF7,0xF9,0xF1,0xF7,0xF7,0xF3,0xF 0,0xF8,0xFF},{0xFF,0x7F,0x1F,0x0F,0xA7,0xB7,0x37,0x47,0xFF,0xF8,0xF0,0xF7,0xF7,0xF 3,0xF0,0xF8},{0xFF,0xCF,0xC7,0xE7,0x67,0x27,0x8F,0xC7,0xFF,0xFF,0xF1,0xF0,0xF8,0xF F,0xFF,0xFF},{0xFF,0xFF,0x7F,0x0F,0x07,0x77,0x37,0x87,0xFF,0xF0,0xF0,0xF6,0xF7,0xF 7,0xF0,0xF0},{0xFF,0xFF,0x8F,0x07,0x77,0x77,0x07,0x0F,0xFF,0xF3,0xF3,0xF7,0xF7,0xF 1,0xF8,0xFE},};uchar code gonli[][16]={{0xFF,0x0F,0xF7,0xFB,0xFB,0xFB,0xF7,0x0F,0xFF,0xF0,0xEF,0xDF,0xDF,0xD F,0xEF,0xF0},{0xFF,0xFF,0xF7,0xF7,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xF F,0xFF,0xFF},{0xFF,0xCF,0xF7,0xFB,0xFB,0xFB,0x77,0x8F,0xFF,0xCF,0xD7,0xDB,0xDD,0xD E,0xDF,0xDF},{0xFF,0xEF,0xF7,0x7B,0x7B,0x7B,0xB7,0xCF,0xFF,0xF7,0xEF,0xDF,0xDF,0xD F,0xEE,0xF1},B,0xC0,0xFB},{0xFF,0x03,0x7B,0xBB,0xBB,0xBB,0x7B,0xFB,0xFF,0xF6,0xEF,0xDF,0xDF,0xD F,0xEF,0xF0},{0xFF,0x0F,0x77,0xBB,0xBB,0xBB,0x77,0xEF,0xFF,0xF0,0xEF,0xDF,0xDF,0xD F,0xEF,0xF0},{0xFF,0xFB,0xFB,0xFB,0x7B,0x9B,0xEB,0xF3,0xFF,0xFF,0xFF,0xC3,0xFC,0xF F,0xFF,0xFF},{0xFF,0xCF,0xB7,0x7B,0x7B,0x7B,0xB7,0xCF,0xFF,0xF1,0xEE,0xDF,0xDF,0xD F,0xEE,0xF1},{0xFF,0x0F,0xF7,0xFB,0xFB,0xFB,0xF7,0x0F,0xFF,0xF7,0xEE,0xDD,0xDD,0xD D,0xEE,0xF0},};uchar code hanzi[][32]={{0xBF,0xDF,0xEF,0xF3,0x1C,0xDD,0xDD,0xDD,0x01,0xDD,0xDD,0xDD,0xDD,0xF D,0xFF,0xFF,0xFB,0xFB,0xFB,0xFB,0xF8,0xFB,0xFB,0xFB,0x00,0xFB,0xFB,0xFB,0xFB,0xFB ,0xFB,0xFF},{0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xEE,0xEE,0xEE,0xEE,0xEE,0x00,0xFF,0xF F,0xFF,0xFF,0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFE,0xFE,0xFE,0xDE,0xBE,0xC0,0xFF,0xFF ,0xFF,0xFF},{0xFF,0xFF,0xFF,0x01,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0x01,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xC0,0xFF,0xFF ,0xFF,0xFF},{0xFF,0x03,0xBB,0xBB,0xBB,0x03,0xEF,0x6F,0xEF,0xEF,0xEF,0x00,0xEF,0xE F,0xEF,0xFF,0xFF,0xF8,0xFB,0xFB,0xFB,0xF8,0xFF,0xFF,0xFC,0xBF,0x7F,0x80,0xFF,0xFF ,0xFF,0xFF},{0x7F,0xBF,0xDF,0x67,0x78,0x7D,0x7F,0x7F,0x7C,0x7B,0x67,0xCF,0x9F,0x3 F,0xBF,0xFF,0xFF,0x7F,0xBF,0xDF,0xEF,0xF0,0xFF,0xFF,0xDF,0xBF,0xC0,0xFF,0xFF,0xFF ,0xFF,0xFF},{0xED,0xED,0x2D,0x01,0x6E,0xEE,0x3F,0xC7,0xEF,0xFF,0x00,0xFF,0xF7,0xE F,0x9F,0xFF,0xFB,0xFC,0xFF,0x00,0xFF,0x7C,0x7F,0xBF,0xBF,0xDF,0xDC,0xEF,0xF7,0xFB ,0xFC,0xFF},{0xFF,0xFF,0x03,0xF7,0xF7,0xF7,0xF7,0x00,0xF7,0xF7,0xF7,0xF7,0x03,0xF 7,0xFF,0xFF,0xFF,0xFF,0xF8,0xFD,0xFD,0xFD,0xFD,0x00,0xFD,0xFD,0xFD,0xFD,0xF8,0xFF ,0xFF,0xFF},{0xFF,0xDF,0xDF,0xDD,0xDD,0x1D,0xDD,0xDD,0xDD,0x1D,0xDD,0xDD,0xDD,0xD F,0xDF,0xFF,0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFF,0xFF,0xFF,0xC0,0xBF,0xBF,0xBF,0xBF ,0x8F,0xFF},{0xFF,0xFF,0xFF,0x01,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0x01,0xFF,0xF F,0xFF,0xFF,0xBF,0xBF,0xBF,0xB8,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xB8,0xBF,0xBF ,0xBF,0xFF},{0xFB,0x9B,0xDB,0xDB,0xDB,0xD0,0x1B,0xDB,0xDB,0xDB,0xD0,0xDB,0xDB,0x9 B,0xDB,0xFF,0xFF,0xFF,0x7E,0xBE,0xDE,0xE6,0xF8,0xFE,0xFE,0xBE,0x7E,0x80,0xFF,0xFF ,0xFF,0xFF},{0xDF,0xDB,0xDB,0x1B,0xDB,0xDB,0xDB,0xDF,0xEF,0xEF,0x00,0xEF,0xEF,0x0 F,0xFF,0xFF,0xF7,0xE3,0xF4,0xF7,0xF3,0xFA,0xB1,0xDB,0xEF,0xF3,0xFC,0xDF,0xBF,0xC0 ,0xFF,0xFF},{0xFF,0x01,0xFD,0xF5,0x75,0x75,0x75,0x05,0x75,0x75,0x75,0xF5,0xFD,0x0 1,0xFF,0xFF,0xFF,0x00,0xBF,0xB7,0xB7,0xB7,0xB7,0xB0,0xB7,0xB6,0xB1,0xB7,0xBF,0x00 ,0xFF,0xFF},{0xFF,0xFF,0x03,0xBB,0xBB,0xBB,0xBB,0x3A,0x81,0x3B,0xBB,0xBB,0xBB,0xB B,0xBB,0xFF,0xBF,0xCF,0xF0,0xBF,0xDF,0xEF,0xF3,0xFC,0xFF,0xFE,0xF9,0xE7,0xCF,0x9F ,0xDF,0xFF},{0xFB,0xFB,0xBB,0xBB,0xBB,0xA0,0x3B,0xBB,0xBB,0xBB,0xA0,0xBB,0x3B,0xF B,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xF7,0xEF,0xF0,0xFF ,0xFF,0xFF},{0xFF,0xFF,0xFF,0x01,0xFD,0xBD,0xB5,0xB5,0x81,0xB5,0xB5,0xBD,0xFD,0x0 1,0xFF,0xFF,0x7F,0xBF,0xCF,0xF0,0xFF,0xFF,0xE0,0xF6,0xF6,0xF6,0xE0,0xBF,0x7F,0x80 ,0xFF,0xFF},{0xFF,0xFF,0x7F,0xBF,0xCF,0xF1,0x7B,0xFF,0xFF,0xF1,0xEF,0x9F,0x3F,0x7 F,0x7F,0xFF,0xFF,0xFE,0xDF,0x8F,0xD7,0xDB,0xDC,0xCE,0xEF,0xEF,0xEB,0x87,0xCF,0xFE ,0xFF,0xFF},{0xFF,0xDF,0xE7,0xF7,0x77,0x17,0xE0,0x95,0x77,0xF7,0x77,0x37,0x57,0xE 3,0xF7,0xFF,0xF7,0xFB,0xFD,0xBE,0x00,0xBF,0xDF,0xEF,0xFE,0xFD,0xF2,0xE7,0x8F,0xDF ,0xDF,0xFF},{0x7F,0x3F,0x4F,0x73,0x78,0x7B,0x7B,0x03,0x7B,0x7B,0x7B,0x7B,0x7B,0x3 F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},{0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xFF,0xA0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},{0xFF,0x07,0xFE,0xF9,0xFF,0x0F,0x6D,0x6D,0x6D,0x6D,0x0D,0xFD,0xFD,0x0 1,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xF8,0xFB,0xFB,0xFB,0xFB,0xF8,0xBF,0x7F,0x80 ,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xC0,0x3D,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFF,0xFF,0xFE,0xF9,0xF3,0xE7,0xCF,0x9F ,0xDF,0xFF},{0xEF,0xEF,0x2F,0xC0,0xEF,0x6F,0x8F,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0x0 7,0xFF,0xFF,0x7F,0xBE,0xDD,0xEB,0xF3,0xEC,0x9F,0xDF,0xDE,0xDE,0xDE,0xDE,0xDE,0x80 ,0xFF,0xFF},{0xDF,0xDF,0xDF,0xDF,0x1F,0xC7,0xD8,0xDF,0xDF,0xDF,0x1F,0xDF,0xDF,0xD F,0xDF,0xFF,0x7F,0x7F,0xBF,0xBE,0xDD,0xDD,0xEB,0xF3,0xF3,0xF4,0xEF,0xCF,0x1F,0xBF ,0xFF,0xFF},{0xFF,0xFF,0x3F,0xA0,0xAA,0xAA,0xAA,0x00,0xAA,0x2A,0xAA,0xAA,0xA0,0x3 F,0xFF,0xFF,0xFF,0xBF,0x88,0xFF,0xC6,0xBE,0xBE,0xB6,0xAE,0xBE,0xBC,0x9F,0xFB,0xE8 ,0x9F,0xFF},{0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0x7F,0xBF,0xCF,0xF3,0xFC,0xFF,0xFF,0xFF,0xC0,0xBF,0xBF,0xBF,0xBF ,0x87,0xFF},{0xEF,0xEF,0xEB,0x2B,0xA3,0xAB,0xAA,0x29,0xAB,0xAB,0xA3,0x2B,0xEB,0xE F,0xEF,0xFF,0xBF,0xBF,0xAF,0xA8,0xAA,0xAA,0xAA,0x80,0xAA,0xAA,0xAA,0xA8,0xAF,0xBF ,0xBF,0xFF},{0xFF,0xFD,0xFD,0x3D,0xFD,0xFD,0xFD,0xFD,0x01,0x7D,0x7D,0x7D,0x7D,0x7 D,0xFD,0xFF,0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xDF,0xDF,0xDF ,0xDF,0xFF},{0xFF,0x01,0xED,0xED,0x01,0xFF,0x0B,0xE4,0x4B,0xA5,0x4E,0xEB,0xE5,0x0 E,0xFF,0xFF,0x7F,0x80,0xFE,0x7E,0x00,0xFF,0x00,0xAA,0xFE,0x00,0xAA,0xFE,0x80,0x7E ,0x9F,0xFF},{0xBF,0xBF,0xBB,0xAB,0xAB,0x2B,0x8B,0xA0,0xAB,0xAB,0x2B,0xAB,0xAB,0xB0xFB,0xFB,0xFD,0xFD,0x80,0xB5,0xB5,0xB5,0xB5,0xB5,0x81,0xFE,0xFC,0xF9 ,0xFD,0xFF},{0xAF,0x6E,0xE9,0xEF,0x0F,0xEF,0xBF,0xA1,0xAF,0xAF,0x20,0xAF,0xAF,0xA 1,0xBF,0xFF,0xEF,0xEC,0xEF,0xF0,0xF7,0xF7,0x00,0xFE,0xFE,0xC0,0xFE,0xC0,0xBE,0x7E ,0x80,0xFF},{0xDB,0xDB,0x1B,0x03,0x5D,0xDD,0xDD,0x7F,0x8F,0xFF,0x00,0xBF,0xDF,0xE 7,0xFF,0xFF,0xFD,0xFE,0xFF,0x00,0xFF,0x7C,0xBF,0xDF,0xE7,0xF8,0xFE,0xF9,0xE7,0x1F ,0xBF,0xFF},{0xFF,0xFF,0x07,0x07,0xD6,0xD0,0xD1,0x05,0x07,0xD3,0xD0,0xD4,0x05,0x0 7,0xFF,0xFF,0xF7,0xF7,0xF4,0xF4,0xF6,0xF6,0xF6,0x00,0x00,0xF6,0xF6,0xF6,0xF4,0xF4 ,0xF7,0xF7},{0xFF,0xFF,0xFF,0x01,0x01,0xEF,0xEF,0xEF,0xEF,0xE0,0xE0,0xEF,0xEF,0xE 7,0xE7,0xEF,0x7F,0x3F,0x8F,0xC0,0xF0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x00,0x00,0xFF ,0xFF,0xFF},{0xF7,0xF7,0x37,0x00,0x00,0x37,0x77,0xF7,0x01,0x01,0xFD,0xFD,0x01,0x0 1,0xFF,0xFF,0xFB,0xF8,0xFC,0x00,0x00,0xBE,0x8E,0xC3,0xF0,0xFC,0xFF,0xFF,0xC0,0x80 ,0x87,0x87},{0xBF,0x8F,0xCF,0xED,0xA1,0xA3,0xAB,0xAE,0xA0,0x21,0x2B,0xA7,0xA0,0x8 8,0xCD,0xEF,0xFF,0xFD,0xFD,0xFD,0xFD,0xFD,0xBD,0x3D,0x00,0x80,0xFD,0xFD,0xFD,0xFD ,0xFD,0xFD},{0xEF,0x67,0x33,0x00,0xC4,0xAD,0xB7,0xB7,0xB7,0x80,0x80,0xB7,0xB7,0xB 7,0xBF,0xFF,0xFE,0xFE,0x00,0x00,0x3F,0x9F,0xC3,0xC3,0x9F,0x80,0x80,0xBB,0xBB,0xBB ,0xBF,0xBF},};uchar code xinqi[][32]={{0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x3 F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},{0xFF,0xFF,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xF9,0xFB,0xF F,0xFF,0xFF,0xFF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE7 ,0xEF,0xFF},{0xFF,0xFB,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0xF B,0xFF,0xFF,0xFF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF ,0xDF,0xFF},{0xFF,0x01,0xFD,0xFD,0xFD,0x01,0xFD,0xFD,0x01,0xFD,0xFD,0xFD,0xFD,0x0 1,0xFF,0xFF,0xFF,0x80,0xD7,0xDB,0xDC,0xDF,0xDF,0xDF,0xDE,0xDD,0xDD,0xDD,0xDD,0x80 ,0xFF,0xFF},{0xFF,0xFD,0x7D,0x7D,0x7D,0x7D,0x01,0x7D,0x7D,0x7D,0x3D,0x7D,0xFD,0xF F,0xFF,0xFF,0xDF,0xDF,0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xCF ,0xDF,0xFF},{0xEF,0xEF,0xEF,0xEF,0xEF,0x6E,0xED,0xE1,0x6B,0xEF,0xEF,0xEF,0xEF,0xE F,0xEF,0xFF,0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFE,0xFF,0xFF,0xFE,0xFD,0xF3,0x87,0xCF ,0xFF,0xFF},{0xFF,0xFF,0xFF,0x01,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0x01,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xC0,0xFF,0xFF ,0xFF,0xFF},};uchar code yinli[][32]={{0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0x00,0xBF,0xBF,0xBF,0xBF,0xBF,0xB F,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},{0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x3 F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},{0xFF,0xFF,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xF9,0xFB,0xF F,0xFF,0xFF,0xFF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE7 ,0xEF,0xFF},{0xFF,0xFB,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0xF B,0xFF,0xFF,0xFF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF ,0xDF,0xFF},{0xFF,0x01,0xFD,0xFD,0xFD,0x01,0xFD,0xFD,0x01,0xFD,0xFD,0xFD,0xFD,0x0 1,0xFF,0xFF,0xFF,0x80,0xD7,0xDB,0xDC,0xDF,0xDF,0xDF,0xDE,0xDD,0xDD,0xDD,0xDD,0x80 ,0xFF,0xFF},{0xFF,0xFD,0x7D,0x7D,0x7D,0x7D,0x01,0x7D,0x7D,0x7D,0x3D,0x7D,0xFD,0xF F,0xFF,0xFF,0xDF,0xDF,0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xCF ,0xDF,0xFF},{0xEF,0xEF,0xEF,0xEF,0xEF,0x6E,0xED,0xE1,0x6B,0xEF,0xEF,0xEF,0xEF,0xE F,0xEF,0xFF,0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFE,0xFF,0xFF,0xFE,0xFD,0xF3,0x87,0xCF ,0xFF,0xFF},{0xFF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0x01,0xDF,0xDF,0xDF,0xDF,0xDF,0xD F,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xBF,0xBF,0xBF,0xBF,0xBF,0xC7 ,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF,0x7F,0x83,0xF7,0xFF,0xFF,0x81,0x7B,0xFF,0xFF,0xF F,0xFF,0xFF,0xDF,0xEF,0xF7,0xF9,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF9,0xE7,0xCF ,0xEF,0xFF},{0xFF,0xEF,0xEF,0xEF,0xEF,0x6F,0x80,0xEF,0xEF,0xEF,0x07,0xEF,0xFF,0xF F,0xFF,0xFF,0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFF,0xFF,0xFF,0xFF,0x80,0xBF,0xBF,0x87 ,0xDF,0xFF},{0xFF,0xF7,0x77,0x36,0xD1,0x67,0xB7,0xFF,0xF7,0xF7,0x07,0xF7,0xF7,0x0 3,0xF7,0xFF,0xFD,0xFE,0xFF,0x80,0xFE,0xFD,0xBB,0xDF,0xEF,0xF3,0xFC,0xDF,0xBF,0xC0 ,0xFF,0xFF},{0xDF,0xDF,0xDF,0xDF,0x00,0xDF,0xDF,0xDF,0xDF,0xDF,0x00,0xDF,0xDF,0xD F,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0xDF,0xDF,0xDF,0xDF,0xDF,0x80,0xFF,0xFF,0xFF ,0xFF,0xFF},};void Delay(uint a){uchar i;while(a--)for(i=0;i<125;i++);}void Lcd_Display_On(){port=0x3f;rs=0;rw=0;e=1;e=0;}void Lcd_Display_Off(){port=0x3e;rs=0;rw=0;e=1;e=0;}void Lcd_Set_X(uchar x){port=0xb8|x;rs=0;rw=0;e=1;e=0;}void Lcd_Set_Y(uchar y){port=0x40|y;rs=0;rw=0;e=1;e=0;}void Lcd_Set_X_Y(uchar x, uchar y){if( y<64 ){ cs1=1; cs2=0; Lcd_Set_Y( y ); }else{ cs1=0; cs2=1; Lcd_Set_Y( y-64 ); }Lcd_Set_X( x);}void Lcd_Write_Command(uchar temp){port=temp;rs=0;rw=0;e=1;e=0;}void Lcd_Write_Byte(uchar temp){port=temp;rs=1;rw=0;e=1;e=0;}void showword816( bit bit_flag, uchar x, uchar y, uchar code *point ) {uchar i , j,temp;temp=y;if( bit_flag ){for( i=0; i<2; i++ ){x+=i;y=temp;for( j=0;j<8;j++ ){Lcd_Set_X_Y( x, y ); y++;Lcd_Write_Byte( point[ i*8 + j] );}}}else{for( i = 0; i < 2; i++ ){x += i;y = temp;for( j = 0; j < 8; j++ ){Lcd_Set_X_Y( x, y ); y++;Lcd_Write_Byte( ~point[ i * 8 + j ] );}}}}void showword1616( bit bit_flag, uchar x, uchar y, uchar code *point ) {uchar i,j,temp ;temp=y;if( bit_flag ){for( i=0; i<2; i++ ){x+=i;y=temp;for( j=0;j<16;j++ ){Lcd_Set_X_Y( x, y ); y++;Lcd_Write_Byte( point[ i*16 + j] );}}else{for( i = 0; i<2; i++ ){x += i;y = temp;for( j = 0; j < 16; j++ ){Lcd_Set_X_Y( x, y ); y++;Lcd_Write_Byte( ~ point[ i * 16 + j ] );}}}}void Lcd_Clear(){uchar i,j;cs1=1;cs2=1;for(i=0;i<8;i++){Lcd_Set_X( i );Lcd_Set_Y( 0 );for(j=0;j<64;j++)Lcd_Write_Byte(0x00);}}void Lcd_init(){Lcd_Display_Off();Lcd_Write_Command(0xb8);Lcd_Write_Command(0x40);Lcd_Write_Command(0xc0);Lcd_Clear();Lcd_Display_On();}uchar leapyear(uint year){return(year%4==0&&year%100!=0)||(year%400==0); }void refweek(){uint i,d,w = 5;for (i=2000;i<2000+year;i++)d = leapyear(i)? 366:365;w = (w+d)%7;}d = 0;for (i=0;i<month;i++)d += monthcode[i];d += day;week = (w+d+6)%7;}bit get_moon_day(uchar month_p,uint table_addr) {uchar temp;switch (month_p){case 1:{temp=year_code[table_addr]&0x08;if (temp==0)return(0);else return(1);}case 2:{temp=year_code[table_addr]&0x04;if (temp==0)return(0);else return(1);}case 3:{temp=year_code[table_addr]&0x02;if (temp==0)return(0);else return(1);}case 4:{temp=year_code[table_addr]&0x01;if (temp==0)return(0);else return(1);}case 5:{temp=year_code[table_addr+1]&0x80;if (temp==0) return(0);else return(1);}case 6:{temp=year_code[table_addr+1]&0x40;if (temp==0)return(0);else return(1);}case 7:{temp=year_code[table_addr+1]&0x20;if (temp==0)return(0);else return(1);}case 8:{temp=year_code[table_addr+1]&0x10;if (temp==0)return(0);else return(1);}case 9:{temp=year_code[table_addr+1]&0x08;if (temp==0)return(0);else return(1);}case 10:{temp=year_code[table_addr+1]&0x04;if (temp==0)return(0);else return(1);}case 11:{temp=year_code[table_addr+1]&0x02;if (temp==0)return(0);else return(1);}case 12:{temp=year_code[table_addr+1]&0x01;if (temp==0)return(0);else return(1);}case 13:{temp=year_code[table_addr+2]&0x80;if (temp==0)return(0);else return(1);}}}void Conversion(uchar year,uchar month,uchar day)uchar temp1,temp2,temp3,month_p;uint temp4,table_addr;bit flag_y;table_addr=(year-1)*3;temp1=year_code[table_addr+2]&0x60;temp1=_cror_(temp1,5);temp2=year_code[table_addr+2]&0x1f;if(temp1==0x1){temp3=temp2-1;}else{temp3=temp2+0x1f-1;}if (month<10){temp4=day_code1[month-1]+day-1;}else{temp4=day_code2[month-10]+day-1;}if ((month>0x2)&&(year%0x4==0)){temp4+=1;}if (temp4>=temp3){temp4-=temp3;month=0x1;month_p=0x1;flag_y=0;if(get_moon_day(month_p,table_addr)==0)temp1=0x1d; else temp1=0x1e;temp2=year_code[table_addr]/16;while(temp4>=temp1){temp4-=temp1;month_p+=1;if(month==temp2){flag_y=~flag_y;if(flag_y==0)month+=1;}else month+=1;if(get_moon_day(month_p,table_addr)==0)temp1=0x1d; else temp1=0x1e;}day=temp4+1;}else{temp3-=temp4;year-=1;table_addr-=0x3;month=0xc;temp2=year_code[table_addr]/16;if (temp2==0)month_p=0xc;else month_p=0xd;flag_y=0;if(get_moon_day(month_p,table_addr)==0)temp1=0x1d; else temp1=0x1e;while(temp3>temp1){temp3-=temp1;month_p-=1;if(flag_y==0)month-=1;if(month==temp2)flag_y=~flag_y;if(get_moon_day(month_p,table_addr)==0)temp1=0x1d; else temp1=0x1e;}day=temp1-temp3+1;}yyear = year;ymonth = month;yday = day;flagnl = 1;}void mcuinit(){flagt = 0;flagjr = 1;flagnl = 0;year = 11;month = 3;day = 10;hour = 12;min = 0;sec = 0;TMOD = 0X01;TH0 = (65536-TT)/256;TL0 = (65536-TT)%256;EA = 1;ET0 = 1;EX0 = 1;IT0 = 1;TR0 = 1;}void displayday(){if ((ymonth==1 && yday==1)||(ymonth==5 && yday==5)||(ymonth==8 && yday==15)){if (ymonth==1 && yday==1){one = 29;two = 18;thr = 13;fou = 18;fiv = 19;}if (ymonth==5 && yday==5){one = 30;two = 18;thr = 17;fou = 18;fiv = 13;}if (ymonth==8 && yday==15){one = 6;two = 18;thr = 31;fou = 18;fiv = 13;}}else{((month==1&&day==1)||(month==5&&day==1)||(month==6&&day==1)||(month== 4&&day==1)||(month==3&&day==8)||(month==10&&day==1)){if (month==1&&day==1){one = 7;two = 18;thr = 8;fou = 18;fiv = 13;}if (month==3&&day==8){one = 22;two = 18;thr = 23;fou = 18;fiv = 13;}if (month==4&&day==1){one = 24;two = 18;thr = 21;fou = 18;fiv = 13;}if (month==5&&day==1){one = 9;two = 18;thr = 10;fou = 18;fiv = 13;}if (month==6&&day==1){one = 25;two = 18;thr = 26;fou = 18;fiv = 13;if (month==10&&day==1){one = 11;two = 18;thr = 12;fou = 18;fiv = 13;}}else{one = 32;two = 33;thr = 34;fou = 35;fiv = 36;}}flagjr = 0;}void display(){if (flagjr == 1){Conversion(year,month,day); displayday();}refweek();if (flagt == 1){showword816(0,0,32,shuzi[year/10]); showword816(0,0,40,shuzi[year%10]); }else{showword816(1,0,32,shuzi[year/10]); showword816(1,0,40,shuzi[year%10]); }if (flagt == 2){showword816(0,0,64,shuzi[month/10]); showword816(0,0,72,shuzi[month%10]); }else{showword816(1,0,64,shuzi[month/10]); showword816(1,0,72,shuzi[month%10]); }if (flagt == 3){showword816(0,0,96,shuzi[day/10]); showword816(0,0,104,shuzi[day%10]); }else{showword816(1,0,96,shuzi[day/10]); showword816(1,0,104,shuzi[day%10]); }showword816(1,4,32,gonli[yyear/10]); showword816(1,4,40,gonli[yyear%10]); if (ymonth == 1)showword1616(1,4,64,hanzi[27]);elseif (ymonth == 12)showword1616(1,4,64,hanzi[28]);else{showword816(1,4,64,gonli[ymonth/10]); showword816(1,4,72,gonli[ymonth%10]); }if (yday/10==0){showword1616(1,4,96,yinli[10]);}elseif (yday/10==1){if (yday%10==0)showword1616(1,4,96,yinli[10]);elseshowword1616(1,4,96,yinli[0]);}elseif (yday/10==2)showword1616(1,4,96,yinli[11]);elseif (yday/10 == 3)showword1616(1,4,112,yinli[yday%10]); if (flagt == 4){showword816(0,2,32,shisu[hour/10]); showword816(0,2,40,shisu[hour%10]); }else{showword816(1,2,32,shisu[hour/10]); showword816(1,2,40,shisu[hour%10]); }if (flagt == 5){showword816(0,2,64,shisu[min/10]); showword816(0,2,72,shisu[min%10]);}else{showword816(1,2,64,shisu[min/10]); showword816(1,2,72,shisu[min%10]);}if (flagt == 6){showword816(0,2,96,shisu[sec/10]); showword816(0,2,104,shisu[sec%10]); }else{showword816(1,2,96,shisu[sec/10]); showword816(1,2,104,shisu[sec%10]); }showword1616(1,6,16,xinqi[week]); showword1616(1,0,112,hanzi[2]); showword1616(1,4,0,hanzi[16]); showword816(1,4,16,gonli[2]); showword816(1,4,24,gonli[0]); showword1616(1,0,0,hanzi[15]); showword816(1,0,16,shuzi[2]); showword816(1,0,24,shuzi[0]); showword1616(1,0,48,hanzi[0]); showword1616(1,0,80,hanzi[1]); showword1616(1,4,48,hanzi[0]); showword1616(1,4,80,hanzi[1]);showword1616(1,2,16,hanzi[20]); showword1616(1,2,48,hanzi[3]); showword1616(1,2,80,hanzi[4]); showword1616(1,2,112,hanzi[5]); showword1616(1,6,0,hanzi[14]); showword1616(1,6,32,hanzi[18]); showword1616(1,6,48,hanzi[one]); showword1616(1,6,64,hanzi[two]); showword1616(1,6,80,hanzi[thr]); showword1616(1,6,96,hanzi[fou]); showword1616(1,6,112,hanzi[fiv]); }void int0_0() interrupt 0{if (set == 0){EX0 = 0;Delay(10);if (set == 0){while (!set);TR0 = 0;flagt++;if (flagt > 6)flagt = 1;}EX0 = 1;}if (flagt != 0){if (add == 0){EX0 = 0;Delay(10);if (add == 0){while (!add);if (flagt == 1){year++;if (year > 99)year = 1;flagjr = 1;Conversion(year,month,day);}if (flagt == 2){month++;if (month > 12)month = 1;flagjr = 1;Conversion(year,month,day);}if (flagt == 3){day++;if(month==1||month==3||month==5||month==7||month==8||month==10||month== 12){if (day > 31)day = 1;}if (month==4||month==6||month==9||month==11){if (day > 30)day = 1;}if (month==2){if (leapyear(year)){if (day > 29)day = 1;}else{if (day > 28)day = 1;}}flagjr = 1;Conversion(year,month,day);}if (flagt == 4){hour++;if (hour > 23)hour = 0;}if (flagt == 5){min++;if (min > 59)min = 0;}if(flagt == 6){sec++;if (sec > 59)sec = 0;}}EX0 = 1;}if (dec == 0){EX0 = 0;Delay(10);if (dec == 0){while (!dec);if (flagt == 1){year--;if (year < 1)year = 99;flagjr = 1;Conversion(year,month,day); }if (flagt == 2){month--;if (month < 1)month = 12;flagjr = 1;Conversion(year,month,day); }if (flagt == 3){day--;if(month==1||month==3||month==5||month==7||month==8||month==10||month== 12){if (day < 1)day = 31;}if (month==4||month==6||month==9||month==11){if (day < 1)day = 30;}if (month==2){if (leapyear(year)){if (day < 1)day = 29;}else{if (day < 1)day = 28;}}flagjr = 1;Conversion(year,month,day);}if (flagt == 4){hour--;if (hour < 0)hour = 23;}if (flagt == 5){min--;if (min < 0)min = 59;}if (flagt == 6){sec--;if (sec < 0)sec = 59;}}}EX0 = 1;}if (ok == 0){Delay(10);EX0 = 0;if (ok == 0){while (!ok);TR0 = 1;flagt = 0;flagjr = 1;Conversion(year,month,day); }EX0 = 1;}}void main(){Lcd_init();mcuinit();while (1){display();}}void timer0() interrupt 1 {static uchar i;TH0 = (65536-TT)/256;TL0 = (65536-TT)%256;i++;if(i>19){i = 0;sec++;if (sec>59){sec = 0;min++;。
万年历 电子档

SN:1972
最新个人所得税计算表
2011.9月1日执行
1495
将文字"12月"变成文字1212
再把文字12.转换成数字12.12
计算汉字"会计"几个字符2
计算"124元"几个字符4
从身份证号中提取生日
197203021972-3-2
计算日期和时间
显示当年时间 只要年月日2013年3月31日 2013/3/31
显示当年时间 只要星期星期日
显示当年时间 只要时间9时41分11秒
显示当年时间 要年大写一九二○年二○一三
通过TEXT转换成不同的时间格式.但是为文体格式.
1950-12-33
得到一个新的日期1950-8-2
对时间格式的年月日提取,分别用YEAE MOUTH DAY.
计算每月天数
计算2011年2月有多少天.先求月末日期2011-2-28
然后用DAY把日期提取.28
计算星期
计算任意一天是星期几.(星期日为7)
计算2011年5月1日星期几?2
计算2011年2月23日星期几?3
计算今天是星期几7
另一方法计算和显示今天星期几星期日
计算节日
计算每年(2012年)母亲节日期 每年5月2012-5-13
用该年5月1日 + 14天 - 5月1日的星期几。
同样可计算父亲节的日期2012-6-17星期四
两种方法显示当前时间:09:41
星期W11
106333.5
10268.7
37259
4.12827E+17
本年节气节日表
润年否否
月末日期2010-2-28本月天数28
上月天数31
月首星期数星期日。
电子万年历实训报告

2、引言
单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)部件都集成在一块集成电路芯片上的微型计算机。单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。它是一种集计数和多中接口于一体的微控制器,被广泛应用在智能产品和工业自动化上,而52单片机是个单片机中最为典型和最有代表性的一种。
·P2口:P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输入缓冲极可以驱动(输入或输出电流)4个TTL逻辑门电路。对端口“1”,通过内部的上拉电阻把端口拉到高电平,此时和作为输出口,作输出口时,因为存在内部上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部存储器或1位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线的内容(也既特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高地址和其他控制信号。
3.2硬件的设计总框图
本次设计的基于单片机控制的电子万年历,其具有年、月、日、星期、时、分、秒的显示功能;具体时间与阴、阳历能够自动关联;可以设置闹铃的功能。其具体实现过程就是由主控制发送信息给DS1302时钟芯片再由时钟芯片反馈给LCD显示信息。并且可以在键盘设置模块输入修改时间,设置闹铃等信息,当键盘设置时间、日期时,单片机主控制根据输入信息,通过串口通信此传送给DS1302时钟芯片,DS1302芯片读取当前新信息产生反馈传送给单片机,然后单片机根据控制最后输送显示信息到LCD模块上显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <reg52.h>#include <string.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit CLK=P1^1; //DS1302时钟线sbit SDA=P1^0; // DS1302数据线sbit RST=P1^2; //DS1302复位线sbit RS=P2^0;//数据/指令选择端口sbit RW=P2^1;//读写端口sbit EN=P2^2;//使能端口sbit K1=P3^4; // 选择sbit K2=P3^5; // 加sbit K3=P3^6; // 减sbit K4=P3^7; // 确定uchar tCount=0;//一年中每个月的天数,2月的天数由年份决定uchar MonthsDays[]={0,31,0,31,30,31,30,31,31,30,31,30,31};uchar *WEEK[]={"sun","mon","tus","wen","thu","fri","sat"};//周日,周一到周六uchar LCD_DSY_BUFFER1[]={"Date 00-00-00 "}; //LCD显示缓冲uchar LCD_DSY_BUFFER2[]={"Time 00-00-00 "};uchar DateTime[7]; //所读取的日期时间char Adjust_Index=-1; //当前调节的时间:秒,分,时,日,uchar Change_Flag[]="-MHDM-Y";uchar Read_LCD_State();//读LCD状态void LCD_Busy_Wait();//判忙void Write_LCD_Data(uchar dat);//写数据void Write_LCD_Command(uchar cmd);//写命令void Init_LCD();//LCD初始化void Set_LCD_POS(uchar p);//设置显示位置void Display_LCD_String(uchar p,uchar *s);//写字符串void DelayMS(uint x)//延时{uchar i;while(x--) for(i=0;i<120;i++);}uchar Read_LCD_State()//读LCD状态{uchar state;RS=0;RW=1;EN=1;DelayMS(1);state=P0;EN=0;DelayMS(1);return state;}void LCD_Busy_Wait()//判忙{while((Read_LCD_State()&0x08)==0x80);DelayMS(5);}void Write_LCD_Data(uchar dat) //写数据{LCD_Busy_Wait();RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1);EN=0;}void Write_LCD_Command(uchar cmd)//写命令{LCD_Busy_Wait();RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS(1);EN=0;}void Init_LCD() //LCD初始化{Write_LCD_Command(0x38); DelayMS(1);Write_LCD_Command(0x01); DelayMS(1);Write_LCD_Command(0x06); DelayMS(1);Write_LCD_Command(0x0C); DelayMS(1);Display_LCD_String(0x00,"zhongzhoudaxue "); // DelayMS(1000);Display_LCD_String(0x40," dian zi ri li ");DelayMS(2000);}void Set_LCD_POS(uchar p){Write_LCD_Command(p|0x80);}void Display_LCD_String(uchar p,uchar *s) {uchar i;Set_LCD_POS(p);for(i=0;i<16;i++){Write_LCD_Data(s[i]);DelayMS(1);}}/*--------------------------向DS1302写入一字节---------------------------*/void DS1302_Write_Byte(uchar x){uchar i;for(i=0;i<8;i++){SDA=x&1;CLK=1;CLK=0;x>>=1;}}/*-------------------------------从DS1302读取一字节--------------------------------*/uchar DS1302_Read_Byte(){uchar i,b,t;for(i=0;i<8;i++){b>>=1;t=SDA;b|=t<<7;CLK=1;CLK=0;}return b/16*10+b%16;}/*-------------------------------从DS1302指定位置数据--------------------------------*/uchar Read_Data(uchar addr){uchar dat;RST=0;CLK=0;RST=1;DS1302_Write_Byte(addr);dat=DS1302_Read_Byte();CLK=1;RST=0;return dat;}/*-------------------------------向DS1302某地址写入数据--------------------------------*/void Write_DS1302(uchar addr,uchar dat){CLK=0;RST=1;DS1302_Write_Byte(addr);DS1302_Write_Byte(dat);CLK=0;RST=0;}/*------------------------------------设置时间------------------------------------*/void SET_DS1302(){uchar i;Write_DS1302(0x8e,0x00);for(i=0;i<7;i++){Write_DS1302(0x80+2*i,(DateTime[i]/10<<4|(DateTime[i]%10)));}Write_DS1302(0x8e,0x80);}/*------------------------------------读取当前时期时间------------------------------------*/void GetTime(){uchar i;for(i=0;i<7;i++){DateTime[i]=Read_Data(0x81+2*i);}}/*------------------------------------时间和日期转换成数字字符------------------------------------*/void Format_DateTime(uchar d,uchar *a){a[0]=d/10+'0';a[1]=d%10+'0';}/*------------------------------------判断是否为闰年------------------------------------*/uchar isLeapYear(uint y){return (y%4==0&&y%100!=0)||(y%400==0);}/*------------------------------------星期转换------------------------------------*/void RefreshWeekDay(){uint i,d,w=5;for(i=2000;i<2000+DateTime[6];i++){d=isLeapYear(i) ? 366 : 365;w=(w+d)%7;}d=0;for(i=1;i<DateTime[4];i++) d+=MonthsDays[i];d+=DateTime[3];DateTime[5]=(w+d)%7+1;}/*------------------------------------年月日时分秒++/--------------------------------------*/void DateTime_Adjust(char x){switch (Adjust_Index){case 6: //年if(x== 1&&DateTime[6]<99) DateTime[6]++;if(x==-1&&DateTime[6]>0) DateTime[6]--;MonthsDays[2]=isLeapYear(2000+DateTime[6])? 29:28;if(DateTime[3]>MonthsDays[DateTime[4]])DateTime[3]=MonthsDays[DateTime[4]];RefreshWeekDay();break;case 4: //月if(x== 1&&DateTime[4]<12) DateTime[4]++;if(x==-1&&DateTime[4]>1) DateTime[4]--;MonthsDays[2]=isLeapYear(2000+DateTime[6])? 29:28;if(DateTime[3]>MonthsDays[DateTime[4]])DateTime[3]=MonthsDays[DateTime[4]];RefreshWeekDay();break;case 3: //日MonthsDays[2]=isLeapYear(2000+DateTime[6])? 29:28;if(x== 1&&DateTime[3]<MonthsDays[DateTime[4]]) DateTime[3]++;if(x==-1&&DateTime[3]>0) DateTime[3]--;RefreshWeekDay();break;case 2: //时if(x== 1&&DateTime[2]<23) DateTime[2]++;if(x==-1&&DateTime[2]>0) DateTime[2]--;break;case 1: //秒if(x== 1&&DateTime[1]<59) DateTime[1]++;if(x==-1&&DateTime[1]>0) DateTime[1]--;break;}}/*------------------------------------定时器每秒刷新LCD显示------------------------------------*/void T0_INT() interrupt 1{TH0=-50000/256;TL0=-50000%256;if(++tCount!=2) return;tCount=0;Format_DateTime(DateTime[6],LCD_DSY_BUFFER1+5);Format_DateTime(DateTime[4],LCD_DSY_BUFFER1+8);Format_DateTime(DateTime[3],LCD_DSY_BUFFER1+11);strcpy(LCD_DSY_BUFFER1+13,WEEK[DateTime[5]-1]);Format_DateTime(DateTime[2],LCD_DSY_BUFFER2+5);Format_DateTime(DateTime[1],LCD_DSY_BUFFER2+8);Format_DateTime(DateTime[0],LCD_DSY_BUFFER2+11);Display_LCD_String(0x00,LCD_DSY_BUFFER1);Display_LCD_String(0x40,LCD_DSY_BUFFER2);}/*------------------------------------键盘中断------------------------------------*/void EX_INT0() interrupt 0{if(K1==0) //选择调整对象:年,月,日,时,分,秒{while(K1==0);if(Adjust_Index==-1||Adjust_Index==1) Adjust_Index=7;Adjust_Index--;if(Adjust_Index==5) Adjust_Index=4;LCD_DSY_BUFFER2[13]='[';LCD_DSY_BUFFER2[14]=Change_Flag[Adjust_Index];LCD_DSY_BUFFER2[15]=']';}elseif(K2==0) // 加{while (K2==0); DateTime_Adjust(1);}elseif(K3==0) // 减{while (K3==0); DateTime_Adjust(-1);}elseif(K4==0) // 确定{while(K4==0);SET_DS1302(); //调整后的时间写入DS1302LCD_DSY_BUFFER2[13]=' ';LCD_DSY_BUFFER2[14]=' ';LCD_DSY_BUFFER2[15]=' ';Adjust_Index=-1;}}/*------------------------------------主程序------------------------------------*/void main(){Init_LCD(); //CLD初始化IE=0x83; // 允许INT0,T0中断IP=0x01;IT0=0x01;TMOD=0x01;TH0=-50000/256;TL0=-50000%256;TR0=1;while(1){if(Adjust_Index==-1) GetTime();}}。