b57203493 发表于 2010-2-4 17:55:38

电子万年历(at89s52/6b595/74hc595/16*32点阵)

闲来无事,把以前做的一块16*32的点阵屏做万年历玩玩。嘿嘿!
手头现在没有照相机,不能让大家看到实物。

本点阵显示年、月、日、星期、阴历、温度,并且时间可调!
嘿嘿,这几天比较忙,温度功能还没加进去,但细心看程序,可发现温度功能非常容易添加,程序中已经定义温度变量ram 37h 38h。
按键功能也没有添加!但比起整个工程,按键和温度的程序显得有点九牛一毛!
回头完成整个工程,拍照上传。
pcb与汇编程序ourdev_532437.rar(文件大小:34K) (原文件名:PCB与汇编程序.rar)

下面是2008画的pcb
http://cache.amobbs.com/bbs_upload782111/files_25/ourdev_532431.JPG
2008画的pcb (原文件名:pcb.JPG)
先看程序吧!
;-------------------------------------------------------------------------------
;软件环境: VW For Windows
;硬件环境: AT89C52 MCU,MCS-51系列 MCU,etc.
;-------------------------------------------------------------------------------
;点阵屏引脚
;DAT[数据引脚]-------------------P1.4
;SH   [移位时钟]-------------------P1.0
;ST   [锁存时钟]-------------------P1.2
;-------------------------------------------------------------------------------
;单片机RAM定义
;00H-1FH(四组寄存器)
;20H-2FH(可位寻址区)
;30H-5FH(变量定义区)
;60H-9FH(第一显存区)
;A0H-DFH(第二显存区)
;E0H-FFH(堆栈)
;-------------------------------------------------------------------------------
;以下为产品接口引脚在演示程序中的预定义
;用户在编写应用程序时,需按自己的实际硬件连线来重新定义
DAT               BIT P1.4                        ;数据引脚
SH                BIT P1.0                        ;移位时钟
ST                BIT P1.2                        ;锁存时钟
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
;寄存器定义
;R0显存地址
;R1缓存地址
;R2画面选择(只能为1,2,4,5)
;R3移动字幕显示类型(长还是短)
;R4比秒更小的单位
;-------------------------------------------------------------------------------
;以下变量用于指示当前操作字符的位置的预定义
;用户在编写应用程序时,需按自己的实际软件程序需要来重新定义
XPOS               EQU 20H                           ;点阵屏横向数据
YPOS1            EQU 21H                           ;点纵屏横向数据
YPOS2            EQU 22H                           ;点纵屏横向数据
YPOS3            EQU 23H                           ;点纵屏横向数据
YPOS4            EQU 24H                           ;点纵屏横向数据
LP8                EQU 25H                           ;循环8次变量

MAX                EQU 29H                           ;每月最多的天数
SEC                EQU 30H                           ;秒寄存器
MIN                EQU 31H                           ;分寄存器
HOU                EQU 32H                           ;时寄存器
DATE               EQU 33H                           ;日寄存器
WEEK               EQU 34H                           ;星期寄存器
MON                EQU 35H                           ;月寄存器
YEAR               EQU 36H                           ;年寄存器
TMMP1            EQU 37H                           ;温度小数点前
TMMP2            EQU 38H                           ;温度小数点后

GAO                EQU 40H                           ;高四位
DI               EQU 41H                           ;第四位
TEM                EQU 42H                           ;时间变量暂时存放地(个位和十位)
MGAO               EQU 43H                           ;移动变量高位
MDI                EQU 44H                           ;移动变量低位
DPH0               EQU 45H                           ;移动图案起始地址高8位
DPL0               EQU 46H                           ;移动图案起始地址低8位
DPH1               EQU 47H                           ;指针1高8位
DPL1               EQU 48H                           ;指针1低8位
DPH2               EQU 49H                           ;指针2高8位
DPL2               EQU 50H                           ;指针2低8位
COMR1            EQU 51H                           ;选择移动画面的类型(画面二与画面四中显示不一样)
COMR3            EQU 52H                           ;移动字幕的长短控制(画面二中移动字幕比较短)

;-------------------------------------------------------------------------------
                ORG 00H                              ;整个程序开始于00H
                AJMP MAIN
                ORG 0BH
                AJMP TIME0                           ;定时器程序向量
                ORG 030H

MAIN:
                MOV SEC,#56H                         ;秒赋值
                MOV MIN,#51H                         ;分赋值
                MOV HOU,#22H                         ;时赋值
                MOV WEEK,#01H                        ;星期赋值
                MOV DATE,#01H                        ;日赋值
                MOV MON,#2H                        ;月份赋值
                MOV YEAR,#10H                        ;年份初始值
                MOV TMMP1,#21H                     ;温度小数点前初始值
                MOV TMMP2,#23H                     ;温度小数点后初始值
                MOV R0,#060H                         ;显存初始地址
                MOV R1,#0A0H                         ;缓存初始地址
                MOV R2,#05H                        ;显示画面一
                MOV R3,#01H                        ;移动变量显示控制
                MOV R4,#01H                        ;20分之一秒
                MOV SP,#0DFH                         ;堆栈指向0E0H
                CALL CLEAR                           ;显存请屏
                MOV TMOD,#01H                        ;选择定时器及定时器工作方式
                MOV TH0,#03CH                        ;
                MOV TR0,#0B0H                        ;设置为500MS
                SETB TR0                           ;开始定时器0计时
                SETB EA                              ;中断总开关开
                SETB ET0                           ;定时器开
                CALL LONG                            ;选择移动图案的长度及显示长度
                CALL STARTDPTR                     ;移动图案首地址
                MOV A,DPH                            ;
                MOV DPH0,A                           ;
                MOV A,DPL                            ;
                MOV DPL0,A                           ;因为后面要用到DPTR所以这先把DPTR保存起来
LOOP:
                MOV R2,#01H
LOOP1:
                CALL PUTIN1
                CALL PROCESS
                CALL DISPLAY                         ;调用显示程序
                CALL DISPLAY                         ;
                MOV A,SEC
                CJNE A,#015H,LOOP1
                MOV R2,#02H
                MOV R3,#01H                        ;变量选择从头开始
                CALL LONG                            ;选择移动图案的长度及显示长度
                CALL STARTDPTR                     ;移动图案首地址
                MOV A,DPH                            ;
                MOV DPH0,A                           ;
                MOV A,DPL                            ;
                MOV DPL0,A                           ;因为后面要用到DPTR所以这先把DPTR保存起来
LOOP2:
                CALL PROCESS
                CALL PUTIN2                        ;
                CALL PUTIN22_                        ;
                CALL ORLL
                CALL DISPLAY                         ;调用显示程序
                CALL DISPLAY                         ;
                MOV A,SEC
                CJNE A,#030H,LOOP2
                MOV R2,#04H
LOOP3:
                CALL PROCESS
                CALL PUTIN3                        ;
                CALL PUTIN32                         ;
                CALL ORLL                            ;合成PUTIN3画面与PUTIN32画面
                CALL DISPLAY                         ;调用显示程序
                CALL DISPLAY
                MOV A,SEC                         ;
                CJNE A,#045H,LOOP3
                MOV R2,#05H
                MOV R3,#01H                        ;变量选择从头开始
                CALL LONG                            ;选择移动图案的长度及显示长度
                CALL STARTDPTR                     ;移动图案首地址
                MOV A,DPH                            ;
                MOV DPH0,A                           ;
                MOV A,DPL                            ;
                MOV DPL0,A                           ;因为后面要用到DPTR所以这先把DPTR保存起来
LOOP4:
                CALL PROCESS
                CALL PUTIN4                        ;
                CALL PUTIN22_                        ;
                CALL ORLL                            ;
                CALL DISPLAY                         ;调用显示程序
                CALL DISPLAY
                MOV A,SEC                         ;
                CJNE A,#000H,LOOP4
                AJMP LOOP                            ;


;-------------------------------------------------------------------------------
;子程序名称:CLEAR().
;功能:显存清零
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
CLEAR:
                MOV @R0,#00H
                INC R0
                CJNE R0,#0A0H,CLEAR             ;显存清零
                MOV R0,#060H
                RET

;-------------------------------------------------------------------------------
;###############################################################################
;###############################四种时间画面的赋值##############################
;###############################################################################
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
;子程序名称:PUTIN1().
;功能:画面一的RAM赋值
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
PUTIN1:
                CALL EMPTY                           ;RAM写入两个空值
                MOV A,HOU                            ;取出时值
                CALL FIGURE                        ;数字写入RAM
                CALL POINT1
                MOV A,MIN                            ;取出分值
                CALL FIGURE                        ;数字写入RAM
                CALL EMPTY
                RET
;-------------------------------------------------------------------------------
;子程序名称:PUTIN2().
;功能:画面二的RAM赋值
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
PUTIN2:
                CALL EMPTY
                MOV A,HOU                            ;取出时值
                CALL FIGURE                        ;数字写入RAM
                CALL POINT2
                MOV A,MIN                            ;取出分值
                CALL FIGURE                        ;数字写入RAM
                CALL EMPTY
                CALL EMPTY
                CALL EMPTY
                INC R2                               ;秒大显示大小有变化
                MOV A,SEC                            ;取出秒值
                CALL FIGURE                        ;数字写入RAM
                DEC R2
                RET
;-------------------------------------------------------------------------------
;子程序名称:PUTIN3().
;功能:画面三的RAM赋值
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
PUTIN3:
                MOV A,HOU                            ;取出时值
                CALL FIGURE                        ;数字写入RAM
                CALL POINT3
                MOV A,MIN                            ;取出分值
                CALL FIGURE                        ;数字写入RAM
                CALL EMPTY
                CALL EMPTY
                MOV A,SEC                            ;取出秒值
                CALL FIGURE                        ;数字写入RAM
                RET
;-------------------------------------------------------------------------------
;子程序名称:PUTIN4().
;功能:画面四的RAM赋值
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
PUTIN4:
                CALL EMPTY
                CALL EMPTY
                CALL EMPTY
                MOV A,HOU                            ;取出时值
                CALL FIGURE                        ;数字写入RAM
                CALL POINT4
                MOV A,MIN                            ;取出分值
                CALL FIGURE                        ;数字写入RAM
                CALL EMPTY
                CALL EMPTY
                MOV A,SEC                            ;取出秒值
                CALL FIGURE                        ;数字写入RAM
                CALL EMPTY
                CALL EMPTY
                CALL EMPTY
                RET
;-------------------------------------------------------------------------------
;###############################################################################
;###############################其他数据写入RAM#################################
;###############################################################################
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
;子程序名称:PUTIN22().
;功能:
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------

PUTIN22_:                                             ;
                MOV A,DPH0                              ;
                MOV DPH,A                               ;
                MOV A,DPL0                              ;
                MOV DPL,A                               ;把DPTR0中的值释放出来
PUTIN22:                                                ;
                MOV R1,#0A0H                            ;
                MOV A,#00H                              ;
                MOVC A,@A+DPTR                        ;
                CJNE A,#0EEH,PUTIN22_2                  ;判断移动固定图案是否取完
                MOV A,R3
                CJNE A,COMR3,PUTIN22_1                  ;判断整个移动图案是否取完
                MOV R3,#01H                           ;控制移动变量的取值
                CALL STARTDPTR                        ;移动字幕的初始地址
                AJMP PUTIN22                            ;回到本开始
PUTIN22_1:
                INC DPTR                              ;固定图案写完,使指针指向下一图案开始
                MOV A,DPH
                MOV DPH2,A
                MOV A,DPL
                MOV DPL2,A                              ;保存下一图案的指针到DPH2和DPL2
                CALL PUTCHAR                            ;利用R3选择出要显示的变量,并提取出变量的十位和个位
                MOV A,MGAO                              ;
                CALL TAKE                               ;换算出对应的首地址
                MOV MGAO,#0FFH                        ;十位显示完后做标记
                AJMP PUTIN22                            ;回到本开始
PUTIN22_2:
                MOV A,#00H
                MOVC A,@A+DPTR
                CJNE A,#0BBH,PUTIN22_5                  ;判断变量是否显示完毕
                MOV A,MDI                               ;提取个位
                CJNE A,#0FFH,PUTIN22_3                  ;判断个位是否已经显示
                AJMP PUTIN22_4                        ;显示过则跳到固定图案
PUTIN22_3:
                MOV A,MDI                               ;
                MOV MDI,#0FFH                           ;
                CALL TAKE                               ;
                AJMP PUTIN22                            ;回到本开始
PUTIN22_4:
                INC R3                                  ;指向下一固定图案
                MOV A,DPH2
                MOV DPH,A
                MOV A,DPL2
                MOV DPL,A                               ;取出保存的指针
                AJMP PUTIN22                            ;回到本开始
;-------------------------------------------------------------------------------
;子程序名称:PUTIN22_5().
;功能:整屏显示
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
PUTIN22_5:
                PUSH MGAO                               ;
                PUSH MDI                              ;
                PUSH DPH                              ;
                PUSH DPL                              ;
                MOV A,R3                              ;
                PUSH A                                  ;
                MOV A,DPH2
                MOV DPH1,A
                MOV A,DPL2
                MOV DPL1,A                              ;变量的保存
PUTIN22_6:                                              ;
                MOV A,#00H                              ;
                MOVC A,@A+DPTR                        ;
                CJNE A,#0EEH,PUTIN22_8                  ;判断移动图案显示是否完成
                MOV A,R3
                CJNE A,COMR3,PUTIN22_7                  ;判断整个移动图案是否显示完毕
                MOV R3,#01H                           ;变量控制字复位
                CALL STARTDPTR                        ;移动固定图案的首地址
                AJMP PUTIN22_6                        ;回到初始位置
PUTIN22_7:                                              ;
                INC DPTR                              ;指向下一固定图案的首地址
                MOV A,DPH                               ;
                MOV DPH1,A                              ;
                MOV A,DPL                               ;
                MOV DPL1,A                              ;保存指针
                CALL PUTCHAR                            ;
                MOV A,MGAO                              ;
                CALL TAKE                               ;
                MOV MGAO,#0FFH                        ;标记十位,表示已经显示
                AJMP PUTIN22_6                        ;回到初始位置
PUTIN22_8:                                              ;
                MOV A,#00H                              ;
                MOVC A,@A+DPTR                        ;
                CJNE A,#0BBH,PUTIN22_11               ;判断变量已经显示完毕
                MOV A,MDI                               ;
                CJNE A,#0FFH,PUTIN22_9                  ;判断变量已经完全显示完毕
                AJMP PUTIN22_10                         ;
PUTIN22_9:                                              ;
                MOV A,MDI                               ;显示个位
                MOV MDI,#0FFH                           ;
                CALL TAKE                               ;
                AJMP PUTIN22_6                        ;回到初始位置
PUTIN22_10:                                             ;
                INC R3                                  ;指向下一固定图案
                MOV A,DPH1                              ;
                MOV DPH,A                               ;
                MOV A,DPL1                              ;
                MOV DPL,A                               ;取出固定图案指针
                AJMP PUTIN22_6                        ;回到初始位置
PUTIN22_11:                                             ;RAM赋值
                MOV A,#00H                              ;
                MOVC A,@A+DPTR                        ;
                MOV @R1,A                               ;
                INC R1                                  ;
                INC DPTR                              ;
                MOV A,R1
                CJNE A,COMR1,PUTIN22_6                  ;判断整屏显示是否已完成
                CALL ADDWEEK                            ;画面二中有静止的星期显示
                POP A                                 ;
                MOV R3,A                              ;
                POP DPL                                 ;
                POP DPH                                 ;
                INC DPTR                              ;
                INC DPTR                              ;为达到移动效果

                MOV A,DPH
                MOV DPH0,A
                MOV A,DPL
                MOV DPL0,A

                POP MDI                                 ;
                POP MGAO                              ;数据从堆栈弹出
                MOV R1,#0A0H
                RET                                     ;
;-------------------------------------------------------------------------------
;子程序名称:PUTIN32().
;功能:画面三中温度的合成
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
PUTIN32:
                MOV R0,#0A0H                            ;
                CALL EMPTY                              ;
                CALL EMPTY                              ;
                DEC R2                                  ;
                DEC R2                                  ;
                MOV A,TMMP1                           ;
                CALL FIGURE                           ;
                CALL POINT32                            ;
                MOV A,TMMP2                           ;
                CALL FIGURE                           ;
                CALL CHAR_C                           ;
                MOV R0,#060H                            ;
                INC R2                                  ;
                INC R2                                  ;
                RET                                     ;
;-------------------------------------------------------------------------------
;###############################################################################
;###############################缓存与显存相或##################################
;###############################################################################
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
;子程序名称:ORLL().
;功能:缓存与显存相或.
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
ORLL:
                MOV R0,#060H                            ;
                MOV R1,#0A0H                            ;
ORLL1:
                MOV A,@R1                               ;
                ORL A,@R0                               ;
                MOV @R0,A                               ;
                INC R0                                  ;
                INC R1                                  ;
                CJNE R0,#0A0H,ORLL1                     ;
                MOV R0,#060H                            ;
                MOV R1,#0A0H                            ;
                RET                                     ;
;-------------------------------------------------------------------------------
;###############################################################################
;##################################一列空格#####################################
;###############################################################################
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
;子程序名称:EMPTY().
;功能:连续写入两个'0'到RAM.
;输入:00H.
;输出:@R0=0.
;影响:DPTR,R0,@R0.
;-------------------------------------------------------------------------------
EMPTY:
                MOV @R0,#00H
                INC R0
                MOV @R0,#00H
                INC R0
                RET
;-------------------------------------------------------------------------------
;###############################################################################
;##################################时间计算#####################################
;###############################################################################
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
;子程序名称:PROCESS().
;功能:时间换算程序.
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
PROCESS:
                MOV A,SEC
                CJNE A,#060H,PROCESSEND
                MOV SEC,#00H
                INC MIN
                MOV A,MIN
                DA A
                MOV MIN,A
                CJNE A,#060H,PROCESSEND
                MOV MIN,#00H
                INC HOU
                MOV A,HOU
                DA A
                MOV HOU,A
                CJNE A,#024H,PROCESSEND
                MOV HOU,#00H
                INC WEEK
                MOV A,WEEK
                CJNE A,#08H,PROCESS1
                MOV WEEK,#01H
PROCESS1:
                INC DATE
                MOV A,DATE
                DA A
                LCALL MAXDATE
                MOV A,DATE
                CJNE A,MAX,PROCESSEND
                MOV DATE,#01H
                INC MON
                MOV A,MON
                DA A
                MOV MON,A
                CJNE A,#013H,PROCESSEND
                MOV MON,#01H
                INC YEAR
                MOV A,YEAR
                DA A
                MOV YEAR,A
PROCESSEND:
                RET
;-------------------------------------------------------------------------------
;子程序名称:MAXDATE().
;功能:算出每月的最多天数.
;输入:.
;输出:?
;影响:.
;-------------------------------------------------------------------------------
MAXDATE:
                MOV A,MON
                DEC A
                MOV B,#05H                     ;
                MUL AB                         ;
                MOV DPTR,#MAXDATE1             ;
                JMP @A+DPTR                  ;
MAXDATE1:                                    ;
                MOV MAX,#032H                  ;因为主程序是相等则循序执行所以这里用的是月最大天数加一
                AJMP MAXDATEEND                ;
                MOV MAX,#031H                  ;
                AJMP MAXDATEEND                ;
                MOV MAX,#032H
                AJMP MAXDATEEND
                MOV MAX,#031H
                AJMP MAXDATEEND
                MOV MAX,#032H
                AJMP MAXDATEEND
                MOV MAX,#031H
                AJMP MAXDATEEND
                MOV MAX,#032H
                AJMP MAXDATEEND
                MOV MAX,#032H
                AJMP MAXDATEEND
                MOV MAX,#031H
                AJMP MAXDATEEND
                MOV MAX,#032H
                AJMP MAXDATEEND
                MOV MAX,#031H
                AJMP MAXDATEEND
                MOV MAX,#032H
                AJMP MAXDATEEND
MAXDATEEND:
                RET
;-------------------------------------------------------------------------------
;###############################################################################
;#################################代表秒的点####################################
;###############################################################################
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
;子程序名称:POINT1().
;功能:RAM中写入代表秒的点(画面一).
;输入:.
;输出:?
;影响:.
;-------------------------------------------------------------------------------
POINT1:
                CALL EMPTY
                MOV A,R4
                CJNE A,#0AH,POINT11
POINT11:
                JC POINT12
                CALL EMPTY
                CALL EMPTY
                AJMP POINT1END
POINT12:
                MOV @R0,#6H
                INC R0
                MOV @R0,#030H
                INC R0
                MOV @R0,#06H
                INC R0
                MOV @R0,#030H
                INC R0
POINT1END:
                CALL EMPTY
                RET
;-------------------------------------------------------------------------------
;子程序名称:POINT2().
;功能:RAM中写入代表秒的点(画面二).
;输入:00H.
;输出:无.
;影响:R0,@R0.
;-------------------------------------------------------------------------------
POINT2:
                CALL EMPTY
                MOV A,R4
                CJNE A,#0AH,POINT21
POINT21:
                JC POINT22
                CALL EMPTY
                AJMP POINT2END
POINT22:
                MOV @R0,#00H
                INC R0
                MOV @R0,#036H
                INC R0
POINT2END:
                CALL EMPTY
                RET
;-------------------------------------------------------------------------------
;子程序名称:POINT3().
;功能:RAM中写入代表秒的点(画面三).
;输入:00H.
;输出:无.
;影响:R0,@R0.
;-------------------------------------------------------------------------------
POINT3:
                CALL EMPTY
                MOV A,R4
                CJNE A,#0AH,POINT31
POINT31:
                JC POINT322
                CALL EMPTY
                AJMP POINT3END
POINT322:
                MOV @R0,#36H
                INC R0
                MOV @R0,#00H
                INC R0
POINT3END:
                CALL EMPTY
                RET
;-------------------------------------------------------------------------------
;子程序名称:POINT4().
;功能:RAM中写入代表秒的点(画面四).
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
POINT4:
                CALL EMPTY
                MOV A,R4
                CJNE A,#0AH,POINT41
POINT41:
                JC POINT42
                CALL EMPTY
                AJMP POINT4END
POINT42:
                MOV @R0,#050H
                INC R0
                MOV @R0,#00H
                INC R0
POINT4END:
                CALL EMPTY
                RET
;-------------------------------------------------------------------------------
;###############################################################################
;###################################其它图样####################################
;###############################################################################
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
;子程序名称:POINT32().
;功能:RAM中写入温度小数点(画面三).
;输入:.
;输出:无.
;影响:.
;修改日期:2010.01.27
;-------------------------------------------------------------------------------
POINT32:
                CALL EMPTY
                MOV @R0,#00H
                INC R0
                MOV @R0,#03H
                INC R0
                CALL EMPTY
                RET
;-------------------------------------------------------------------------------
;子程序名称:CHAR_C().
;功能:RAM中写入温度符号(画面三).
;输入:.
;输出:无.
;影响:.
;修改日期:2010.01.27
;-------------------------------------------------------------------------------
CHAR_C:
                MOV DPTR,#TAB32_C
CHAR_C1:
                MOV A,#00H
                MOVC A,@A+DPTR
                MOV @R0,A
                INC R0
                INC DPTR
                MOV A,#00H
                MOVC A,@A+DPTR
                CJNE A,#0BBH,CHAR_C1
                RET
;-------------------------------------------------------------------------------
;###############################################################################
;################################查表并写入RAM##################################
;###############################################################################
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
;子程序名称:FIGURE().
;功能:数字写入RAM
;输入:A.
;输出:A.
;影响:@R0.
;-------------------------------------------------------------------------------
FIGURE:
                CALL BRING                           ;分离小时的十位和个位
                MOV A,GAO                            ;
                CALL FIND                            ;DPTR值寻址
                CALL RAM                           ;寻址到的数据写入RAM
                CALL EMPTY                           ;RAM写入两个空值
                MOV A,DI
                CALL FIND
                CALL RAM
                RET
;-------------------------------------------------------------------------------
;子程序名称:BRING().
;功能:提取十位和个位
;输入:A.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
BRING:
                MOV TEM,A
                ANL A,#0FH
                MOV DI,A
                MOV A,TEM
                SWAP A
                ANL A,#0FH
                MOV GAO,A
                RET
;-------------------------------------------------------------------------------
;子程序名称:RAM().
;功能:把查表的数据写入RAM
;输入:@DPTR.
;输出:@R0.
;影响:DPTR,R0 .
;-------------------------------------------------------------------------------
RAM:
                MOV A,#00H                      ;偏移量清零
                MOVC A,@A+DPTR                  ;查表
                MOV @R0,A                     ;显存赋值
                INC DPTR                        ;表格地址加一
                INC R0                        ;显存地址加一
                MOV A,#00H                      ;
                MOVC A,@A+DPTR                  ;
                CJNE A,#0BBH,RAM                ;数字赋值完成
RAMEND:
                RET
;-------------------------------------------------------------------------------
;子程序名称:FIND().
;功能:分别提取十位和个位数字在表格中的首地址
;输入:43H(TEM0).
;输出:40H(GAO),41H(DI).
;影响:42H(TEM).
;-------------------------------------------------------------------------------
FIND:                                           ;
                CALL PICTURE                  ;选择将要送入首地址的值
                MOV B,#05H                      ;
                MUL AB                        ;
                JMP @A+DPTR                     ;
TDPTR1:                                       ;画面一数字查表
                MOV DPTR,#TAB11_0               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB11_1               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB11_2               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB11_3               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB11_4               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB11_5               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB11_6               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB11_7               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB11_8               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB11_9               ;
                AJMP FINDEND                  ;
TDPTR2:                                       ;画面二数字查表
                MOV DPTR,#TAB21_0               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_1               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_2               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_3               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_4               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_5               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_6               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_7               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_8               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_9               ;
                AJMP FINDEND                  ;
TDPTR22:                                        ;画面二数字查表
                MOV DPTR,#TAB21_0_            ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_1_            ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_2_            ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_3_            ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_4_            ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_5_            ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_6_            ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_7_            ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_8_            ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB21_9_            ;
                AJMP FINDEND                  ;
TDPTR3:                                       ;画面三数据查表
                MOV DPTR,#TAB31_0               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB31_1               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB31_2               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB31_3               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB31_4               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB31_5               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB31_6               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB31_7               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB31_8               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB31_9               ;
                AJMP FINDEND                  ;
TDPTR4:                                       ;画面三数据查表
                MOV DPTR,#TAB41_0               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB41_1               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB41_2               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB41_3               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB41_4               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB41_5               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB41_6               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB41_7               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB41_8               ;
                AJMP FINDEND                  ;
                MOV DPTR,#TAB41_9               ;
                AJMP FINDEND                  ;
FINDEND:                                        ;
                RET
;-------------------------------------------------------------------------------
;子程序名称:PICTURE().
;功能:选择将要送入首地址的值.
;输入:R2.
;输出:无.
;影响:无.
;-------------------------------------------------------------------------------
PICTURE:
                CJNE R2,#1H,PICTURE1
                MOV DPTR,#TDPTR1                ;
                AJMP PICEND
PICTURE1:
                CJNE R2,#2H,PICTURE22
                MOV DPTR,#TDPTR2                ;画面二的时间和画面三中的温度均要使用此查表指令
                AJMP PICEND
PICTURE22:
                CJNE R2,#3H,PICTURE3
                MOV DPTR,#TDPTR22               ;画面二中数字大小不一样
                AJMP PICEND
PICTURE3:
                CJNE R2,#4H,PICTURE4
                MOV DPTR,#TDPTR3                ;
                AJMP PICEND
PICTURE4:
                MOV DPTR,#TDPTR4
PICEND:
                RET
;-------------------------------------------------------------------------------
;子程序名称:PUTCHAR().
;功能:利用R3选择出要显示的变量
;输入:R3.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
PUTCHAR:
                CJNE R3,#1,CHAR1
                MOV A,YEAR
                CALL BRING_
                AJMP CHAREND                               ;取出变量各位和十位对应的首地址
CHAR1:
                CJNE R3,#2,CHAR2
                MOV A,MON
                CALL BRING_
                AJMP CHAREND
CHAR2:
                CJNE R3,#3,CHAR3
                MOV A,DATE
                CALL BRING_
                AJMP CHAREND
CHAR3:
                CJNE R3,#4,CHAR4
                MOV A,WEEK
                CALL BRING_
                AJMP CHAREND
CHAR4:
                CJNE R3,#5,CHAR5
                MOV A,TMMP1
                CALL BRING_
                AJMP CHAREND
CHAR5:
                CJNE R3,#6,CHAREND
                MOV A,TMMP2
                CALL BRING_
                AJMP CHAREND
CHAREND:
                RET

;-------------------------------------------------------------------------------
;子程序名称:BRING_().
;功能:提取十位和个位
;输入:A.
;输出:40H(MGAO),41H(DI).
;影响:42H(TEM).
;-------------------------------------------------------------------------------
BRING_:
                MOV TEM,A
                ANL A,#0FH
                MOV MDI,A
                MOV A,TEM
                SWAP A
                ANL A,#0FH
                MOV MGAO,A
                RET

;-------------------------------------------------------------------------------
;子程序名称:STARTDPTR().
;功能:选择移动图案首地址的位置
;输入:R2.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
STARTDPTR:
                CJNE R2,#2H,STARTDPTR1
                MOV DPTR,#TAB22_
                AJMP STARTDPTREND
STARTDPTR1:
                CJNE R2,#5H,STARTDPTREND
                MOV DPTR,#TAB42_
STARTDPTREND:
                RET
;-------------------------------------------------------------------------------
;子程序名称:LONG().
;功能:选择移动图案的长度及显示长度
;输入:R2.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
LONG:                                                   ;
                CJNE R2,#2H,LONG1
                MOV COMR3,#04H
                MOV COMR1,#0D0H
                AJMP LONGEND
LONG1:
                CJNE R2,#5H,LONGEND
                MOV COMR3,#06H
                MOV COMR1,#0E0H
LONGEND:
                RET
;-------------------------------------------------------------------------------
;子程序名称:ADDWEEK().
;功能:画面二中有静止的星期显示
;输入:.
;输出:.
;影响:.
;-------------------------------------------------------------------------------
ADDWEEK:
                CJNE R1,#0E0H,ADDWEEK1
                AJMP ADDWEEKEND
ADDWEEK1:
                MOV A,WEEK
                DEC A
                MOV DPTR,#ADDWEEK2
                MOV B,#05H
                MUL AB                                 ;
                JMP @A+DPTR                              ;
ADDWEEK2:
                MOV DPTR,#TAB22_W1                     ;
                AJMP ADDWEEK3                            ;
                MOV DPTR,#TAB22_W2                     ;
                AJMP ADDWEEK3                            ;
                MOV DPTR,#TAB22_W3                     ;
                AJMP ADDWEEK3                            ;
                MOV DPTR,#TAB22_W4                     ;
                AJMP ADDWEEK3                            ;
                MOV DPTR,#TAB22_W5                     ;
                AJMP ADDWEEK3                            ;
                MOV DPTR,#TAB22_W6                     ;
                AJMP ADDWEEK3                            ;
                MOV DPTR,#TAB22_W7                     ;
                AJMP ADDWEEK3                            ;
ADDWEEK3:
                MOV A,#00H
                MOVC A,@A+DPTR
                CJNE A,#0BBH,ADDWEEK4
                AJMP ADDWEEKEND
ADDWEEK4:
                MOV @R1,A
                INC R1
                INC DPTR
                AJMP ADDWEEK3
ADDWEEKEND:
                RET
;-------------------------------------------------------------------------------
;子程序名称:TAKE().
;功能:移动图案变量首地址赋值
;输入:R2,R3.
;输出:.
;影响:
;-------------------------------------------------------------------------------
TAKE:
                CJNE R3,#4H,TAKE1
                MOV DPTR,#TDPTR42
                AJMP TAKE3

TAKE1:
                CJNE R2,#2,TAKE2
                MOV DPTR,#TDPTR22_
                AJMP TAKE3
TAKE2:
                CJNE R2,#5,TAKE2
                MOV DPTR,#TDPTR32
                AJMP TAKE3
TAKE3:
                MOV B,#05H                              ;
                MUL AB                                  ;
                JMP @A+DPTR                           ;
TDPTR22_:                                             ;画面二数字查表
                MOV DPTR,#TAB22_0                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB22_1                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB22_2                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB22_3                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB22_4                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB22_5                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB22_6                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB22_7                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB22_8                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB22_9                     ;
                AJMP TAKEDEND                           ;
TDPTR32:                                                 ;画面四数字查表
                MOV DPTR,#TAB42_0                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_1                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_2                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_3                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_4                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_5                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_6                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_7                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_8                     ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_9                     ;
                AJMP TAKEDEND                           ;
TDPTR42:
                                                      ;画面四星期查表
                MOV DPTR,#TAB42_W0                      ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_W1                      ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_W2                      ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_W3                      ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_W4                      ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_W5                      ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_W6                      ;
                AJMP TAKEDEND                           ;
                MOV DPTR,#TAB42_W7                      ;
                AJMP TAKEDEND                           ;
TAKEDEND:
                RET
;-------------------------------------------------------------------------------
;###############################################################################
;###############################点阵屏显示子程序################################
;###############################################################################
;-------------------------------------------------------------------------------
;子程序名称:DISPLAY().
;功能:点阵屏显示子程序
;输入:RAM(060H-09FH).
;输出:无.
;影响:20H,21H,22H,23H,24H,25H,A.
;-------------------------------------------------------------------------------
DISPLAY:
                CLR SH                  ;移位时钟清零
                CLR ST                  ;锁存始终清零
                MOV YPOS1,#080H         ;纵行移动赋值'10000000b'
                MOV YPOS2,#00H            ;
                MOV YPOS3,#00H            ;
                MOV YPOS4,#00H            ;
                MOV R0,#060H            ;显存起始地址
DISAGAIN:                                 ;
                CALL DISY               ;纵行显示程序调用
                MOV A,@R0               ;RAM中的值A
                CALL DISX               ;横行显示调整程序调用
                CALL DISOUT               ;把A中的值送到数据线DAT上
                INC R0                  ;RAM地址加1
                MOV A,@R0               ;
                CALL DISX               ;
                CALL DISOUT               ;
                INC R0                  ;
                MOV A,YPOS1               ;
                CALL DISOUT               ;
                MOV A,YPOS2               ;
                CALL DISOUT               ;
                MOV A,YPOS3               ;
                CALL DISOUT               ;
                MOV A,YPOS4               ;
                CALL DISOUT               ;
                SETB ST                   ;
                CLR ST                  ;
                JB YPOS1.7,DISEND         ;判断整个显存内容是否已经显示完成
                AJMP DISAGAIN             ;
DISEND:
                MOV A,#00H                ;再次给送显示数据,消除屏幕最后一列过于亮的BUG
                CALL DISOUT
                MOV A,#00H
                CALL DISOUT
                MOV A,#80H
                CALL DISOUT
                MOV A,#00H
                CALL DISOUT
                MOV A,#00H
                CALL DISOUT
                MOV A,#000H
                CALL DISOUT
                SETB ST                   ;
                CLR ST                  ;
                MOV R0,#060H
                RET
;-------------------------------------------------------------------------------
;子程序名称:DISY().
;功能:纵行显示程序子程序(每次只能显示一纵行)
;输入:21H,22H,23H,24H.
;输出:21H,22H,23H,24H.
;影响:21H,22H,23H,24H,,A.
;-------------------------------------------------------------------------------
DISY:
                MOV A,YPOS1               ;
                RLC A                     ;把21H大高位'1'给'C'
                MOV A,YPOS4               ;
                RLC A                     ;把上面从21H中取出的高位(C)给24H的首位
                MOV YPOS4,A               ;
                MOV A,YPOS3               ;
                RLC A                     ;
                MOV YPOS3,A               ;
                MOV A,YPOS2               ;
                RLC A                     ;
                MOV YPOS2,A               ;
                MOV A,YPOS1               ;
                RLC A                     ;
                MOV YPOS1,A               ;首次运行本子程序后个寄存器的值为:21H(00000000B),22H(00000000B),23H(00000000B),24H(00000001B)
                RET
;-------------------------------------------------------------------------------
;子程序名称:DISX(A).
;功能:横行显示调整程序(电路设计时为了方便,用程序调整锁存器引脚对应的横行)
;输入:A.
;输出:A.
;影响:20H(可位寻址去第一个寄存器),A.
;-------------------------------------------------------------------------------
DISX:
                RLC A
                MOV 04H,C
                RLC A
                MOV 05H,C
                RLC A
                MOV 03H,C
                RLC A
                MOV 00H,C
                RLC A
                MOV 02H,C
                RLC A
                MOV 01H,C
                RLC A
                MOV 06H,C
                RLC A
                MOV 07H,C
                MOV A,XPOS
                RET
;-------------------------------------------------------------------------------
;子程序名称:DISOUT().
;功能:把A中的值送到数据线DAT上
;输入:A.
;输出:无.
;影响:A,25H.
;-------------------------------------------------------------------------------
DISOUT:
                CLR SH
                MOV LP8,#08H
DISOUT1:
                RLC A
                MOV DAT,C
                SETB SH
                CLR SH
                DJNZ LP8,DISOUT1
                RET
;-------------------------------------------------------------------------------
;子程序名称:TIME0().
;功能:定时器0中断程序
;输入:.
;输出:无.
;影响:.
;-------------------------------------------------------------------------------
TIME0:
                PUSH PSW
                PUSH A
                MOV TH0,#03CH
                MOV TL0,#0B0H
                INC R4
                CJNE R4,#14H,TIME01
                MOV R4,#00H
                INC SEC
                MOV A,SEC
                DA A
                MOV SEC,A
TIME01:
                POP A
                POP PSW
                RETI
;-------------------------------------------------------------------------------
;###############################################################################
;##################################数据表格#####################################
;###############################################################################
;-------------------------------------------------------------------------------
;画面一
;-------------------------------------------------------------------------------
;画面一中的时间变量
TAB11_0:
DB03FH,0FCH,03FH,0FCH,030H,00CH,030H,00CH,03FH,0FCH,03FH,0FCH,0BBH;0
TAB11_1:
DB000H,000H,000H,000H,000H,000H,000H,000H,03FH,0FCH,03FH,0FCH,0BBH;1
TAB11_2:
DB031H,0FCH,031H,0FCH,031H,08CH,031H,08CH,03FH,08CH,03FH,08CH,0BBH;2
TAB11_3:
DB031H,08CH,031H,08CH,031H,08CH,031H,08CH,03FH,0FCH,03FH,0FCH,0BBH;3
TAB11_4:
DB03FH,080H,03FH,080H,001H,080H,001H,080H,03FH,0FCH,03FH,0FCH,0BBH;4
TAB11_5:
DB03FH,08CH,03FH,08CH,031H,08CH,031H,08CH,031H,0FCH,031H,0FCH,0BBH;5
TAB11_6:
DB03FH,0FCH,03FH,0FCH,031H,08CH,031H,08CH,031H,0FCH,031H,0FCH,0BBH;6
TAB11_7:
DB030H,000H,030H,000H,030H,000H,030H,000H,03FH,0FCH,03FH,0FCH,0BBH;7
TAB11_8:
DB03FH,0FCH,03FH,0FCH,031H,08CH,031H,08CH,03FH,0FCH,03FH,0FCH,0BBH;8
TAB11_9:
DB03FH,08CH,03FH,08CH,031H,08CH,031H,08CH,03FH,0FCH,03FH,0FCH,0BBH;9
;-------------------------------------------------------------------------------
;画面二
;-------------------------------------------------------------------------------
;画面二中的时间变量1及画面三中的温度变量数字
TAB21_0:
DB000H,07FH,000H,041H,000H,041H,000H,07FH,0BBH;0
TAB21_1:
DB000H,000H,000H,000H,000H,000H,000H,07FH,0BBH;1
TAB21_2:
DB000H,04FH,000H,049H,000H,049H,000H,079H,0BBH;2
TAB21_3:
DB000H,049H,000H,049H,000H,049H,000H,07FH,0BBH;3
TAB21_4:
DB000H,078H,000H,008H,000H,008H,000H,07FH,0BBH;4
TAB21_5:
DB000H,079H,000H,049H,000H,049H,000H,04FH,0BBH;5
TAB21_6:
DB000H,07FH,000H,049H,000H,049H,000H,04FH,0BBH;6
TAB21_7:
DB000H,040H,000H,040H,000H,040H,000H,07FH,0BBH;7
TAB21_8:
DB000H,07FH,000H,049H,000H,049H,000H,07FH,0BBH;8
TAB21_9:
DB000H,079H,000H,049H,000H,049H,000H,07FH,0BBH;9
;-------------------------------------------------------------------------------
;画面二中的时间变量2
TAB21_0_:
DB000H,01FH,000H,011H,000H,01FH,0BBH;0
TAB21_1_:
DB000H,000H,000H,000H,000H,01FH,0BBH;1
TAB21_2_:
DB000H,017H,000H,015H,000H,01DH,0BBH;2
TAB21_3_:
DB000H,015H,000H,015H,000H,01FH,0BBH;3
TAB21_4_:
DB000H,01CH,000H,004H,000H,01FH,0BBH;4
TAB21_5_:
DB000H,01DH,000H,015H,000H,017H,0BBH;5
TAB21_6_:
DB000H,01FH,000H,015H,000H,017H,0BBH;6
TAB21_7_:
DB000H,010H,000H,010H,000H,01FH,0BBH;7
TAB21_8_:
DB000H,01FH,000H,015H,000H,01FH,0BBH;8
TAB21_9_:
DB000H,01DH,000H,015H,000H,01FH,0BBH;9
;-------------------------------------------------------------------------------
;画面二中移动字幕
TAB22_:
DB063H,000H,085H,000H,089H,000H,091H,000H,061H,000H,000H,000H
DB07EH,000H,081H,000H,081H,000H,081H,000H,07EH,000H,000H,000H;20
DB0EEH
DB000H,000H,010H,000H,010H,000H,010H,000H,010H,000H,010H
DB000H,000H,000H                                        ;-
DB0EEH
DB000H,000H,010H,000H,010H,000H,010H,000H,010H,000H,010H
DB000H,000H,000H                                        ;-
DB0EEH
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0EEH;______
;-------------------------------------------------------------------------------
;画面二中的移动数字变量
TAB22_0:
DB07EH,000H,081H,000H,081H,000H,081H,000H,07EH,000H,000H,000H,0BBH;0
TAB22_1:
DB000H,000H,041H,000H,0FFH,000H,001H,000H,000H,000H,000H,000H,0BBH;1
TAB22_2:
DB063H,000H,085H,000H,089H,000H,091H,000H,061H,000H,000H,000H,0BBH;2
TAB22_3:
DB042H,000H,081H,000H,091H,000H,091H,000H,06EH,000H,000H,000H,0BBH;3
TAB22_4:
DB000H,000H,034H,000H,044H,000H,0FFH,000H,004H,000H,000H,000H,0BBH;4
TAB22_5:
DB0F2H,000H,091H,000H,091H,000H,091H,000H,08EH,000H,000H,000H,0BBH;5
TAB22_6:
DB07EH,000H,091H,000H,091H,000H,0D1H,000H,00EH,000H,000H,000H,0BBH;6
TAB22_7:
DB080H,000H,080H,000H,08FH,000H,0B0H,000H,0C0H,000H,000H,000H,0BBH;7
TAB22_8:
DB076H,000H,089H,000H,089H,000H,089H,000H,076H,000H,000H,000H,0BBH;8
TAB22_9:
DB070H,000H,08BH,000H,089H,000H,089H,000H,07EH,000H,000H,000H,0BBH;9
;-------------------------------------------------------------------------------
;画面二中的星期变量
TAB22_W1:
DB000H,000H,000H,000H,000H,000H,020H,080H,07FH,080H,000H,080H,000H,000H,000H,000H,0BBH;1
TAB22_W2:
DB000H,000H,000H,000H,021H,080H,042H,080H,044H,080H,048H,080H,030H,080H,000H,000H,0BBH;2
TAB22_W3:
DB000H,000H,000H,000H,040H,080H,048H,080H,048H,080H,048H,080H,037H,000H,000H,000H,0BBH;3
TAB22_W4:
DB000H,000H,000H,000H,006H,000H,01AH,000H,022H,000H,07FH,080H,002H,000H,000H,000H,0BBH;4
TAB22_W5:
DB000H,000H,000H,000H,078H,080H,048H,080H,048H,080H,048H,080H,04FH,080H,000H,000H,0BBH;5
TAB22_W6:
DB000H,000H,000H,000H,07FH,080H,048H,080H,048H,080H,048H,080H,06FH,080H,000H,000H,0BBH;6
TAB22_W7:
DB000H,000H,000H,000H,07FH,080H,048H,080H,048H,080H,048H,080H,07FH,080H,000H,000H,0BBH;日
;-------------------------------------------------------------------------------
;画面三
;-------------------------------------------------------------------------------
;画面三中的时间变量
TAB31_0:
DB07FH,000H,041H,000H,041H,000H,07FH,000H,0BBH;0
TAB31_1:
DB000H,000H,000H,000H,000H,000H,07FH,000H 0BBH;1
TAB31_2:
DB04FH,000H,049H,000H,049H,000H,079H,000H,0BBH;2
TAB31_3:
DB049H,000H,049H,000H,049H,000H,07FH,000H 0BBH;3
TAB31_4:
DB078H,000H,008H,000H,008H,000H,07FH,000H,0BBH;4
TAB31_5:
DB079H,000H,049H,000H,049H,000H,04FH,000H 0BBH;5
TAB31_6:
DB07FH,000H,049H,000H,049H,000H,04FH,000H,0BBH;6
TAB31_7:
DB040H,000H,040H,000H,040H,000H,07FH,000H 0BBH;7
TAB31_8:
DB07FH,000H,049H,000H,049H,000H,07FH,000H,0BBH;8
TAB31_9:
DB079H,000H,049H,000H,049H,000H,07FH,000H,0BBH;9
;-------------------------------------------------------------------------------
;画面三中的温度符号
TAB32_C:
DB000H,000H,000H,060H,000H,01CH,000H,022H,000H
DB041H,000H,041H,000H,022H,000H,000H,000H,000H;C
DB0BBH
;-------------------------------------------------------------------------------
;画面四
;-------------------------------------------------------------------------------
;画面四中的时间
TAB41_0:
DB0F8H,000H,088H,000H,0F8H,000H,0BBH;0
TAB41_1:
DB000H,000H,000H,000H,0F8H,000H,0BBH;1
TAB41_2:
DB0B8H,000H,0A8H,000H,0E8H,000H,0BBH;2
TAB41_3:
DB0A8H,000H,0A8H,000H,0F8H,000H,0BBH;3
TAB41_4:
DB0E0H,000H,020H,000H,0F8H,000H,0BBH;4
TAB41_5:
DB0E8H,000H,0A8H,000H,0B8H,000H,0BBH;5
TAB41_6:
DB0F8H,000H,0A8H,000H,0B8H,000H,0BBH;6
TAB41_7:
DB080H,000H,080H,000H,0F8H,000H,0BBH;7
TAB41_8:
DB0F8H,000H,0A8H,000H,0F8H,000H,0BBH;8
TAB41_9:
DB0E8H,000H,0A8H,000H,0F8H,000H,0BBH;9
;-------------------------------------------------------------------------------
;画面四中的移动字幕
TAB42_:
DB000H,040H,000H,040H,000H,090H,001H,010H,002H,090H,004H,071H,002H,016H,001H,018H
DB000H,080H,000H,040H,000H,040H,000H,000H,000H,041H,004H,041H,004H,042H,004H,044H
DB004H,058H,007H,0E0H,004H,058H,004H,044H,004H,042H,004H,041H,000H,041H,000H,000H
DB000H,011H,000H,012H,000H,01CH,007H,0D4H,005H,052H,005H,05FH,005H,055H,005H,055H
DB007H,0D5H,000H,015H,000H,011H,000H,000H,000H,0C6H,001H,00AH,001H,012H,001H,022H
DB000H,0C2H,000H,000H,000H,0FCH,001H,002H,001H,002H,001H,002H,000H,0FCH,000H,000H;今天是20
DB0EEH
DB000H,088H,001H,008H,006H,078H,002H,048H,002H,048H,003H,0FFH,002H,048H,002H,048H
DB002H,048H,002H,008H,000H,000H,000H,000H                                        ;年
DB0EEH
DB000H,000H,000H,001H,000H,002H,007H,0FCH,004H,090H,004H,090H,004H,091H,004H,091H
DB007H,0FFH,000H,000H,000H,000H,000H,000H                                        ;月
DB0EEH
DB000H,000H,000H,000H,007H,0FFH,004H,042H,004H,042H,004H,042H,004H,042H,004H,042H
DB004H,042H,007H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB000H,005H,000H,009H,007H,0F5H,005H,055H,005H,055H,005H,07FH,005H,055H,005H,055H
DB005H,055H,007H,0D5H,000H,001H,000H,000H,002H,009H,007H,0FAH,002H,0ACH,002H,0A8H
DB007H,0FCH,002H,00AH,000H,001H,007H,0FEH,004H,090H,004H,091H,007H,0FFH,000H,000H
DB000H,000H                                                                      ;日 星期
DB0EEH
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H,004H,08FH,002H,070H,000H,001H,000H,01FH
DB007H,0D1H,005H,05FH,005H,051H,005H,05FH,005H,051H,007H,0DFH,000H,001H,000H,000H
DB000H,003H,003H,0FCH,002H,081H,002H,089H,003H,0E9H,002H,0AEH,006H,0AAH,002H,0AEH
DB003H,0E9H,002H,089H,002H,081H,000H,000H                                        ;温度
DB0EEH
DB000H,000H,007H,000H,005H,000H,007H,000H,000H,000H,001H,0FCH,002H,002H,002H,002H
DB002H,002H,002H,002H,001H,084H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H;C
DB0EEH
;-------------------------------------------------------------------------------
;画面四中的移动数字变量
TAB42_0:
DB000H,0FCH,001H,002H,001H,002H,001H,002H,000H,0FCH,000H,000H,0BBH;0
TAB42_1:
DB000H,000H,000H,082H,001H,0FEH,000H,002H,000H,000H,000H,000H,0BBH;1
TAB42_2:
DB000H,0C6H,001H,00AH,001H,012H,001H,022H,000H,0C2H,000H,000H,0BBH;2
TAB42_3:
DB000H,084H,001H,002H,001H,022H,001H,022H,000H,0DCH,000H,000H,0BBH;3
TAB42_4:
DB000H,010H,000H,068H,000H,088H,001H,0FEH,000H,00AH,000H,000H,0BBH;4
TAB42_5:
DB001H,0E4H,001H,022H,001H,022H,001H,022H,001H,01CH,000H,000H,0BBH;5
TAB42_6:
DB000H,0FCH,001H,022H,001H,022H,001H,0A2H,000H,01CH,000H,000H,0BBH;6
TAB42_7:
DB001H,080H,001H,000H,001H,03EH,001H,0C0H,001H,000H,000H,000H,0BBH;7
TAB42_8:
DB000H,0DCH,001H,022H,001H,022H,001H,022H,000H,0DCH,000H,000H,0BBH;8
TAB42_9:
DB000H,0E0H,001H,016H,001H,012H,001H,012H,000H,0FCH,000H,000H,0BBH;9
;-------------------------------------------------------------------------------
;画面四中的星期变量
TAB42_W0:
DB0BBH
TAB42_W1:
DB000H,020H,000H,020H,000H,020H,000H,020H,000H,020H,000H,020H,000H,020H,000H,020H
DB000H,020H,000H,060H,000H,020H,000H,000H                                        ;一
DB0BBH
TAB42_W2:
DB000H,002H,001H,002H,001H,002H,001H,002H,001H,002H,001H,002H,001H,002H,001H,002H
DB003H,002H,001H,002H,000H,002H,000H,000H                                        ;二
DB0BBH
TAB42_W3:
DB000H,001H,002H,001H,002H,001H,002H,021H,002H,021H,002H,021H,002H,021H,002H,021H
DB006H,021H,002H,003H,000H,001H,000H,000H                                        ;三
DB0BBH
TAB42_W4:
DB000H,000H,007H,0FFH,004H,00AH,004H,012H,007H,0E2H,004H,002H,004H,002H,007H,0FAH
DB004H,00AH,004H,00AH,007H,0FFH,000H,000H                                        ;四
DB0BBH
TAB42_W5:
DB000H,001H,004H,041H,004H,041H,004H,04FH,007H,0F1H,004H,041H,004H,041H,004H,041H
DB004H,07FH,004H,001H,000H,001H,000H,000H                                        ;五
DB0BBH
TAB42_W6:
DB000H,081H,000H,082H,000H,08CH,000H,0B0H,004H,080H,003H,080H,000H,0A0H,000H,090H
DB000H,08CH,000H,083H,000H,080H,000H,000H                                        ;六
DB0BBH
TAB42_W7:
DB000H,000H,000H,000H,007H,0FFH,004H,042H,004H,042H,004H,042H,004H,042H,004H,042H
DB004H,042H,007H,0FFH,000H,000H,000H,000H                                        ;日
DB0BBH

                END

wuqihuihao 发表于 2010-2-4 21:05:23

又见汇编,,

fxhfxh 发表于 2010-2-5 01:44:37

谢谢分享,谢谢,谢谢。

Yaksa 发表于 2010-2-5 09:17:21

OMG,汇编...

hongyancl 发表于 2010-2-5 09:41:13

牛人

gxy508 发表于 2010-2-6 09:43:13

mark

chenxiongwei 发表于 2010-2-6 10:29:17

谢谢分享,谢谢,谢谢 太辛苦你了

laolu 发表于 2010-2-6 13:20:30

这星期也在做这个,也是汇编。可惜功能没做出来。收下楼主的程序参考一下./emotion/em025.gif

pxm0802 发表于 2010-2-6 22:13:27

下了 学习!期待楼主的照片!

zheshiwo 发表于 2010-2-7 22:10:07

16*32的点阵屏做万年历
mark,漂亮的ASM程序。

senzh01 发表于 2010-3-4 17:31:02

汇编做这么大的程序,佩服了!

liouravr 发表于 2010-3-5 12:24:45

辛苦辛苦

feixue 发表于 2010-3-5 12:32:56

我用C做出来的,汇编不会,正在学习中
http://cache.amobbs.com/bbs_upload782111/files_27/ourdev_536609.jpg
(原文件名:09100716075f108477e9455eeb.jpg)

yujian12365 发表于 2010-3-6 23:55:14

我也做一个出来。

haoyangwoaini 发表于 2010-4-7 17:21:20

按键调时间在实物中并不简单 楼主可以试一下

haoyangwoaini 发表于 2010-4-7 17:27:48

按键调时间在实物中并不简单 楼主可以试一下

xzm8469105 发表于 2010-4-7 19:27:46

点阵的没试过,液晶的倒是弄过,当时还加了红外遥控设置,大家可以看我程序

b57203493 发表于 2010-4-10 14:08:26

不好意思
最近忙,把上传照片的事情给忘了

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545266.jpg
(原文件名:IMG_0723.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545267.jpg
(原文件名:IMG_0724.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545268.jpg
(原文件名:IMG_0725.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545269.jpg
(原文件名:IMG_0726.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545270.jpg
(原文件名:IMG_0727.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545271.jpg
(原文件名:IMG_0729.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545272.jpg
(原文件名:IMG_0730.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545273.jpg
(原文件名:IMG_0732.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545274.jpg
(原文件名:IMG_0733.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545275.jpg
(原文件名:IMG_0734.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545276.jpg
(原文件名:IMG_0736.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545277.jpg
(原文件名:IMG_0737.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545278.jpg
(原文件名:IMG_0738.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545279.jpg
(原文件名:IMG_0739.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545280.jpg
(原文件名:IMG_0740.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545281.jpg
(原文件名:IMG_0741.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545282.jpg
(原文件名:IMG_0742.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545283.jpg
(原文件名:IMG_0743.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545284.jpg
(原文件名:IMG_0744.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545285.jpg
(原文件名:IMG_0745.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545286.jpg
(原文件名:IMG_0746.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545287.jpg
(原文件名:IMG_0747.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545288.jpg
(原文件名:IMG_0748.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545289.jpg
(原文件名:IMG_0749.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545290.jpg
(原文件名:IMG_0751.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545291.jpg
(原文件名:IMG_0752.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545292.jpg
(原文件名:IMG_0753.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545293.jpg
(原文件名:IMG_0754.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545294.jpg
(原文件名:IMG_0755.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545295.jpg
(原文件名:IMG_0756.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545296.jpg
(原文件名:IMG_0757.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545297.jpg
(原文件名:IMG_0758.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545298.jpg
(原文件名:IMG_0759.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545299.jpg
(原文件名:IMG_0760.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545300.jpg
(原文件名:IMG_0762.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545301.jpg
(原文件名:IMG_0763.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545302.jpg
(原文件名:IMG_0764.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545303.jpg
(原文件名:IMG_0765.jpg)

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_545304.jpg
(原文件名:IMG_0766.jpg)

jeep 发表于 2010-4-10 16:18:51

按键在那里

b57203493 发表于 2010-4-10 23:26:34

没做按键

hexj 发表于 2010-4-10 23:57:18

漂亮

whh217 发表于 2010-4-11 23:23:28

漂亮

tonyone 发表于 2010-4-12 08:43:56

漂亮 ,收下了。

RScs 发表于 2010-4-12 14:06:00

积分:67
派别:
等级:------
来自:
漂亮 ,收下了

gps422129 发表于 2010-4-12 21:44:01

等待完善。。。

chenhuwyl 发表于 2010-4-12 22:49:34

厉害,用汇编做太牛了吧,佩服

qhshilin 发表于 2010-4-13 14:26:45

mark1

billtian 发表于 2010-4-13 15:10:28

最近也打算做一个,打算加入天干地支纪年月日时,有了解这方面的朋友给指点下

pan90 发表于 2010-4-27 23:28:45

mark

chaled 发表于 2010-6-2 16:42:40

mark

avrwoo 发表于 2010-8-9 13:27:44

mark

haitun 发表于 2010-8-13 22:39:59

请问楼主有详细资料吗?可以发给我吗?邮箱848766091@qq.com

guxingganyue 发表于 2010-8-16 12:40:05

cbhzl 发表于 2010-9-21 15:12:36

了解,学习了。。

electricdream 发表于 2010-10-15 21:32:35

回复【楼主位】b57203493
-----------------------------------------------------------------------

有点对不汇编头痛,不过版主还是很强大的!!!!

Pmin-wei 发表于 2010-12-1 23:52:01

又见汇编,看不懂咯

xiao_L 发表于 2010-12-2 15:11:54

看到汇编巨头痛!还是谢谢LZ分享!

qianqianjunzhu 发表于 2010-12-2 22:08:26

楼主辛苦了!

hudade 发表于 2010-12-3 12:37:06

感谢分享~~~小弟学习了

kongan 发表于 2011-1-12 13:41:03

感谢分享

q779883414 发表于 2011-8-9 20:07:13

牛人啊,谢谢分享了

xifengxia 发表于 2011-10-7 22:01:34

学习ing

xiaoyigechaos 发表于 2011-10-16 20:21:43

好长的汇编啊

yyt1372 发表于 2011-11-25 15:18:46

原理图无效!

fsj5098@hotmail 发表于 2015-1-5 22:54:32

漂亮,牛人啊

hzxin 发表于 2015-1-6 16:51:28

漂亮,又见汇编高手

西施糖葫芦 发表于 2015-1-12 11:20:01

汇编看着好晕,大家液晶屏做界面怎么处理的能漂亮一点?

1178951695 发表于 2015-10-17 10:35:49

mark,顶楼主

jhhoward 发表于 2018-8-4 15:49:47

b57203493 发表于 2010-4-10 14:08
不好意思
最近忙,把上传照片的事情给忘了



好厉害啊,羡慕

unnormal 发表于 2018-8-6 14:56:41

高手啊汇编
页: [1]
查看完整版本: 电子万年历(at89s52/6b595/74hc595/16*32点阵)