0
51单片机S系列与C系列区别
两者主要的区别是AT89S51支持
ISP(In System Programming,即“在
线可编程”)。而AT89C51无此功能。
以下描述更加详细:
很多初学51单片机的网友会有
这样的问题:AT89S51是什么?书上
和网络教程上可都是8051,89C51
等!没听说过有89S51?!
这里,初学者要澄清单片机实际
使用方面的一个产品概念,MCS-51
单片机是美国INTE公司于1980年推
出的产品,典型产品有 8031(内部没
有程序存储器,实际使用方面已经被
市场淘汰)、8051(芯片采用HMOS,
功耗是630mW,是89C51的5倍,实
际使用方面已经被市场淘汰)和8751
等通用产品,一直到现在, MCS-51
内核系列兼容的单片机仍是应用的主
流产品(比如目前流行的89S51、
89C51等),各高校及专业学校的培
训教材仍与MCS-51单片机作为代表
进行理论基础学习。
有些文献甚至也将8051泛指
MCS-51系列单片机,8051是早期的
最典型的代表作,由于MCS-51单片
机影响极深远,许多公司都推出了兼
容系列单片机,就是说MCS-51内核
实际上已经成为一个8位单片机的标
准。
其他的公司的51单片机产品都
是和MCS-51内核兼容的产品而以。
同样的一段程序,在各个单片机厂家
的硬件上运行的结果都是一样的,如
ATMEL的89C51(已经停产)、89S51,
PHILIPS(菲利浦),和WINBOND(华
邦)等,我们常说的已经停产的
89C51指的是ATMEL公司的 AT89C51
单片机,同时是在原基础上增强了许
多特性,如时钟,更优秀的是由
Flash(程序存储器的内容至少可以改
写1000次)存储器取带了原来的ROM
(一次性写入),AT89C51的性能相对
于8051已经算是非常优越的了。
不过在市场化方面,89C51受到
了PIC单片机阵营的挑战,89C51最
致命的缺陷在于不支持ISP(在线更新
程序)功能,必须加上ISP功能等新功
能才能更好延续MCS-51的传奇。
89S51就是在这样的背景下取代
89C51的,现在,89S51目前已经成
为了实际应用市场上新的宠儿,作为
市场占有率第一的Atmel目前公司已
经停产AT89C51,将用AT89S51代
替。89S51在工艺上进行了改进,
89S51采用0.35新工艺,成本降低,而
且将功能提升,增加了竞争力。89SXX
可以像下兼容89CXX等51系列芯片。
同时,Atmel不再接受89CXX的定
单,大家在市场上见到的89C51实际
都是Atmel前期生产的巨量库存而
以。如果市场需要,Atmel当然也可
以再恢复生产AT89C51。
89S51相对于89C51增加的新功
能包括:
-- 新增加很多功能,性能有了较
大提升,价格基本不变,甚至比
89C51更低!
-- ISP在线编程功能,这个功能
的优势在于改写单片机存储器内的程
序不需要把芯片从工作环境中剥离。
是一个强大易用的功能。
-- 最高工作频率为33MHz,大家
都知道89C51的极限工作频率是
24M,就是说S51具有更高工作频
率,从而具有了更快的计算速度。
-- 具有双工UART串行通道。
-- 内部集成看门狗计时器,不再
需要像89C51那样外接看门狗计时器
单元电路。
-- 双数据指示器。
-- 电源关闭标识。
-- 全新的加密算法,这使得对于
89S51的**变为不可能,程序的保密
性大大加强,这样就可以有效的保护
知识产权不被侵犯。
-- 兼容性方面:向下完全兼容51
全部字系列产品。比如8051、89C51
等等早期MCS-51兼容产品。也就是
说所有教科书、网络教程上的程序
(不论教科书上采用的单片机是8051
还是89C51还是MCS-51等等),在
89S51上一样可以照常运行,这就是
所谓的向下兼容。
比较结果:就如同INTEL的P3向
P4升级一样,虽然都可以跑
Windows98,不过速度是不同的。
从AT89C51升级到AT89S51 ,也是同
理。和S51比起来,C51就要逊色一
些,实际应用市场方面技术的进步是
永远向前的。
********上面这些就是AT89S51
的由来********
下面是初学网友对51系列的选
型的常见问题
1问:网友常见问题:请问现在
学习51系列单片机应该选择AT89C51
还是89S51?
答:89C51和89S51内核相同,
89S51针对89C51的明显的几个升级
如下 ;
1.程序存储器写入方式:二者的
写入程序的方式不同,89C51只支持
并行写入,同时需要VPP烧写高压。
89S51则支持ISP在线可编程写入技
术!串行写入、速度更快、稳定性更
好,烧写电压也仅仅需要4~5V即
可。
2.电源范围:89S5*电源范围宽
达4~5.5V,而89C5*系列在低于
4.8V和高于5.3V的时候则无法正常工
作。
3.工作频率:目前89S1*的性能
远高于89C5*,89S5*系列支持最高高
达33MHZ的工作频率,而89C51工作
频率范围最高只支持到24M。
4.市场价格:由于89C51已经全
面停产,所以在市场价格方面,库存
的89C5*的批发价格要比89S5*贵将
近一倍!
5.兼容型:89S5*向下兼容
89C5*,就是说用89S5*可以替代
89C5*使用,同样的程序,运行结果
相同。就是说89S5*也同样兼容目前
所有的教科书范例程序。
6.加密功能:89S5*系列全新的
加密算法,这使得对于89S51的**变
为不可能,程序的保密性大大加强,
这样就可以有效的保护知识产权不被
侵犯。
7.抗干扰性:内部集成看门狗计
时器,不再需要像89C51那样外接看
门狗计时器单元电路。
8.烧写寿命更长:89S5*标称的
1000次,实际最少是1000次~10000
次,这样更有利初学者反复烧写,减
低学习成本。综合上面的一些区别,
个人认为89C51的停止使用只是时间
问题而已,就象当年的8031。
2问:采用89C2051开发制造产
品是不是要比用89S51更好?因为
2051看起来体积比较小。
答:这个问题并不能一概而论,
主要的区别如下:
1.功能差别:因为2051不是标准
的51内核,所以205*的程序不能直
接移植到51上。由于205*是精简
型,所以P口变得很少,这样一来就
只能用来做一些小的简单产品,可利
用资源比较紧张。实际上,做产品的
话用205*是不一定合算的,除非是
非常简单的产品。
2.市场价格:由于89C2051的产
量不是非常大,所以市场价格方面
89C2051的批发价格和89S51比较接
近!相对性能价格比就比较低。
3.产品体积:除非对产品的体积
有苛刻的要求,否则二者的PCB面积
相差不多,因为40脚的51芯片也有
PLCC44小体积封装。
51单片机最小系统
什么是单片机的最小系统啊?初
学者可能对单片机最小系统感觉很神
秘,其实单片机最小系统很简单,就
是能使单片机工作的最少的器件构成
的系统。最小系统虽然简单,但是却
是大多数控制系统所必不可少的关键
部分。
对于MCS-51 单片机,其内部已
经包含了一定数量的程序存储器和数
据存储器,在外部只要增加时钟电路
和复位电路即可构成单片机最小系
统。下面对51单片机最小系统需要
的时钟电路和复位电路做一下详细的
说明。
时钟电路
单片机系统中的各个部分是在一
个统一的时钟脉冲控制下有序地进行
工作,时钟电路是单片机系统最基
本、最重要的电路。
MCS-51 单片机内部有一个高增
益反相放大器,引脚XTAL1 和XTAL2
分别是该放大器的输入端和输出端,
如果引脚XTAL1 和XTAL2 两端跨接上
晶体振荡器(晶振)或陶瓷振荡器就构
成了稳定的自激振荡电路,该振荡电
路的输出可直接送入内部时序电路。
MCS-51 单片机的时钟可由两种方式
产生,即内部时钟方式和外部时钟方
式。
(1)内部时钟方式。内部时钟方
式即是由单片机内部的高增益反相放
大器和外部跨接的晶振、微调电容构
成时钟电路产生时钟的方法,其工作
原理如图(a)所示。外接晶振(陶瓷振
荡器)时,C1、C2 的值通常选择为
30pF(40pF)左右;C1、C2 对频率有微
调作用,晶振或陶瓷谐振器的频率范
围可在1.2MHz ~ 12MHz之间选择。
为了减小寄生电容,更好地保证振荡
器稳定、可靠地工作,振荡器和电容
应尽可能安装得与单片机引脚XTALl
和XTAL2 靠近。由于内部时钟方式外
部电路接线简单,单片机应用系统中
大多采用这种方式。内部时钟方式产
生的时钟信号的频率就是晶振的固有
频率,常用fsoc 来表示。如选择
12MHz 晶振,则fsoc=12×106Hz。
(2)外部时钟方式。外部时钟方
式即完全用单片机外部电路产生时钟
的方 法,外部电路产生的时钟信号
被直接接到单片机的XTAL1 引,此时
XTAL2 开路, 具体电路如图(b)所
示。 在介绍完了MCS-51 单片机的时
钟电路后,笔者不得不介绍一下CPU
的以及 工作周期问题,因为CPU 的
工作周期是基于时钟信号的,是与时
钟信号密不可分 的。 CPU 在执行指
令时,都是按照一定顺序进行的,由
于指令的字节数不同,取 指所需时
间也就不同,即使是字节数相同的指
令,执行操作也会有很大差别,不同
的指令的执行时间当然也不相同,即
CPU 在执行各个指令时,所需要的
节拍数 是不同的。为了便于对CPU
时序的理解,人们按指令的执行过程
定义了几个名词, 即时钟周期、机
器周期和指令周期。 时钟周期:时
钟周期也称为振荡周期,定义为时钟
脉冲频率(fOSC)的倒数, 是单片机
中最基本的、最小的时间单位。由于
时钟脉冲控制着计算机的工作节奏,
对同一型号的单片机,时钟频率越
高,计算机的工作速度显然就会越
快。然而, 受硬件电路的限制,时
钟频率也不能无限提高,对某一种型
号的单片机,时钟频 率都有一个范
围,如对MCS-51 单片机,其时钟频
率范围是0~33MHz。为方便描 述,
振荡周期一般用P(pause)表示。
机器周期:完成一个最基本操作
(读或写)所需要的时问称为机器周
期。 MCS-51 单片机的机器周期是固
定的,即一个机器周期由12 个时钟
周期组成。采 用6MHz 的时钟频率
时,一个机器周期就是2μs ,采用
12MHz 的时钟频率时, 一个机器周
期就是1μs 。 指令周期:指令周期
是执行一条指令所需要的时间,一般
由若干个机器周期 组成,指令不
同,后需要的机器周期数也不同。对
于一些简单的单字节指令,分 指令
周期可能和机器周期时间相同;而对
于一些比较复杂的指令,如乘除运算
则 需要多个机器周期才能完成,这
时指令周期大于机器周期。 通常,
一个机器周期即可完成的指令称为单
周期指令,两个机器周期才能 完成
的指令称为双周期指令。 MCS-51 单
片机中的大多数指令都是单周期或双
周 期指令,只有乘、除运算为四周
期指令。 复位电路 大规模集成电路
在上电时一般都需要进行一次复位操
作,以便使芯片内的一 些部件处于
一个确定的初始状态,复位是一种很
重要的操作。器件本身一般不具 有
自动上电复位能力,需要借助外部复
位电路提供的复位信号才能进行复位
操 作。
MCS-51 单片机的第9 脚(RST)为
复位引脚,系统上电后,时钟电路开
始工 作,只要RST 引脚上出现大于
两个机器周期时间的高电平即可引起
单片机执行 复位操作。有两种方法
可以使MCS-51 单片机复位,即在
RST 引脚加上大于两个 机器周期时
间的高电平或WDT 计数溢出。单片
机复位后,PC=0000H,CPU 从程序
存储器的0000H 开始取指执行。复
位后,单片机内部各SFR 的值也复
位。单片 机的外部复位电路有上电
自动复位和按键手动复位两种。 (1)
上电复位电路。最简单的上电复位电
路由电容和电阻串联构成,如图下
(a) 所示。
上电瞬间,由于电容两端电压不
能突变,RST 引脚电压端为VR 为
VCC,随着 对电容的充电, RST 引
脚的电压呈指数规律下降,如图(b)
所示。经过时间t1 后,VR 降为高电
平所需电压的下限3.6V,随着对电容
充电的进行,VR 最后将接 近0V。为
了确保单片机复位,t1 必须大于两
个机器周期的时间,机器周期取决
于单片机系统采用的晶振频率,图
(a)中,R 不能取得太小,典型值
10kΩ;t1 与RC 电路的时间常数有
关,由晶振频率和R 可以算出C 的取
值。
(2)上电复位和按键复位组合电
路 上图(c)为上电复位和按键复位组
合电路,R2 的阻值一般很小,只有
几十 欧姆,当然也可以直接短接。
当按下复位按键后,电容迅速通过
R2 放电,放电 结束时的VR 为
(R1*Vcc)/(R1+R2),由于R1 远大于
R2,VR 非常接近VCC,使 RST 引脚
为高电平,松开复位按键后,过程与
上电复位相同。 以上两种是最基本
的复位电路,在51 单片机,多采用
上电复位和按键复位 组合电路,笔
者也建议采用这种复位电路。
在时钟电路和复位电路设计完毕
后,我们的单片机最小系统就做好
了,现在单片机就可以正常工作了。
51单片机主要功能
一个8 位CPU、一个偏内振荡器
及时钟电、128 字节的片内数据存储
器、4KB 的 片内程序存储器、可寻
址的64KB 字节外部数据存储器和
64KB 字节外部程序存储 器的控制电
路、21 字节的专用寄存器、4 个8 位
并行I/O 接口、一个全双工的串 行
口、2 个16 位的定时器/计数器和一
个布尔处理机。在MCS-51 系列单片
机中 具有5 个中断源和2 个中断优先
级,片内采用单一总线结构连接。
MCS-51单片机内部结构
8051是MCS-51系列单片机的典
型产品,我们以这一代表性的机型进
行系统的讲解。
8051单片机包含中央处理器、
程序存储器(ROM)、数据存储器
(RAM)、定时/计数器、并行接口、串
行接口和中断系统等几大单元及数据
总线、地址总线和控制总线等三大总
线,现在我们分别加以说明:
· 中央处理器:
中央处理器(CPU)是整个单片机
的核心部件,是8位数据宽度的处理
器,能处理8位二进制数据或代码,
CPU负责控制、指挥和调度整个单元
系统协调的工作,完成运算和控制输
入输出功能等操作。
· 数据存储器(RAM):
8051内部有128个8位用户数据
存储单元和128个专用寄存器单元,
它们是统一编址的,专用寄存器只能
用于存放控制指令数据,用户只能访
问,而不能用于存放用户数据,所
以,用户能使用的的RAM只有128
个,可存放读写的数据,运算的中间
结果或用户定义的字型表。
· 程序存储器(ROM):
8051共有4096个8位掩膜ROM,
用于存放用户程序,原始数据或表
格。
· 定时/计数器(ROM):
8051有两个16位的可编程定时/
计数器,以实现定时或计数产生中断
用于控制程序转向。
· 并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、
P1、P2或P3),用于对外部数据的传
输。
· 全双工串行口:
8051内置一个全双工串行通信
口,用于与其它设备间的串行数据传
送,该串行口既可以用作异步通信收
发器,也可以当同步移位器使用。
· 中断系统:
8051具备较完善的中断功能,
有两个外中断、两个定时/计数器中
断和一个串行中断,可满足不同的控
制要求,并具有2级的优先级别选
择。
· 时钟电路:
8051内置最高频率达12MHz的
时钟电路,用于产生整个单片机运行
的脉冲时序,但8051单片机需外置
振荡电容。
· 时钟电路:
8051内置最高频率达12MHz的
时钟电路,用于产生整个单片机运行
的脉冲时序,但8051单片机需外置
振荡电容。
单片机的结构有两种类型,一种
是程序存储器和数据存储器分开的形
式,即哈佛(Harvard)结构,另一种
是采用通用计算机广泛使用的程序存
储器与数据存储器合二为一的结构,
即普林斯顿(Princeton)结构。INTEL
的MCS-51系列单片机采用的是哈佛
结构的形式,而后续产品16位的
MCS-96系列单片机则采用普林斯顿
结构。
51单片机的串行口扩展方法
在研究采场瓦斯积聚模拟试验台
的过程中,笔者设计了主从式多机采
控系统结构。主从式多机控制系统是
实时控制系统中较为普遍的结构形
式,它具有可靠性高,结构灵活等优
点。当选用单串口51单片机构成这
种主从式多机系统时,51单片机一
方面可能要和主机Computer通信,
一方面又要和下位机通信,这时就需
要扩展串行通道。本文具体介绍了两
种串行通道的扩展方法。
2 串行口的扩展方法
常用的标准51单片机内部仅含
有一个可编程的全双工串行通信接
口,具有UART的全部功能。该接口
电路不仅能同时进行数据的发送和接
收,也可作为一个同步移位寄存器使
用。当以此类型单片机构成分布式多
级应用系统时,器件本身的串口资源
就不够用了。笔者在实际开发中,查
阅了有关资料,总结出如下两种常用
而有效的串行通道扩展方法。
2.1 基于SP2538的扩展方法
SP2538是专用低功耗串行口扩
展芯片,该芯片主要是为解决当前基
于UART串口通信的外围智能模块及
器件较多,而单片机或DSP原有的
UART串口又过少的问题而推出的。
利用该器件可将现有单片机或DSP的
单串口扩展至5个全双工串口。使用
方法简单、高效。
在应用SP2538扩展串行通道
时,母串口波特率K1=2880*Fosc
[_]in,单位是MHz,且Fosc[_]in小于
20.0MHz, 在SP2538输入时钟Fosc
[_]in =20.0MHZ时母串口可自适应上
位机的56000bps和57600bps两种标
准波特率输入。子串口波特率
K2=480*Fosc[_]in。
母串口和所有子串口都是TTL电
平接口,可直接匹配其他单片机或
TTL数字电路,如需连接PC机则必须
增加电平转换芯片如MAX202 、
MAX232 等。SP2538具有内置的上
电复位电路和可关闭的看门狗监控电
路。上位机写命令字0x10可实现喂
狗,写命令字0x15关闭看门狗,初
次上电后看门狗处于激活状态或写命
令字0x20激活看门狗监控功能。上
位机可通过芯片复位指令0x35在任
何时候让芯片进行指令复位,也可通
过芯片睡眠指令0x55在任何时候让
芯片进入微功耗睡眠模式以降低系统
功耗。初次上电后芯片不会自行进入
睡眠模式,但只能由上位机通过母串
口任意发送一个字节数据将其唤醒,
其他子串口不具备这一功能。
图(1)是AT89C52单片机与
SP2538的电路连接,图中,
AT89C52的全双工串口与SP2538的
母串口5相连,该串口同时也作为命
令/数据口。SP2538的ADRI0、
ADRI1、ADRI2分别与AT89C52的
P2.3、P2.4、P2.5口相连,可用于选
择发送数据是选择相应的串口
0~4;ADRO0、ADRO1、ADRO2与
P2.0、P2.1、P2.2相连,用于判断接
收的数据来自哪一个串口。 SP2538
的时钟频率选为20.0MHZ,此时母串
口5的波特率为57600bps,串口0~4
的波特率为9600bps。
下面是与上述硬件电路相关的接
口程序,该程序用A51汇编语言编
制,程序仅说明了中断方式下对子串
口0(TX0、RX0)的操作,其它子串口
类似。
TBLOCK DATA20H
RBLOCK DATA30H
LENGTH DATA14H
…
TXR[_]REV[_]SEND: CLRES
JBCRI,RECEIVE
CLRti
MOVA,@R0
CLRP2.0 ; 写数据到"SBUF"前必
须先置欲发送子串口的地址
CLRP2.1
CLRP2.2
MOVSBUF,A
DJNZ R2,NEXT
SJMP $
NEXT: INCR0
RETI
RECEIVE:MOVA,P2
ANDA,#31H;判断是否为子串口
0
JNZELSE
MOVA,SBUF
MOV@R1,A
INCR1
RETI
图(1) AT89C52与SP2538的电路
连接
2.2 基于Intel8251的串行口扩展
方法
上面基于SP2538的串口扩展方
法可以说是一种串行的扩展方法,这
里基于Intel8251的扩展方法则是一
种并行的方法。Intel8251是一种通
用的同步/异步发送器(USART),它的
工作方式可以通过编程设置。能够以
同步或异步串行通信方式工作,能自
动完成帧格式。
Intel8251具有独立的接收/发送
器。在异步方式下,用于产生8251
内部时序的时钟CLK输入至少应为发
送或接收时钟的4.5倍。接收/发送
(RXC/TXC)时钟应为波特率的1倍、16
倍或64倍(由8251的工作方式字设
定)。
图(2)是用Intel8251扩展一个串
行通道的电路原理,图中,
11.0592MHZ晶振经ALE6分频后于 、
组合,产生1.8432MHZ的时钟频
率,分别作为8251与8253的时钟输
入,若设定8251通信波特率为
9600bps,波特率因子为16,则需要
153.6KHZ的接收/发送时钟频率,该
频率可由8253的OUT0产生。
下面的A51程序段说明了如何设
置8253使其产生153.6KHZ的方波,
以及如何用8251收/发数据:
设置8253的程序段:
MOVA,#36H ; 计数器0输出方波
控制字
MOVDPTR,#0FFFFH; 指向控制
字寄存器
MOVX @DPTR,A
MOVDPTR,#0FFFCH; 指向0计数
器地址
MOVA,#0DH
MOVX @DPTR,A
MOVA,#0
MOVX DPTR,A
SETB P1.0
操作8251的程序段:
…
START: MOVDPTR,#7FFFH;8251
控制、命令口地址
MOVA,#5EH;一个停止位,奇校
验,8位数据,异步*16
MOVX @DPTR,A;写入方式字
MOVA,#15H
MOVX @DPTR,A;命令字,启动
发送和接收器
…
LOOP: SJMP LOOP ;等待8251中
断
8251[_]INT: ;现场保护
MOVDPTR,#7FFFH
MOVA,@DPTR
JBACC.0,TX[_]INT
JBACC.1,RX[_]INT
INT[_]EXIT: ;恢复现场
RETI
发送数据
TX
[_]INT:MOVDPTR,#7FFEH ;8251数据
口地址
MOVA,20H
MOVX @DPTR,A
…
AJMP INT[_]EXIT
接收数据
RX[_]INT:MOVDPTR,#7FFEH
MOVX A,@DPTR
MOV30H,A
…
AJMP INI[_]EXIT
图(2)用8251扩展串行通道的硬
件电路原理
3 结束语
以单片机为核心的多级分布式系
统的应用越来越广泛,上面讨论的两
种串行口的扩展方法为此类多串口应
用领域提供了一个良好的解决方案。
笔者在实际中采用基于SP2538的扩
展方法,设计了采场瓦斯积聚模拟试
验台的多级分布式采控系统,效果良
好。
学习单片机方法
1、明确学习单片机的目标,不
要为学单片机而学,将单片机理解为
一个电子元件,只有在一个系统中单
片机才能实现它的功能。学习单片机
的终极应用目的是,为了应用,通过
使用单片机和一定的外围电路,来实
现一个系统。
2、要有一块开发板,可以购买
或自己做一块(单片机都没学会怎么
做啊?可以到网上下载一份单片机的
原理图自己焊接,先不用了解电路的
原理,一边学习,以便分析电
路。),因为单片机应用时一门实践
性很强的课程。市场上卖的单片机实
验班从50~300不等,我用的那块是
一块170左右的。单片机实验板最好
配有这些功能:流水灯、矩阵键盘、
7段数码管、蜂鸣器、液晶、AD、
DA、串口通信等模块。
注:单片机入门简易学习51单
片机,因为这个单片机最经典,使用
范围最广,学习资料最多。如果有特
殊需求的也可以用其他单片机进行学
习。不必讨论学习哪一种单片机,因
为单片机原理基本一样,不同的只是
功能模块。只要精通一种单片机之
后,学习其他单片机只要花上很少的
时间就可以学会。
3、要准备一本C语言教材和一
本单片机原理教材,放在自己的案子
上,随时可以查阅。
4、准备一本笔记本,随时记录
自己的学习心得,毕竟”好记心不如
烂笔头“。
5、要多看多想多问,可以再网
上收集一些例程来看,多分析别人的
程序,找出不同的地方,分析为什么
要这样。
6、按照如下顺序进行单片机的
实验,可以方便学习。
单片机IO口的使用>>单片机定
时器/计数器的使用>>单片机中断系
统的使用>>单片机和PC的通讯
(RS232)>>AD转换>>UART、SSI、IIC
等通讯总线的使用>>输出比较、输
入捕捉、PWM输出等>>USB、ICP/IP
协议等。
7、多做实验,多敲代码。在网
上找一些实验来,自己先模仿着做,
然后自己设计出属于自己的风格的产
品。mobile_fromtype_android
|
|