万年历原理
- 格式:rtf
- 大小:14.43 KB
- 文档页数:9
TEMPER_L EQU 40H;用于保存读出温度的高8位TEMPER_H EQU 41H;用于保存读出温度的低8位FLAG1 EQU 42H;是否检测到DS18B20标志位a_bit equ 43h ;数码管个位数存放内存位置b_bit equ 44h ;数码管十位数存放内存位置T_RST Bit P3.6 ;实时时钟复位线引脚T_CLK Bit P3.4 ;实时时钟时钟线引脚T_IO Bit P3.5 ;实时时钟数据线引脚SECOND EQU 45HMINUTE EQU 46HHOUR EQU 47HDAY EQU 48HMONTH EQU 49HWEEK EQU 4AHYEARL EQU 4BHCSA EQU p2.4CSB EQU p2.3rs EQU P2.2rw EQU P2.1E EQU P2.0COM EQU 21HDAT EQU 22Hcolumn EQU 23Hpagef EQU 24hcpage EQU 25Hccolumn EQU 26Hcodes EQU 27hcolumn2 EQU 28Hpagef2 equ 29hcpage2 EQU 2aHccolumn2 EQU 2bHcolumn3 EQU 2eHpagef3 equ 2fhcpage3 EQU 30Hccolumn3 EQU 31Hcolumn4 EQU 32Hpagef4 equ 33hcpage4 EQU 34Hccolumn4 EQU 35Hcolumn5 EQU 36Hpagef5 equ 37hcpage5 EQU 38Hccolumn5 EQU 39HORG 0LJMP STARTORG 3LJMP XX0ORG 13HLJMP XX1;*********************************************主程序开始START: MOV TMOD,#01HMOV TH0,#03CH ;置定时器初值(定时50ms)MOV TL0,#0B0HSETB TR0 ;启动定时器0MOV SP,#60H ;修改堆栈LCALL INT ;调用初始化子程序LCALL CLEAR ;调用清屏子程序;*********************************************固定显示字符mov column3,#48mov pagef3,#0mov codes,#8 ;年lcall writeleft2mov column4,#16mov pagef4,#0mov codes,#9 ;;;;;月lcall writeright2mov column4,#48mov pagef4,#0 ;;;;;;日mov codes,#10lcall writeright2mov column3,#0mov pagef3,#2 ;;;星mov codes,#11lcall writeleft2mov column3,#16mov pagef3,#2 ;;;;;;期mov codes,#12lcall writeleft2mov column4,#0mov pagef4,#2 ;;;;;; :mov codes,#13lcall writeright2mov column4,#32mov pagef4,#2mov codes,#13 ;;;;;; :lcall writeright2mov column4,#48mov pagef4,#4mov codes,#15 ;;;;;;;度lcall writeright2mov column,#16mov pagef,#0mov codes,#2 ;;;;;;;2lcall writeleftmov column,#24mov pagef,#0mov codes,#0 ;;;;;0lcall writeleftmov column4,#0mov pagef4,#4mov codes,#17 ;;;;;;;; 日lcall writeright2;************************** 笨小孩制作,860822lcall a26lcall a27lcall a28lcall a29lcall a30lcall a31lcall a32lcall a33lcall a34lcall a35lcall a36;*************************************************固定显示字符结束MOV DAY,#01H ;初始日期设为08年1月1日星期一MOV MONTH,#01HMOV YEARL,#08HLCALL SETDS1302 ;设置DS1302初始时间LCALL GET1302 ;从DS1302读取时间LCALL DISPLAY ;数码显示子程序MOV R3,#4 ;循环20次到一秒SETB EASETB EX0setb IT0SETB EX1SETB IT1LP1: JNB P3.1 ,QQ0 ;当p3.1口为低电平时跳过读取时间子程序lJMP QQ2QQ0: MOV TH0,#03CHMOV TL0,#0B0HSETB TR0MOV 93H,#0LCALL NIU ;将调整后的时间放入时分秒星期年月日寄存器中LCALL SETDS1302 ;设置DS1302初始时间LCALL GET1302 ;从DS1302读取时间LCALL DISPLAY ;用12864显示QQ2: JBC TF0,QQ1lJMP LP1QQ1: MOV TH0,#03CHMOV TL0,#0B0HLCALL GET1302 ;每过50Ms从DS1302读取一次时间LCALL DISPLAY;************************************节日控制程序开始,所有公历节日都能显示MOV A,49HCJNE A,#01H,ZZ0MOV A,48HCJNE A,#01H,VV0MOV 71H,#19LCALL A8MOV 70H,#18LCALL A7MOV 92H,#210LCALL A40MOV 91H,#210LCALL A41LJMP QQQVV0:CJNE A,#15H,SS0MOV 70H,#20LCALL A7MOV 71H,#21 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQSS0:LCALL HAHA LJMP QQQZZ0:CJNE A,#02H,ZZ1 MOV A,48HCJNE A,#14H,vv4 MOV 70H,#22 LCALL A7MOV 71H,#23 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQvv4:CJNE A,#02H,vv5 MOV 70H,#53 LCALL A7MOV 71H,#54 LCALL A8MOV 92H,#55 LCALL A40MOV 91H,#56 LCALL A41LJMP QQQvv5:CJNE A,#10H,SS99 MOV 70H,#41 LCALL A7MOV 71H,#57 LCALL A8MOV 92H,#58 LCALL A40MOV 91H,#59 LCALL A41LJMP QQQSS99:LCALL HAHA LJMP QQQYOU0:LJMP ZZ2ZZ1:CJNE A,#03H,YOU0 MOV A,48HCJNE A,#08H,VV6 MOV 70H,#24 LCALL A7MOV 71H,#25 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV6:CJNE A,#01H,VV7 MOV 70H,#41 LCALL A7MOV 71H,#57 LCALL A8MOV 92H,#60 LCALL A40MOV 91H,#61 LCALL A41LJMP QQQVV7:CJNE A,#03H,VV8 MOV 70H,#62 LCALL A7MOV 71H,#41 LCALL A8MOV 92H,#63 LCALL A40MOV 91H,#64 LCALL A41LJMP QQQVV8:CJNE A,#05H,VV9 MOV 70H,#65 LCALL A7MOV 71H,#66 LCALL A8MOV 92H,#67 LCALL A40MOV 91H,#68 LCALL A41LJMP QQQVV9:CJNE A,#12H,VV10LCALL A7MOV 71H,#70LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV10:CJNE A,#14H,VV11 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#71LCALL A40MOV 91H,#72LCALL A41LJMP QQQVV11:CJNE A,#15H,VV12 MOV 70H,#73LCALL A7MOV 71H,#74LCALL A8MOV 92H,#75LCALL A40MOV 91H,#76LCALL A41LJMP QQQVV12:CJNE A,#17H,VV13 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#77LCALL A40MOV 91H,#60LCALL A41LJMP QQQVV13:CJNE A,#21H,VV14 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8LCALL A40MOV 91H,#79LCALL A41LJMP QQQVV14:CJNE A,#22H,VV15 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#80LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV15:CJNE A,#23H,VV16 MOV 70H,#81LCALL A7MOV 71H,#82LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV16:CJNE A,#24H,VV17 MOV 70H,#83LCALL A7MOV 71H,#84LCALL A8MOV 92H,#85LCALL A40MOV 91H,#86LCALL A41LJMP QQQVV17:CJNE A,#25H,SS1 MOV 70H,#87LCALL A7MOV 71H,#62LCALL A8MOV 92H,#39LCALL A40MOV 91H,#88LCALL A41SS1:LCALL HAHA LJMP QQQYOU1:LJMP ZZ3ZZ2:CJNE A,#04H,YOU1 MOV A,48HCJNE A,#01H,VV1 MOV 70H,#26LCALL A7MOV 71H,#27LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV1:CJNE A,#04H,VV18 MOV 70H,#28LCALL A7MOV 71H,#29LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV18:CJNE A,#07H,VV19 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#89LCALL A40MOV 91H,#90LCALL A41LJMP QQQVV19:CJNE A,#22H,VV20 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#56LCALL A40MOV 91H,#91LJMP QQQVV20:CJNE A,#23H,SS2 MOV 70H,#92 LCALL A7MOV 71H,#93 LCALL A8MOV 92H,#94 LCALL A40MOV 91H,#75 LCALL A41LJMP QQQSS2:LCALL HAHA LJMP QQQYOU2:LJMP ZZ4ZZ3:CJNE A,#05H,YOU2 MOV A,48HCJNE A,#01H,VV2 MOV 70H,#30 LCALL A7MOV 71H,#31 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV2:CJNE A,#04H,VV3 MOV 70H,#32 LCALL A7MOV 71H,#33 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV3:CJNE A,#11H,VV21 MOV 70H,#34 LCALL A7MOV 71H,#35 LCALL A8MOV 92H,#210 LCALL A40LCALL A41LJMP QQQVV21:CJNE A,#05H,VV22 MOV 70H,#95LCALL A7MOV 71H,#96LCALL A8MOV 92H,#83LCALL A40MOV 91H,#204 LCALL A41LJMP QQQVV22:CJNE A,#08H,VV23 MOV 70H,#97LCALL A7MOV 71H,#98LCALL A8MOV 92H,#99LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV23:CJNE A,#12H,VV24 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#100 LCALL A40MOV 91H,#101 LCALL A41LJMP QQQVV24:CJNE A,#15H,VV25 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#102 LCALL A40MOV 91H,#103 LCALL A41LJMP QQQVV25:CJNE A,#17H,VV26LCALL A7MOV 71H,#57LCALL A8MOV 92H,#119 LCALL A40MOV 91H,#120 LCALL A41LJMP QQQVV26:CJNE A,#18H,VV27 MOV 70H,#62LCALL A7MOV 71H,#41LCALL A8MOV 92H,#121 LCALL A40MOV 91H,#122 LCALL A41LJMP QQQVV27:CJNE A,#20H,VV28 MOV 70H,#123 LCALL A7MOV 71H,#90LCALL A8MOV 92H,#124 LCALL A40MOV 91H,#125 LCALL A41LJMP QQQVV28:CJNE A,#23H,VV29 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#126 LCALL A40MOV 91H,#127 LCALL A41LJMP QQQVV29:CJNE A,#31H,ss3 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8LCALL A40MOV 91H,#129 LCALL A41LJMP QQQSS3:LCALL HAHA LJMP QQQYOU3:LJMP ZZ10ZZ4:CJNE A,#06H,YOU3 MOV A,48HCJNE A,#15H,VV30 MOV 70H,#36LCALL A7MOV 71H,#35LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV30:CJNE A,#01H,VV31 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#131 LCALL A40MOV 91H,#132 LCALL A41LJMP QQQVV31:CJNE A,#17H,VV32 MOV 70H,#83LCALL A7MOV 71H,#204 LCALL A8MOV 92H,#133 LCALL A40MOV 91H,#134 LCALL A41LJMP QQQVV32:CJNE A,#23H,VV33 MOV 70H,#135 LCALL A7MOV 71H,#79LCALL A8MOV 92H,#136 LCALL A40MOV 91H,#137 LCALL A41LJMP QQQVV33:CJNE A,#25H,VV34 MOV 70H,#62LCALL A7MOV 71H,#41LCALL A8MOV 92H,#138 LCALL A40MOV 91H,#56LCALL A41LJMP QQQVV34:CJNE A,#26H,SS4 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#139 LCALL A40MOV 91H,#140 LCALL A41LJMP QQQSS4:LCALL HAHA LJMP QQQYOU4:LJMP ZZ5ZZ10:CJNE A,#07H,YOU4 MOV A,48HCJNE A,#01H,VV35 MOV 70H,#141 LCALL A7MOV 71H,#142 LCALL A8MOV 92H,#106 LCALL A40MOV 91H,#107 LCALL A41LJMP QQQVV35:CJNE A,#02H,VV36 MOV 70H,#143 LCALL A7MOV 71H,#88LCALL A8MOV 92H,#144 LCALL A40MOV 91H,#145 LCALL A41LJMP QQQVV36:CJNE A,#07H,VV37 MOV 70H,#146 LCALL A7MOV 71H,#147 LCALL A8MOV 92H,#67LCALL A40MOV 91H,#68LCALL A41LJMP QQQVV37:CJNE A,#11H,VV38 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#23LCALL A40MOV 91H,#148 LCALL A41LJMP QQQVV38:CJNE A,#30H,SS10 MOV 70H,#149 LCALL A7MOV 71H,#150 LCALL A8MOV 92H,#24LCALL A40MOV 91H,#25LCALL A41LJMP QQQSS10:LCALL HAHA LJMP QQQYOU5:LJMP ZZ6ZZ5:CJNE A,#08H,YOU5 MOV A,48HCJNE A,#01H,VV39 MOV 70H,#37LCALL A7MOV 71H,#38LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV39:CJNE A,#08H,VV40 MOV 70H,#153 LCALL A7MOV 71H,#153 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV40:CJNE A,#15H,SS5 MOV 70H,#146 LCALL A7MOV 71H,#147 LCALL A8MOV 92H,#154 LCALL A40MOV 91H,#155 LCALL A41LJMP QQQSS5:LCALL HAHA LJMP QQQYOU6:LJMP ZZ7ZZ6:CJNE A,#09H,YOU6 MOV A,48HCJNE A,#10H,VV41 MOV 70H,#39LCALL A7MOV 71H,#40LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV41:CJNE A,#08H,VV42LCALL A7MOV 71H,#57LCALL A8MOV 92H,#109 LCALL A40MOV 91H,#110 LCALL A41LJMP QQQVV42:CJNE A,#16H,VV43 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#111 LCALL A40MOV 91H,#112 LCALL A41LJMP QQQVV43:CJNE A,#20H,VV44 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#63LCALL A40MOV 91H,#113 LCALL A41LJMP QQQVV44:CJNE A,#27H,VV45 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#114 LCALL A40MOV 91H,#115 LCALL A41LJMP QQQVV45:CJNE A,#28H,vv75 MOV 70H,#116 LCALL A7MOV 71H,#117 LCALL A8LCALL A40MOV 91H,#90LCALL A41LJMP QQQVV75:CJNE A,#18H,ss6 LCALL A42LCALL A43LCALL A44LCALL A45MOV 92H,#205 LCALL A40MOV 91H,#199 LCALL A41LJMP QQQSS6:LCALL HAHA LJMP QQQYOU7:LJMP ZZ8ZZ7:CJNE A,#10H,YOU7 MOV A,48HCJNE A,#01H,VV46 MOV 70H,#41LCALL A7MOV 71H,#42LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV46:CJNE A,#04H,VV47 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#31LCALL A40MOV 91H,#118 LCALL A41LJMP QQQVV47:CJNE A,#06H,VV48 MOV 70H,#156 LCALL A7MOV 71H,#23MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV48:CJNE A,#08H,VV49 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#157 LCALL A40MOV 91H,#158 LCALL A41LJMP QQQVV49:CJNE A,#09H,VV50 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#159 LCALL A40MOV 91H,#160 LCALL A41LJMP QQQVV50:CJNE A,#10H,VV51 MOV 70H,#161 LCALL A7MOV 71H,#162 LCALL A8MOV 92H,#163 LCALL A40MOV 91H,#164 LCALL A41LJMP QQQVV51:CJNE A,#13H,VV52 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#165 LCALL A40MOV 91H,#166LJMP QQQVV52:CJNE A,#14H,VV53 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#167 LCALL A40MOV 91H,#168 LCALL A41LJMP QQQVV53:CJNE A,#15H,VV54 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#110 LCALL A40MOV 91H,#23LCALL A41LJMP QQQVV54:CJNE A,#16H,VV55 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#169 LCALL A40MOV 91H,#170 LCALL A41LJMP QQQVV55:CJNE A,#17H,VV56 MOV 70H,#73LCALL A7MOV 71H,#171 LCALL A8MOV 92H,#172 LCALL A40MOV 91H,#173 LCALL A41LJMP QQQVV56:CJNE A,#22H,VV57 MOV 70H,#174LCALL A7MOV 71H,#175 LCALL A8MOV 92H,#176 LCALL A40MOV 91H,#177 LCALL A41LJMP QQQVV57:CJNE A,#24H,VV58 MOV 70H,#178 LCALL A7MOV 71H,#179 LCALL A8MOV 92H,#41LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV58:CJNE A,#31H,SS7 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#180 LCALL A40MOV 91H,#181 LCALL A41LJMP QQQSS7:LCALL HAHA LJMP QQQYOU8:LJMP ZZ9ZZ8:CJNE A,#11H,YOU8 MOV A,48HCJNE A,#27H,VV59 MOV 70H,#43LCALL A7MOV 71H,#44LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV59:CJNE A,#08H,VV60LCALL A7MOV 71H,#41LCALL A8MOV 92H,#144 LCALL A40MOV 91H,#145 LCALL A41LJMP QQQVV60:CJNE A,#09H,VV61 MOV 70H,#73LCALL A7MOV 71H,#83LCALL A8MOV 92H,#87LCALL A40MOV 91H,#62LCALL A41LJMP QQQVV61:CJNE A,#10H,VV62 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#32LCALL A40MOV 91H,#8LCALL A41LJMP QQQVV62:CJNE A,#14H,VV63 MOV 70H,#183 LCALL A7MOV 71H,#184 LCALL A8MOV 92H,#86LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV63:CJNE A,#17H,VV64 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8LCALL A40MOV 91H,#90LCALL A41LJMP QQQVV64:CJNE A,#20H,SS8 MOV 70H,#185 LCALL A7MOV 71H,#186 LCALL A8MOV 92H,#8LCALL A40MOV 91H,#210 LCALL A41LJMP QQQSS8:LCALL HAHA LJMP QQQYOU9:LJMP SS9ZZ9:CJNE A,#12H,YOU9 MOV A,48HCJNE A,#25H,VV65 MOV 70H,#45LCALL A7MOV 71H,#46LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV65:CJNE A,#01H,VV66 MOV 70H,#191 LCALL A7MOV 71H,#192 LCALL A8MOV 92H,#86LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV66:CJNE A,#03H,VV67 MOV 70H,#122 LCALL A7MOV 71H,#193MOV 92H,#23LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV67:CJNE A,#08H,VV68 MOV 70H,#131 LCALL A7MOV 71H,#132 LCALL A8MOV 92H,#194 LCALL A40MOV 91H,#157 LCALL A41LJMP QQQVV68:CJNE A,#09H,VV69 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#196 LCALL A40MOV 91H,#91LCALL A41LJMP QQQVV69:CJNE A,#10H,VV70 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#23LCALL A40MOV 91H,#197 LCALL A41LJMP QQQVV70:CJNE A,#12H,VV71 MOV 70H,#198 LCALL A7MOV 71H,#87LCALL A8MOV 92H,#205 LCALL A40MOV 91H,#199LJMP QQQVV71:CJNE A,#13H,VV72 MOV 70H,#200 LCALL A7MOV 71H,#201 LCALL A8MOV 92H,#202 LCALL A40MOV 91H,#203 LCALL A41LJMP QQQVV72:CJNE A,#20H,VV73 MOV 70H,#104 LCALL A7MOV 71H,#105 LCALL A8MOV 92H,#106 LCALL A40MOV 91H,#107 LCALL A41LJMP QQQVV73:CJNE A,#21H,VV74 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#108 LCALL A40MOV 91H,#91LCALL A41LJMP QQQVV74:CJNE A,#24H,ss9 MOV 70H,#151 LCALL A7MOV 71H,#87LCALL A8MOV 92H,#152 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQri1:ljmp lp1ss9:LCALL HAHA;******************************************节日设置结束QQQ: DJNZ R3,SS100 ;未到1 S继续循环LCALL GET_TEMPER ;每过1s从DS18B20读取一次温度mov R3,#4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;整点闹铃1分钟同时在最左上角显示铃铛符号,合上闹铃开关可以提前关掉闹铃MOV A,46HCJNE A,#0,SS100LCALL NAOLCALL NAOLCALL NAOLCALL NAOLCALL NAOmov column3,#0mov pagef3,#0mov codes,#206 ;开闹铃符号lcall writeleft2SS100:MOV A,45HCJNE A,#59H,RI1mov column3,#0mov pagef3,#0mov codes,#210 ;关闹铃符号lcall writeleft2LJMP lp1;************************主程序结束,子程序开始HAHA:MOV 70H,#151LCALL A7MOV 71H,#52LCALL A8MOV 92H,#210LCALL A40MOV 91H,#210LCALL A41RETNIU:MOV A,51HSWAP AADD A,50HMOV 45H,Amov a,53hswap aadd a,52hmov 46h,amov a,55hadd a,54hmov 47h,amov a,57hswap aadd a,56hmov 48h,amov a,59hswap aadd a,58hmov 49h,amov a,5dhswap aadd a,5chmov 4bh,amov 4ah,5ahRET;********************************************中断0开始xx0:PUSH ACCclr tr0MOV A,93HCJNE A,#0,ZD0000 ;秒低位inc 50hLCALL A13mov A,50HCJNE A,#10,KK0MOV 50H,#0kk0:POP ACCRETIZD0000:CJNE A,#1,ZD001 ;秒高位inc 51hlcall a14MOV A,51HCJNE A,#10,KK1MOV 51H,#0kk1:POP ACCRETIZD001:CJNE A,#2,ZD002 ;分低位INC 52Hlcall a15MOV A,52HCJNE A,#10,KK3MOV 52H,#0kk3:POP ACCZD002:CJNE A,#3,ZD003 ;分高位INC 53Hlcall a16MOV A,53HCJNE A,#10,KK4MOV 53H,#0inc 52hkk4:POP ACCRETIzd003:CJNE A,#4,ZD004 ;时低位INC 54Hlcall a17MOV A,54HCJNE A,#10,KK5MOV 54H,#0kk5:POP ACCRETIZD004:CJNE A,#5,ZD005 ;时高位INC 55Hlcall a18MOV A,55HCJNE A,#9,KK6MOV 55H,#0kk6:POP ACCRETIZD005:CJNE A,#6,ZD006 ;星期INC 5aHlcall a19MOV A,5aHCJNE A,#7,KK7MOV 5aH,#0kk7:POP ACCRETIZD006:CJNE A,#7,ZD007 ;日低位INC 56Hlcall a20MOV A,56HCJNE A,#10,KK8MOV 56H,#0kk8:POP ACCRETIZD007:CJNE A,#8,ZD008 ;日高位INC 57Hlcall a21MOV A,57HCJNE A,#10,KK9MOV 57H,#0kk9:POP ACCRETIZD008:CJNE A,#9,ZD009 ;月低位INC 58Hlcall a22MOV A,58HCJNE A,#10,KK10MOV 58H,#0kk10:POP ACCRETIZD009:CJNE A,#10,ZD0010 ;月高位INC 59Hlcall a23MOV A,59HCJNE A,#10,KK11MOV 59H,#0kk11:POP ACCRETIZD0010:CJNE A,#11,ZD0011 ;年低位INC 5cHlcall a24MOV A,5cHCJNE A,#10,KK12MOV 5cH,#0kk12:POP ACCRETIZD0011:INC 5dHlcall a25 ;年高位MOV A,5dHCJNE A,#10,KK13MOV 5dH,#0kk13:POP ACCRETI;******************************************************中断1开始XX1:PUSH ACCINC 93HMOV A,02HCJNE A,#13,ZD10MOV 93H,#0ZD10:pop accreti;温度显示子程序------------------------------------------------------------------------------- INIT_1820: SETB P3.7CLR P3.7MOV R1,#3TSR1: MOV R0,#107DJNZ R0,$DJNZ R1,TSR1SETB P3.7MOV R0,#25HTSR2: JNB P3.7,TSR3DJNZ R0,TSR2LJMP TSR4TSR3: SETB FLAG1LJMP TSR5TSR4: CLR FLAG1LJMP TSR7TSR5: MOV R0,#117TSR6: DJNZ R0,TSR6TSR7: SETB P3.7RETGET_TEMPER: SETB P3.7LCALL INIT_1820JB FLAG1,TSS2RETTSS2: MOV A,#0CCHLCALL WRITE_1820MOV A,#44HLCALL WRITE_1820LCALL DISPLAY1LCALL INIT_1820MOV A,#0CCHLCALL WRITE_1820MOV A,#0BEHLCALL WRITE_1820LCALL READ_18200RETWRITE_1820: MOV R2,#8CLR CWR1: CLR P3.7MOV R3,#6DJNZ R3,$RRC AMOV P3.7,CDJNZ R3,$SETB P3.7NOPDJNZ R2,WR1SETB P3.7RETREAD_18200: MOV R5,#2 MOV R1,#41hRE00: MOV R2,#8RE01: CLR CSETB P3.7CLR P3.7SETB P3.7MOV R3,#7RE10: DJNZ R3,RE10MOV C,P3.7MOV R3,#23RE20: DJNZ R3,RE20RRC ADJNZ R2,RE01MOV @R1,ADEC R1DJNZ R5,RE00RETDISPLAY1:MOV A,40HJB ACC.7,ZF1mov column4,#16mov pagef4,#4mov codes,#250lcall writeright2ljmp zhijieZF1:mov column4,#16mov pagef4,#4mov codes,#16 ;;;;;;;;- lcall writeright2mov a,40hcpl amov dph,amov a,41hcpl amov dpl,ainc dptrmov 40h,dphzhijie:MOV A,40HSWAP AANL A,#0F0HMOV 40H,AMOV A,41HSWAP AANL A,#0FHADD A,40HMOV 41H,AMOV B,#10DIV ABMOV b_bit,AMOV a_bit,Bmov column2,#32mov pagef2,#4mov codes,b_bit ;;;;;;;;;十位lcall writerightmov column2,#40mov pagef2,#4mov codes,a_bit ;;;;;;;个位lcall writerightRET;--------------------------------------------------------------------------------------------------- ;数码显示子程序DISPLAY:;*******************************************;显示秒MOV A,SECONDANL A,#0FHMOV 50H,ALCALL A13MOV A,SECONDSWAP AANL A,#07HMOV 51H,ALCALL A14;*******************************************;显示分MOV A,MINUTEANL A,#0FHMOV 52H,ALCALL A15MOV A,MINUTESWAP AANL A,#07HMOV 53H,ALCALL A16;******************************************* ;显示小时MOV A,HOURANL A,#0FHMOV 54H,ALCALL A17MOV A,HOURSWAP AANL A,#03HMOV 55H,ALCALL A18;显示星期MOV A,WEEKMOV 5AH,ALCALL A19;显示日MOV A,DAYANL A,#0FHMOV 56H,ALCALL A20MOV A,DAYSWAP AANL A,#03HMOV 57H,ALCALL A21;显示月MOV A,MONTHANL A,#0FHMOV 58H,ALCALL A22MOV A,MONTHSWAP AANL A,#03HMOV 59H,ALCALL A23;显示年MOV A,YEARLANL A,#0FHMOV 5CH,ALCALL A24MOV A,YEARLSWAP AANL A,#0FHMOV 5DH,ALCALL A25RET;--------------------------------------------------------------------------------------------------- ;设置DS1302初始时间,并启动计时SETDS1302:CLR T_RSTnopCLR T_CLKnopSETB T_RSTnopMOV B,#8EH ;写控制命令字LCALL INPUTBYTEMOV B,#00H ;写保护关闭LCALL INPUTBYTESETB T_CLKnopCLR T_RSTMOV R0,#SECOND ;内存中的时间首地址MOV R1,#80H ;DS1302中的时间首地址MOV R7,#7 ;字节数SETLOOP:CLR T_RSTnopCLR T_CLKnopSETB T_RSTnopMOV B,R1 ;写命令字LCALL INPUTBYTEMOV A,@R0 ;设置时间MOV B,ALCALL INPUTBYTEINC R0INC R1INC R1SETB T_CLKnopCLR T_RSTnopDJNZ R7,SETLOOPCLR T_RSTnopCLR T_CLKnopSETB T_RSTnopMOV B,#8EHLCALL INPUTBYTEMOV B,#80H ;开写保护LCALL INPUTBYTESETB T_CLKnopCLR T_RSTnopRET;---------------------------------------------------------------------------------------------------;从DS1302读取时间GET1302:MOV R0,#SECONDMOV R1,#81H ;DS1302中读时间的首地址MOV R7,#7GETLOOP:CLR T_RSTnopCLR T_CLKnopSETB T_RSTnopMOV B,R1LCALL INPUTBYTE ;写命令字LCALL OUTPUTBYTE ;读时间MOV @R0,A ;将从DS1302中读取的时间从内存中保存INC R0 ;修改地址指针INC R1INC R1SETB T_CLKnopCLR T_RSTnopDJNZ R7,GETLOOPRET;---------------------------------------------------------------------------------------------------;向DS1302写一个字节MOV R4,#8INPUTLOOP:MOV A,BRRC AMOV B,AMOV T_IO,CSETB T_CLKNOP;NOP;NOPCLR T_CLKDJNZ R4,INPUTLOOPRET;--------------------------------------------------------------------------------------------------- ;从DS1302读一个字节OUTPUTBYTE:clr aclr cMOV R4,#8OUTPUTLOOP:NOPMOV C,T_IORRC ASETB T_CLKNOPCLR T_CLKDJNZ R4,OUTPUTLOOPRETwriteleft2: ; 左半屏写入16*16汉字子程序mov dptr,#table2push column3mov cpage3,#2mov ccolumn3,#0mov a,pagef3anl a,#07horl a,#0b8hmov com,alcall prm0mov a,column3anl a,#3fhorl a,#40hmov com,alcall prm0mov b,#32mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,alp3:mov a,#00hmovc a,@a+dptrmov dat,alcall prm1inc ccolumn3mov a,ccolumn3inc dptrcjne a,#16,lp3dec cpage3inc pagef3mov a,cpage3jz over3mov a,pagef3anl a,#07horl a,#0b8hmov com,alcall prm0pop column3mov a,column3anl a,#3fhorl a,#40hmov com,alcall prm0mov ccolumn3,#0ljmp lp3over3:retwriteright2: ; 右半屏写入16*16汉字子程序mov dptr,#table2push column4mov cpage4,#2mov ccolumn4,#0mov a,pagef4anl a,#07horl a,#0b8hmov com,alcall prr0anl a,#3fhorl a,#40hmov com,alcall prr0mov a,codesmov b,#32mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,alp4:mov a,#00hmovc a,@a+dptrmov dat,alcall prr1inc ccolumn4mov a,ccolumn4inc dptrcjne a,#16,lp4dec cpage4inc pagef4mov a,cpage4jz over4mov a,pagef4anl a,#07horl a,#0b8hmov com,alcall prr0pop column4mov a,column4anl a,#3fhorl a,#40hmov com,alcall prr0mov ccolumn4,#0ljmp lp4over4:retwriteleft: ; 左半屏写入8*16数字子程序mov dptr,#table1push columnmov cpage,#2mov ccolumn,#0anl a,#07horl a,#0b8hmov com,alcall prm0mov a,columnanl a,#3fhorl a,#40hmov com,alcall prm0mov a,codesmov b,#16mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,alOOp1:mov a,#00h movc a,@a+dptr mov dat,alcall prm1inc ccolumnmov a,ccolumn inc dptrcjne a,#8,lOOp1 dec cpageinc pagefmov a,cpagejz over1mov a,pagefanl a,#07horl a,#0b8hmov com,alcall prm0pop columnmov a,columnanl a,#3fhorl a,#40hmov com,alcall prm0mov ccolumn,#0 ljmp lOOp1over1:retwriteright: ; 右半屏写入8*16数字子程序mov dptr,#table1push column2mov cpage2,#2mov ccolumn2,#0mov a,pagef2anl a,#07horl a,#0b8hmov com,alcall prr0mov a,column2anl a,#3fhorl a,#40hmov com,alcall prr0mov a,codesmov b,#16mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,alOOp2:mov a,#00hmovc a,@a+dptrmov dat,alcall prr1inc ccolumn2mov a,ccolumn2inc dptrcjne a,#8,lOOp2dec cpage2inc pagef2mov a,cpage2jz over2mov a,pagef2anl a,#07horl a,#0b8hmov com,alcall prr0pop column2mov a,column2anl a,#3fhorl a,#40hmov com,alcall prr0mov ccolumn2,#0ljmp lOOp2over2:retPRM0:CLR CSA ;写指令代码子程序(左) SETB CSBCLR rsSETB rwPRM01:MOV P0,#0FFHSETB EMOV A,P0CLR EJB ACC.7,PRM01CLR rwMOV P0,COMSETB ECLR ERETPRM1:CLR CSA ;写显示数据子程序(左) SETB CSBCLR rsSETB rwPRM11:MOV P0,#0FFHSETB EMOV A,P0CLR EJB ACC.7,PRM11SETB rsCLR rwMOV P0,DATSETB ECLR ERETPRR0:CLR CSB ;写指令代码子程序(右) SETB CSACLR rsSETB rwPRR01:MOV P0,#0FFHSETB EMOV A,P0CLR EJB ACC.7,PRR01CLR rwMOV P0,COMSETB ECLR ERETPRR1:CLR CSB ;写显示数据子程序(右)SETB CSACLR rsSETB rwPRR11:MOV P0,#0FFHSETB EMOV A,P0CLR EJB ACC.7,PRR11SETB rsCLR rwMOV P0,DATSETB ECLR ERETINT:MOV COM,#0C0H ;初始化子程序,设置显示起始行为第一行LCALL PRM0LCALL PRR0MOV COM,#3FH ;开显示设置LCALL PRM0LCALL PRR0RETCLEAR:MOV R4,#00H ;清屏子程序CLEAR1:MOV A,R4ORL A,#0B8HMOV COM,ALCALL PRM0LCALL PRR0MOV COM,#40HLCALL PRM0LCALL PRR0MOV R3,#40HCLEAR2:MOV DAT,#00HLCALL PRM1LCALL PRR1DJNZ R3,CLEAR2INC R4CJNE R4,#08H,CLEAR1RET;***********************************************节日子程序A7:mov column3,#0mov pagef3,#4mov codes,70Hlcall writeleft2RETA8:mov column3,#16mov pagef3,#4mov codes,71Hlcall writeleft2RETA40:mov column3,#32mov pagef3,#4mov codes,92Hlcall writeleft2RETA41:mov column3,#48mov pagef3,#4mov codes,91Hlcall writeleft2RETA42:mov column,#0mov pagef,#4mov codes,#9 ;;;;;;;9lcall writeleftRETA43:mov column3,#8mov pagef3,#4mov codes,#207 ;;;;;.lcall writeleft2RETA44:mov column,#16mov pagef,#4mov codes,#1 ;;;;;;;1lcall writeleftRETA45:mov column,#24mov pagef,#4mov codes,#8 ;;;;;8lcall writeleftRET;********************************************************** A13:mov column2,#56。
《嵌入式课程设计》讲义项目1 智能数字万年历一.项目指标分析项目指标要求如下:1. 显示年、月、日、时、分、秒和星期。
2. 实时显示温度。
3. 可手动调整时间。
4. 采用LCD显示。
基于以上要求,核心控制芯片选用STC89C51;时钟芯片选用DS1302;温度传感器选用DS18B20;液晶屏选用LCD1602;设置按键,以便于调整时间。
二.电路原理系统电路功能图如图1所示:图1 智能数字万年历电路功能图由图1可知,P2口控制LCD的数据端;P3.5、P3.6和P3.7控制着LCD的片选、读/写和寄存器选择信号;可调电阻RP2用于调节屏的显示对比度。
P3.4是温度传感器DS18B20的1-wire接口,即片选、时钟和数据信号均由P3.4口控制。
P0.5、P0.6和P0.7是时钟芯片DS1302的SPI接口,为使信号控制更稳定,这三个接口上都上拉了10KΩ电阻;为获得精准的时钟信号,选用频率为32.768KHz的外部晶振对DS1302提供振荡信号。
P0.0-P0.3控制着四个按键,以便于调整时间。
三.程序设计基于这个项目,程序的设计可分成各芯片驱动程序设计和控制算法程序两部分。
1.各芯片的驱动程序设计在写驱动程序时,首先通读芯片手册,以掌握主要技术指标;然后可按照以下3个步骤进行:(1)分清楚各芯片的通信属于哪种接口方式,例如:时钟芯片DS1302按照SPI 接口进行通信;温度传感器DS18B20按照1-wire接口进行通信;液晶屏LCD1602采用常规的并行数据传输方式。
(2)仔细分析芯片时序图,弄清楚片选信号是高电平有效还是低电平有效;数据是在时钟信号的上升沿还是下降沿时打入;数据前还是时钟前等。
(3)将功能程序函数化、驱动程序模块化。
2.控制算法程序设计这里的算法主要集中在如何设置按键识别程序,即便于调整时间,又不影响液晶屏的显示。
这里,提供两种思想以便参考。
(1)循环扫描方式流程图图2 循环扫描方式流程图(2图3 状态机方式流程图将图2和图3比较起来看,两种方式的最大差别在于“10ms消抖时间如何度过?”。
自动万年历课程设计一、课程设计背景二、教学目标三、教学内容1. 自动万年历的基本原理2. 自动万年历的功能设计3. 自动万年历的界面设计四、教学方法和手段1. 讲授法2. 实践操作法五、教学流程安排六、评估方式和标准一、课程设计背景随着现代科技的不断发展,计算机技术已经成为人们日常生活中不可或缺的一部分。
计算机程序设计也成为了计算机科学中非常重要的一个方向。
自动万年历是一个基于计算机程序实现的应用软件,在日常生活中具有广泛应用。
因此,开设自动万年历课程能够帮助学生更好地了解软件开发过程,提高编程能力。
二、教学目标本课程旨在帮助学生掌握以下知识和能力:1. 掌握自动万年历的基本原理。
2. 理解自动万年历功能设计和界面设计。
3. 能够使用Java语言编写简单的自动万年历程序。
4. 能够运用所学知识,开发出实用性较强的自动万年历应用程序。
三、教学内容1. 自动万年历的基本原理介绍自动万年历的基本概念和原理,包括公历和农历的计算方法,闰年和平年的判断方法,节气计算等。
2. 自动万年历的功能设计介绍自动万年历应用程序的功能设计,包括日期查询、日程管理、节日提醒等功能。
3. 自动万年历的界面设计介绍自动万年历应用程序的界面设计,包括主界面设计、日期查询界面设计、日程管理界面设计等。
四、教学方法和手段1. 讲授法通过讲解理论知识,帮助学生掌握自动万年历的基本原理和应用程序开发过程。
2. 实践操作法通过实践操作,帮助学生更好地理解所学知识,并能够独立开发出实用性较强的自动万年历应用程序。
五、教学流程安排1. 第一周:介绍自动万年历的基本原理。
2. 第二周:讲解自动万年历应用程序的功能设计。
3. 第三周:讲解自动万年历应用程序的界面设计。
4. 第四周:进行实践操作,编写简单的自动万年历程序。
5. 第五周:进行实践操作,开发出实用性较强的自动万年历应用程序。
6. 第六周:进行课程总结和回顾。
六、评估方式和标准1. 课堂表现(占比30%):包括听课态度、提问能力等方面的表现。
工作日万年历-概述说明以及解释1.引言1.1 概述概述部分的内容应该对整篇文章进行简要介绍和概括。
以下是概述部分的一个例子:引言部分将介绍工作日万年历的概念、功能和应用场景,通过详细解释文章的结构和内容安排,为读者提供一个清晰的导读。
本篇文章旨在探讨工作日万年历的设计原理和实现方法,以及其在工作和日常生活中的实际应用。
该工作日万年历是一个便捷的工具,可以帮助人们快速地查询、计算和统计工作日的数量,对于需要根据工作日进行计划和安排的场景十分有用。
在本文的正文部分,我们将分四个子章节进行详细讨论,每个子章节将介绍一种相关的工作日计算方法和应用案例。
在结论部分,我们将总结已讨论的内容并提出对工作日万年历的进一步展望,希望读者能够通过本文对工作日万年历有一个全面的了解,并能够在实际应用中获得便利与效益。
1.2 文章结构文章结构部分的内容可以包括以下内容:第一部分是引言,在引言部分可以简要介绍工作日万年历的概念和作用,以及为什么有必要进行研究和开发这样一个工具。
第二部分是正文,正文部分可以分为四个子章节,每个子章节都有自己的主题和要点。
这四个子章节分别是:2.1 第一个子章节,可以介绍工作日万年历的基本功能和使用方法。
可以详细介绍如何记录工作日和非工作日,如何计算工作日的数量和间隔等等。
2.2 第二个子章节,可以介绍工作日万年历的高级功能和定制化选项。
可以讲解如何自定义工作日的规则和计算方式,以及如何根据不同的需求进行灵活调整。
2.3 第三个子章节,可以介绍工作日万年历的应用场景和实际用途。
可以列举一些实际案例,如企业排班管理、项目计划安排、假期休假规划等等。
2.4 第四个子章节,可以介绍工作日万年历的发展前景和未来可能的改进方向。
可以探讨该工具在数字化时代的重要性,以及可能的扩展功能和应用领域。
第三部分是结论,结论部分可以对整篇文章进行总结,回顾所介绍的工作日万年历的主要功能和应用场景,并强调其在工作和生活中的重要性和实用性。
摘要:本实训报告旨在通过对万年历的设计与应用,加深对时间管理、编程技术以及用户界面设计的理解。
通过实训,我们不仅学会了万年历的基本原理,还掌握了编程实现和用户体验优化的方法。
以下是对实训过程的详细记录和分析。
一、实训目的1. 理解万年历的基本原理和设计思路。
2. 掌握编程语言(如Python、Java等)在万年历开发中的应用。
3. 提升用户界面设计能力,优化用户体验。
4. 培养团队合作与沟通能力。
二、实训环境1. 操作系统:Windows 102. 开发工具:Python3.8、PyCharm3. 用户界面设计工具:Qt Designer4. 数据库:SQLite三、实训原理万年历是一种用于记录和显示日历的工具,它按照公历或农历的日期排列,方便用户查看和查询。
万年历的设计原理主要包括以下几个方面:1. 闰年判断:通过判断年份是否为4的倍数来确定是否为闰年,同时还需考虑能被100整除但不能被400整除的年份不是闰年。
2. 月份天数:根据月份和闰年/非闰年的判断来确定每月的天数。
3. 星期计算:根据年、月、日计算出星期几。
4. 农历转换:根据农历的算法将公历日期转换为农历日期。
四、实训过程1. 确定项目需求:根据实训要求,设计一个功能齐全、界面友好的万年历软件。
2. 设计软件架构:确定软件的模块划分,包括主界面、日期计算、农历转换等模块。
3. 编写代码实现:使用Python语言实现万年历的各个功能模块。
4. 用户界面设计:使用Qt Designer设计软件的用户界面,包括日期选择、查询结果展示等。
5. 数据库设计:使用SQLite数据库存储万年历的数据,包括日期、农历信息等。
6. 调试与优化:对软件进行调试,修复可能出现的问题,并优化用户体验。
五、实训结果1. 成功实现万年历的基本功能,包括公历和农历的日期转换、查询等。
2. 软件界面简洁美观,用户操作方便。
3. 数据库设计合理,保证了数据的完整性和安全性。
佛教万年历佛教万年历佛教万年历是一个具有深厚历史底蕴的文化宝藏。
佛教是世界上最古老的宗教之一,以其精妙的教义和智慧的引导,吸引了数以亿计的信徒。
佛教万年历则是以佛教的特殊观念和哲学原理为基础,构建而成的一种特殊的年历。
佛教万年历的起源可以追溯到几千年前。
在佛教早期,出于对时间与宇宙循环的奇特理解,佛教徒们开始使用特殊的日历系统来记录和计算时间。
在印度等地,佛教徒们依据佛陀的生辰和涅槃日来制定日历,以此作为人们日常生活和仪式活动的参考。
随着佛教传播到其他地区,佛教万年历也逐渐发展和演变出各种不同的形式。
佛教万年历与其他日历系统有些许不同。
首先,佛教万年历没有固定的起点和终点,而是通过循环的方式来衡量时间的流逝。
在佛教的观念中,时间是无始无终的,宇宙的循环不断重复。
因此,佛教万年历的年份是按照象年的方式来表示,从佛陀的涅槃日起算,每经过一整个循环周期即为一年。
其次,佛教万年历注重对自然现象和天文时间的观察和记录。
在佛教中,时间与宇宙的运转息息相关,因此佛教万年历会关注和记录一些天文现象,如太阳、月亮、星宿的位置和变动。
这些观察不仅是为了判断时间的流逝,也是佛教信徒决定宗教仪式和活动时间的重要依据。
此外,佛教万年历还包含了一些佛教特有的节日和庆典。
佛教信徒认为宗教仪式和庆典是修行和追求解脱道路上至关重要的一环。
佛教万年历中的节日和庆典不仅是宗教仪式的时间安排,也是信徒们纪念佛陀生平和教法的重要机会。
例如,佛陀的生辰日、成道日、涅槃日等都是佛教万年历中重要的节日。
佛教万年历的使用对佛教徒是非常重要的。
它不仅提供了一种科学的方式来记录时间,更重要的是它承载了佛陀的教诲和智慧。
佛教徒可以通过参与佛教万年历中的节日和庆典来接近佛陀的教法和慈悲,进一步深化自己的信仰和修行。
它也提醒佛教徒们时刻关注自然现象和时间的流逝,从而明白生命的无常和宇宙的广大。
在现代社会,佛教万年历虽然不再是人们生活中不可或缺的日常工具,但它的影响力和意义依然存在。
万年历第一组:郑建锋、叶泽兵、王海林摘要本设计由STC89C52RC为控制芯片,DS1302为时钟芯片,74LS138译码,8个三极管9012输出低电平控制2个共阳4位数码管,5个按键等来实现万年历的基本功能,再由程序来实现用按键来调节万年历的年月日、时分秒的功能。
关键字:STC89C52RC、DS1302、74LS138一、方案论证与比较方案一:用STC89C51RC来作为控制芯片,NE555做为时钟芯片,74LS138译码,8个三极管9012输出低电平控制2个共阳4位数码管,5个按键等来实现万年历的基本功能。
方案二:用STC89C52RC来作为控制芯片,DS1302做为时钟芯片,74LS138译码,8个三极管9012输出低电平控制2个共阳4位数码管,5个按键等来实现万年历的基本功能。
STC89C52RC是由STC89C51RC改进而来,有STC89C51RC的所有功能,故选择STC89C52RC作为控制芯片。
DS1302作为时钟芯片具有计算2100年前的年月日、时分秒的能力,还有闰年的调整能力,而NE555适合作为定时器,不适合做时钟芯片,故选择DS1302作为时钟芯片。
所以选择方案二。
二、原理分析和说明信号从STC89C52RC的PO口经过10K的上拉电阻来控制数码管的显示和P2口控制74LS138译码,三极管9012产生低电平来控制共阳4位数码管。
P2口控制DS1302作为时钟芯片,用程序来实现数码管的年月日、时分秒显示和用程序来控制按键调节年月日、时分秒。
过反复比较与论证,最终确定的系统方框图如图1所示。
下图为程序系统方框图42、DS1302DS1302 是由DS1202 改进而来增加了以下的特性双电源管脚用于主电源和备份电源供应Vcc1 为可编程涓流充电电源附加七个字节存储器它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域下面将主要的性能指标作一综合实时时钟具有能计算2100 年之前的秒分时日日期星期月年的能力还有闰年调整的能力31 8 位暂存数据存储RAM串行I/O 口方式使得管脚数量最少宽范围工作电压2.0 5.5V工作电流2.0V 时,小于300nA读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配简单3 线接口与TTL 兼容Vcc=5V可选工业级温度范围-40 +85与DS1202 兼容在DS1202 基础上增加的特性对Vcc1 有可选的涓流充电能力双电源管用于主电源和备份电源供应备份电源管脚可由电池或大容量电容输入附加的7 字节暂存存储器五、调试1、检查电路是否能正常工作。
万年历的机械原理
(来源:国家轻工业钟表信息中心)
一年365天,分成12个月,这12个月里有7个月是31天,4个月是30天,1个月是28天或29天。
如此复杂的算法如果要靠一些大小不等的齿轮运作、计算,并塞进一个小小的表壳里,可以想见其工程之困难度。
这也是为什么万年历手表数量如此稀少,价格却又是永远居高不下的原因了。
万年历表机心可以分成两个部份,一个部份主管时、分、秒一般的计时工作,另一个部分就如同一
套天文自走模式,它以一枚微型的卫星齿轮系统运作,整个系统自转一周需时四年。
凭借着这个系统,万年历表就可以将历法中复杂的大小月、闰年等计算得一清二楚。
万年历表机心的研究始于17世纪初期。
1615年日内瓦的达布创制了史上第一个具万年历功能的钟,1636年施尔曼也制造了一个。
接下来的数个世纪,许多制表大师不断地投入,钻研机械结构的改进,但迄今所得成果不过是将万年历机心的体积缩小,还没有人能确实达到「永久」的程度。
各个品牌的万年历表除了造型各异,表面设计有别
外,有一个共通的限制,就是日期的准确度都只到2100年。
这是因为所有的万年历机心都只能计算四年一闰,无法进一步计算「百年不闰,但每四百年要闰」这么复杂的算式(如果要达到这个程度,其日历系统自转一圈就要四百年)。
简单地说,号称「万年历」的手表只知道将可以用「四」除尽的年份都视为闰年,却不知到人类想出来的历法是这么地复杂—1800、1900、与2100年都不是闰年。
所以万年历表在1901年至2100年之间会正确无误地指示今天是几月几日,但是到2100年3月1日那天,你的万
年历表却会显示2月29日,还要劳烦你手动将它拨到3月1日,然后你就可以再用个100年不用调整(2200年也不是闰年)。
目前就同时存在许多历法,例如亚洲各国包括我们还在使用的阴历,一年分十二个月,每月三十天或二十九天;每三年有一个闰月,五年两个闰月,十九年七个闰月。
还有回历、佛历等,只是因为现代是基督文明当道,所以公历就成为全球的标准。
但这也不过是近百来年的事,谁知道将来会不会更改。
万年历表的表面显示大同小异,大部分都一定具备一般手表没有的月份与闰年显示功能。
比较少见的是具备年份显示功能,可能设计者认为很少人需要从手表上确认年份吧!年份的表现有两种,一种是具有四位数字的年份窗口,例如IWC的达文西万年历。
而积家表的万年历则如同早期的计算机一样,为了节省空间采用二位数的年份格式,不过保证不会有千禧虫的问题。
大部分讨论万年历表都局限在机械机心。
一般以为以电子技术而言,万年历实在是小菜,而想象石英机心的万年历表应是满街跑。
但
其实配备石英机心万年历的品牌比机械机心的少的多了,而且其功能一样被限制在2100年前有效。
只是拜石英之赐,能将机心缩小,而制出女用万年历表罢了!一方面是市场考量,实用性不大;另一方面万年历如果不以机械齿轮来运作,也很难显现天体运作的生命力吧!
谈起月相表,还必须留心一下该表是“老月相”还是“新月相”。
前者以宝珀为代表,月相盘每天跳动一格,每29天零12小时运行一周。
后者以朗格为代表,月相盘一直在缓慢地转动。
前者的好处是简洁牢固,但每走两年半就会有一天误差。
后
者的好处是误差小,每隔122.6年才会有一天误差,但也有行家担心该表中拉动月相盘运转的弹簧在50年以后需要维修甚至更换。
是“老月相”好,还是“新月相”佳,不同的行家有不同的意见。
月相盈亏是月球绕着地球运行的周期,自古以来人们用月亮的阴晴圆缺来测量、记录时间,作为祭祀、农作与节庆的依据,“阴历”或称“农历”也就是由此而来。
阴历是每个新月决定一个月的第一天,每个弦月对应一个星期的第一天,而阴历一个月只有29天12小时44分钟又2.8秒左右。
而现在普遍通用的“阳
历”,是以地球绕行太阳公转一周的长短所制定的历法,它具备日数长短不一的十二个月份,有三十一天、三十天、二十八天或者四年一度的二十九天,而一个阳历年共费时365.2422...天。
但是这种取近似值29.5天所制作的59齿月相盘,也意味着每个阴历月便会快了44分钟又2.8秒,大约阴历年每2年7个月就会快一天。
于是为了缩小误差,制表师设计出另外一种较复杂的135齿月相盘,每个阴历月误差值缩小至仅有57.2秒左右,也就是经过122年,这个月相盘才需要以人手校正一次,如此精确
的性能相当于佩戴一辈子都不用调校,所以现在很多表厂采用这种“新月相”来提供月相盈亏显示的精确度。
需要说明的是,在巴塞尔上,FRANCK MULLER展出了一款万年历表,据说是目前唯一的一款真正的万年历表!。