ImageVerifierCode 换一换
格式:DOC , 页数:21 ,大小:315KB ,
资源ID:11230248      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/11230248.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(数字闹钟系统EDA课程设计.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数字闹钟系统EDA课程设计.doc

1、 课 程 设 计 报 告 书 所属课程名称 《EDA技术及应用》课程设计 题 目    数字闹钟系统设计             分 院       专业班级 15级电信1班 学  号            学生姓名            指导教师    20

2、18 年 1 月 8 日 课 程 设 计( 论 文 )任 务 书 一、课程设计(论文)题目 数字闹钟系统设计 二、课程设计(论文)工作:自 2018 年1 月 8 日起至 2018 年 1 月 10 日止。 三、课程设计(论文)的内容要求: 设计一个24小时制的数字闹钟,该数字闹钟包括几个组成部分: (1)显示屏:由7段数码管组成; (2)YES(确认)键:用于输入新的时间或新的闹钟时间; (3)TIME(时间)键;用于确定新的时间设置; (4)ALARM

3、闹钟)键:用于确定新的闹钟时间设置或显示已设置的闹钟时间; (5)扬声器:在当前时钟时间与闹钟时间相同时,发出蜂鸣声; 目 录 第1章 课程设计内容及要求................................... 第2章 程序设计目的.......................................... 第3章 程序实现思路.......................................... 第4章 程序清单(或正文).................................. 第5章 课程设计心得.....

4、 第6章 参考文献(资料)..................................... 第2章 程序设计目的 随着EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益突出。EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑优化和仿真测试,直至实现既定的电子线路系统功能。本课设基于VHDL硬件描述语言并选用合适的可编程逻辑器件设计一个24小时制的数字闹钟的思路和技巧。在m

5、ax+plus2开发环境中编译和仿真了所设计的程序,并逐一调试验证程序的运行状况。仿真和验证的结果表明,该设计方法切实可行,该数字闹钟可以实现调时定时闹钟功能具有一定的实际应用性。 第3章 程序实现思路 根据该数字闹钟的设计要求,可得到其外部端口如图。 各个输入/输出端口的作用如下: 1)CLK为外部时钟信号,RESET为复位信号。 2)当YES为高电平,表示用户选择了某个与置数字。 3)当TIME_BUTTON为高电平时,表示用户按下TIME键。 (5)SEG7是数据动态扫描显示的公共七段数码显示管驱动端;

6、LEDW是数码管的位选 择端,它经过外接的3-8译码器译码后接数码管的公共端COM (6) SOUND ALARM用于控制扬声器发声,当 SOUND ALARM=1时,扬声器发出 蜂鸣,表示到了设定的闹钟时间。 根据系统的设计要求,整个系统可分为闹钟控制器、预置寄存器、分频电路、时间计数 器、闹钟寄存器、显示驱动控制器等6个模块,各个模块的作用介绍如下 (1)闹钟控制器( CONTROL):它是整个系统正常有序工作的核心,按设计要求产生相 应的控制逻辑,控制其他各部分的协调工作。 (2)预置寄存器( KEYBUFFER):这时一个预置数字产生器和移位寄存器的结合体。 通过对Y

7、ES进行操作,选择欲输入的数字;暂存用户输入的数字,并且用户每输入一个数 字,暂存数字移位一次,实现用户输入的数字在显示器上从右到左的依次显示 (3)分频电路( DIVIDER):将较高速的外部时钟频率分频成每秒一次的时钟频率,以便 进行时钟计数 (4)时间计数器( OUNTER):这实际上是一个异步复位、异步置数的累加器,通常情 况下进行时钟累加计数,必要时可置入新的时钟值,然后从该值开始新的计数 (5)闹钟寄存器(REG):用于保存用户设置的闹钟时间,是一个异步复位寄存器。 (6)显示驱动器( DRIVER):根据需要显示当前时间、用户设置的闹钟时间或用户输入 的预置时间,

8、同时判断当前时间是否已到了闹钟时间,这实际上是一个多路选择器和比较器 的结合体。具体数据的显示采用的是动态扫描显示方式。 第4章 程序清单或正文 1)程序包P_ALARM: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; PACKAGE P_ALARM IS SUBTYPE T_DIGITAL IS INTEGER RANGE 0 TO 9; SUBTYPE T_SHORT IS INTEGER RANGE 0 TO 65535; TYPE T_CLOCK_TIME IS ARRAY (5 DOWNTO 0) OF T_DIGITAL;

9、 TYPE T_DISPLAY IS ARRAY (5 DOWNTO 0) OF T_DIGITAL; END PACKAGE P_ALARM; 2)闹钟控制器外部端口(程序及图): LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE WORK.P_ALARM.ALL; ENTITY CONTROL IS PORT ( KEY: IN STD_LOGIC; ALARM_BUTTON:IN STD_LOGIC; TIME_BUTTON:IN STD_LOGIC; CLK:IN STD_LOGIC; RESET:

10、IN STD_LOGIC; LOAD_NEW_A:OUT STD_LOGIC; LOAD_NEW_C:OUT STD_LOGIC; SHOW_NEW_TIME:OUT STD_LOGIC; SHOW_A:OUT STD_LOGIC); END ENTITY CONTROL; ARCHITECTURE BEHAVE OF CONTROL IS TYPE T_STATE IS(S0,S1,S2,S3,S4) ; CONSTANT KEY_TIMEOUT:T_SHORT:=500; CONSTANT SHOW_ALARM_TIMEOUT:T_SHORT:=500;

11、 SIGNAL CURR_STATE:T_STATE; SIGNAL NEXT_STATE:T_STATE; SIGNAL COUNTER_K:T_SHORT; SIGNAL ENABLE_COUNT_K:STD_LOGIC; SIGNAL COUNT_K_END:STD_LOGIC ; SIGNAL COUNTER_A:T_SHORT; SIGNAL ENABLE_COUNT_A:STD_LOGIC ; SIGNAL COUNT_A_END:STD_LOGIC; BEGIN PROCESS(CLK,RESET) IS BEGIN IF RESE

12、T ='1' THEN CURR_STATE<= S0; ELSIF RISING_EDGE(CLK) THEN CURR_STATE<= NEXT_STATE; END IF; END PROCESS; PROCESS (KEY,ALARM_BUTTON,TIME_BUTTON,CURR_STATE, COUNT_A_END,COUNT_K_END ) BEGIN NEXT_STATE<=CURR_STATE; LOAD_NEW_A<='0'; LOAD_NEW_C<='0'; SHOW_A <='0'; SHOW_NEW_TIME<=

13、'0'; ENABLE_COUNT_K<='0'; ENABLE_COUNT_A <='0'; CASE CURR_STATE IS WHEN S0=>IF (KEY='0') THEN NEXT_STATE<= S1; SHOW_NEW_TIME<='1'; ELSIF (ALARM_BUTTON='1') THEN NEXT_STATE<= S4; SHOW_A<='1'; ELSE NEXT_STATE<= S0; END IF; WHEN S1=>IF(KEY='1') THEN NEXT_STATE<= S1; ELSIF

14、ALARM_BUTTON ='1') THEN NEXT_STATE<= S2; LOAD_NEW_A<='1'; ELSIF (TIME_BUTTON ='1') THEN NEXT_STATE<= S3; LOAD_NEW_C <='1'; ELSE IF (COUNT_K_END='1') THEN NEXT_STATE<= S0; ELSE NEXT_STATE<= S1; END IF ; ENABLE_COUNT_K<='1'; END IF ; SHOW_NEW_TIME<='1'; WHEN S2=>IF (ALAR

15、M_BUTTON ='1') THEN NEXT_STATE<=S2; LOAD_NEW_A <='1'; ELSE NEXT_STATE<= S0; END IF ; WHEN S3 =>IF (TIME_BUTTON ='1') THEN NEXT_STATE<=S3; LOAD_NEW_C<='1'; ELSE NEXT_STATE<= S0; END IF; WHEN S4=>IF(KEY='1') THEN NEXT_STATE<= S1; ELSE NEXT_STATE<=S4; IF (COUNT_A_END ='1

16、') THEN NEXT_STATE<= S0; ELSE NEXT_STATE<= S4; SHOW_A<='1'; END IF ; ENABLE_COUNT_A <='1'; END IF; WHEN OTHERS=>NULL; END CASE; END PROCESS; COUNT_KEY:PROCESS(ENABLE_COUNT_K,CLK) IS BEGIN IF (ENABLE_COUNT_K ='0') THEN COUNTER_K<=0; COUNT_K_END<='0'; ELSIF (RISING_EDGE

17、CLK)) THEN IF (COUNTER_K >=KEY_TIMEOUT) THEN COUNT_K_END<='1'; ELSE COUNTER_K<=COUNTER_K + 1; END IF; END IF; END PROCESS; COUNT_ALARM:PROCESS(ENABLE_COUNT_A,CLK) IS BEGIN IF (ENABLE_COUNT_A ='0') THEN COUNTER_A<=0; COUNT_A_END<='0'; ELSIF RISING_EDGE(CLK) THEN IF( COUNT

18、ER_A>=SHOW_ALARM_TIMEOUT) THEN COUNT_A_END<='1'; ELSE COUNTER_A<= COUNTER_A + 1; END IF; END IF; END PROCESS; END ARCHITECTURE BEHAVE; 3)预设寄存器(程序及图): LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; USE WORK.P_ALARM.ALL ; ENTITY KEYBUFFER

19、IS PORT (KEY:IN STD_LOGIC; CLK:IN STD_LOGIC; RESET:IN STD_LOGIC; KEYNUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0 ); NEW_TIME:OUT T_CLOCK_TIME); END ENTITY KEYBUFFER; ARCHITECTURE BEHAVE OF KEYBUFFER IS SIGNAL N_T:T_CLOCK_TIME; SIGNAL CNT:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL TEMP:T_DIGITAL

20、 BEGIN PROCESS (CLK) IS BEGIN IF (CLK'EVENT AND CLK = '1') THEN IF CNT =9 THEN CNT <= "0000" ; ELSE CNT<= CNT+'1'; END IF; END IF; TEMP<= CONV_INTEGER(CNT); KEYNUM <= CNT; END PROCESS; SHIFT:PROCESS(RESET,KEY) IS BEGIN IF (RESET ='1') THEN N_T(5)<= 0; N_T(4)<= 0;

21、 N_T(3)<= 0; N_T(2)<= 0; N_T(1)<= 0; N_T(0)<= 0; ELSIF (KEY'EVENT AND KEY='1') THEN FOR I IN 5 DOWNTO 1 LOOP N_T(I)<= N_T(I-1); END LOOP; N_T(0)<= TEMP; END IF; END PROCESS; NEW_TIME<= N_T; END ARCHITECTURE BEHAVE; 4)闹钟寄存器(程序及图): LIBRARY IEEE; USE IEEE.STD_LOGIC_1

22、164.ALL; USE WORK.P_ALARM.ALL; ENTITY REG IS PORT (NEW_ALARM_TIME:IN T_CLOCK_TIME; LOAD_NEW_A:IN STD_LOGIC; CLK:IN STD_LOGIC; RESET:IN STD_LOGIC; ALARM_TIME:OUT T_CLOCK_TIME); END ENTITY REG; ARCHITECTURE BEHAVE OF REG IS BEGIN PROCESS (CLK,RESET) IS BEGIN IF RESET='1' THEN

23、 ALARM_TIME(0)<=0; ALARM_TIME(1)<= 0; ALARM_TIME(2)<= 0; ALARM_TIME(3)<= 0; ALARM_TIME(4)<= 0; ALARM_TIME(5)<= 0; ELSE IF RISING_EDGE(CLK) THEN IF LOAD_NEW_A ='1' THEN ALARM_TIME<= NEW_ALARM_TIME; END IF; END IF; END IF; END PROCESS; END ARCHITECTURE BEHAVE; 5)分频

24、器(程序及图): LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE WORK.P_ALARM.ALL; ENTITY DIVIDER IS PORT(CLK_IN: IN STD_LOGIC; RESET: IN STD_LOGIC; CLK_OUT: OUT STD_LOGIC); END ENTITY DIVIDER; ARCHITECTURE BEHAVE OF DIVIDER IS CONSTANT DIVIDE_PERIOD: T_SHORT:=6000; BEGIN PROCESS(CLK_IN,RESET)

25、IS VARIABLE CNT: T_SHORT; BEGIN IF (RESET='1') THEN CNT:=0; CLK_OUT<='0'; ELSIF RISING_EDGE(CLK_IN) THEN IF (CNT<=(DIVIDE_PERIOD/2)) THEN CLK_OUT<='1'; CNT:=CNT+1; ELSIF (CNT<(DIVIDE_PERIOD-1)) THEN CLK_OUT<='0'; CNT:=CNT+1; ELSE CNT:=0; END IF; END IF; END PROCESS; END ARCHITECTUR

26、E BEHAVE; 6)时间计数器(程序及图): LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE WORK.P_ALARM.ALL; ENTITY COUNTER IS PORT (NEW_CURRENT_TIME:IN T_CLOCK_TIME; LOAD_NEW_C,CLK,RESET:IN STD_LOGIC; CURRENT_TIME:OUT T_CLOCK_TIME ); END ENTITY COUNTER; ARCHITECTURE BEHAVE OF COUNTER IS SIGN

27、AL I_CURRENT_TIME:T_CLOCK_TIME; BEGIN PROCESS(CLK,RESET,LOAD_NEW_C) IS VARIABLE C_T:T_CLOCK_TIME; BEGIN IF RISING_EDGE(CLK) THEN IF RESET ='1' THEN I_CURRENT_TIME(5)<= 0; I_CURRENT_TIME(4)<= 0; I_CURRENT_TIME(3)<= 0; I_CURRENT_TIME(2)<= 0; I_CURRENT_TIME(1)<= 0; I_CURRENT_TIM

28、E(0)<= 0; ELSIF LOAD_NEW_C ='1' THEN I_CURRENT_TIME<= NEW_CURRENT_TIME; ELSE C_T:= I_CURRENT_TIME; IF C_T(0)<9 THEN C_T(0):= C_T(0)+1; ELSE C_T(0):= 0; IF C_T(1)<5 THEN C_T(1):= C_T(1)+1 ; ELSE C_T (1):= 0; IF C_T(2)<9 THEN C_T(2):=C_T(2)+1; ELSE C_T(2):= 0 ; IF C_T

29、3)<5 THEN C_T(3):= C_T(3)-1; ELSE C_T(3):=0; IF C_T(5)<2 THEN IF C_T(4)<9 THEN C_T(4):= C_T(4)+1 ; ELSE C_T(4):= 0 ; C_T(5):=C_T(5)+1; END IF; ELSE IF C_T(4)<3 THEN C_T(4):=C_T(4)+1; ELSE C_T(4):= 0; C_T(5):=0; END IF; END IF; END IF; END IF; END IF; I_CU

30、RRENT_TIME<=C_T; END IF; I_CURRENT_TIME<=C_T; END IF; END IF; END PROCESS; CURRENT_TIME<=I_CURRENT_TIME; END ARCHITECTURE BEHAVE; 7)显示驱动(程序及图): LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE WORK.P_ALARM.A

31、LL; ENTITY DRIVER IS PORT (KEYNUM:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK:IN STD_LOGIC; ALARM_TIME:IN T_CLOCK_TIME ; CURRENT_TIME:IN T_CLOCK_TIME; NEW_TIME:IN T_CLOCK_TIME; SHOW_NEW_TIME:IN STD_LOGIC; SHOW_A:IN STD_LOGIC; SOUND_ALARM:OUT STD_LOGIC; LEDW:OUT STD_LOGIC_VECTOR(2 DOWNTO

32、 0); SEG7:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY DRIVER; ARCHITECTURE BEHAVE OF DRIVER IS SIGNAL DISPLAY_TIME:T_CLOCK_TIME; SIGNAL TEMP:INTEGER RANGE 0 TO 9; SIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS (ALARM_TIME,CURRENT_TIME,SHOW_A,SHOW_NEW_TIME) IS BEGIN SOUN

33、D_LP:FOR I IN ALARM_TIME'RANGE LOOP IF NOT(ALARM_TIME(I)= CURRENT_TIME(I)) THEN SOUND_ALARM <='0'; ELSE SOUND_ALARM <='1'; END IF; END LOOP SOUND_LP; IF SHOW_NEW_TIME ='1' THEN DISPLAY_TIME<=NEW_TIME; ELSIF SHOW_A='1' THEN DISPLAY_TIME<=ALARM_TIME; ELSIF SHOW_A='0' THEN DISPL

34、AY_TIME<=CURRENT_TIME; END IF; END PROCESS; PROCESS (CLK) IS BEGIN IF CLK'EVENT AND CLK ='1' THEN IF CNT="111" THEN CNT<="000"; ELSE CNT<= CNT+'1'; END IF ; END IF; END PROCESS; LEDW<= CNT; PROCESS(CNT) BEGIN CASE CNT IS WHEN "000"=>TEMP<=DISPLAY_TIME(0); WHEN "0

35、01"=>TEMP<=DISPLAY_TIME(1); WHEN "010"=>TEMP<=DISPLAY_TIME(2); WHEN "011"=>TEMP<=DISPLAY_TIME(3); WHEN "100"=>TEMP<=DISPLAY_TIME(4); WHEN "101"=>TEMP<=DISPLAY_TIME(5); WHEN "111"=>TEMP<=CONV_INTEGER (KEYNUM); WHEN OTHERS =>TEMP<= 0; END CASE; CASE TEMP IS WHEN 0=>SEG7<="00111111";

36、 WHEN 1=>SEG7<="00000110"; WHEN 2=>SEG7<="01011011"; WHEN 3=>SEG7<="01001111"; WHEN 4=>SEG7<="01100110"; WHEN 5=>SEG7<="01101101"; WHEN 6=>SEG7<="01111101"; WHEN 7=>SEG7<="00000111"; WHEN 8=>SEG7<="01111111"; WHEN 9=>SEG7<="01101111"; WHEN OTHERS=>SEG7<="00111111"; END CASE; E

37、ND PROCESS; 9)闹钟系统顶层原理图 第5章 课程设计心得 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 第6章 参考文献(资料) [1] 蒋小燕,俞伟钓,张立臣 EDA技术及VHDL 南京:东南大学出版社 2016 致 谢 《EDA技术及应用》课程设计 第 21 页 共 21 页

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服