找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1131|回复: 0
打印 上一主题 下一主题
收起左侧

基于单片机的汇编语言电子钟设计

[复制链接]
跳转到指定楼层
楼主
ID:556863 发表于 2020-11-18 11:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自制LED电子钟在很多电子报刊杂志上都可以见到,但大多数在断电后都要重新设置时间等参数,给使用带来很多不便。也有用后备电池作为备用电源的,但往往体积较大。本文介绍的LED电子钟克服了以往的弊端,而且采用了家电通用的红外遥控器进行控制,方便使用。有一路闹铃输出,可以通过遥控器设置闹铃时间及允许与否。


二.电子钟硬件设计


电子钟的正面

电子钟的背面
一.         工作原理
DS1302为达拉斯公司的一种实时时钟芯片,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32768Hz晶振。AT89C2051作为主控芯片,一是对接收到的红外遥控编码进行判断识别,并执行相应的处理;第二就是定期的读取时钟芯片DS1302中的时间并把小时和肥以示在4位LED中;第三就是对设置的闹铃时间与实时时间进行比较,如果时间相同且闹铃允许,那么蜂鸣器就会以1秒的周期鸣响一分钟,提醒使用者。如果要停止鸣闹,只要按遥控器相应键就可以关闭闹铃。闹铃时间保存在DS1302自带的RAM中,不需要单独的EEPROM。
二.         硬件电路
图一为电子钟的原理图,IC2为DS1302,电子爱好者可以向MAXIM公司索取免费样品。Y2为 32768 Hz石英晶振,可以用普通电子表里的。IC3为三脚的塑封一体化红外接收头。LED1-4 为高亮度共阳数码管。89C2051所用的晶振Y1如果没有10MHz也可以用其他12M以内的代替,只要修改程序中YS1和YS2的延时参数,让其保持延时长度不变就行。调整R2可以改变数码管亮度。P1口接数码管的八字段。数码管左两位显示小时,右两位显示分,当显示的是闹铃时间时闪动。第二位和第三位的小数点作为秒闪动,注意第三位数码管按图一布好印制版后安装时要旋转180°,以便让时和分之间出现“:”,最后一位小数点作为闹铃开关标志,亮表示闹铃开启。蜂鸣器B2采用小型自带音源的。要特别说明的是备用电源B1,可以用电池或者超级电容(10万uF以上)。虽然DS1302在主电源掉电后,耗电很小,但如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的那种3.6V充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容代替。100uF就可以保证1小时的正常走时。DS1302在第一次加电后,须进行初始化操作。初始化后就可以按正常方法调整时间及闹铃。

三.软件

软件部分的重点是对DS1302的操作以及红外遥控的解码。单片机解码可参看其他文章,这里主要对设置部分作一些说明: 遥控器采用长虹彩电K11F型遥控器,遥控器按照16位地址码,8位数据码以及8位数据码的反码发送。表一列出了各按键的编码及本电子钟对应的动作。如果采用其他遥控器,需对程序相应部分的编码作修改。操作方法中,任意是指该键第一次按后,进入该状态,再次按后退出该状态。时间设置:按“菜单”键进入设置状态,LED只显示正常时间的小时,按“↑↓”键调整数值,按“←“、”→”键可在闹铃与正常时间之间移动。任意时刻再次按“菜单”键就退出设置。闹铃设置:闹铃时间在时间设置中进行。闹铃允许和取消可在任意时刻按“静音”键。显示开关:可在任意时刻按“显示”键开启和关闭显示器。
初始化:在按“菜单”键进入设置状态后任意时刻按“日历”键,初始化后的时间为 2002/12/1/12:00:00
;DS1302+AT89C2051的LED钟
;遥控器各按键数据码,可根据不同的遥控器修改对应的键码


muteM   EQU 10h                 ;静音键            闹铃开/关
timerT  EQU 0Ch                 ;菜单键            进入/退出设置状态
leftL   EQU 46h                 ;左移键      
rightR  EQU 47h                 ;右移键
upU     EQU 19h                 ;增加键
downD   EQU 1dh                 ;减少键
d_off   EQU 16H                ;显示键            LED数码管显示/关闭
recall  EQU 44H                 ;日历键           DS1302初始化操作
K_on    BIT P3.0               ;闹铃输出
LED1    BIT P3.3
LED2    BIT P3.4
LED3CLK BIT P3.5               ;DS1302
LED4IO  BIT P3.7
RST     BIT P3.1
SECOND  EQU 60H
;60H  秒
;61h  分
;62h  时
;63h  日
;64h  月
;65h  DAY
;66h  年
;6Ah  闹分    from 00(1302)
;6BH  闹时    from 01(1302)
        ORG  0000H
        AJMP START
        ORG  0003H
        LJMP S_INT            ;IRF
        ORG  000BH            ;200Us
        LJMP P_INT            ;
        ORG  001BH            ;display LED
        LJMP DISPLAY
;main program
       ORG   0030H
START: CLR     RST
       MOV SP,#2AH
       SETB   05H
       CLR    06H
       SETB 07H;CLR     07H
       CLR     08H
       CLR    09H
       CLR    0AH
       CLR    0BH
       CLR    0CH
       SETB   0DH
       CLR    0EH
       CLR    0FH
       CLR    10H
       CLR    11H
       MOV R2,#00H             ;
       MOV R3,#00H             ;
       MOV TMOD,#12H
       MOV TL1,#0e5H           ;wait
       MOV TH1,#0BeH
       MOV TH0,#3FH            ;200uS  3f
       MOV TL0,#3FH
       SETB ET0
       SETB ET1
       setb pt0
       SETB TR0
       SETB TR1
       SETB IT0               ;
       SETB EX0               ;
       CLR  PX0
       ;LCALL SET1302          ;初始化
       MOV  R1,#0C1H          ;取定时参数从1302中
       acall T_6061
       MOV  6AH,A             ;M
       MOV  R1,#0C3H
       ACALL T_6061
       MOV  6BH,A             ;H
MOV 61H,#0
MOV 62H,#0
       SETB EA
       sjmp $
DISPLAY: PUSH  ACC
         PUSH PSW
         MOV  TL1,#0e0H          ;wait how longto display (20ms)
         MOV  TH1,#0b0H
         mov dptr,#tab1
         JB   0EH,DIS2
         JB   0FH,DIS3
         JB   10H,DIS4
         JB   11H,DIS5
         JNB   0DH,D_OUT
        JNB   08H,D_GO          ;定时到时,显示闪烁
         JNB  07H,D_OUT
D_GO:    MOV  DPTR,#TAB1
         MOV  A,62H
         ANL  A,#0FH
         MOV  B,A
         MOV  A,62H
         SWAP A
         ANL  A,#07H
         MOVC A,@A+DPTR
         MOV  P1,A
         CLR  LED1
         LCALL DL2M
         SETB LED1
         MOV  A,B
         MOVC A,@A+DPTR
         MOV  C,07H
         MOV  acc.7,C   ;秒灯闪烁
         MOV  P1,A
         CLR  LED2
         LCALL DL2M
         SETB LED2
         mov dptr,#tab2             ;倒装LED字段表
        MOV   A,61H
         ANL  A,#0FH
         MOV  B,A
         MOV  A,61H
         SWAP A
         ANL  A,#0FH
         MOVC A,@A+DPTR
         MOV  C,07H
         MOV  acc.6,C   ;秒灯闪烁
         MOV  P1,A
         CLR  LED3CLK
         LCALL DL2M
         SETB LED3CLK
         mov dptr,#tab1
         MOV  A,B
         MOVC A,@A+DPTR
                    MOV   C,06H
                    cpl   c
                    MOV   acc.7,C   ;闹铃指示灯
         MOV  P1,A
         CLR  LED4IO
         LCALL DL2M
         SETB LED4IO
D_OUT:   SETB TR1
         POP  PSW
         POP  ACC
         RETI
DIS2:    AJMP DIS_2
DIS3:    AJMP DIS_3
DIS4:    AJMP DIS_4
DIS5:    AJMP DIS_5
DIS_2:   mov  dptr,#tab1             ;显示设置小时
         MOV  6FH,62H
         ACALL BCD_HEX
         MOV  B,#10
         DIV  AB
         MOVC A,@A+DPTR
         MOV  P1,A
         CLR  LED1
         LCALL DL2M
         SETB LED1
         MOV  A,B
         MOVC A,@A+DPTR
         MOV  P1,A
         CLR  LED2
         LCALL DL2M
         SETB LED2
         SETB TR1
         POP  PSW
         POP  ACC
         RETI
DIS_3:   MOV  DPTR,#TAB2              ;显示设置分
         MOV  6FH,61H
         ACALL BCD_HEX
         MOV  B,#10
         DIV  AB
         MOVC A,@A+DPTR
         MOV  P1,A
         CLR  LED3CLK
         LCALL DL2M
         SETB LED3CLK
         MOV  A,B
         MOV  DPTR,#TAB1
         MOVC A,@A+DPTR
         MOV  P1,A
         CLR  LED4IO
         LCALL DL2M
         SETB LED4IO
         SETB TR1
         POP  PSW
         POP  ACC
         RETI
DIS_4:   mov   dptr,#tab1           ;显示设置闹时
         JNB  07H,D4_OUT            ;显示时闪烁
         MOV  A,6BH
         MOV  B,#0AH
         DIV  AB
         MOVC A,@A+DPTR
         MOV  P1,A
         CLR  LED1
         LCALL DL2M
         SETB LED1
         MOV  A,B
         MOVC A,@A+DPTR
        MOV   P1,A
         CLR  LED2
         LCALL DL2M
         SETB LED2
D4_OUT:  SETB TR1
         POP  PSW
         POP  ACC
         RETI
DIS_5:   MOV  DPTR,#TAB2
         JNB  07H,D5_OUT              ;显示时闪烁
         MOV  A,6AH                   ;显示设置闹分
         MOV  B,#0AH
         DIV  AB
         MOVC A,@A+DPTR
         MOV  P1,A
         CLR  LED3CLK
         LCALL DL2M
         SETB LED3CLK
         MOV  DPTR,#TAB1
         MOV  A,B
         MOVC A,@A+DPTR
         MOV  P1,A
        CLR   LED4IO
         LCALL DL2M
         SETB LED4IO
D5_OUT:  SETB TR1
         POP  PSW
         POP  ACC
         RETI
DL2M:    MOV 43H,#14H           ; every LED(2ms)
DL2:     MOV 44H,#14H
DL1:     NOP
         NOP
         DJNZ 44H,DL1
         DJNZ 43H,DL2
         RET
;************************定时读取1302时间及判断闹铃时间是否到*******
P_INT:   PUSH ACC
         PUSH PSW
         INC  R2
         CJNE R2,#250D,P_OUT
         MOV  R2,#00H
         INC  R3
         CJNE R3,#10D,P_OUT
         MOV  R3,#00H
         CPL  07H
         MOV  P1,#0FFH
         ACALL R_1302
OUT:     JNB  06H,P_OUT
         MOV  A,6BH
         MOV  B,#10
         DIV  AB
         SWAP A
         ADD  A,B
         CJNE A,62H,PP_OUT
         MOV  A,6AH
         MOV  B,#10
         DIV  AB
         SWAP A
         ADD  A,B
         CJNE A,61H,PP_OUT
         SETB 08H               ;定时到标志
         MOV  C,07H
         cpl  c
         MOV  K_ON,C
P_OUT:   POP  PSW
         POP  ACC
         RETI
PP_OUT:  SETB K_ON
         CLR  08H
         POP  PSW
         POP  ACC
         RETI
;************************有接收到遥控器信号*******
S_INT:CLR EA
      PUSH  ACC
      PUSH  PSW
      PUSH  DPH
      PUSH  DPL
      PUSH  02H
      PUSH  03H
      MOV   R6,#10D   ;
SB:   ACALL YS1
      JB    P3.2,EXIT
      DJNZ  R6, SB
      JNB   P3.2, $   ;
      ACALL YS2       ;
      JB    P3.2,EXIT
      MOV   R1,#1AH   ;
      MOV   R2,#4D
PP:   MOV   R3,#8D
JJJJ: JNB    P3.2,$
      ACALL YS1
      MOV   C,P3.2
      JNC   UUU
      JB    P3.2,$
UUU:  MOV   A,@R1
      RRC   A
      MOV   @R1,A
      DJNZ  R3,JJJJ
      INC   R1
      DJNZ  R2,PP
;-------------------------------------
      MOV A,1AH      ;
      XRL A,#40h     ;判断1AH的值是否等于遥控器低8位地址(40h)
      JNZ EXIT       ;
      MOV A,1bH
      XRL A,#0bfh    ;再判断高8位地址是否正确(0bfh)
      JNZ EXIT
      MOV A,1CH
      CPL  A
      XRL A,1DH      ;将1CH的值取反后和1DH比较 不同则无效丢弃(核对数据是否准确)
      JNZ EXIT
      ACALL DO        ;相应按键的处理
EXIT: SETB EA
      POP 03H
      POP 02H
      POP DPL
      POP DPH
      POP PSW
      POP ACC
      RETI
;--------------------delay-----------------------
YS1:  MOV   70H,#16D   ;延时1
D1:   MOV   71H,#21D
      DJNZ  71H,$
      DJNZ  70H,D1
      RET
YS2:  MOV   70H,#09D   ;延时2
D2:   MOV   71H,#220D
      DJNZ  71H,$
      DJNZ  70H,D2
      RET
;---------------------------------------------------------
TAB:   DB00H,01H,02H,03H,04H,05H,06H,07H,08H,09H     ;TAB1  LED数码管显示表 TAB遥控器键值表(未用)
;TAB1:  DB3FH,11H,5EH,5BH,71H,6BH,6FH,19H,7FH,7bH,77H,7CH,39H,5EH,79H,71H
tab1:  DB 0C0H,0F9H,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0a7h,0a1h,86h,8EH
TAB2:  DB 0c0H,0f9H,64H,70H,59H,52H,42H  ;倒装LED段码表
;0CH 为设置标志,0DH为全显示标志,0EH为显示设置小时标志,0FH为显示设置分标志
;10H 为显示设置闹时标志,11H为显示设置闹分标志
;增加闹时静音功能
;mute-10h,timer-0eh,left-46h,right-47h,up-19h,down-1dh
DO:     MOV    A,1CH
        CJNE   A,#TIMERT,REDO  ;代码不是设置/退出键
        JNB    0CH,SET1        ;是,则进入
        CLR    0CH             ;是,已经进入,则退出
        SETB   0DH             ;恢复正常显示
        CLR    0EH
        CLR    0FH
        CLR    10H
        CLR    11H
        RET
SET1:   SETB   0CH
        SETB   0EH
        CLR    0DH
        CLR    0FH
        CLR    10H
        CLR    11H
        RET
REDO:   CJNE   A,#MUTEM,REDO1  ;不是设置键的处理REDO1,2,3,4...
        LJMP   MUTE            ;MUTE?
REDO1:  CJNE   A,#D_OFF,DO_SET2
        LJMP   DIS_OFF         ;关闭显示
DO_SET2:JB      0CH,SET2        ;时间设置的处理
        RET
SET2:   CJNE   A,#UPU,SET2A
        LJMP   INC1            ;+加(^)
SET2A:  CJNE   A,#DOWND,SET2B
        LJMP   DEC2            ;- 减
SET2B:  CJNE   A,#RIGHTR,SET2C
        LJMP   RIGHT           ;RIGHT右移(>)
SET2C:  CJNE   A,#LEFTL,SET2D
        LJMP   LEFT            ;LEFT左移(<)
SET2D:  CJNE   A,#RECALL,SET2EXT ;DS1302初始化
        LJMP   SET1302
SET2EXT:RET
;--------------------------------INC------------------------
INC1:   JB     0EH,INCH
        JB     0FH,INCM
        JB     10H,INC_H
        JB     11H,INC_M
        RET
INC_H:  INC    6BH               ;闹钟小时增加
        MOV    A,6BH
        CJNE   A,#24D,INCH3
        MOV    6BH,#0
INCH3:  MOV    R1,#0C2H
        MOV    R0,6BH
        ACALL  SETONE            ;写入DS1302
        RET
INC_M:  INC    6AH               ;闹钟分增加
        MOV    A,6AH
        CJNE   A,#60D,INCH4
        MOV    6AH,#0
INCH4:  MOV    R1,#0C0H
        MOV    R0,6AH
        ACALL  SETONE             ;
        RET
INCH:   ;INC    62H               ;
        MOV    6FH,62H
        ACALL  BCD_HEX
        INC    A
        CJNE   A,#24D,INCH1
        MOV    A,#0
INCH1:  MOV    6FH,A
        ACALL  HEX_BCD
        MOV    62H,A
        MOV    R1,#84H
        MOV    R0,62H
        ACALL  SETONE             ;
        RET
INCM:   ;INC    61H               ;
        MOV    6FH,61H
        ACALL  BCD_HEX
        INC    A
        CJNE   A,#60D,INCH2
        MOV    A,#0
INCH2:  MOV    6FH,A
        ACALL  HEX_BCD
        MOV    61H,A
        MOV    R1,#82H
        MOV    R0,61H
        ACALL   SETONE             ;
        RET
;----------------------------------DEC----------------------
DEC2:   JB     0EH,DECH
        JB     0FH,DECM
        JB     10H,DEC_H
        JB     11H,DEC_M
        RET
DECH:   MOV    6FH,62H
        ACALL  BCD_HEX
        DEC    A
        CJNE   A,#0FFH,DECH1
        MOV    A,#23
DECH1:  MOV    6FH,A
        ACALL  HEX_BCD
        MOV    62H,A
        MOV    R1,#84H
        MOV    R0,62H
        ACALL  SETONE
        RET
DECM:   MOV    6FH,61H
        ACALL  BCD_HEX
        DEC    A
        CJNE   A,#0FFH,DECM1
        MOV    A,#59
DECM1:  MOV    6FH,A
        ACALL  HEX_BCD
        MOV    61H,A
        MOV    R1,#82H
        MOV    R0,61H
        ACALL  SETONE
        RET
DEC_H:  DEC    6BH
        MOV    A,6BH
        CJNE   A,#0FFH,DECH3
        MOV    6BH,#23D
DECH3:  MOV    R1,#0C2H
        MOV    R0,6BH
        ACALL  SETONE
        RET
DEC_M:  DEC    6AH
        MOV    A,6AH
        CJNE   A,#0FFH,DECH4
        MOV    6AH,#59D
DECH4:  MOV    R1,#0C0H
        MOV    R0,6AH
        ACALL  SETONE
        RET
;--------------------------------RIGHT----------------------
RIGHT:  JB     0EH,RIGHT1
        JB     0FH,RIGHT2
        JB     10H,RIGHT3
        JB     11H,RIGHT4
        RET                       ;右移
RIGHT1: CLR     0EH
        SETB   0FH
        RET
RIGHT2: CLR     0FH
        SETB   10H
        RET
RIGHT3: CLR     10H
        SETB   11H
        RET
RIGHT4: CLR     11H
        SETB   0EH
        RET
;--------------------------------LEFT-----------------------
LEFT:   JB     0EH,LEFT1
        JB     0FH,LEFT2
        JB     10H,LEFT3
        JB     11H,LEFT4
        RET                       ;左移
LEFT1:  SETB   11H
        CLR    0EH
        RET
LEFT2:  SETB   0EH
        CLR    0FH
        RET
LEFT3:  SETB   0FH
        CLR    10H
        RET
LEFT4:  SETB   10H
        CLR    11H
        RET
;------------------------------MUTE--------------
MUTE:   setb   k_ON
        CPL    06H              ;静音
        CLR    08H
        RET
;-----------------------------DISPLAYOFF--------
DIS_OFF:CLR     ET1
        CPL    05H
        JNB    05H,REDORE
        SETB   ET1
REDORE: RET
;------------------------------------初始化1302-------------------------
SET1302: CLR    RST           ;2002年1月1日12:00:00
         CLR   LED3CLK
        MOV    SECOND,#0
        MOV    61H,#0
        MOV    62H,#18       ;
        MOV    63H,#1
        MOV    64H,#1
        MOV    65H,#1
        MOV    66H,#2
         SETB  RST
         MOV   A,#8EH
         LCALL R_BIT
         MOV   A,#00H
         LCALL R_BIT
         SETB  LED3CLK
         CLR   RST
         MOV   R0,#SECOND
         MOV   R7,#7
         MOV   R1,#80H
SET1302A:CLR    RST
         CLR   LED3CLK
         SETB  RST
         MOV   A,R1
         LCALL R_BIT
         MOV   A,@R0
         LCALL R_BIT
         INC   R0
         INC   R1
         INC    R1
         SETB  LED3CLK
         CLR   RST
         DJNZ  R7,SET1302A
         CLR   RST
         CLR   LED3CLK
         sETB  LED3CLK
         nop
         CLR   RST
         nop
         clr   led3clk
         SETB  RST
         MOV   A,#90H
         LCALL R_BIT
         MOV   A,#10100101B         ;充电器设置
         LCALL R_BIT
         SETB  LED3CLK
         CLR   RST
         CLR   LED3CLK
         SETB  RST
         MOV   A,#8EH
         LCALL R_BIT
         MOV   A,#80H
         LCALL R_BIT
         SETB  LED3CLK
         CLR   RST
         RET
;----------------------读取一RAM ------
T_6061:  CLR   RST
         CLR   LED3CLK
         SETB  RST
         MOV   A,R1
         LCALL R_BIT
         LCALL W_BIT
         SETB  LED3CLK
         CLR   RST
         RET
;-----------------------------
R_1302:  MOV   R0,#SECOND
         MOV   R7,#7
         MOV   R1,#81H
R_1302A: CLR    RST
         CLR   LED3CLK
         SETB  RST
         MOV   A,R1
         LCALL R_BIT
         LCALL W_BIT
         MOV   @R0,A
         INC   R0
         INC   R1
         INC   R1
         SETB  LED3CLK
         CLR   RST
         DJNZ  R7,R_1302A
         RET
;------------------R_BIT------------------
R_BIT:   MOV   R4,#8
R_BIT1:  RRC    A
         MOV   LED4IO,C
         SETB  LED3CLK
         CLR   LED3CLK
         DJNZ  R4,R_BIT1
         RET
;-------------------W_BIT-----------------------
W_BIT:   MOV   R4,#8
W_BIT1:  MOV   C,LED4IO
         RRC   A
         SETB  LED3CLK
         CLR   LED3CLK
         DJNZ  R4,W_BIT1
         RET
;--------------------------------------------------
BCD_HEX:
         MOV   A,6FH
         ANL   A,#0FH
         MOV   B,A
         MOV   A,6FH
         MOV   6FH,B
         SWAP  A
         ANL   A,#0FH
         MOV   B,#0AH
         MUL   AB
         ADD   A,6FH
         ;MOV   6FH,A
         RET
HEX_BCD:
         MOV  A,6FH
         MOV  B,#10
         DIV  AB
         SWAP A
         ADD  A,B
         ;MOV  6FH,A
         RET
;-----写一地址---R1 为地址,R0 为数据----------
SETONE:  CLR   LED3CLK
         CLR   RST
         CLR   LED3CLK
         NOP
         SETB  RST
         MOV   A,#8EH
         LCALL R_BIT
         MOV   A,#00H
         LCALL R_BIT
         SETB  LED3CLK
         CLR   RST
         CLR   LED3CLK
         NOP
         CLR   RST
         CLR   LED3CLK
         SETB  RST
         MOV   A,R1
         LCALL R_BIT
         MOV   A,R0
         LCALL R_BIT
         NOP
         SETB  LED3CLK
         CLR   RST
         NOP
         NOP
         CLR   RST
         CLR   LED3CLK
         SETB  RST
         MOV   A,#8EH
         LCALL R_BIT
         MOV   A,#80H
         LCALL R_BIT
         SETB  LED3CLK
         CLR   RST
         RET

采用实时时钟芯片DS1302 AT89C2051的红外遥控LED电子钟.doc

165 KB, 下载次数: 11, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表