全自动豆浆机控制程序的设计说明书.docx

上传人:b****5 文档编号:8147446 上传时间:2023-01-29 格式:DOCX 页数:25 大小:345.87KB
下载 相关 举报
全自动豆浆机控制程序的设计说明书.docx_第1页
第1页 / 共25页
全自动豆浆机控制程序的设计说明书.docx_第2页
第2页 / 共25页
全自动豆浆机控制程序的设计说明书.docx_第3页
第3页 / 共25页
全自动豆浆机控制程序的设计说明书.docx_第4页
第4页 / 共25页
全自动豆浆机控制程序的设计说明书.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

全自动豆浆机控制程序的设计说明书.docx

《全自动豆浆机控制程序的设计说明书.docx》由会员分享,可在线阅读,更多相关《全自动豆浆机控制程序的设计说明书.docx(25页珍藏版)》请在冰豆网上搜索。

全自动豆浆机控制程序的设计说明书.docx

全自动豆浆机控制程序的设计说明书

《微机原理及接口技术》

课程设计说明书

课题:

全自动豆浆机控制程序的设计专业:

电子信息工程

班级:

电子

1102

姓名:

张杰

学号:

3220806485

指导老师:

2013年12月28日

第一章设计任务与目标(3设计目的(3

设计任务(3

基本设计要求(3

功能扩展(3

设计环节与进程安排(3

第二章总体方案设计与方案论证(4总体方案设计(4

实时钟的调校方式(5

键盘的扫描方式(5

定时器方式(6

开关量输入消抖模块的选择(6

倒计时1S方法选择(7

第三章总体软件设计说明及总工作流程(8总工作流程(8

总体软件设计说明(10

第四章系统资源分配及数据定义说明(11

单元分配以及各个标志位注释(11第五章局部程序设计说明(13

1.自检模块(13

2.键盘扫描子模块(14

3.按键消抖子模块(14

4.蜂鸣器LED缓冲子模块(15

5.1分钟内取消模块(156.拆字子模块(16

7.调用时钟设定子模块(17

8.选择工作模式子模块(189.水位告警子模块(18

10.模拟水温子模块(19

11.无效启动子模块(20

12.实时钟子模块(21

13.显示更新子模块(21

14.启动子模块(22

15.煮浆子模块(22

16.保温子模块(23

第六章系统功能与操作说明(24系统功能(24

用户界面操作说明(25

第七章存在问题与改进程序说明(27模拟水温模块(27

水位告警模块(28

第八章课程设计总结(29

附录:

程序代码清单

第一章设计任务与目标

设计课题:

全自动豆浆机控制程序的设计

设计目的:

通过两个礼拜在实验室亲自动手操作,熟悉和理解《微机原理及接口技术》上课老师所讲的内容,将所学知识亲自动手验证,借此熟悉和掌握书中知识,并加强自己动手

设计程序的能力。

设计任务:

本次为期两个礼拜的课程设计任务是设计一个全自动豆浆机控制程序,通过LED灯,数码管模拟豆浆机的各个流程,主要要实现豆浆机的预加热,预打浆,三次加热打浆,

而后进行煮浆完成整个豆浆的流程,中间加入水位告警,防溢告警功能,并有实时钟功

能。

基本设计要求:

1、开机进行适当的有关接口部件及数码显示器、指示灯、讯响器等自检。

2、八位LED

七段数码管在常态下作为实时钟显示,其余状态下有工步号,倒计时,温

度显示。

3、键盘中能够对实时钟进行调校功能按键。

4、设有高低水位报警功能,在高水位状态下启动,LED灯闪3下,蜂鸣器同步响一秒,

在低水位状态下启动,LED灯闪1下,蜂鸣器同步响一秒。

5、具有能完成基本煮豆浆中的预加热-预打浆,然后加热-打浆总共3次的程序。

6、具有在启动后能够在一分钟以内取消煮浆的功能模块。

7、实现在3次打浆完成后进入240S倒计时的煮浆功能模块。

8、在煮浆功能模块中有对水位进行检测,超出溢电极则停止加热,待恢复水位持续5秒后才重新开启加热煮浆。

9、煮浆完成后进行以20%功率加热的保温模块。

功能扩展:

1、可扩展果汁功能模块。

2、设定电机关闭和重新开启之间必须间隔15秒。

3、实时钟模块可设置为4X4模块,伴有位闪,按键赋值功能。

4、改良告警提示音为音乐模块。

设计环节及进程安排

1、布置课题,明确任务、总体方案设计1天2、主体功能控制程序设计及调试5天

3、程序综合联调及功能完善、改进、扩展3天4、答辩及编写设计说明书3天

第二章总体方案设计与方案论证

本次课程设计的课题是设计全自动豆浆机模拟程序,需要运用微机原理与接口技术课本内容进行设计,设计的豆浆机不单单仅有煮豆浆功能。

还带有水位报警,实时钟以及实时钟调校功能,模拟水温等功能。

总体设计方案

对于这次的课程设计,按照老师所讲,我们所采取的程序设计是按照模块化来进行程序的设计。

将豆浆机的主工作流程作为一个模块,再加入其它功能的模块,比如实时钟调校模块,水位告警模块,模拟水温模块等,通过各个模块之间的循环调用,以此来完成整个全自动豆浆机的程序设计。

整个程序由自检模块,程序初始化,15个子模块组成的主流程循环调用,中断模块,延时子模块构成。

实时钟的调校方式

方案一:

运用4X4键盘对应数字输入实时钟调整

通过对4X4键盘模块的程序设计,使键盘模块能够在实时钟调校功能中实现时分秒准确调时,并且有退格,取消,确定等按键调整实时钟调校,相对应的小时十位只能输

入0~2,小时个位只能按键输入0~4,分钟十位输入0~6,分钟个位输入0~9,能够较准确的对实时钟进行调校。

方案二.:

通过调时键进入调时,四个按键对小时,分钟进行+1-1调校。

这个方案是更为简单的方案,只需要有个进入调时的按键和一个调时完成确定按键,以及4个加减时钟按键。

通过对键号的扫描判断按键是否按下以此来实现对实时钟的调校功能。

这个方案最好的优点是简化了调校功能,使时钟能够以更简便的方式进行调校,为产品的外观设计提供了很大的方便。

通过上面的综合判断实时钟的调校我们选择方案二——按键加减调校。

键盘的扫描方式

方案一:

扫描法

首先识别键盘有无键按下,驱动所有列线为‘0’,输入各行线电平如果有‘0’,就说明有键按下,如果行线电平全‘1’,则全部无键按下。

其次是如有键被按下,识别具体的按键。

依序驱动某一列为‘0’,其余列均为‘1’,输入各行线电平,如果某行线电平为‘0’,可确定此行列交叉点处的按键被按下;如果行线电平全为‘1’则本列无按键按下。

这种方式太占用CPU的工作时间。

方案二:

线反转法

首先列线输出为全‘0’,随后输入行线电平如有‘0’,则‘0’所在的行就是闭合的按键所在行;无‘0’则无键闭合。

其次行线输出为全‘0’,随后输入列线电平如有‘0’,则‘0’所在的列就是闭合的按键所在列;无‘0’则无键闭合。

直通结合上述两步,可确定按键所在行和列。

这种方式非常简单,并且很实用。

综合以上的分析,我们选择方案二——线反转法

计数方式

方案一:

13位计数方式--方式0

定时器/计数器方式0一共是有13位的计数方式。

方式0是为兼容MCS-48而设,初值计算麻烦,在实际应用中,一般不用方式0。

并且存在一个是时间误差,不能适用于精确定时。

方案二:

16位计数方式--方式1

定时器/计数器方式1

一共是有16位的计数方式,由于它每个扫描周期都会有3~8个Tm(机器周期的时间误差,主要是用于要求不是很精确地定时,因为有随机性的误差产生。

方案三:

8位计数自动重装工作方式--方式2

定时器/计数器方式2为自动恢复初值(初值会自动重装的8位定时器/计数器,当其计数溢出的时候,系统会自动重装初值,重新开始计数。

这种工作方式可以省去用户软件中重装初值的指令执行时间,可以做到精确地定时时间。

综上所述,我们是要求能做到精确定时,所以选择方式2

按键输入消抖模块的选择

对于开关量输入的消抖处理一般有以下两种种处理方法。

方案一:

软件延时消抖

即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。

当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。

方案二:

滚动滤波消抖法

滚动滤波消抖法就是通过滚动滤波法的原理,我们将PB0~PB7电平输入,并进行五次滚存消抖,新态存2EH,旧态存2FH,这个方法能够较好的完成按键的消抖,排除按键抖动所产生的不良效果,完善了按键功能。

所以我们对消抖模块选择滚存消抖。

倒计时1S方法选择

方案一:

在非倒计时显示情况下,延时可采取调用主程序,重复相应次数,得到相应延时时间。

如主程序每调用一次需10ms,调用100次,则得到1s的延时。

在倒计时显示情况下,采取在中断设置1s到标志位,用到倒计时开启标志位即可。

方案二:

每次延时即开启1s到标志位。

两个方案相比较,方案一比较简单、灵活,所以采取第一种方案来进行精准计时。

第三章总体软件设计说明与总工作流程总工作流程如图所示

主流程

自检模块

程序初始化

B

蜂鸣器LED灯缓冲子模块

调用按键消抖子模块

1分钟内取消子模块

显示更新子模块

工作模式选择模块

调用拆字子模块

时钟设定子模块

调用键盘扫描子模块启动子模块

A

水位告警子模块模拟水温子模块煮浆子模块保温子模块拨动开关子模块无效启动子模块

B

总体软件设计说明

本次的课程设计通过对15个子模块的循环调用来完成全自动豆浆机的模拟功能,并且采用定时器方式2精准计时。

拆字子程序:

常态下(待机,保温送时分秒到显缓,其余则送工步号,倒计时到显缓。

显示更新子程序:

根据显缓单元内容驱动八位数码管。

时钟设定子程序:

通过扫描键号判断调时键是否按下借以对实时钟进行调校。

键盘扫描子程序:

通过线反转法扫描按键键号,旧键号存65H,新键号存64H。

工作模式子程序:

当无工作模式时,按下功能选择键,则显示豆浆模式,而后再按时,工作模式在果汁和豆浆两种模式中切换。

1分钟取消子程序:

启动1分钟内,通过检查启动键是否再被按下,是则取消运行。

蜂鸣器LED灯缓冲子程序:

根据缓冲单元内容驱动蜂鸣器和LED灯

按键消抖子程序:

输入PB0~PB7电平,经5次滚存消抖后,旧态存2FH,新态存2EH。

保温子程序:

以20%的功率进行加热保温。

水位告警子模块:

通过检测高低水位,若有高水位或者低水位,则启动时会告警并退出。

煮浆子模块:

以240S倒计时加热煮浆,若煮浆过程中检测到超水位,则停止加热,待水位恢复持续5秒后再重新开启加热。

无效启动子模块:

检测功能未选择时启动键是否按下,是则告警并退出。

拨动开关子模块:

输入SW0~SW7电平到缓冲单元,输出驱动L8~L15。

启动子模块:

功能选择后判断启动键是否按下,是则进入预加热,预加热达到35度时,则进入预打浆。

开启电机,关闭加热。

待25秒打浆倒计时结束后,关闭电机,开启加热。

加热达到50度时进入打浆模式,开电机,关加热。

以下再重复加热打浆2次后进入煮浆。

第四章系统资源分配及数据定义说明微处理器内部存储单元分配及数据定义微处理器内部存储单元数据定义23H豆浆进程码

24H.0是否进行调时标志位

25HLED灯闪烁进程码

26H.0闪烁标志位

26H.1倒计时标志位

26H.2响标志位

26H.3开关蜂鸣器标志位

26H.4高低水位告警区分标志位

26H.5保温标志位

26H.6满1秒标志位

26H.7倒计时百位减到0标志位27H工步号

28H驱动P1标志位

29H滚存消抖存储单元

2AH滚存消抖存储单元

2BH滚存消抖存储单元

2CH滚存消抖存储单元

2DH滚存消抖存储单元2EH新态按键存储单元

2FH旧态按键存储单元

30H-37H显示缓存单元

38H200us计数单元

39H1/100s计数单元

3AH实时钟秒钟存储单元

3BH实时钟分钟存储单元

3CH实时钟小时存储单元

47H打浆,加热4次设置初值

53H闪闪闪延时200ms

59H倒计时十位,个位。

5AH倒计时百位(千位不显示5BH保温16秒设置初值5DH保温4秒设置初值

5FH满一秒计数

64H当前新扫描键号值存储单元

65H10ms前扫描到键号存储单元

67H保温讯响1分钟初值

69H1分钟内取消初值

6BH1分钟无效标志位

第五章局部程序设计说明

1.自检模块

功能简述

该模块主要功能为在开机时进行有关接口部件及数码显示器、指示灯、蜂鸣器等适当自检。

程序设计思路及方案

当程序输入到单片机中运行后会首先进行对单片机上各个功能显示模块的自检,确保使用者所使用的单片机是可以正常使用。

原理说明及部分代码

下面通过一段程序了解自检模块的实现

MOVDPTR,#0FEFCH;DPTR指向U3-A口

MOVA,#0FFH;置八段均不亮的字段码(8255A初始化后输出寄存器全‘0'MOVX@DPTR,A;输出,关数码显示器(段输出口初始驱动全为‘1'无效

MOVDPTR,#0FDFFH;对8255A(U5接口芯片初始化

MOVA,#8BH

;设定为A口输出(驱L8~15,B口输入(按钮PB0~7,C口输入(开关SW0~7

MOVX@DPTR,A;写入方式控制字

MOVDPTR,#0FDFCH;DPTR指向U5-A口

MOVA,#0FFH;置八位输出均为‘1'无效

MOVX@DPTR,A;输出,令L8-15初始不亮

CLRP3.2;蜂鸣器响

LCALLD1S;延时1S

SETBP3.2;关蜂鸣器

MOVP1,#00H;P1口输出全‘0',所驱动的L0~L7指示灯全亮

从这段代码可知,再初始的状态下,系统置八位数码管全不亮,并且L8~L15也置为不亮,随后检测蜂鸣器是否能正常亮,再检测L0~L7能否全亮。

通过程序的设计,完整的检验了单片机上各个模块的状态,让使用者能更好的分辨出单片机的正常程度。

2.键盘扫描子模块

功能简述

该模块主要功能为实现4*4的键盘扫描功能,扫描当前所按下4*4键盘的按键键号存入相应存储单元,并获得键值,以备后面的操作和功能实现。

程序设计思路及方案

该模块在主流程中调用键盘扫描子程序(LCALL,运用反转法扫描键盘,得到所按下按键的相应行列码。

当用户未按下按键时,相应存储单元存入未按下信息,即为10H,当用户按下按键时,系统相应存储单元存入已按下信息,即00H-

0FH。

通过扫描,并与键码表比较行列码,相等说明扫描到所按下的按键,将键值赋值到61H储存单元,以便后面的使用。

原理说明及部分代码

61H为键值存储单元,给61H单元赋初值,通过扫描所按下按键的行列码与键码表比较,找到相等的即说明有键按下,且能精确得到相应键码,若找不到相等键码则说明为按下按键。

键号值从00H开始,最多进行16次的键码查表,DPTR指向键码表首地址,置当前键号于A中,代码MOVC

A,@A+DPTR查表读取键码表中当前键号对应位置的键码,与8位行列码比较,不同则

转NK查下一个,相同表明找到当前按下的键号,代码INC61H使键号值加1,代码DJNZR5,KY判断未查完键值表则继续,查完则无按键或出现异常行列码,结束并返回。

64H中存有新扫描到的键号,65H中存有相对于64H中存有的键号10ms前扫描到的键号,通过两个单位的存储比较,能够较好的判断出按键的按下与否。

3.按键消抖子模块

功能简述

该模块的主要功能是为按键输入消抖,防止出现按键抖动影响主流程。

程序设计思路及方案

将原新态存为前态,将前4次得到的电平值推送至2AH-

2DH单元中,获得电平值并存为新态存放在2EH中,比较5次得到的电平值,若电平值不一致则新态不变,若电平值一致则存为新态。

原理说明及部分代码。

代码MOV2FH,2EH

将原新态存入旧的键号,即2EH为新态键值存储单元,2FH为旧态键值存储单元,代码MOV2DH,2CH;

MOV2CH,2BH

MOV2BH,2AH

MOV2AH,29H

将前4次得到的电平值推送至2AH-2DH单元中,获得电平值并存为新态,代码

MOVA,2DH

CJNEA,2CH,XDR

CJNEA,2BH,XDR

CJNEA,2AH,XDR

CJNEA,29H,XDR

比较近5次输入的电平值,一致的话存为新态,不一致则新态照旧。

4.蜂鸣器LED灯缓冲子模块

功能简述

该模块通过设定缓冲单元驱动蜂鸣器和LED灯。

程序设计思路及方案

通过设定缓冲单元来驱动蜂鸣器和LED灯,防止直接驱动蜂鸣器和LED灯这种情况下不容易修改需要驱动的方式。

原理说明及部分代码

下面一段程序可以了解整个模块功能

FMQ:

JB26H.3,LF0

CLRP3.2

SJMPLF1

LF0:

SETBP3.2

LF1:

MOVP1,28H

Q0:

RET

通过设定26H.3作为开启蜂鸣器的标志位,28H作为LED灯L0~L7,这样能够在设计过程中通过标志位来判断来使蜂鸣器能完成我们所需要设定的响的时间,而通过28H缓冲驱动LED灯L0~L7,我们就可以通关对28H的判断来了解灯的亮灭,也可以直接给28H中各个字节分别置0或1,来开启各个灯的亮灭。

5.1分钟内取消子模块

功能简述

该模块主要功能为实现当豆浆机开启工作一分钟之内都可以取消工作,使用户能再误开状态下能较好的停止豆浆机工作。

程序设计思路及方案

通过设定一个1分钟之内可以判断按键是否按下,按下就可以退出整个工作状态。

原理说明及部分代码

FQ1:

DJNZ69H,FQ2;1分钟倒计时

MOV69H,#60

DJNZ6AH,FQ2

MOV6AH,#100

以上程序为1分钟主流程循环,通过在一分钟之内可以判断启动键是否再次按下,再次按下后就可以取消豆浆机运作。

超过一分钟后就会跳出一分钟取消模块,就不能再按取消键结束豆浆机运作。

6.拆字子模块

功能简述

该模块主要功能是在待机保温时候拆送实时钟时分秒到显缓,其余状态下拆送工步号,倒计时到显缓驱动八位数码管。

程序设计思路及方案

通过判断进程码,在不同的模式下拆送不同的单元到显缓驱动八位数码显示器,以实现所需要的功能。

原理说明及部分代码

CZ:

MOVA,23H

CJNEA,#00H,CZT

SJMPCZ2;最开始不工作是显示电子表

CZT:

CJNEA,#25H,CZ5;保温时候也显示电子表

CZ2:

MOVR0,#3AH;取秒,开始拆字实时种

MOVR1,#30H;置显示缓冲单元首地址(对应于最右显示位

上面为拆字的部分程序,通过程序我们可以清楚的看到,拆字模块主要通过判断进程码,不同的进程码拆送不同的单元到显缓,上面一段程序为在待机进程00H,保温进程25H下拆送时分秒到显缓,而若非待机,保温。

则程序跳转到CZ5,如下程序:

CZ5:

MOVA,27H;步骤码

ANLA,#0FH;保留低4位(个位

MOV36H,A

MOVA,27H

ANLA,#0F0H;保留高4位(十位

SWAPA;交换到低4位

MOV37H,A

JB26H.1,CZ0;为1不送倒计时(跳出

MOVA,59H;倒计时

ANLA,#0FH;保留低4位(个位

MOV32H,A

MOVA,59H

ANLA,#0F0H;保留高4位(十位

SWAPA;交换到低4位

MOV33H,A

MOVA,5AH

ANLA,#0FH;保留低4位(个位

MOV34H,A

为拆送倒计时,工步号到对应的显缓单元,以此来实现豆浆机运作过程中所需要的打浆倒计时和工步号显示。

7.时钟设定子模块

功能简述

该模块主要功能为提供用户对实时钟的调校功能。

程序设计思路与方案

当用户在使用时,如发现实时钟不准确,可简单的对实时钟进行调校功能,通过设定按键加减时分,轻松的完成实时钟的调校。

主要设定六个按键,包括进入调时键K4,确定调时并退出调

时K5,小时加1键K0,小时减1键K1,分钟加1键K2,分钟减1键K2。

原理说明及部分代码

利用进程码进行设定,只有在待机,保温进程下才能对实时钟进行调校。

通过线反转法扫描键号来判断按键是否按下以实现对实时钟的调校功能。

在进入调校后通过4个按键分别对小时和分钟进行加减,并将秒单位及前一级单位置0,较准确的完成实时钟的调校功能。

KTE:

JNB24H.0,L2

MOVA,65H

CJNEA,#10H,L3

MOVA,64H

CJNEA,#04H,L3

下面程序为线反转法扫描键号,若发现有按键按下,则新键号会存到64H中,以此实现对应的功能。

65H存的10H为初始状态,即无00~0F键按下。

8.工作模式子模块

功能简述

该模块的功能主要为用户提供模式选择,正常的模式选择有豆浆机和果汁,由于本程序只设计豆浆机,但仍然提供了果汁的模式选择,较好了模拟了正常产品的功能选择。

程序设计思路及方案

当用户按下功能选择按键时,会将28H.0置0,驱动L0亮起,模拟豆浆模式,而后再按下功能选择键,则模式会在果汁和豆浆中切换。

原理说明及部分代码:

原理我们可以分析部分程序来进行,以下面部分程序为例:

GZMS:

MOVA,23H

CJNEA,#00H,GZ0;刚开始选择功能键才有效

JNB2FH.1,GZ0

JB2EH.1,GZ0;判断PB1功能选择键是否按下

以上的程序是通过判断在待机状态时的功能选择键是否按下,通过按键的按下再实行以下程序;INC50H

MOV28H,50H

MOVA,50H

CJNEA,#0FEH,GZ0

MOV50H,#0FCH

通过对50H单元加1,而50H内容有初值0FDH,加1后变为FE即驱动L0亮起,即选择豆浆模式,而后L0与L1交替切换亮灭,即模拟豆浆和果汁模式切换。

9.水位告警子模块

功能简述

该模块主要功能为在启动时检测是否水位是否正常

程序设计思路及方案

为了模拟高低水位,我们设置为SW0模拟高水位,SW1模拟低水位,设立闪烁标志位,借此分辨不同水位不同的闪烁告警方式。

原理说明及部分代码

水位告警模块是为了让用户能再一个安全的水位状态下进行煮浆,即保证了煮出豆浆的优良度,亦能够较好的保护使用者的安全与豆浆机的使用寿命。

通过SW1模拟高水位,当SW0为“0”时,则为高水位,反之则未超水位。

SW1为“0”时为低水位,反之水位正常。

而通过加入闪烁标志位和高低水位告警标志位26H.4,在调用告警闪闪闪模块中,可区分高低水位的告警,即高水位告警为闪烁3次,同步蜂鸣器响;低水位告警为闪烁一次,同步蜂鸣器。

10.模拟水温子模块

功能简述

该模块主要功能为在通过AN1控制A/D转换数据拆送到数码管最右边两位模拟水温。

.

程序设计思路与方案

为了更好的模拟水温拆送,在此模块中独立进行拆字程序,而非在拆字模块中进行拆送,通过对A/D数据的BCD转换,将0~256转换为0~99拆送显示温度,而AN1可调整模拟水温。

原理说明及部分代码

通过设定AN1调整,由以下程序完成:

MOVDPTR,#0FBF9H;A/D子程序。

MOVXA,@DPTR;读取A/D转换结果的8位二进制数字值

即可以通过AN1调整模拟水温。

而A/D转换结果存为缓冲单元,而后进行BCD转换,将其二进制数转换为0~99的BCD码拆送温度显示。

超过99则送“EE”到温度显示显缓单元中。

11.无效启动子模块

功能简述

该模块主要功能为防止用户在未选择模式就按启动进入。

程序设计思路及方案

通过对功能模式灯的亮灭进行判断是否选择完模式,是则正常启动,若无选择模式进入,则告警并且退出。

原理说明及部分代码

首先检测功能模式灯是否亮起,若未亮起时检测到启动键按下,则会有告警程序,并且退出运行。

告警程序如下:

WX2:

JNB2FH.0,WX0

JB2EH.0,WX0;启动键是否按下

CLR26H.2;响1s标志位0,持续响

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1