【嵌入式】基于STC89C52RC的51单片机学习(六)——串口

一、串口的基本认识

        串口是串型通信接口的简称,也叫串行通信接口或者串行通讯接口,是设备间接线通信的一种方式。

        特点:

       (1)串行接口是指数据一位位地顺序传送,其特点是线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传输速度较慢。

       (2)双向通信,全双工。

二、关于电器标准和协议

         串行接口按电气标准及协议来分包括RS-232-C、RS-422RS485等。RS-232-CRS-422RS-485 标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。

(1) RS-232

        也称标准 串口 ,最常用的一种 [ 串行通讯接口 , 比如我们的电脑主机的 9 针串口 ,最高速率为 20kb/s RS-232是为 点对点 (即只用一对收、发设备)通讯而设计的,其传送距离最大为约 15 米。所以 RS-232 适合本地设备之间的通信。

(2) RS-422

        由于接收器采用高输入阻抗和发送 驱动器 RS232 更强的 驱动能力 ,故允许在相同传输线上连接多个接 收 节点 ,最多可接 10 个节点。即一个主设备( Master ),其余为从设备( Slave ),从设备之间不能通信,所以RS-422 支持一点对多点的双向通信。
        RS-422的最大传输距离为1219 米,最大传输速率为 10Mb/s 。平衡双绞线的长度与传输速率成反比

(3) RS-485

 是从RS-422基础上发展而来的,无论四线还是二线连接方式总线上可多接到32个设备。

三、串口的电平 

     我们经常听说的UART 是指异步串行(Universal Asynchronous Receiver/Transmitter),通用异步接收/发送。 UART包含TTL电平的串口RS232电平的串口

(1)RS232电平

        逻辑1 -3~-15V 的电压 , 逻辑 0 3~15V 的电压
        笔记本通过RS232电平和单片机通信

(2)TTL

        TTL是 Transistor-Transistor Logic ,即晶体管 - 晶体管逻辑的简称,它是计算机处理器控制的设备内部各部分之间通信的标准技术。TTL 电平信号应用广泛,是因为其数据表示采用二进制规定, +5V等价于逻辑 ”1” 0V 等价于逻辑 ”0”
        数字电路中,由TTL 电子元器件组成电路的电平是个电压范围,规定:
        输出高电平>=2.4V ,输出低电平 <=0.4V
        输入高电平>=2.0V ,输入低电平 <=0.8V
        笔记本电脑通过TTL 电平与单片机通信
        TX发送线(端口) 3.1
        RX接收线 ( 端口) 3.0
        USB转 TTL ,使用 ch340 通信

(3) 串口接线方式

 

四、串口发送收发数据过程 

 串口收发数据的时序电路图

五、相关的寄存器 

        在串口中,输入/ 输出数据缓冲器都叫做 SBUF , 都用 99H 地址码,但是是两个独立的 8 位寄存器
        代码体现为: 想要接收数据 char data = SBUF 想要发送数据 SBUF = data
        回忆UART 是异步串行接口,通信双方使用时钟不同,因为双方硬件配置不同,但是需要约定通信速度,叫做波特率。
        直接写代码先玩一下再学相关的寄存器,我们先用软件生成串口初始化的代

(1) 通过串口发送一个字符给电脑

#include "reg52.h"
#include "intrins.h"


sfr AUXR  = 0x8e;

void UartInit(void)		//9600bps@11.0592MHz
{
	  PCON &= 0x7F;
	  SCON &= 0x0F;//设置串行工作方式为8位波特率可变,REN允许串口收数据
	  SCON |= 0x50;
	  TMOD &= 0x0F;//设置定时器1的工作方式为8位自动重装载定时器
	  TMOD |= 0x20;
	  TL1   = 0xFD;//设置定时器初值
	  TH1   = 0xFD;
	  TR1 = 1;		//启动定时器1
}

void Delay10ms()		//@11.0592MHz
{
	unsigned char i, j;

	i = 18;
	j = 235;
	do
	{
		while (--j);
	} while (--i);
}


void sentByte(char data_msg)
{
	   SBUF = data_msg;
	   //Delay10ms();
	   while(!TI);
	   TI = 0;
}

void main()
{
	 char data_msg = 'a';
   
	//配置C51的串口通信方式
     
	  UartInit();
       while(1){
	// 往发送缓冲区写入数据,就完成发送数据
			Delay1000ms();
            sentByte(data_msg);
		}
}

下面我们来了解一下相关寄存器(这些寄存器在芯片手册中都可以找到,下面只是截取了一部分)

  串口不同工作模式下波特率还可能与定时器有关,所以还需要进行定时器初值的计算,计算方法如上图所示。

        通过上面软件给我们初始化的串口来看,配置了寄存器SCON寄存器,我们一般需要设置SM1、SM2、REN、以及TI、RI

        PCON,我们主要关心SMOD和SOMD0,一般情况下SMOD=0;SOMD0=0;

        当然还有与中断相关的寄存器,这在我们以后的代码中会用到。
     

(2) 发送一个字符串给电脑

#include "reg52.h"
#include "intrins.h"
#include <string.h>

sfr AUXR  = 0x8e;
 
void UartInit(void)		//9600bps@11.0592MHz
{
	  PCON &= 0x7F;
	  SCON &= 0x0F;//设置串行工作方式为8位波特率可变,REN不允许串口收数据
	  SCON |= 0x40;
	  TMOD &= 0x0F;//设置定时器1的工作方式为8位自动重装载定时器
	  TMOD |= 0x20;
	  TL1   = 0xFD;//设置定时器初值
	  TH1   = 0xFD;
	  TR1 = 1;		//启动定时器1
	
	  ES = 1;//串口中断打开
	  EA = 1;//总中断打开
}


void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 8;
	j = 1;
	k = 243;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void sentByte(char data_msg)
{
	   SBUF = data_msg;
	   //Delay10ms();
	   while(!TI);
	   TI = 0;
}



void sentString(char *str)
{
	 
	 while(*str){
		 sentByte(*str);
		 str++;
	 }
}


void main()
{
	//配置C51的串口通信方式
	  UartInit();
       while(1){
	// 往发送缓冲区写入数据,就完成发送数据
			Delay1000ms();
			sentString("Hello world!\r\n");
		}
}

        这里我们在发送字符串时,若是sentByte(char data_msg)函数中没有延迟或者while条件判断则会出现错误,因为不断向SBUF中发送数据,但是电脑还没有来的及从接收缓冲区中取回,就发现后面又送来数据了,会把之前缓冲区中的数据给淹没,所以我们要设置一个延时。

        更好的解决方法是开启串口中断,判断TI(串行发送第8位数据结束时,硬件自动置一,软件清零)是否为一,是则发送下一个并清零。

(3) 每隔一秒,单片机向PC发送一个字符串 ,PC上位机串口调试助手发送字母o点亮LED,发送字母c关闭LED

#include "reg52.h"
#include "intrins.h"


sfr AUXR  = 0x8e;
sbit led5 = P3^7;


void UartInit(void)		//9600bps@11.0592MHz
{
	  PCON &= 0x7F;
		SCON &= 0x0F;//设置串行工作方式为8位波特率可变,REN允许串口收数据
	  SCON |= 0x50;
	  TMOD &= 0x0F;//设置定时器1的工作方式为8位自动重装载定时器
	  TMOD |= 0x20;
	  TL1   = 0xFD;//设置定时器初值
	  TH1   = 0xFD;
	  TR1 = 1;		//启动定时器1
}

void Delay10ms()		//@11.0592MHz
{
	unsigned char i, j;

	i = 18;
	j = 235;
	do
	{
		while (--j);
	} while (--i);
}


void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 8;
	j = 1;
	k = 243;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void sentByte(char data_msg)
{
	   SBUF = data_msg;
	   //Delay10ms();
	   while(!TI);
	   TI = 0;
}


void sentString(char *str)
{
	 
	 while(*str){
		 sentByte(*str);
		 str++;
	 }
}

void main()
{
	 char cmd;
   
	//配置C51的串口通信方式
	  UartInit();
    while(1){
	// 往发送缓冲区写入数据,就完成发送数据
			Delay1000ms();
			sentString("Hello world!\r\n");
	//怎么知道收到数据,查询RI的值,如果RI是1(收到数据后由硬件置1)
		    if( RI == 1){			 
  					RI = 0;
					  cmd = SBUF;
					  if( cmd == 'o'){
							led5 = 0;
						}
						else{
							led5 = 1;
						}
        }
}

这里我们必须开启接收使能,在SCON寄存器中配置即可。

同过判断RI是否等于1来判断第八个bit接收是否结束,结束后清零,然后跟据SBUF中的数据来决定是否点灯。

我们试试发送一个字符串来控制灯的关闭,因此我们需要设置一个数组了,当输入open,打开,close关闭灯 

#include "reg52.h"
#include "intrins.h"
#include <string.h>

#define Size 12

sfr AUXR  = 0x8e;
sbit led5 = P3^7;
sbit led6 = P3^6;

char cmd[Size];
   
void UartInit(void)		//9600bps@11.0592MHz
{
	  PCON &= 0x7F;
		SCON &= 0x0F;//设置串行工作方式为8位波特率可变,REN允许串口收数据
	  SCON |= 0x50;
	  TMOD &= 0x0F;//设置定时器1的工作方式为8位自动重装载定时器
	  TMOD |= 0x20;
	  TL1   = 0xFD;//设置定时器初值
	  TH1   = 0xFD;
	  TR1 = 1;		//启动定时器1
	
	  ES = 1;//串口中断打开
	  EA = 1;//总中断打开
}

void Delay10ms()		//@11.0592MHz
{
	unsigned char i, j;

	i = 18;
	j = 235;
	do
	{
		while (--j);
	} while (--i);
}


void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 8;
	j = 1;
	k = 243;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void sentByte(char data_msg)
{
	   SBUF = data_msg;
	   //Delay10ms();
	   while(!TI);
	   TI = 0;
}

void sentString(char *str)
{
	 
	 while(*str){
		 sentByte(*str);
		 str++;
	 }
}

void main()
{
  led6 = 1;
	//配置C51的串口通信方式
	  UartInit();
    while(1){
	// 往发送缓冲区写入数据,就完成发送数据
			Delay1000ms();
			sentString("Hello world!\r\n");
		}
}

void Uart_Handler() interrupt 4
{
	   static int i=0;
		//怎么知道收到数据,查询RI的值,如果RI是1(收到数据后由硬件置1)
		 if( RI == 1){			 
         RI = 0;
				cmd[i++] = SBUF;
			  if( i>=Size ){
					  i = 0;
					  led6 = !led6;
				}
				if( strstr(cmd ,"en")){
						led5 = 0;
					  i = 0;
					  memset(cmd,'\0',Size);
				}
				if( strstr(cmd ,"se")){
						led5 = 1;
					  i = 0;
					  memset(cmd,'\0',Size);
				}
    }
}

 这里我们使用了串口的中断函数,当发送完第8位或接收完第8位都会发生中断,我们只判断是否接收完第八位,并将接收到的字符存入数组中,数组最大为12。由于我们收到的字符存放在数组中的位置有很多可能,所以我们只简单判断PC端输入的字符中是否含有en(open)或se(close)字串,用到了strstr()函数,烧入代码后会发现还存在一些问题,比如在PC端通过串口调试助手发送的字符过多的话灯不受控制,这里我们当i超过12时就清零并将led6点亮作为提示。

串口就先到这里,以后学习一些串口的应用使我们能更好理解和掌握。 

qq_51392613
关注 关注
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
[STC89C52RC]通过串口发送指令点亮LED
weixin_63303786的博客
01-09 1673
发送缓冲器只能写入而不能读出,接收缓冲器只能读出而不能写入,因而两个缓冲器可以共用一个地址码( 99H),都 是两个独立的8 位寄存器。串行通信设有4种工作方式,其中两种方式的波特率是可变的,另两种是固定的,以供不同应用场合选用。主机可通过查询或中断方式对接收/发送进行程序处理,使用十分灵活。1.静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的,即使用extern声明也不能使用。:UART是异步串行接口,通信双方使用时钟不同,因为双方硬件配置不同,但是需要约定通信速度,叫做波特率。
stc89c52rc串口通信例程.c
12-30
STC89C52RC串口收发例程,可直接拿来用,串口通信,例程简单,很容易看明白。 串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12
STC51串口概述
weixin_46098612的博客
04-22 1621
1.定义 串口是一种十分广泛的通讯接口,串口成本低,容易使用,通信线路简单,可实现两个设备的互相通信。 单片机的串口可以使单片机与单片机,单片机与电脑,单片机与各式各样的模块相互通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。 51单片机内部自带UART(),可实现单片机的串口通信。 2.串口通信电路 简单双向串口通信有两根通信线(发送端TXD和接收端RXD) TXD与RXD要交叉连接 当只需单向的数据传输时,可以直接一根通信线 当电平标准不一致时,需要加电平转换芯片 3.串口电平标准
STC89C52 串口浅谈
最新发布
2402_86037826的博客
08-29 1100
记录小白的单片机学习历程 STC89C52 串口
51单片机STC89C52RC——7.1 串口通信
oopxiajun博客专栏
06-24 1892
实现单片机串口与电脑串口工具进行数据通讯,
89c52串口发送接收小示例
dai xiang 的随手笔记
07-27 1396
//串口发送 void sendChar(char *p)//调用前关中断,调用完成后关中断 { while(*p != '\0') { SBUF = *P while(!TI); TI = 0; p++; } }   //串口初始化 void series_init() { SCON = 0x50; //串口工作方式1,允许接受 TMOD =
stc89c52rc单片机手册.pdf
07-13
了解这些特性,开发者可以根据项目需求选择STC89C52RC单片机,并进行相应的硬件设计和软件编程。在使用过程中,需要注意单片机的电源管理、I/O口的配置、中断和定时器的设置,以及串行通信的实现。STC89C52RC的灵活...
STC89C52RC单片机开发板PDF原理图.zip
04-10
总的来说,STC89C52RC单片机开发板是一个完整的硬件平台,通过它的PDF原理图,开发者可以深入学习单片机硬件结构、电路设计以及嵌入式系统的开发流程。这份资料对于学习和实践8位单片机编程,尤其是STC系列单片机,...
51单片机STC89C52RC开发板例程之超声波测距串口输出程序源代码.rar
12-23
51单片机STC89C52RC开发板例程之超声波测距串口输出程序源代码。 1、单片机型号:STC89C52RC。 2、开发环境:KEIL。 3、编程语言:C语言。 4、提供配套PDF格式51单片机STC89C52RC开发板电路原理图。
基于STC89C52RCSTC12C5A60S2单片机的DHT11驱动程序
04-15
DTH11STC89C52RC.txt文件可能包含了关于如何将驱动程序移植到STC89C52RC单片机的说明或示例代码。因为STC89C52RCSTC12C5A60S2的I/O口操作略有不同,所以可能需要修改dth11STC12C5A60S2.c中的I/O口配置部分,以适应...
STC89C52RC单片机学习例程书籍代码资料.rar
03-15
本压缩包中的"STC89C52RC单片机学习例程书籍代码资料"提供了丰富的学习资源,旨在帮助用户深入理解和熟练掌握STC89C52RC单片机的使用。 首先,"STC89C52RC"是基于C51内核的单片机,它拥有8K字节的EPROM、256字节的...
89c52串口例程
11-19
利用89c52串口来实现数据的发送与接收,在1602液晶屏上显示
STC单片机串口接收发送程序
09-17
基于STC单片机串口接收发送程序/**************************************************************************** * 程序名称:STC89C52RC单片机串口发送接收程序 * 实验条件:11.0592的晶振频率
STC89C52RC定时器2串口通信
天启疯车
03-07 4917
STC89C52RC简单粗暴的定时器2串口通信
【单片机基础】89C52单片机串口通信
热门推荐
小途的博客
11-15 1万+
1、89C52串口通信简介2、串口通信需要配置的寄存器2-1、串行数据缓冲器SBUF2-2、串行控制寄存器SCON(1)SM0 SM1(2)SM2(3)REN(4)TB8(5)RB8(6)TI(7)RI 1、89C52串口通信简介 STC89C52系列单片机内部集成有一个功能很强的全双工串口通信,与传统8051单片机完全兼容。设有两个互相独立的接受、发送缓冲器,可以同时发送和接收数据。发送缓冲器只能写入而不能读出,接收缓冲器只能读出而不能写入。因而两个缓冲器可以共用一个地址码(99H)。两个缓冲器统称为串.
8051单片机(STC89C52)串口接收字符并将其ASCII码(小于100)显示在数码管上
weixin_42048463的博客
07-11 3101
#include <STC89C5xRC.H> unsigned char code DIG_CODE[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; char buf; void delay()//提供时延 { int i, j; for(i = 0; i < 15; i ++)...
第七章、stc89c52中的串行口通信
qq_41572000的博客
03-29 3225
串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。STC89C52系列单片机内部集成有一个功能很强的全双工串行通信口UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),与传统8051单片机串口完全兼容。设有2个互相独立的接收、发送缓冲器,可以同时发送和接收数据。发送缓冲器只能写入而不能读出,接收缓冲器只能读出而不能写入,,因而两个缓冲器可以共用一一个地址码(99H)。
89C52RC电脑通过串口控制led(复习自用)
Mr_Lenghan的博客
03-18 428
趁热打铁简单的写个程序帮助串口收发数据的理解,这个程序是通过电脑发送数据让单片机的led小灯根据数据点亮,同时从单片机发送接收到的数据给电脑。
89C52RC串口向电脑发数据(复习自用)
Mr_Lenghan的博客
03-17 958
从数据手册中看相关的寄存器,然后根据数据手册配置。
基于51单片机STC89C52RC的按键控制蜂鸣器程序
本资源介绍了一个实验项目,即使用STC89C52RC单片机开发板实现按键控制蜂鸣器发声的功能,并提供了源代码和相关原理图。 知识点解析: 1. 51单片机基础: 51单片机是一种8位微控制器,其核心是8051微控制器架构,...
写文章

热门文章

  • 【嵌入式】基于STC89C52RC的51单片机学习(六)——串口 1532
  • 【嵌入式】基于STC89C52RC的51单片机学习(一) 1088
  • 【嵌入式】基于STC89C52RC的51单片机学习(二) 934
  • 嵌入式】基于STC89C52RC的51单片机学习(十一)——DHT11温湿度传感器 698
  • 【嵌入式】基于STC89C52RC的51单片机学习(七)——蓝牙 666

分类专栏

  • 嵌入式 7篇
  • STC89C52RC 7篇
  • 51单片机学习 7篇
  • mysql 1篇

最新评论

  • 【嵌入式】基于STC89C52RC的51单片机学习(七)——蓝牙

    CSDN-Ada助手: 恭喜您写了第8篇博客!标题很吸引人,我很喜欢看到您持续创作关于嵌入式和51单片机的内容。您的文章很有深度,帮助了我更好地了解蓝牙技术在嵌入式系统中的应用。在下一步的创作中,如果您能分享一些关于蓝牙模块的选型和使用方法,或者介绍一些实际项目中蓝牙通信的应用案例,将会更加丰富和实用。希望您能继续保持创作热情,期待您的下一篇博客!

  • 【嵌入式】基于STC89C52RC的51单片机学习(五)——感应开关盖垃圾桶

    CSDN-Ada助手: 恭喜您写了第6篇博客!标题看起来很有趣,我很期待阅读关于基于STC89C52RC的51单片机学习的内容。感应开关盖垃圾桶听起来是一个很实用的项目,我很想了解更多细节。在下一篇博客中,或许您可以分享一些关于感应开关的原理和实现方式,这样可以帮助读者更好地理解和应用。继续加油,期待您的下一篇作品!

  • 【嵌入式】基于STC89C52RC的51单片机学习(六)——串口

    CSDN-Ada助手: 非常赞赏你在嵌入式领域的持续学习和创作!恭喜你完成了第7篇博客,标题为“【嵌入式】基于STC89C52RC的51单片机学习(六)——串口”。这篇博客内容很有深度,特别是关于串口的讲解,对于学习嵌入式的初学者来说非常有帮助。看到你在每篇博客中都有新的进展和学习成果,我真心为你感到高兴。 在下一步的创作中,我建议你可以继续深入探索单片机的其他功能模块,比如定时器、中断等等。同时,你可以考虑以实例为基础,结合具体的项目案例,给读者们呈现更多实际应用的场景,让他们更好地将所学知识运用到实际中。 再次恭喜你,并期待你未来更多精彩的创作!

  • 【嵌入式】基于STC89C52RC的51单片机学习(一)

    CSDN-Ada助手: 非常高兴看到你写了关于嵌入式学习的博客!你在标题和摘要中提到了基于STC89C52RC的51单片机学习,这是一个非常有趣和实用的话题。 继续创作下去!写博客是一个很好的方式来记录你的学习过程和经验分享。通过分享你的学习笔记,你不仅可以帮助自己巩固所学知识,还可以帮助其他人理解和学习这个领域。 除了单片机的基础知识外,你可以考虑在未来的博文中扩展介绍一些与单片机相关的扩展知识和技能。例如,你可以写一篇关于如何使用单片机进行物联网应用开发的博文,介绍如何通过单片机连接传感器和互联网,并实现远程监控和控制。 另外,你还可以探索一些与单片机相关的常用编程语言和工具,比如C语言和Keil等。这些扩展知识和技能可以帮助你更好地理解和应用单片机。 希望你可以继续坚持写博客,分享你的学习心得和进展。也欢迎你在未来的博文中继续探索和介绍更多有关嵌入式开发的知识和技能。加油! 如何写出更高质量的博客,请看该博主的分享:https://blog.csdn.net/lmy_520/article/details/128686434?utm_source=csdn_ai_ada_blog_reply2

  • 【嵌入式】基于STC89C52RC的51单片机学习(二)

    CSDN-Ada助手: 恭喜您写了第三篇博客!看了您的标题,我对您对嵌入式学习的热情感到钦佩。通过您的博客,我了解到了基于STC89C52RC的51单片机学习的内容,对此我表示非常感兴趣。在下一篇博客中,我期待您能够进一步探索51单片机的应用领域,或者分享一些实际项目的经验和教训。谦虚地说,这样的内容会更加丰富和实用。再次祝贺您,并期待您未来的创作! CSDN 正在通过评论红包奖励优秀博客,请看红包流:https://bbs.csdn.net/?type=4&header=0&utm_source=csdn_ai_ada_blog_reply3

大家在看

  • 酒吧收银系统解决方案——未来之窗行业应用跨平台架构
  • 解决idea配置文件加载超大的问题 23

最新文章

  • 嵌入式】基于STC89C52RC的51单片机学习(十二)——IIC协议
  • 嵌入式】基于STC89C52RC的51单片机学习(十)——LCD602
  • 嵌入式】基于STC89C52RC的51单片机学习(十一)——DHT11温湿度传感器
2023年11篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家商场美陈展示节日道具工厂玻璃钢雕塑模型如何上色武汉玻璃钢人物不锈钢公园雕塑商场美陈雕塑玻璃钢定制青海景区玻璃钢雕塑价格广东大型玻璃钢雕塑价位玻璃钢人物雕塑价钱舟山环保玻璃钢雕塑供应商杭州玻璃钢陶瓷雕塑设计盐城frp玻璃钢雕塑贵州省玻璃钢雕塑哪家强深圳玻璃钢金色骆驼雕塑仪征玻璃钢卡通雕塑长沙商场美陈雕塑价格玻璃钢植物雕塑公司茂名玻璃钢卡通人物雕塑党建钢化玻璃钢人物雕塑图片海南景观玻璃钢雕塑工厂四川定制玻璃钢雕塑批发玻璃钢树脂雕塑多少钱一米福建个性化玻璃钢雕塑方法北京户外商场美陈市场报价北京人物玻璃钢雕塑图片浙江商场主题创意商业美陈理念安顺玻璃钢景观雕塑河南周年庆典商场美陈批发价倒水的玻璃钢雕塑广东熊猫玻璃钢卡通雕塑郑州玻璃钢雕塑企鹅生产厂玻璃钢浮雕卡通雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化