51单片机学习笔记-1简介及点灯

15 篇文章 75 订阅
订阅专栏
本文是51单片机学习笔记,详细介绍了从安装Keil5和STC-ISP软件,到点亮、闪烁、流水灯效果的LED控制,再到独立按键控制LED灯的操作。通过实例代码解析了单片机的基本操作和软件延时函数的实现,并讲解了按键抖动问题的处理。
摘要由CSDN通过智能技术生成

51单片机学习笔记

文章目录

  • 51单片机学习笔记
    • 1. 51单片机简介
      • 1.1 安装软件
      • 1.2 单片机简介
    • 2. LED灯
      • 2.1点亮一个LED
        • 2.1.1原理分析
        • 2.1.2 创建工程
      • 2.2LED闪烁
        • 2.2.1原理分析
        • 2.2.2程序代码及现象
      • 2.3LED流水灯
      • 2.3LED流水灯Pro
    • 3.独立按键控制LED灯亮灭

注:笔记主要参考B站江科大自化协教学视频“ 51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。
注:工程及代码文件放在了本人的 Github仓库。


1. 51单片机简介

1.1 安装软件

应该装的软件主要有两个:

  • Keil5:编写程序。
  • STC-ISP:下载比特流文件到板子上,另外还有一些小工具(如串口助手、自动生成代码等)。
  • 注意:Keil5 C51和Keil5 MDK都是Keil系列软件,但前者是用来开发51单片机的,后者是用来开发ARM系列,比如STM32的。

  其中Keil可以在官网下载但需要破解,破解(及各种资料)可以按照UP主提供的百度网盘链接获取,也可以找淘宝店家索取,具体的安装过程可以参考视频 [1-2]开发工具及软件介绍 。

1.2 单片机简介

   单片机(Micro Controller Unit, MCU) 内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能。 单片机的任务 是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制。单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。虽然在性能上,单片机与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用同时,学习使用单片机是了解计算机原理与结构的最佳选择。

   51单片机 是指80年代Intel开发的8051单片机内核的统称,就是因为这个“8051”有个51,所以凡是与“8051”内核一样的单片机都统称为51系列单片机。
  内核,通俗点理解就是一种代码,单片机的指令系统,即硬件制作就按照这些指令去完成,如灌溉一样,要灌溉那些地方,就把通路打开,而这些通路‘水渠和门阀’都是早就修建好的硬设备,只是具体的灌溉地点需要指令来完成。而51单片机就是一样的“水渠和门阀”,想灌溉,所有51单片机都使用的一样的灌溉指令。
注: 51单片机 百度百科。

下面给出一些 命名规则

图 STC89C51RC/RD系列的命名规则

图 STC89C52系列的命名规则

注:想要查看更多单片机的资料,可以查看 STC宏晶科技官网。更多元器件的资料,可以在 datasheet网站 自行搜索器件参数。
再注:宏晶科技的官网就是花花绿绿的,至于为啥,我觉得可能是“土到极致就是潮”吧哈哈哈。知乎文章: STC单片机的网站让我笑喷了。

表 单片机参数整理(不定期更新)
单片机型号所属系列公司位数RAMROM工作频率
STC89C5251单片机系列STC公司(中国)8位512字节8K (Flash)12MHz
STC89C516RD+51单片机系列STC公司(中国)8位1280字节62K (Flash)40MHz

我自己使用的芯片完整型号描述是:STC89C516RD+ 40I-PDIP40 2110CVK416.X90C。引脚图如下:

图 90C版本的引脚图

可以注意到,由于单片机是8位的,所以P0、P1、P2、P3引脚都是8个为一组。

  STC89C51RC/RD+单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、I/0接口、EEPROM、看门狗等模块。STC89C51RC/RD+系列单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统。

图 STC89C51RC/RD+系列内部结构框图(总线结构)

  虽然单片机具备一个系统完善的模块,但是要正常工作还是有一些基本需求。下面是STC89C51RC/RD+系统的最小应用系统:

图 STC89C51RC/RD+系列的最小应用系统

上图中,右上角是电源电路,C5和C6是电源的滤波电容,可以是电源输出电压更稳定。左下角是时钟系统,电容C2、C3作用是帮助晶振起振,电阻R2的作用可能是为了帮助时钟系统更稳定的工作。左侧中间位置是高电平复位电路,每次复位会使得芯片从第一条指令开始执行。

  最后,关于 板载资源 的介绍,可以参考普中科技官网的 普中-单核-A4 的介绍。注意到A4和A3的区别仅在于STC的芯片不同,开发板貌似没有什么区别。进一步查看引脚等信息,则需要查看开发板 原理图文件

2. LED灯

2.1点亮一个LED

2.1.1原理分析

  人类电灯:白炽灯 → 节能灯 → LED灯。发光二极管(Light Emitting Diode,简称LED)省电且亮度高,常用于照明、广告灯、指引灯、屏幕。LED灯珠内,较小的电极(一般对应引脚较短)为负极,大的电极(一般对应引脚较长)为正极。

电阻(电容)数值读取:

102 = 10 00 = 1kΩ
473 = 47 000 = 47kΩ
1001 = 100 0 = 1kΩ

  单片机电平为TTL电平,高电平5V,低电平0V。根据开发板的原理图示意,在控制LED模块时,芯片引脚输出高电平为灭灯,输出低电平为亮灯。

图 普中A4开发板LED模块
2.1.2 创建工程

创建一个工程的步骤是:

  1. 打开Keil,顶部菜单栏选择“Project → New μVersion Project”;
  2. 在指定文件夹下(路径可以有中文、空格),输入工程名称,“OK → 不需要起始文件”;
  3. 创建main文件。在左侧“Source Group 1右键 → Add New Item to… → 语言、文件名 → OK”;
  4. 创建hex比特流文件。编写好程序后,在“Options for Target左键 → Output → Create Hex File”,然后编译。
  5. 使用STC-ISP下载到芯片中。注意需要重启电源开关才能被识别。

注:在创建工程选择CPU型号时,由于STC是一家中国公司,而Keil是一款外国软件,所以对STC的支持不友好。但STC89C系列的芯片是完全兼容8051的,所以可以直接选择Atmel的AT89C51/AT89C52,是完全兼容的(我选择ATC89C52)。

根据2.1节的原理,给出程序代码:

#include <REGX52.H>

void main(){
   P2 = 0x7F;//0111 1111,左侧是高位
   while(1){
   //为了保证LED灯常亮
   }
}

结果可以发现A4开发板上的D8灯被点亮。

2.2LED闪烁

2.2.1原理分析

  根据“点亮一个LED”的原理,如果要使LED灯以0.5s变化一次亮灭状态的速度进行闪烁,只需要添加延时函数即可。这可以使用STC-ISP软件中自带的“软件延时计算器”。

  1. 由于需要延时0.5s,所以“定时长度”设置为500毫秒;
  2. “系统频率”根据晶振标注“Y11.0592”可知为11.0592MHz;
  3. “8051指令集”选择“STC-Y1”,以支持STC89C系列。

然后“复制代码”到main函数中,就可以直接调用了。

2.2.2程序代码及现象
#include <REGX52.H>
#include <INTRINS.H>//调用_nop_函数

//使用SRC-ISP生成的延时函数
void Delay500ms()		//@11.0592MHz
{
   unsigned char i, j, k;

   _nop_();
   i = 4;
   j = 129;
   k = 119;
   do
   {
   	do
   	{
   		while (--k);
   	} while (--j);
   } while (--i);
}

//主函数
void main(){
   while(1){
   	P2 = 0x7F;
   	Delay500ms();
   	P2 = 0xFF;
   	Delay500ms();
   }
}

下载程序现象:D8灯珠以0.5s的速度改变亮灭状态。

注意,如果遇到复制出来的代码是乱码的状态,可以选择“Edit → Configuration → Encoding”设置为与编辑器相同的编码方式即可(比如都为UTF-8)。

2.3LED流水灯

  原理和上面没什么区别,直接放代码:

#include <REGX52.H>
#include <INTRINS.H>//调用_nop_函数

//使用SRC-ISP生成的延时函数
void Delay500ms()		//@11.0592MHz
{
   unsigned char i, j, k;

   _nop_();//延时1us左右,删掉也没关系
   i = 4;
   j = 129;
   k = 119;
   do
   {
   	do
   	{
   		while (--k);
   	} while (--j);
   } while (--i);
}

//主函数
void main(){
   while(1){
   	P2 = 0x7f;0111 1111
   	Delay500ms();
   	P2 = 0xbf;1011 1111
   	Delay500ms();
   	P2 = 0xdf;1101 1111
   	Delay500ms();
   	P2 = 0xef;1110 1111
   	Delay500ms();
   	P2 = 0xf7;1111 0111
   	Delay500ms();
   	P2 = 0xfb;1111 1011
   	Delay500ms();
   	P2 = 0xfd;1111 1101
   	Delay500ms();
   	P2 = 0xfe;1111 1110
   	Delay500ms();
   }
}

运行效果:LED从D8开始每过0.5s就向左亮一个灯,形成流水灯效果。

2.3LED流水灯Pro

  然而上述代码有一个很大的缺点,就是每次想修改流水灯的变化间隔时间,就需要重新生成一次延时函数,过于麻烦。解决思路是生成一个延时1ms的代码,每次想延时多少ms就调用几次。

注:在计算机中,int表示32位,与单片机数据类型有所出入。
图 C51单片机数据类型

  于是根据上图,可以写出一个有输入参数的延时函数,该函数按照输入的无符号整型参数将函数体进行循环。代码如下:

#include <REGX52.H>

//函数基础延时1ms
void Delay1ms(unsigned int cycles)		//@11.0592MHz
{
   unsigned char i, j;
   do{
   	i = 2;
   	j = 199;
   	do
   	{
   		while (--j);
   	} while (--i);
   }while(--cycles);
}


void main(){
   unsigned int cycles = 50;//延时的ms数
   while(1){
   	P2 = 0x7f;//0111 1111
   	Delay1ms(cycles);
   	P2 = 0xbf;//1011 1111
   	Delay1ms(cycles);
   	P2 = 0xdf;//1101 1111
   	Delay1ms(cycles);
   	P2 = 0xef;//1110 1111
   	Delay1ms(cycles);
   	P2 = 0xf7;//1111 0111
   	Delay1ms(cycles);
   	P2 = 0xfb;//1111 1011
   	Delay1ms(cycles);
   	P2 = 0xfd;//1111 1101
   	Delay1ms(cycles);
   	P2 = 0xfe;//1111 1110
   	Delay1ms(cycles);
   }
}

3.独立按键控制LED灯亮灭

   轻触按键 相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。内部连线和开发板原理图如下:

图 轻触按键内部连线
图 独立按键开发板原理图

  根据上面的原理图可以知道,四个按键分别是连接到MCU的P31、P30、P32、P33。由于开发板上电后,所有的IO口默认是高电平,那么按键松开时相应的IO口保持高电平,按键按下时IO口保持低电平。
小技巧: 右键打开头文件<REGX52.H>就可以查看IO的声明(比如一位IO口的声明)。

  下面讲一下按键开关的抖动问题。对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动。如下图所示:

图 轻触按键抖动示意图

软件消抖的原理就是,检测到按键按下后,延时10ms,再观察按键是否按下。注意这和FPGA中使用三个触发器消抖的思路不同。

现在提出几个功能:

  • 1.按键K1按下时,LED8亮;K1松开,LED8灭;
  • 2.K2每次按下后,只有松开的时候,LED7改变一次状态;
  • 3.K3每次按下后,8位LED自加1(要求D1是高位);
  • 4.K4每次按下后,8位LED左移一位。
#include <REGX52.H>

//生成延时1ms的函数
void Delay1ms(unsigned int cycles)
{
   unsigned char i, j;
   do{
   	//_nop_();
   	i = 2;
   	j = 199;
   	do
   	{
   		while (--j);
   	} while (--i);
   }while(--cycles);
}

void main(){
   unsigned char LED_r=0;//由于无符号字符是8位,所以常用其表示一个寄存器
   while(1){
   	//按键K1按下,LED8亮;松开,灭。
   	if(!P3_1){
   		Delay1ms(10);//这里使用软件消抖				
   		while(!P3_1){
   			P2_7 = 0;
   		};
   		Delay1ms(10);
   		if(P3_1){
   			P2_7 = 1;
   		}
   	}
   	
   	//按键K2每次按下,松开时LED7改变状态。
   	if(!P3_0){
   		Delay1ms(10);//这里使用软件消抖
   		while(!P3_0);//等着松开
   		Delay1ms(10);
   		if(P3_0){
   			P2_6 = ~P2_6;
   		}
   	}
   	
   	//按键K3按下后松开时,8个LED在当前的状态下+1(D7是高位,LED灯亮表示1)
   	if(!P3_2){
   		Delay1ms(10);//这里使用软件消抖
   		while(!P3_2);//等着松开
   		Delay1ms(10);
   		if(P3_2){
   			LED_r = ~P2;
   			LED_r++;
   			P2 = ~LED_r;
   		}
   	}
   	
   	//按键K4按下后松开时,8个LED在当前的状态下左移1位
   	if(!P3_3){
   		Delay1ms(10);//这里使用软件消抖
   		while(!P3_3);//等着松开
   		Delay1ms(10);
   		if(P3_3){
   			if(P2 == 0xfe | P2 == 0xff)
   				P2 = 0x7f;
   			else
   				P2 = ~(~P2>>1);//由于D8是高位,所以右移
   		}
   	}
   }
}

  注意到上面的函数中,每一个按键的事件是独立的,也就是,当按下一个按键后,其他按键将不会发生作用,直到当前按键的功能执行完成。另外,51单片机中常用 无符号字符 表示一个8位的寄存器。

51单片机学习笔记()
weixin_43399026的博客
11-07 1139
一、关于头文件 在输入头文件时,新手容易出错 比如: #include &quot;reg52.h&quot; 由于不仔细以及对头文件不够了解,会出现错误,如: #include &quot;reg.52“ #include &quot;reg.52.h&quot; 此情况下编译会出错,显示打不开该文件,如下图第四行所示 二、keil中switch使用注意事项 case后接数字要加括号或打空格,不可以直接把数字与case连在一起,会出现这
51单片机实现串口点灯
最新发布
2301_79099606的博客
05-04 758
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!
51单片机学习笔记
黑胡子大叔的博客
04-08 2040
IIC总线 IIC时序结构 Start 起始条件:SCL高电平期间,SDA从高电平切换到低电平 /** * @brief 起始 * @param * @retval */ void I2C_Start(void) { I2C_SDA = 1; I2C_SCL = 1; I2C_SDA = 0; I2C_SCL = 0; } Stop 终止条件:SCL高电平期间,SDA从低电平切换到高电平 /** * @brief 终止 * @param * @
51单片机自学笔记
xyz_1991的专栏
04-24 864
一、单片机为了降低系统的功耗,一般有两种模式:            1、空闲模式:当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序涉及的数据存储器和特殊功能寄存器中的数据在空闲模式期间都保持原值。在此模式下可由任意一个中断或硬件复位唤醒。             2、掉电模式:此时处于休眠模式,外部晶振停振,CPU、定时器、串行口全部停止工作,只有外部中断
51单片机学习笔记(1)
Hacker_MAI的博客
08-14 844
程序编写环境——KEIL软件的安装 前提:准备好keil 4安装程序与相应注册机 打开C51V901.exe(Keil 4 安装程序) * 点击Next * 勾选 I agree all the terms of··· * 点击Next * 设置安装路径,根据自己的情况选中安装目录,重新设置请点击Browse进行浏览与选取,建议安装路径不要包含中文,设置好安装...
单片机学习笔记————51单片机实现两片联级74HC595依次逐个点亮LED之后,再依次逐个熄灭LED的跑马灯程序
DJDN426611的博客
05-25 2524
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: LED-74HC595 ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @Creation.
51单片机学习历程(二)快速入门51单片机
Zhanganliu的博客
07-19 6192
有些学生觉得单片机很难学其实掌握入门方法也不难 开发环境搭建,不用多说,看网上教程 拿到51单片机该如何做? 首先打开看51单片机的管脚分布,51单片机是8个引脚一组,为什么是8个一组呢?  因为它是8位单片机,正好一个字节8位可以控制它  51单片机有4组(P1,P2,P3,P4)通用管脚,所以51单片机有4*8=32个通用管脚 管脚有那么可怕吗? 其实通用管脚不就类似于开关,初...
STM32学习笔记【江科协】【3-1】GPIO输出
m0_74651303的博客
07-22 2791
模式下,这个P-MOS是无效的,只有M-MOS在工作,数据寄存器为1时,下管断开,这时输出相当于断开,也就是高阻模式;通过设置这个位设置和位清除寄存器,如果要对某一位进行置1的操作,在位设置寄存器的对应位写1即可,剩下不需要操作的位写0,这样它内部就会有电路,自动将输出数据寄存器中对应位置为1,而剩下写0的位则保持不变,这就保证了只操作其中某一位而不影响其它位,并且这是一步到位的操作,如果想对某一位进行清0的操作,就在位清除寄存器的对应位写1即可,这样内部电路就会把这一位清0了。*数据0,就是0V低电平;
两个简单程序(按键点灯、光敏电阻控制蜂鸣器)(学习笔记
2301_77164155的博客
04-05 1931
stm32的按键与51单片机的一样,按键按下会有抖动(因为按键内使用的是机械式弹簧),5~10ms对单片机来说时间很长,如果不进行消抖,会出现重复执行程序的情况。(按键按下是低电平,没按是高电平)而最常用的方法是通过软件编程消抖,加一段延时。(VCC正极,GND负极)N1是传感器模块代表的可变电阻,R1是定值电阻,它俩串联分压,旁边的C2是滤波电容,用来过滤干扰,保证输出电压的平滑(分析电路时,可以去掉)。用上下拉分析电路,当N1减小,下拉增强,N1=0时,AO电压=GND电压;
51单片机学习笔记
hermit_loren的博客
01-12 221
小白学习51的笔记
89S51单片机自学笔记-汇编与C语言编程
总结来说,"中断入口-starter使用手册"这个主题在《51单片机自学笔记》中是关于如何处理51单片机外部中断的一个关键概念,而这本书则提供了全面的学习路径,从基础的硬件交互到高级的实时操作系统应用,旨在帮助读者...
写文章

热门文章

  • FPGA学习笔记-1 FPGA原理与开发流程 40744
  • 实验四-哈夫曼编码的MATLAB实现 34091
  • stm32学习笔记-1 STM32简介 24144
  • 实验七-卷积编码的MATLAB实现 23050
  • 实验六-线性分组码的MATLAB实现 19190

分类专栏

  • 我的项目 8篇
  • 人工智能 1篇
  • 机器学习-吴恩达-完结 11篇
  • 嵌入式学习 1篇
  • SV-UVM-路科验证
  • FPGA-正点原子 1篇
  • FPGA-小梅哥
  • stm32-江科大 12篇
  • 51单片机-江科大-完结 15篇
  • 软件学习
  • 操作系统-李治军
  • 计算机组成原理-刘宏伟-完结 11篇
  • 8086汇编-贺利坚-完结 8篇
  • Linux C/C++-零声教育
  • C++-崔毅东-完结 12篇
  • Linux-韩顺平-完结 28篇
  • Python-杨淑娟-完结 16篇
  • Java-韩顺平 1篇
  • LeetCode刷题 8篇
  • 图像处理 1篇
  • 信息论编码 6篇
  • 移动通信
  • MATLAB小技巧 2篇

最新评论

  • Course2-Week3-使用机器学习的建议

    weixin_44623758: 边看视频边看你的笔记大概一周可以过完一遍,然后抽出两天看代码实现

  • 基于FPGA的车牌识别

    dream_come_true_: 博主您好,想问问模型推理的部分也是用verilog语言直接编写吗,还是用了什么进行转化

  • stm32学习笔记-11 SPI通信

    huovzb: 催更催更表情包

  • stm32学习笔记-10 I2C通信

    huovzb: 写得很好呀

  • Course1-Week1-机器学习简介

    weixin_58770685: 为什么我打不开他的代码呢,报错500

最新文章

  • 汇编语言程序设计-8-汇编语言快速查阅
  • 汇编语言程序设计-7-高级汇编语言技术
  • 汇编语言程序设计-6-中断及其应用
2024年21篇
2023年86篇
2022年28篇
2021年8篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虎慕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

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

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