万年历单片机课程设计报告样本.doc
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。1 任务和设计要求首先要学会安装软件, 要熟悉会使用。2 系统设计系统框图 3 硬件设计3.1 电路原理图3.2 主要单元电路3.3 元件清单4 软件设计4.1 程序流程图4.2程序清单TIME_WEEK DATA 52HTIME_YEAR DATA 5DHTIME_MONTH DATA 5EHTIME_DATA DATA 5FHYEARH DATA 36HYEAR DATA 35HMONTH DATA 34HDAY DATA 33HHOUR DATA 32HMINUTE DATA 31HSEC DATA 30HAAA BIT P3.0BBB BIT P3.1AA BIT P3.3BB BIT P3.4CC BIT P3.5BL BIT P3.2BZ1 BIT 21H.0TIMES DATA 20HCOM DATA P1ORG 0000HLJMP STARTORG 0003HRETIORG 000BHLJMP INTT0ORG 0013HRETIORG 001BHRETIORG 0023HRETISTART:MOV R0,#30HMOV R7,#9CLEETE:MOV R0,#00HINC R0DJNZ R7,CLEETEMOV TIMES,#00HMOV TMOD,#01HMOV TL0,#0C0HMOV TH0,#63HMOV SEC,#0MOV MINUTE,#0HMOV HOUR,#0HMOV DAY,#01HMOV MONTH,#01HMOV YEAR,#01HMOV YEARH,#20HSETB EASETB ET0SETB TR0MOV R4,#19START1:CALL DISPJNB AA,SETMM1JMP START1SETMM1:CALL SETMMJMP START1SETMM:CALL DISPCALL DISPJB AA,SETMM0SETMM2:JNB AA,SETMM3CLR ET0CLR TR0MOV SEC,#0MOV TIMES,#01HMOV R0,#MINUTESETMM4:NOPINC22:CALL OFFLCALL INC11CALL DISPJB AA,INC22CALL DISPJB AA,INC22INC R0MOV A,TIMESRL AMOV TIMES,AJNB TIMES. 5, SETMM4SETMM12:JNB AA , SETMM11SETMM0:SETB TR0SETB ET0RETSETMM11:CALL DISPJMP SETMM12SETMM3:CALL DISPJMP SETMM2INC11:MOV R3,#40INC111:MOV A,R0JB BB,INC17ADD A,#1DA ACALL INC000INC13:JNB BB , INC14INC17:MOV R0,ACALL DISPDJNZ R3,INC111RETINC14:CALL DISPJMP INC13OFFL:MOV 22H,R0MOV R6,#10OFF1:MOV R7,#10OFF2:MOV R0, # 0AAHCALL DISPDJNZ R7 , OFF2DJNZ R6 , OFF1MOV R0 , 22HRETINC000:JB TIMES. 0, INC001JB TIMES. 1, INC002JB TIMES. 2, INC003JB TIMES. 3, INC004JB TIMES. 4, INC005JMP INCOUTINC005:CJNE A, #99H, INCOUTMOV A,#00HJMP INCOUTINC004:CJNE A, # 13H, INCOUTMOV A,#01HJMP INCOUTINC003:CJNE A,# 32H ,INCOUTMOV A,#01HJMP INCOUTINC002:CJNE A,#24H,INCOUTMOV A,#00HJMP INCOUTINC001:CJNE A,# 60H , INCOUTMOV A,#00HINCOUT:RETINTT0:PUSH ACCPUSH PSWORL TL0,#0C0HMOV TH0,#63HDJNZ R4 , CLKE111JMP LOOP11CLKE111:JMP CLKELOOP11:MOV R4,#19HMOV A,SECADD A,#1DA AMOV SEC,ACJNE A, #60H , CLKE99MOV SEC,#0MOV A,MINUTEADD A,#1DA AMOV MINUTE,ACLK0:CJNE A, # 60H, CLKEMOV MINUTE,#0MOV A,HOURADD A,#1DA AMOV HOUR,ACJNE A, # 24H, CLKEMOV HOUR,#0MOV A,DAYADD A,#1DA AMOV DAY,AMOV A,MONTHINC AMOVC A, A + PCSJMP CLK1DB 31H,28H,31HDB 30H,31H,30HDB 31H,31H,30HDB 00H,00H,00HDB 00H,00H,00HDB 31H,30H,31HCLK1:CLR CSUBB A,DAYJNC CLKEMOV A,MONTHCJNE A,#2,CLK3MOV A,YEARANL A,#13HJNB ACC.4,CLK2ADD A,#2CLK2:ANL A,#3JNZ CLK3MOV A,DAYXRL A,#29HJZ CLKECLK3:MOV DAY,#1MOV A,MONTHADD A,#1DA AMOV MONTH,ACJNE A,#13H,CLKEMOV MONTH,#1MOV A,YEARADD A,#1DA AMOV YEAR,ACLKE99:CALL CONVERTCLKE:POP PSWPOP ACCRETIDISP:PUSH PSWPUSH ACCMOV 23H,R0DISP99:MOV R1,#40HMOV R0,#30HMOV R2,#9DISP1:MOV A,R0ANL A,#0FHMOV R1,AMOV A,R0SWAP AANL A,#0FHINC R1MOV R1,ADJNZ R2,DISP2CALL DISPLAYMOV R0,23HPOP ACCPOP PSWRETDISP2:INC R1INC R0JMP DISP1DISPLAY:MOV R1,#40HMOV R5,#19SETB AAAPLAY:SETB BBBNOPCLR BBBCLR AAAMOV A,R1MOV DPTR,#TABMOVC A,A+DPTRMOV COM,ACALL DL1MSMOV COM,#0FFHDJNZ R5,PLAY1CLR BBBSETB AAARETPLAY1:INC R1JMP PLAYTAB:DB 0C0H,0F9H,0A4H, 0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0A3H,8EH,0ABHDL1MS:MOV 25H,R7MOV 24H,R6MOV R7,#20DS1:MOV R6,#10DJNZ R6,$DJNZ R7,DS1MOV R7,25HMOV R6,24HRETSTART_YEAR EQU 01CONVERT_YEAR DATA 5CHCONVERT_MONTH DATA 38HCONVERT_DATE DATA 37HTEMP_BYTE1 DATA 57HTEMP_BYTE2 DATA 58HTEMP_BYTE3 DATA 59HTEMP_BYTE4 DATA 5AHTEMP_BYTE5 DATA 5BHCONVERT:MOV A, YEARMOV TIME_YEAR,AMOV A,MONTHMOV TIME_MONTH,AMOV A,DAYMOV TIME_DATA,AMOV A,TIME_YEARMOV B,#16DIV ABMOV CONVERT_YEAR,BMOV B,#10MUL ABADD A,CONVERT_YEARMOV CONVERT_YEAR,AMOV A,TIME_MONTHJNB ACC.4,CON_02CLR ACC.4ADD A,#10CON_02:MOV CONVERT_MONTH,AMOV A,TIME_DATAMOV B,#16DIV ABMOV CONVERT_DATE,BMOV B,#10MUL ABADD A,CONVERT_DATEMOV CONVERT_DATE,AMOV DPTR,#MONTH_DATAMOV A,CONVERT_YEARCON_06:CLR CSUBB A,#START_YEARMOV B,#3MUL ABADD A,DPLMOV DPL,AMOV A,BADDC A,DPHMOV DPH,AMOV A, #2MOVC A, A+DPTRCLR ACC.7MOV B, #32DIV ABMOV TEMP_BYTE1,AMOV TEMP_BYTE2,BMOV TEMP_BYTE3,#0MOV A,CONVERT_MONTHCJNE A,#10,CON_08CON_08:JC CON_09MOV TEMP_BYTE3,#1CON_09:MOV A,CONVERT_YEARANL A,#03HJNZ CON_10MOV A,CONVERT_MONTHLCALL GET_RUN_DAYS_LOWSJMP CON_12CON_10:MOV A,CONVERT_MONTHLCALL GET_DAYS_LOWCON_12:MOV B,CONVERT_DATEDEC BADD A,BMOV TEMP_BYTE4,AJNC CON_14INC TEMP_BYTE3CON_14:MOV A,TEMP_BYTE1LCALL GET_DAYS_LOWDEC AADD A,TEMP_BYTE2MOV TEMP_BYTE5,AMOV A,CONVERT_MONTHCJNE A,TEMP_BYTE1,CON_20MOV A,CONVERT_DATECJNE A,TEMP_BYTE2,CON_20CON_20:JC CON_22LJMP CON_60CON_22:MOV A,CONVERT_YEARJNZ CON_24MOV A,#100CON_24:DEC AMOV CONVERT_YEAR,AMOV A,DPLCLR CSUBB A,#3MOV DPL,AJNC CON_26DEC DPHCON_26:MOV A,TEMP_BYTE5CLR CSUBB A,TEMP_BYTE4MOV TEMP_BYTE3,AMOV CONVERT_MONTH,#12CLR F0CLR AMOVC A,A+DPTRANL A,#0F0HSWAP A;MOV TEMP_BYTE4,AJZ CON_30MOV A, #2MOVC A , A+DPTRMOV C, ACC.7MOV A, #1MOVC A, A+DPTRRLC ASJMP CON_34CON_30:MOV A, #1MOVC A, A+DPTRCON_34:MOV TEMP_BYTE5, ACON_40:MOV A, TEMP_BYTE5RRC AMOV TEMP_BYTE5, AJC CON_42MOV B, #29SJMP CON_44CON_42:MOV B, #30CON_44:MOV A, TEMP_BYTE3CLR CSUBB A, BJZ CON_46JNC CON_50CPL AINC ACON_46: INC AMOV B, #10DIV ABSWAP AORL A, BMOV CONVERT_DATE, AMOV A, CONVERT_MONTHMOV B, #10DIV ABSWAP AORL A, BMOV CONVERT_MONTH, AMOV A, CONVERT_YEARMOV B, #10DIV ABSWAP AORL A, BMOV CONVERT_YEAR, ACALL WEEKRETCON_50:MOV TEMP_BYTE3, AJB F0, CON_52DEC CONVERT_MONTHCON_52:MOV A, CONVERT_MONTHCJNE A, TEMP_BYTE4, CON_54CPL F0CON_54:SJMP CON_40CON_60:MOV A, TEMP_BYTE4CLR CSUBB A, TEMP_BYTE5MOV TEMP_BYTE4, AJNC CON_62DEC TEMP_BYTE3CON_62:MOV CONVERT_MONTH, #1CLR AMOVC A, A+DPTRMOV TEMP_BYTE5, AANL A, #0F0HSWAP AXCH A, TEMP_BYTE5CLR F0ANL A, #0FHMOV TEMP_BYTE1, AMOV A, #1MOVC A, A+DPTRMOV TEMP_BYTE2, AANL A, #0F0HORL A, TEMP_BYTE1SWAP AMOV TEMP_BYTE1, AMOV A, #2MOVC A, A+DPTRMOV C, ACC.7MOV A, TEMP_BYTE2ANL A, # 0FHSWAP AMOV ACC. 3, CMOV TEMP_BYTE2, ACON_70:MOV A, TEMP_BYTE2RLC AMOV TEMP_BYTE2, AMOV A, TEMP_BYTE1RLC AMOV TEMP_BYTE1, AJC CON_72MOV B, #29SJMP CON_74CON_72:MOV B, #30CON_74:MOV A, TEMP_BYTE4CLR CSUBB A,BJNC CON_78MOV B, AMOV A, TEMP_BYTE3JZ CON_76DEC TEMP_BYTE3MOV TEMP_BYTE4, BSJMP CON_80CON_76:MOV A, TEMP_BYTE4LJMP CON_46 CON_78:MOV TEMP_BYTE4, A CON_80:MOV A, CONVERT_MONTHCJNE A, TEMP_BYTE5, CON_82CPL F0JNB F0, CON_82SJMP CON_70CON_82:INC CONVERT_MONTHSJMP CON_70GET_DAYS_LOW:MOVC A, A+PCRETDB 0,31,59,90,120,151,181,212,243,17,48,78GET_RUN_DAYS_LOW:MOVC A, A+PCRETDB 0,31,60,91,121,152,182,213,244,18,49,79MONTH_DATA:DB 04DH,04AH,0B8H; DB 00DH,04AH,04CH; DB 00DH,0A5H,041H; DB 025H,0AAH,0B6H; DB 005H,06AH,049H; DB 07AH,0ADH,0BDH; DB 002H,05DH,052H; DB 009H,02DH,047H; DB 05CH,095H,0BAH; DB 00AH,095H,04EH; DB 00BH,04AH,043H; DB 04BH,055H,037H; DB 00AH,0D5H,04AH; DB 095H,05AH,0BFH; DB 004H,0BAH,053H; DB 00AH,05BH,048H; DB 065H,02BH,0BCH; DB 005H,02BH,050H; DB 00AH,093H,045H; DB 047H,04AH,0B9H;2020DB 006H,0AAH,04CH;2021DB 00AH,0D5H,041H;2022DB 024H,0DAH,0B6H;2023DB 004H,0B6H,04AH;2024DB 069H,057H,03DH;2025DB 00AH,04EH,051H;2026DB 00DH,026H,046H;2027DB 05EH,093H,03AH;2028DB 00DH,053H,04DH;2029DB 005H,0AAH,043H;2030DB 036H,0B5H,037H;2031DB 009H,06DH,04BH;2032DB 0B4H,0AEH,0BFH;2033DB 004H,0ADH,053H;2034DB 00AH,04DH,048H;2035DB 06DH,025H,0BCH;2036DB 00DH,025H,04FH;2037DB 00DH,052H,044H;2038DB 05DH,0AAH,038H;2039DB 00BH,05AH,04CH;2040DB 005H,06DH,041H;2041DB 024H,0ADH,0B6H;2042DB 004H,09BH,04AH;2043DB 07AH,04BH,0BEH;2044DB 00AH,04BH,051H;2045DB 00AH,0A5H,046H;2046DB 05BH,052H,0BAH;2047DB 006H,0D2H,04EH;2048DB 00AH,0DAH,042H;2049DB 035H,05BH,037H;2050DB 009H,037H,04BH;2051DB 084H,097H,0C1H;2052DB 004H,097H,053H;2053DB 006H,04BH,048H;2054DB 066H,0A5H,03CH;2055DB 00EH,0A5H,04FH;2056DB 006H,0B2H,044H;2057DB 04AH,0B6H,038H;2058DB 00AH,0AEH,04CH;2059DB 009H,02EH,042H;2060DB 03CH,097H,035H;2061DB 00CH,096H,049H;2062DB 07DH,04AH,0BDH;2063DB 00DH,04AH,051H;2064DB 00DH,0A5H,045H;2065DB 055H,0AAH,0BAH;2066DB 005H,06AH,04EH;2067DB 00AH,06DH,043H;2068DB 045H,02EH,0B7H;2069DB 005H ,02DH, 04BH; 2070DB 08AH, 095H, 0BFH; 2071DB 00AH, 095H, 053H; 2072DB 00BH, 04AH, 047H; 2073DB 06BH, 055H, 03BH; 2074DB 00AH, 0D5H, 04FH; 2075DB 005H, 05AH, 045H; 2076DB 04AH, 05DH, 038H; 2077DB 00AH, 05BH, 04CH; 2078DB 005H, 02BH, 042H; 2079DB 03AH, 093H, 0B6H; 2080DB 006H, 093H, 049H; 2081DB 077H, 029H, 0BDH; 2082DB 006H, 0AAH, 051H; 2083DB 00AH, 0D5H, 046H; 2084DB 054H, 0DAH, 0BAH; 2085DB 004H, 0B6H, 04EH; 2086DB 00AH, 057H, 043H; 2087DB 045H, 027H, 038H; 2088DB 00DH, 026H, 04AH; 2089DB 08EH, 093H, 03EH; 2090DB 00DH, 052H, 052H; 2091DB 00DH, 0AAH, 047H; 2092DB 066H, 0B5H, 03BH; 2093DB 005H, 06DH, 04FH; 2094DB 004H, 0AEH, 045H; 2095DB 04AH, 04EH, 0B9H; 2096DB 00AH, 04DH, 04CH; 2097DB 00DH, 015H, 041H; 2098DB 02DH, 092H, 0B5H; 2090DB 00DH, 053H, 049H; 2100TIME_WEEK1 DATA 52HWEEK:MOV A, TIME_YEARMOV B, #16DIV ABMOV TEMP_BYTE1, BMOV B, #10MUL ABADD A, TEMP_BYTE1MOV TEMP_BYTE1, AMOV A, TIME_MONTHJB ACC.7, GETW02MOV A, #100ADD A, TEMP_BYTE1MOV TEMP_BYTE1, AMOV A, TIME_MONTHCLR ACC.7GETW02: JNB ACC.4, GETW04ADD A , #10CLR ACC.4GETW04: MOV TEMP_BYTE2,AMOV A, TIME_DATAMOV B, #16DIV ABMOV TEMP_BYTE3, BMOV B, #10MUL ABADD A, TEMP_BYTE3MOV TEMP_BYTE3, AMOV A ,TEMP_BYTE1ANL A, #03HJNZ GETW10MOV A, TEMP_BYTE2CJNE A, #3,GETW06GETW06: JNC GETW10DEC TEMP_BYTE3GETW10: MOV A,TEMP_BYTE2LCALL GET_CORRECTADD A, TEMP_BYTE1MOV B, #7DIV ABMOV A, TEMP_BYTE1ANL A, #0FCHRR ARR AADD A, BADD A, TEMP_BYTE3MOV B, #7DIV ABMOV A, BCJNE A, #0,OUTOUTMOV B, #8OUTOUT:MOV TIME_WEEK, BRETGET_CORRECT:MOVC A, A+PCRETDB 0,3,3,6,1,4,6,2,5,0,3,5END5 系统仿真及调试6 仿真结果及分析 上图为运行时的显示, 左边两个数码管显示器显示的是年、 月、 日, 中间的显示的是时、 分、 秒, 右边显示的是农历日期以及星期。若想要调试时间, 可经过右下方两个并联开关调试, 左边开关调试数码管显示位置, 右边的调试增1。此刻是 11月29日下午15: 02, 星期五, 时间准确。6 训练体会 在整个单片机课程设计中, 想要做出这个完整的设计过程, 必须突破几个难点: 1、 元件得找准却, 6路驱动能够用74LS244代替。2、 连线不能连错, 对应的输入输出端标上序号。3、 程序代码不能敲错。4、 由于单管显示的星期数不稳定, 能够采用双管显示。7 参考文献: 单片机课程设计指导。