基于51单片机数字时钟 课程设计论文.docx

上传人:b****8 文档编号:13191752 上传时间:2023-06-11 格式:DOCX 页数:32 大小:497.14KB
下载 相关 举报
基于51单片机数字时钟 课程设计论文.docx_第1页
第1页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第2页
第2页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第3页
第3页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第4页
第4页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第5页
第5页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第6页
第6页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第7页
第7页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第8页
第8页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第9页
第9页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第10页
第10页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第11页
第11页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第12页
第12页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第13页
第13页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第14页
第14页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第15页
第15页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第16页
第16页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第17页
第17页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第18页
第18页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第19页
第19页 / 共32页
基于51单片机数字时钟 课程设计论文.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机数字时钟 课程设计论文.docx

《基于51单片机数字时钟 课程设计论文.docx》由会员分享,可在线阅读,更多相关《基于51单片机数字时钟 课程设计论文.docx(32页珍藏版)》请在冰点文库上搜索。

基于51单片机数字时钟 课程设计论文.docx

基于51单片机数字时钟课程设计论文

 

单片机设计与制作技术报告

 

同组姓名:

吕正春.葛文青.季开伟.

李治.刘啸.单媛媛.高田田

班级:

08电信转本1班

题目:

电子时钟

任课教师:

谢军

2011年12月16日

 

设计主要内容和完成功能

本文介绍了一款多功能数字时钟系统的软件设计。

该系统能够显示当前日期、时间,并且具有日期、时间设置等功能。

该系统采用AT89S52单片机,利用液晶显示器LCD1602显示数字时钟的结果。

本系统的软件设计使用C语言进行编程,利用Keil软件编程环境对源程序进行编译。

系统的软件程序主要包括主程序LCD1602显示程序、日期时间调整等子程序的设计。

该系统具有友好的用户界面、操作简单、性能稳定。

该数字时钟系统能够长期、连续、可靠、稳定地工作,同时系统还具有功耗低等特点,便于携带、使用方便。

 

1设计方案论证

1.1编程语言方案论证

1.1.1汇编语言

汇编语言(AssemblyLanguage)是面向机器的程序设计语言。

在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。

这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。

于是汇编语言亦称为符号语言。

使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。

汇编程序把汇编语言翻译成机器语言的过程称为汇编。

汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。

但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点:

(1)能够直接访问与硬件相关的存储器或I/O端口。

(2)能够不受编译器的限制,对生成的二进制代码进行完全的控制。

(3)能够对关键代码进行更准确的控制,避免因线程共同访问或者硬件设

备共享引起的死锁。

(4)能够根据特定的应用对代码做最佳的优化,提高运行速度。

(5)能够最大限度地发挥硬件的功能。

同时还应该认识到,汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,但是不可避免地也存在一些缺点:

(1)编写的代码非常难懂,不好维护。

(2)很容易产生错误,难于调试。

(3)只能针对特定的体系结构和处理器进行优化。

(4)开发效率很低,时间长且单调。

1.1.2C语言

C语言是CombinedLanguage(组合语言)的中英混合简称。

是一种计算机程序设计语言。

它既具有高级语言的特点,又具有汇编语言的特点。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,归纳起来C语言具有下列特点:

(1)C是中级语言。

它把高级语言的基本结构和语句与低级语言的实用性结合起来。

C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

(2)C是结构式语言。

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。

这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,使程序完全结构化。

(3)C语言功能齐全。

具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。

另外C语言也具有强大的图形功能,支持多种显示器和驱动器。

而且计算功能、逻辑判断功能也比较强大。

(4)C语言适用范围大。

适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。

通过以上两种语言的比较,可以看出,C语言要优于汇编语言,编写时连贯性好,容易理解,而且在修改过程中可以很快发现问题所在,修改简便。

本次设计选用C语言作为编程语言。

1.2显示方式方案论证

1.2.1利用LED数码管显示结果

数码管是一种半导体发光器件,其基本单元是发光二极管。

数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示),七段数码管是指每只数码管由7条LED组成,使用时,接通相对应的数段,则可得到0~9一系列数字;按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

LED数码管的主要特点如下:

(1)能在低电压、小电流条件下驱动发光,能与CMOS、ITL电路兼容。

(2)发光响应时间极短(<0.1µs),高频特性好,单色性好,亮度高。

(3)体积小,重量轻,抗冲击性能好。

(4)寿命长,使用寿命在10万小时以上,甚至可达100万小时,成本低。

1.2.2利用LCD液晶显示结果

液晶是介于固态和液态之间的晶状物质,它兼有液体的流动性和晶体的光学特性。

液晶显示器(LCD)自20世纪60年代末问世以来,其优异的显示性能决定了它在显示领域具有光明的发展前景。

在人类生活各显示领域已经得到了广泛的应用。

现已成为应用非常广泛的一种平板型显示器件。

其功能特点:

(1)液晶显示器属于被动发光型显示器件,它本身不发光,只能反射或透

射外界光线,因此环境亮度愈高,显示愈清晰。

其亮暗对比度可达100:

1。

(2)驱动电压低(一般为3V—6V),驱动电流小,微功耗,能够用CMOS、

TTL电路直接驱动。

(3)必须采用交流驱动方式,驱动电压波形为不含直流分量的方波或其他

较复杂波形,频率约30Hz—300Hz。

(4)体积小、重量轻,像素尺寸小,分辨率高。

颜色分单色(黑白)、彩

色两种。

通过以上两种显示器件的比较,LCD液晶显示要优于LED数码管,LCD驱动电压低、驱动电流小,微功耗,显示效果直观,而且被动显示(无眩光,不刺激人眼,不会引起眼睛疲劳),显示信息量大(因为像素可以做得很小)。

故对比之下本次设计选用LCD液晶显示作为显示器件。

1.3系统仿真方式方案论证

1.3.1利用Proteus软件仿真实现

Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。

Proteus是电子技术工程师,电子设计专业带来很大帮助的软件。

单片机、数/模电路等仿真,还具有示波器器等虚拟软件。

是一款仿真和分析功能强大的软件。

Proteus实现了单片机仿真和SPICE电路仿真相结合,支持AVR/PIC/8051/52主流单片机系统的仿真,有强大的原理图绘制功能。

其功能特点如下:

(1)原理图布局;

(2)PCB自动或人工布线;

(3)SPICE电路仿真。

Proteus革命性的特点:

(1)C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪

器,如示波器、逻辑分析仪、信号发生器等。

(2)目前支持的单片机类型有:

68000系列、8051系列、AVR系列、PIC12

系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

(3)支持大量的存储器和外围芯片。

上编程,再配合显示及输出,能看到运行后输入输出的效果。

配合系统配

置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。

1.3.2手工焊接电路板

焊接是一门科学,他的原理是通过加热的烙铁将固态焊锡丝加热熔化,再借助于助焊剂的作用,使其流入被焊金属之间,待冷却后形成牢固可靠的焊接点。

当焊料为锡铅合金焊接面为铜时,焊料先对焊接表面产生润湿,伴随着润湿现象的发生,焊料逐渐向金属铜扩散,在焊料与金属铜的接触面形成附着层,使两则牢固的结合起来。

所以焊锡是通过润湿、扩散和冶金结合这三个物理,化学过程来完成的

经过对Proteus软件仿真和手工焊接的对比,虽然Proteus软件仿真在应用范围上比较广泛,实现的功能也很强大,但我认为手工焊接才能正真锻炼自己的动手动脑能力,也使自己在以前的实习中学到的焊接技术得到更进一步的提升,故本次设计选用手工焊接电路板作为最终实现方案。

 

2系统硬件设计

2.1系统硬件组成及结构框图

数字时钟设计包括以下几部分:

时钟模块,按键输入模块,显示模块。

然后把键盘输入、显示、计时、闹钟等数据通过串行通信传输给主单片机进行显示。

其总体框图如图2.1所示

 

图2.1结构框图

该系统采用了AT89S52单片机系统来控制系统的工作,这样就可以根据自己和场合的需要实时显示时钟、日历等,如果选用液晶显示电路,还可以进行文字显示,用于温馨提示,消息或新闻的发布等。

该系统由于采用了单片机的软件编程实现控制各模块电路的工作,并且可以通过按键进行参数的设置,实现了自动控制,使得该系统变得更加完整,功能更多,同时可以进行扩展。

2.2单片机存储器结构及复位电路与时钟电路

MCS-51器件有单独的程序存储器和数据存储器。

外部程序存储器和数据存储器都可以64K寻址。

程序存储器:

如果EA引脚接地,程序读取只从外部存储器开始。

对STC89C51,如果EA接VCC,程序读写先从内部存储器(地址为0000H~1FFFH)开始,接着从外部寻址,寻址地址为:

2000H-FFFFH。

数据存储器:

STC89C51有256字节片内数据存储器。

高128字节与特殊功能寄存器重叠。

也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。

当一条指令访问高于7FH的地址时,寻址方式决定CPU访问高128字节RAM还是特殊功能寄存器空间。

直接寻址方式访问特殊功能寄存器(SFR)。

例如,直接寻址指令MOV0A0H,#data访问0A0H(P2口)存储单元,使用间接寻址方式访问高128字节RAM。

例如,下面的间接寻址方式中,R0内容为0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。

MOV@R0,#data堆栈操作也是简介寻址方式。

因此,高128字节数据RAM也可用于堆栈空间。

复位是单片机的初始化操作,只要给RESET引脚加上两个机器周期以上的高电平信号,就可使STC89C51单片机复位。

复位的主要功能是把程序计数器(PC)初始化为0000H,使单片机从0000H单元开始执行程序,同时复位操作还对一些寄存器有影响。

STC89C51的复位是由外部的复位电路来实现的,复位电路分为上电复位和按键复位两种方式。

其电路图2.2所示.

图2.2复位电路

单片机的时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。

常见的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。

本系统选用内部时钟方式,STC89C51内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器,STC89C51时钟电路如图2.3所示。

电路中的电容的取值通常在20pF~30pF之间,对外接电容的值没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。

由于单片机要进行串行通信,为了获得准确的波特率,选择晶振的频率为12MHz。

图2.3时钟电路

2.3LCD1602的结构及工作原理

LCD1602可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。

该模块也可以只用D4-D7作为四位数据分两次传送。

这样的话可以节省MCU的I/O口资源。

LCD1602引脚说明如表2.4所示:

表2.4LCD液晶显示器各引脚功能及结构

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

双向数据口

2

VDD

电源正极

10

D3

双向数据口

3

VL

对比度调节

11

D4

双向数据口

4

RS

数据/命令选择

12

D5

双向数据口

5

R/W

读/写选择

13

D6

双向数据口

6

E

模块使能端

14

D7

双向数据口

7

D0

双向数据口

15

BLK

背光源地

8

D1

双向数据口

16

BLA

背光源正极

注意事项:

从该模块的正面看,引脚排列从右向左为:

15脚、16脚,然后才是1-14脚(线路板上已经标明)。

VDD:

电源正极,4.5-5.5V,通常使用5V电压;

VL:

LCD对比度调节端,电压调节范围为0-5V。

接正极时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地;

RS:

MCU写入数据或者指令选择端。

MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;

R/W:

读写控制端。

R/W为高电平时,读取数据;R/W为低电平时,写入数据;

E:

LCD模块使能信号控制端。

写数据时,需要下降沿触发模块。

D0-D7:

8位数据总线,三态双向。

如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4-D7接口传送数据。

本充电器就是采用4位数据传送方式;

BLA:

LED背光正极。

需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右;

BLK:

LED背光地端。

LCD1602与单片机连接如图2.5所示。

+5

2

3

1K

1

16

GND6

155

4

图2.5LCD与单片机连接图

 

3系统软件设计

3.1系统软件设计概述

该软件系统的设计主要包含以下几个子程序模块:

初始化程序模块、按键扫描子程序模块、显示程序模块等。

通过系统的源程序代码能够实现以下功能:

a.能正常显示时间、日期、星期。

b.对错误的时间进行修改

3.2系统主程序设计

程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,再判断是否有按键按下。

若有按键按下则转到相应的功能程序执行,没有按键按下则调用时间程序。

若没到则循环执行。

计时中断服务程序完成秒的计时及向分钟、小时的进位和日期、星期的进位。

调时闪烁中断服务程序用于被调单元的闪烁显示。

调时程序用于调整分钟、小时;整日期的程序用于调整年、月、日;主要由main()组成通过对相关子程序的调用,如图3.2所示。

实现了对时间的设置与修改、LCD显示数值等主要功能。

相关的调整是靠对功能键的判断来实现的。

 

图3.2主程序流程图

4系统调试

4.1系统硬件调试

1)显示器部分调试为了使调试顺利进行,首先单片机与LCD显示分离,这样就可以用静态方法先测试LCD显示,分为两个步骤:

第一,对其进行初始化(即写入命令控制字,最好定义为输出方式)后;第二,将单片机与LCD结合起来,借助开发机,通过编制程序进行调试。

若调试通过后,就可以编制应用程序了。

2)键盘调试一般显示器调试通过后,键盘调试就比较简单,完全可以借助于显示器,利用程序进行调试。

利用开发装置对程序进行设置断点,通过断点可以检查程序在断点前后的键值变化,这样可知键盘工作是否正常。

4.2软件调试

4.2.1软件编程环境keil介绍

a.Keil工程的建立

从桌面上直接双击uVision的图标以启动该软件。

UVison启动后,程序窗口的左边有一个工程管理窗口,该窗口有3个标签,分别是Files、Regs、和Books。

(1)源文件的建立

使用菜单“File->New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口中输入汇编语言源程序,保存该文件,注意必须加上扩展名(汇编语言源程序一般用.asm或a51为扩展名)。

(2)建立工程文件

点击“Project->NewProject”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以在编辑框中输入一个名字(设为321),不需要扩展名。

点击“保存”按钮,出现第二个对话框,如图4.2所示。

 

图4.2选择目标CPU

选择ATMEL公司的STC89C51芯片。

点击ATMEL前面的“+”号,点击其中的STC89C51,然后再点击“确定”按钮,回到主界面,点击工程窗口的文件页的“Target1”,前面的“+”号,可以看到下一层的“SourceGroup1”,点击“SourceGroup1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,如图4.3所示。

选中其中的“AddfiletoGroupSourceGroup1”,出现一个对话框,点击对话框中“文件类型”后的下拉列表,找到并选中“*.CSourceFile(*.C)”,这样,在列表框中就可以找到exam1.asm文件了。

 

图4.3加入文件

双击exam1.C文件,将文件加入项目,然后点击“Close”即可返回主界面,返回后,点击“SourceGroup1”前的加号,会发现exam1.C文件已在其中。

双击文件名,即打开该源程序。

b.工程的详细设置

工程建立好以后,还要对工程进行进一步的设置,以满足要求。

首先点击左边Project窗口的Target1,然后使用菜单“Project->Optionfortarget‘target1’”即出现对工程设置的对话框,这个对话框可谓非常复杂,共有8个页面,要全部搞清可不容易,好在绝大部份设置项取默认值就行了。

设置对话框中的Target页面,如图4.4所示。

 

图4.4对目标进行设置

Xtal后面的数值是晶振频率值,默认值是所选目标CPU的最高可用频率值,一般将其设置成与你的硬件所用晶振频率相同,如果没必要了解程序执行的时间,也可以不设,这里设置为12MHZ。

设置对话框中的OutPut页面,如图4.5所示,这里面也有多个选择项,其中CreatHexfile用于生成可执行代码文件(可以用编程器写入单片机芯片的HEX格式文件,文件的扩展名为.HEX),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项。

其余均保持默认情况,设置完成后按确认返回主界面,工程文件建立、设置完毕。

 

图4.5对输出进行控制

c.编译、连接

在设置好工程后,即可进行编译、连接。

选择菜单Project->Buildtarget,对当前工程进行连接。

图4.6有关编译、连接、项目设置的工具条

以上操作也可以通过工具栏按钮直接进行。

图4.6是有关编译、设置的工具栏按钮,从左到右分别是:

编译、编译连接、全部重建、停止编译和对工程进行设置。

4.2.2软件调试

通过keil软件上的编译,对编写好的软件进行编译,很容易就会发现自己在编写程序上的错误,然后根据提示找到问题的相应行,进行检查,排除问题。

一般会遇到丢失分号和未定义的问题,只要仔细检查,基本上问题都会排除,在软件编译没有错误后,点击左边Project窗口的Target1,然后使用菜单“Project->Optionfortargettarget1”即出现对工程设置的对话框,点击选中Output选项栏中CreatHexfile前面的框,点击编译连接生成”*.HEX”文件,至此,软件部分的调试就基本结束。

4.3Proteus与Keil连接调试结果

点击仿真按钮,则将出现本程序的主界面,即时间显示界面,结果如图4.14所示:

图4.14Proteus仿真图

结论

本系统利用了ATC89S52芯片,设计出了一个数字时钟系统,该系统的功能基本符合设计任务的要求。

实现了时、分、秒、日、月、星期、年的调整,实现了闹钟功能,根据Protel画出的电路原理图,利用C语言在编程软件Keil上编译程序。

在硬件的调试过程中有一下心得体会:

1)排除逻辑故障

这类故障往往由于设计和加工制板过程中工艺性错误所造成的。

主要包括错线、开路、短路。

排除的方法是首先将加工的印制板认真对照原理图,看两者是否一致。

应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其它信号线路短路。

必要时利用数字万用表的短路测试功能,可以缩短排错时间。

2)排除元器件失效

造成这类错误的原因有两个:

一个是元器件买来时就已坏了;另一个

是由于安装错误,造成器件烧坏。

可以采取检查元器件与设计要求的型号、规格和安装是否一致。

在保证安装无误后,用替换方法排除错误。

3)排除电源故障

在通电前,一定要检查电源电压的幅值和极性,否则很容易造成集成块损坏。

加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,若在5V~4.8V之间属正常。

若有高压,联机仿真器调试时,将会损坏仿真器等,有时会使应用系统中的集成块发热损坏

 

附录AProteus仿真图

附录B实物图

附录C系统源程序部分代码

#include

#defineucharunsignedchar

voidwrite_hms(uchar,uchar);

voidtime_setup();

uchara,count,hh,mm,ss,year,year0=20,year1=8,mon=8,day=13,flagy,flagw=3,flagk;

ucharcodetable0[]="2008-08-13WED";

ucharcodetable1[]="00:

00:

00";

sbitRS=P2^0;

sbitLE=P2^1;

sbitkfun=P2^2;

sbitkadd=P2^3;

sbitksub=P2^4;

voiddelay(ucharz)

{ucharx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidwrite_com(ucharcom)

{RS=0;

P0=com;

delay(5);

LE=1;

delay(5);

LE=0;

}

 

voidwrite_data(ucharData)

{RS=1;

P0=Data;

delay(5);

LE=1;

delay(5);

LE=0;

}

voidinit()

{LE=0;//初始化使能信号

write_com(0x38);//设置显示模

write_com(0x0c);write_com(0x06);//屏幕移动操

write_com(0x80);//写入数据地

write_com(0x01);//清屏

//写入初始化显示值

write_com(0x80);

for(a=0;a<15;a++)

{write_data(table0[a]);

delay(5);

}

write_com(0x80+0x40);

for(a=0;a<12;a++)

{write_data(table1[a]);

delay(5);

}

TMOD=0x01;

TH0=(65536-5

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2