版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Proteus与KeilC课程设计
题目:数字钟课程设计
院系:机电工程学院
专业:应用电子技术
班级:零九一班
姓名:
学号:
指导老师
0^:2
1弓I言
单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、
随机存储器、只读存储器、中断系统、定时器/计数器以及1/0接口电路等部件集
成在一个芯片上。
在我国,单片机的开发应用已有15年左右,已经形成一支庞大的技术开发队伍,
为我国单片机应用积累了丰富的经验。随着电子技术、计算机芯片技术和微电子
技术的飞速发展促进了单片机技术一日千里的变化。
随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系
统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广
大电子爱好者的极大关注。单片机功能越来越强大,价格却不断下降的优势无疑
成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加
入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。
21整体设计思路
这部分主要介绍工作安排和整体设计的思想。工作过程规划如下:
图2.1整体设计思路
针对要实现的功能,拟采用STC89c51单片机进行设计,STC89C51单片现是
一款低功耗,高性能CM0S8位单片机,片内含4KB在线可编程(ISP)的可反复擦
写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,
兼容标准MCS-51指令系统及STC80C51引脚结构。这样,既能做到经济合理又能
实现预期的功能。
在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,
又能便于添加各项功能。程序可分为闹钟的声音程序、显示程序、闹钟显示程序、
调时显示、定时程序。本电子钟设计主要是依照图2.1中的流程做出来的,时间
分配比较均匀。首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及
内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前
期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需
要开关电路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先
学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最
终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路
图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片
中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成
功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全
一样一般能实现想要的功能。
2主要元件的使用
下面就本次设计中用到的主要元件的所有功能进行简单的介绍,包括
STC89c51单片机、74LS07芯片、以及数码管的特性和用法。
3STC89c51单片机:
该单片机功能强大,不仅能满足设计的需要,也可以在设计要求的基础上进
行一些扩展。单片机的结构如下:
图3.1.1单片机引脚图
在使用时VCC接电源电压,GND接地。PO,Pl,P2,P3可作为输入或输出端
口,RST是复位输入,篆复位电路。XTAL1和XTAL2接复位电路。这些可以在
硬件设计部分体现出来。
4电路设计
4.1整体设计
此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模
块:显示电路用六个数码管分别显示小时(年份)、分钟(月份)和秒(日):通
过动态扫描进行显示,从而避免了译码器的使用,使电路更加简单。单片机采用
AT89c51系列,这种单片机应用简单,适合电子钟设计。
电路的总体设计框架如下:
图4.1.1电路模块图
4.2分块设计
这部分介绍各模块电路的设计方法和成果,主要分为:输入部分、输出部分、
复位和晶振电路。
4.2.1输入部分
在电子钟的输入部分,设置相应的置数功能,通过外部设备的输入,如按键,
实现时间的修改。除此之外,调整闹铃、定时、日期时也需要按键进行输入。在
选用输入端口时,将P3引脚与按键相连进行输入。
设计的输入部分如下:
图4.2.1输入部分
4.2.2输出部分(显示电路)
该部分电路图如下所示:
图4.2.2显示部分
在实际电路中采用LCD显示屏相连进行显示,先把LCD显示屏的7、8、9、10、
11.12.13.14与RP8对应2~9相连,然后把LCD显示屏的2和15引脚各自相连
电源,1接地,3,15分别连接热敏电阻及晶体管的集电极。
4.2.3晶振与复位电路:
图4.2.3晶振与复位电路
5程序设计5.1程序思路
图5.1.1程序设计思路
结合电路,程序的总体思路是:
1.点复位键后,进行时间显示,从。时0分0秒开始。
2.按下按键1时,进行调时,此时按下4调整时,按下5调整分,若2秒钟未按
键,则不再等待,恢复走时,持续按键时大约0.3秒步进1,下同。
3.按下2键时进行闹铃调整,用4、5键分别调时和分,此时只有前四位进行显
示,即闹铃功能精确到分,2秒钟无按键则返回时间显示,时间到达闹铃所定时
间时P0.7揄出高电平,蜂鸣器响,按下按键2或3时蜂鸣器停止。
4、按3键时进行定时的设定,同样,分别通过4、5调整分和秒,若两秒未按键
则不进行定时,设定之后再次按下3键则进行倒计时,倒计时时间未到时若按下
1键则进行时间显示;若倒计时时间到则P0.7为高电平,蜂鸣器响。定时的最
大值为59分59秒。
在程序设计时,尽・改进算法,算法的改进可以使相对误差减小,或者可以使
占用空间减小。另外,分块的设计思想要贯穿始终,整个程序较为繁杂,某些
程序段会反复用到,因此采取的方法是写出多个程序段,通过跳转指令进行调
用。
5.2程序设计步骤
在程序设计过程中,我遇到了很多困难,这部分也是让我学到很多东西的
地方。
首先,我学习了定时器的相关知识,计数器的使用是很重要的组成部分,
在这个设计中选择计数器TO。TO的工作方式有:
方式0:不推荐
方式I:16位计数器,常用
方式2:自动重装初值的8位定时/计数器
方式3:T0相当于两个独立的8位定时/计数器
此程序采用方式1,方式1的定时时间t为t=(216・M)*12/fosc。其中M为定时
器初值,fosc为12MHz,若M为0则t=65536*12/2*106=65.536ms。因此可取
50ms为计时单位,初值M应为50*10-3*106=216-M。
M=15536=11110010110000=3CB0o即定时器初值为TH0=03CH,TL0=0B0H。
定时器中断20次为一秒,这部分在中断程序中用到。
5.3程序的主要模块
5.3.1延迟程序
在动态扫描时,必然用到延迟程序,这里使用延迟1ms的程序,此程序需要反复
调用。此段程序是很简单的,但就是在这段简单的程序上,也会出现问题,
5.3.2中断服务子程序:
中断服务程序中,总体思路是:由于初值是3CB0H,所以装满定时器需要
50ms的时间,从而20次中断为一秒,一秒之后,判断是否到60秒,若不到则秒加
一,然后返回,若到,则秒赋值为0,分加一,依次类推。包括日期显示的功能也
是如此。另外,由于要实现倒计时功能,因此在中断程序中还要加入减一的寄存
器,需要时将其进行显示。基于以上考虑,以R3为倒计时中的秒,R4为倒计时的
分,当秒加1时R3减一,减到()之后,秒赋值为59,分减一,直到分为0。
流程框图如下:
图5.3.1中断程序思路
6.1软件介绍
在这部分工作中用到了keilC和Proteus两个软件,其中KeilC用来编译程序
并生成hex文件,装入Proteus仿真图的芯片中,通过仿真结果一步步进行调
整最后达到预期的功能。
9电子钟设计中遇到的问题及其解决方法
在电子钟设计中程序比较长,遇到了各种各样的问题,比如跳转距离过长
出现语法错误。因此修改程序的时间很长,有语法错误,也有仿真时功能无法实
现的问题,在此不能一一说明,只能对个别问题加以阐述。
由于在走时调整、闹铃调整及定时设定时.,按卜键时每0.2秒步进1,这就需
要每0.2秒对按键输入进行一次扫描,因此开始时,我用的是延迟().2秒再返回按
键扫描程序的方法,但是可以想到,进行单纯的延迟时,不会有显示,在仿真时
功能没有实现。后来我采用的是反复调用若干次显示程序以实现延迟,较好地解
决了这个问题。虽然现在回过头来发现这个问题很简单,但当时是百思不得其
解。我从中学到:任何简单的事情都会有出错的可能,有些时候人的思路中的一
些错误是自己难以发现的,在工作和生活中要多对自己的想法提出质疑。
不光是这种明显的问题很多,有些细微的问题也一样出现了,但解决起来
并不容易。
在最后的硬件实现阶段发现蜂鸣器不响,此时连接方法是蜂鸣器直接连接
在了P0.7引脚。考虑到单片机的输出电流比较小,虽然P0.7引脚的电平已经达到
2V以上,也无法驱动蜂鸣器。于是我设想加上驱动电路。
作此修改之后,蜂鸣器发出响声,但是又遇到了新的问题:蜂鸣器无法停止
响声!看上去这个问题很简单,只要有停止闹铃的按键输入时,在程序中加一句
将P0.7置零的语句就可以了。但事实并不是这么简单。通过苦思冥想,发现在主
程序中,对“定时时间是否已到”是不断进行扫描的,而倒计时是在中断服务子
程序中进行的,当倒计时为0分0秒时,主程序判断出来后会不停地调用声音程
序:
结论
本文介绍的是利用AT89c51单片机设计的有调时、定时、闹铃功能的电子钟。
并详细说明了软件和硬件设计方法及仿真、硬件实现。在设计过程中可以看出,
汇编语言有着其独特的魅力,它简单易学,语法错误容易纠正;用单片机实现电
子钟的设计是比较方便和易于实现的。
通过电子钟的设计和制作,加深了对单片机的理解,能够更熟练地应用单
片机实现预期的功能,对今后的工作有很大的帮助。电子钟各项功能的实现,为
自动控制的实现打下了理论基础,获得了实现方法。
当然,该电子钟还有很多不足之处,比如闹钟不能关闭,且只能定一个闹钟。在
今后的工作中还要对此加以研究,尽量实现更多的功能。
在今后的其他工作中,也可以把这次设计中的收获运用进去,这是我此次
毕业设计得到的最大财富。
1潘永雄.新编单片机原理与应用.第2版.西安:西安电子科技大学已版
社。
2何立民.我国单片机应用技术发展趋势及展望.自动化与仪表。
3向继文,廖立新基于AT89s51的电子钟系统设计.机电产品开发与创新,
4张静.基于单片机数字钟的设计.办公自动化杂志。
5樊金荣,谢智文.数字倒计时秒表的设计与实现.中南民族大学计算机科学
学院院报。
附录:
*1
TE
-
T-
l
-
T
\tt
l—
H
花
个
腔
濡
濡
成
飞
rF湍
-F黑
F
”盘
涮
4J一
上
_,
数字钟原理图
原件清单:
万用板1
DC电源插座1
USB电源线1
自锁开关1
4.7K电阻3
AT89C52单片机1
40脚IC座1
DS1302芯片1
钮扣电池1
电池座1
8脚IC座1
LCD1602液晶显示屏1
10K可调电阻1
DSI8B20温度传感器1
1K排阻1
10K电阻1
10uF电容1
按键4
12M晶振1
22P电容2
8550三极管1
蜂鸣器1
LCD1
EBP加
亘X1
CRYSTAL,XTAL1PQD^DO
*TEXTiPD.MA01
P02*A»2
poaxoa
PD.4M0*
POSTADS
FQAfAOe
PO.TfiKO?
PNOTU:\
PZ.VAS
8UUB»ER
P22*10
-R2..■■-fTprn
PZJA11
-£=?-<:rP2.«M12
P2SDK13
PZ/BAU
P2.TM1S
P3ITRX0
FJ.WTXO
P3^fflTD
P33WH
P3WTD
P3ST1
7
C4.P1JSP3»WR
PINP3imF
g。i
ATOC51
cTEXTs
QX2
=:;LK7
80LK
XZTEXT^
OMD♦♦
>©130245R1^TAL77
<TExT:"r081SB2D
Proteus设“图
LCDi
Proteus仿
真图形
程序
#include<reg51.h>
//#include"DSI8B20_3.H"
#include<string.h>
#include<inlrins.h>
#defineuintunsignedint
#<lefineucharunsignedchar
#definewdI〃定义是否有温度功能=0时无温度,=1时有温度
故1神起丫1]0*80//1人口第一行的初始位置,因为1^口1602字符地址首位口7恒定为1(100000000=80)
#defineer0x80+0x40//LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)
〃液品屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)
sbiten=P2A7;
sbilrw=P2A6;〃如果硬件上rw接地,就不用写这句和后面的rw=O了
sbitrs=P2A5;
〃校时按键与C51的引脚连接定义
sbitset=P3A0;〃设置键
sbiladd=P3Al;〃加健
sbitdec=P3人2;〃减键
sbilsceNL_NZ=P3A3;〃查看农历/闹钟
sbitDQ=P3A7;//
sbitbuzzei-P2A0;〃蜂鸣器,通过三极管855()驱动,端口低电平响
sbilled=P2A4;//LCD背光开关
//DS1302时钟芯片与C51之间的引脚连接定义
sbitIO=P1A1;
sbitSCLK=PPO;
sbitRST=P1A2;
uchara.miao.shi.ten.ri.yue.nian.week.setii.temp;
uintflag;
//tlag用于读取头义件中的温度值,和显示温度值
bitc_inoon:
ucharnz_shi=12,nz_fen=0,nz_miao=0,setNZn;〃定义闹钟变量
ucharshangyimiao.bsn,lemp_hour;〃记录上一秒时间
ucharT_NL_NZ;〃计数器
bittirnerOn=0;〃闹钟启用标志位
bitbaoshi=0;〃整点报时标志位
bitp_r=0;〃平年/涧年=0表示平年,=1表示润年
dataucharycar_moon.month_moon,day_moon,wcck;
sbitACC0=ACCA0;
sbitACC7=ACCA7;
/************************************************************
ACC累加器=A
ACC.0=E0H
ACCO就是ACC的第。位。Acc可以位寻址。
累加器ACC是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,
是单片机中一个非常关键的单元,很多运算都要通过ACC来进行。以后在学习指令时,
常用A来表示累加器。但有一些地方例外,比如在PUSH指令中,就必须用ACC这样的名字。
一般的说法,A代表了累加器中的内容、而ACC代表的是累加器的地址。
************************:!:******************宅**宅**本**云**拿为****拿*/
〃*公*****京阳历转换阴历表塞**a**************余**余*****拿********
codeucharyear_code(597]={
OxO4.OxAe.Ox53,//19010
0x0A,0x57,0x48,//I9023
0x55.0x26.0xBd,//19036
OxOd,0x26,0x50,//19049
0x0d.0x95.0x44,//190512
0x46,0xAA,0xB9,//190615
0x05.0x6A.0x4d.//190718
0x09.0xAd.0x42,//190821
0x24,0xAc,0xB6,//1909
0x04.0xAe.0x4A.//1910
0x6A,0x4d,0xBc,//191I
0x0A.0x4d,0x52,//I912
OxOd,0x25,0x46,//1913
Ux>d.Ux52.UxBA,//19I4
0x0B.0x54.0x4e,//1915
0x0d.0x6A.0x43,//19I6
0x29.0x6d,0x37,//I917
0x09,0x5B,0x4B,//1918
0x74.0x9B.0xCl.//1919
0x04,0x97,0x54,//1920
0x0A.()x4B,0x48,//1921
0X5B.0K25.0XBC,//1922
0x06.0xA5.0x50.//1923
0x06.0xd4.0x45,//1924
0x4A,0xdA,0xB8,//1925
0x02.0xB6.0x4d.//1926
0x09,0x57,0x42,//1927
0x24.0x97.0xB7,//1928
0x04.0x97.0x4A.//I929
0x66,0x4B,0x3c,//1930
0x0d,0x4A.0x51,//193I
0x0c.0>.A5,0x46,//1932
0x56.0xd4.0xBA.//1933
0x05,0xAd,0x4e,//1934
0x02.0xB6.0x44.//1935
0x39,0x37,0x38,//1936
0x09,0x2e,0x4B,〃】937
0x7C.0x96.0xBf.//1938
0x000x95,0x53,//1939
0x0d.0x4A.0x48.//1940
0x6d,0xA5,0x3B,//1941
OxOB.OK55.Ox4f.//1942
0x05,0x6A.0x45,//1943
0x4A,0xAd,0xB9.//1944
0x02,0x5d,0x4d,//1945
0x09,0x2d,0x42,//1946
0x2C.0x95.0xB6,//1947
0x0A,0x95,0x4A,//1948
0x7D.0x4A.0xDd,//1949
0x06,0xCA,0x51,//1950
0x0B.0x55.0x46,//1951
Ox55.Ox5A.OxBB,//1952
0x04,0xdA,0x4e,〃1953
0x0A.0x5B.0x43.//1954
0x35,0x2B,0xB8,//1955
0x05,0x2B.0x4C.//1956
0x8A,0x95,0x3f,//1957
0x0e,0x9^,0x52,7/19^8
0x06,0xAA.0x48,//1959
0x7A.0xd5,0x3C,//1960
0x0A.OxB5.0x4f.//I96I
0x04,0xB6,0x45,//1962
0x4A.0x57.0x39.//1963
0x0A.0x57.0x4d.//!964
0x05.0x26.0x42,//1965
0x3e,0x93,0x35,//I966
OxOd,0x95,0x49,//1967
0x75.0xAA.0xBe.//1968
0X05,0X6A,0X51,//1969
0x09.0x6d.0x46,//1970
0x54,0xAe,0xBB,//I97!
0x04,0xAd,0x4f,//1972
0x0A.0x4d.0x43,//I973
0x4d,0x26,0xB7,//1974
0x0d.0x25.0x4B.//1975
Ox8d,0x52,0xBf,//1976
0X0B.0K54.0X52,//1977
0X0B,0K6A,0X47,//1978
0x69.0x6d.0x3C,//1979
0x09,0x5B.0x50,//1980
0x04.0x9B,0x45,//198I
0x4A.0x4B.0xB9.//1982
0x0A,0x4B,0x4d,//1983
OxAB.Ox25.OxC2,//1984
0x06,0xA5,0x54,//1985
0x06.0xd4.0x49.//1986
0x6A,0xdA,0x3d,“1987
0x0A.0xB6.0x51,//1988
0x09,0x37.0x46,//1989
0x54,0x97,OxBB,//1990
0x04,0x97.0x4f.//I991
0x06,0x4B,0x44,//1992
Ox36.OxA5.Ox37.//1993
0x0e,0xA5,0x4A,//1994
0x86.0xB2,0xBf,//1995
0x05,OxAC,0x53,//1996
0x0A,0xB6,0x47,//1997
0x59,0x36,OxBC.//1998
0x09,0x2c,0x50.//1999294
0X0C.0K96.0X45,//2000297
0x4d,0x4A,0xB8,//2001
UxUd.Ux4A.Ux4C,〃2UU2
0x0d,0xA5,0x41,//2OO3
0x25.0xAA,0xB6.//20(>4
0x05.0x6A.0x49.//2OO5
0x7A,0xAd,0xBd,//20()6
OxO2.Ox5d.Ox52,//2007
0x09,0x2d,0x47,//2008
0X5C,()K95,0XBA,//2009
0x0A.0x95.0x4e.//20I0
0x0B,0x4A,0x43,//20I1
0x4B.0x55.0x37.//2012
0x0A,0xd5,0x4A,//2013
0x95.0x5A.0xBf.//2014
0x04,OxBA,0x53,//2015
0x0A.0x5B.0x48,Z/2016
0x65.0x2B.0xBC,//2017
0x05,0x2B,0x50,//2018
0x0A.0x93.0x45.//2019
0x47,0x4A,0xB9,//2020
0x06,0xAA.0x4C.Z/2021
0x0A,0xd5,0x41,//2022
0x24.0xdA.0xB6,//2023
0x04,0xB6,0x4A,//2024
0x69.0x57,0x3d.Z/2025
0x0A.0x4e.0x51.//2026
0x0(1,0x26,0x46,//2027
Ox5e,O〉:93,Ox3A.〃2O28
0x0d,0x53,0x4d,//2029
0x05.0xAA.0x43,//2030
0x36,0xB5,0x37,//203I
0x09.0x6d,0x4B.//2032
0xB4.0KAe.0xBf,//2033
0x04,0xAd.0x53,//2034
0x0A.0x4d.0x48.//2035
0x6d,0x25,0xBC,//2036
0x0d.0x25.0x4f.//2037
OxOd,0x52,0x44,//2038
0x5d.0xAA,0x38,42039
0x0B.0x5A.0x4C,//2040
0x05.0x6d.0x41,//2041
0x24,0xAd.0xB6.//2042
0x04,0x9B,0x4A,//2043
0x7A.0x4B.0xBe,//2044
0x0A,0x4B,0x5l,Z/2045
UxUA,0xA〉,Ux4b,〃2U46
0X5B,0K52,0XBA,//2047
0x06.0xd2.0x4e.//2048
0x0A.0xdA.0x42,//2049
0x35,0x5B,0x37,〃2050
0x09.0x37.0x4B.//2O5I
0x84,0x97,0xCl,//2O52
0x04.0x97,0x53,//2053
0x06,0x4B.0x48.//2054
0x66,0xA5.0x3C,〃2055
0x0e.0xA5,0x4t;//2056
0x06,0xB2,0x44,//2057
0x4A.0xB6.0x38.//2058
0x0A.0xAe,0x4C,//2059
0x09.0x2e.0x42,//2060
0X3C.0K97.0X35,//2061
0x0C,0x96,0x49,//2062
0x7d,0x4A.0xBd.//2063
0x0d,0x4A,0x51,//2064
0x0d.0xA5.0x45,//2065
0x55,0xAA,0xBA,//2066
0x05.0x6A.0x4e.//2067
OxOA.Ox6d.Ox43,//2068
0x45.0x2e.0xB7,//2069
0x05.0x2d.0x4B.//2070
0x8A,0x95,0xBf,//207I
0x0A.0x95.0x53,“2072
0X0B,0K4A,0X47,//2073
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年青年教师教学技能培训
- 2026年吊车警告安全指示灯
- 2026年户外寻宝活动方案及策划
- 2026年办公楼安全问题分析报告
- 2026年校舍安全检查工作方案
- 2026年中职学校新生迎新活动策划书
- 2026年四川省乐山市夹江县中考英语适应性试卷(含详细答案解析)
- 2026年工程学导论项目设计报告
- 工程项目意向协议书的效力
- 第三方评估绩效政府协议
- 区块链技术与原理智慧树知到期末考试答案章节答案2024年山东劳动职业技术学院
- “上头”电子烟 是毒不是烟-禁毒宣传教育主题班会课件
- 油水井措施运行工作规范
- 加药装置操作说明
- “星火计划”人才培养项目
- 保险规划综合案例分析-
- 卫生部手术分级目录(2023年1月份修订)
- GB/T 3836.4-2021爆炸性环境第4部分:由本质安全型“i”保护的设备
- GB/T 308.1-2013滚动轴承球第1部分:钢球
- GA/T 1740.1-2020旅游景区安全防范要求第1部分:山岳型
- 内科学-血液系统疾病总论
评论
0/150
提交评论