要用MSP430做出的51 8位数码管秒表程序,可以帮帮忙看看吗?感激不尽!

led数码管显示程序麻烦用C语言写出具体程序是基于MSP430单片机的.不好意思,因为是帮别人问的,楼下的那个是符合上述条件的吗?
DFGHHS2919
不知道你朋友的硬件数码管是用什么驱动的,共阴还是共阳的,最好有硬件图,说的太含糊,没法帮忙啊?我有用74164驱动的程序,要是用,给我个邮箱,我发给你吧!
为您推荐:
其他类似问题
扫描下载二维码&&&&msp430g2553使用595控制四位数码管1ms动态扫描程序
&msp430g2553使用595控制四位数码管1ms动态扫描程序
使用定时器产生1ms中断,从而控制595进行动态扫描数码管。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
msp430g2553使用595控制四位数码管1ms动态扫描程序
所需积分:5
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
msp430g2553使用595控制四位数码管1ms动态扫描程序
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员谁能帮我把这个代码改成MSP430F5529的,本人感激不尽啊 - MSP430技术论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
谁能帮我把这个代码改成MSP430F5529的,本人感激不尽啊
15:57:44  
#include &reg51.h&#include &intrins.h& #define Delay4us(){_nop_();_nop_();_nop_();_nop_();}/*宏定义*/#define uchar& & & & unsigned char& & & & & & & & & & & & //无符号8位#define uint& & & & unsigned int&&& & & & & & & & //无符号16位#define ulong& & & & unsigned long&&& & & & & & & & //无符号32位 /*全局变量定义*/sbit K1=P1^0;& & & & & & & & & & & & //按下K1后,开始测距sbit LEDRed=P1^1;& & & & //测距指示灯,亮表示正在测距,灭表示测距完成sbit BEEP=P1^5;& & & & & & & & //报警测量超出范围sbit Trig=P1^7;& & & & & & & & //HC-SR04触发信号输入sbit Echo=P1^6;& & & & & & & & //HC-SR04回响信号输出 float xdata DistanceValue=0.0;& & & & //测量的距离值float xdata SPEEDSOUND;& & & & & & & & & & & & & & & & //声速float xdata XTALTIME;& & & & & & & & & & & & & & & & //单片机计数周期uchar xdata stringBuf[6];& & & & & & & & & & & & //数值转字符串缓冲& & & & //LCD1602提示信息uchar code Prompts[][16]={& & & & {&Measure Distance&},& & & & //测量距离& & & & {&- Out of Range -&},& & & & //超出测量范围& & & & {&MAX range 400cm &},& & & & //测距最大值400cm& & & & {&MIN range 2cm& &&},& & & & //测距最小值2cm& & & & {&& && && && && & &},& & & & & & & & //清屏& & & & {& Press K1 Start &}& & & & //按键开始测量};uchar xdata DistanceText[]=&Range:& && && & &;//测量结果字符串uchar xdata TemperatureText[]=&Temperature:& & &;//测量温度值 /*外部函数声明*/extern void LCD_Initialize();extern void LCD_Display_String(uchar *, uchar);extern void ReadTemperatureFromDS18B20();extern int xdata CurTempI
//毫秒延时函数void DelayMS(uint ms);//20微秒延时函数void Delay20us();//HCSR04初始化void HCSR04_Initialize();//测量距离float MeasuringDistance();//测距的数值排序求平均float DistanceStatistics();//输出距离值到LCD1602上void DisplayDistanceValue(float dat);//将无符号的整数转成字符串,返回字符串长度,不包括'\0'结束符uchar UnsigedIntToString(uint value);//蜂鸣器void Beep(uchar time);//显示温度值void DisplayTemperatureValue(); //测量距离float MeasuringDistance(){& & & & //最大定时时间约65ms& & & & TH0=0;& & & & TL0=0;& & & & & & & & //生成20us的脉冲宽度的触发信号& & & & Trig=1;& & & & & & & & & & & & & & & & & & & & Delay20us();& & & & Trig=0; & & & & //等待回响信号变高电平& & & & while(!Echo);& & & & & & & & TR0=1;& & & & & & & & //启动定时器0 & & & & //等待回响信号变低电平& & & & while(Echo);& & & & & & & & & & & & TR0=0;& & & & & & & & //关闭定时器0
& & & & //返回距离值(mm)& & & & return (SPEEDSOUND*XTALTIME*((float)TH0*256+(float)TL0))/2000;} //HCSR04初始化void HCSR04_Initialize(){& & & & //计算单片机计数周期&&晶振=11.953M& & & & 单位us& & & & XTALTIME=12/11.953;& & & & //温度25度时声速的值& & & & SPEEDSOUND=334.1+25*0.61;& & & & & & & & & & & & & & & & & & & & Trig=0;& & & & & & & & Echo=0;& & & & TMOD=0x01;} //输出距离值到LCD1602上void DisplayDistanceValue(float dat){& & & & uchar i=0,j=0,& & & && & & & value=(uint)& & & & //范围检查大于4000mm和小于20mm都为超出测量范围& & & & if(value&4000)& & & & {& & & & & & & & LCD_Display_String(Prompts[1],0x00);& & & & & & & & LCD_Display_String(Prompts[2],0x40);& & & & & & & & Beep(2);& & & & & & & & }& & & & else if(value&20)& & & & {& & & & & & & & LCD_Display_String(Prompts[1],0x00);& & & & & & & & LCD_Display_String(Prompts[3],0x40);& & & & & & & & Beep(2);& & & & }& & & & else& & & & {& & & & & & & & //将数值转换成字符串& & & & & & & & len=UnsigedIntToString(value);& & & & & & & & //保留1位小数& & & & & & & & while(stringBuf!='\0')& & & & & & & & {& & & & & & & & & & & & if(len-j==1) & & & & & & & & & & & & {& & & & & & & & & & & & & & & & DistanceText[6+j]='.';& & & & & & & & & & & & & & & & j++;& & & & & & & & & & & & }else& & & & & & & & & & & & {& & & & & & & & & & & & & & & & DistanceText[6+j]=stringBuf;& & & & & & & & & & & & & & & & i++;& & & & & & & & & & & & & & & & j++;& & & & & & & & & & & & }& & & & & & & & }& & & & & & & & DistanceText[6+j]='c';& & & & & & & & j++;& & & & & & & & DistanceText[6+j]='m';& & & & & & & & i=7+j;& & & & & & & & //剩余位置补空格& & & & & & & & while(i&16)& & & & & & & & {& & & & & & & & & & & & DistanceText=' ';& & & & & & & & & & & & i++;& & & & & & & & & & & & }& & & & & & & & //LCD_Display_String(Prompts[0],0x00);& & & & & & & & LCD_Display_String(DistanceText,0x40);& & & & }} //显示温度值void DisplayTemperatureValue(){& & & & TemperatureText[13]=CurTempInteger/10+'0';& & & & TemperatureText[14]=CurTempInteger%10+'0';& & & & TemperatureText[15]='C';& & & & LCD_Display_String(TemperatureText,0x00);& & & & & & & & } //将无符号的整数转成字符串,返回字符串长度uchar UnsigedIntToString(uint value){& & & & uchar i=0,t,& & & & //从个位开始转换& & & & do& & & & {& & & & & & & & stringBuf='0'+value%10;& & & & & & & & value=value/10;& & & & & & & & i++;& & & & }while(value!=0);& & & & length=i;& & & & //将字符串颠倒顺序& & & & for(i=0;i&(length/2);i++)& & & & {& & & & & & & & t=stringBuf;& & & & & & & & stringBuf=stringBuf[length-i-1];& & & & & & & & stringBuf[length-i-1]=t;& & & & & & & & }& & & & stringBuf[length]='\0';& & & &} //蜂鸣器void Beep(uchar time){& & & && & & & for(i=0;i&100;i++)& & & & {& & & & & & & & BEEP=!BEEP;& & & & & & & & DelayMS(time);& & & & & & & & }& & & &&&BEEP=0;& & & &&&DelayMS(100);} //延时函数 毫秒 @12.000MHzvoid DelayMS(uint ms){& & & & uchar i,& & & & while(ms--)& & & & {& & & & & & & & _nop_();& & & & & & & & i = 2;& & & & & & & & j = 239;& & & & & & & & do& & & & & & & & {& & & & & & & & & & & & while (--j);& & & & & & & & }while (--i);& & & & }} //延时函数 20微秒 @12.000MHzvoid Delay20us(){& & & && & & & _nop_();& & & & i = 7;& & & & while (--i);} //定时器0中断void Timer0() interrupt 1{ }& & & & //DS18B20代码:/*----------------------------------------------* 程序功能:&&DS18B20温度检测程序* 单片机型号:STC89C52 12MHz* 晶振:& && &12Mhz------------------------------------------------*/ /*包含头文件*/#include &reg51.h&#include &intrins.h& /*宏定义*/#define uchar& & & & unsigned char& & & & & & & & //无符号8位#define uint& & & & unsigned int&&& & & & //无符号16位 //定义DS18B20端口DS18B20_DQsbit DS18B20_DQ = P3^7; //当前采集的温度值整数部分int xdata CurTempI //当前采集的温度值小数部分int xdata CurTempD /*----------------------------------------------------------------* 功能:延时函数 STC89C52 @12MHz 12T模式* 参数:无* 返回:无----------------------------------------------------------------*/void Delayus(uint count)& & & & & & & & {& & & & while (--count);} /*----------------------------------------------------------------* 功能:DS18B20复位及状态检测* 参数:无* 返回:0或1,1表示未准备好,0表示准备好----------------------------------------------------------------*/uchar Reset_DS18B20(){& & & && & & & DS18B20_DQ=1;& & & & & & & & Delayus(1);& & & & //开始复位过程& & & & DS18B20_DQ=0;& & & & & & & & //数据线拉低& & & & Delayus(100);& & & & & & & & //延时480us-960us& & & & DS18B20_DQ=1;& & & & & & & & //数据线拉高& & & & Delayus(10);& & & & & & & & //延时15us-60us& & & & status=DS18B20_DQ;& & & & //读取数据线上的状态& & & & Delayus(120);& & & &} /*----------------------------------------------------------------* 功能:写一字节到DS18B20中* 参数:dat=数据* 返回:无----------------------------------------------------------------*/void&&WriteByteToDS18B20(uchar dat){& & & && & & & for(i=0;i&8;i++)& & & & {& & & & & & & & DS18B20_DQ=0;& & & & & & & & DS18B20_DQ=dat&0x01;& & & & & & & & & & & & //发送1位数据& & & & & & & & Delayus(15);& & & & & & & & & & & & & & & & & & & & & & & & //延时60us以上& & & & & & & & DS18B20_DQ=1;& & & & & & & & & & & & & & & & & & & & & & & & //释放总线,等待总线恢复& & & & & & & & dat&&=1;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //准备下一位数据& & & & }} /*----------------------------------------------------------------* 功能:从DS18B20中读一字节* 参数:无* 返回:读取的数据----------------------------------------------------------------*/uchar ReadByteFromDS18B20(){& & & & uchar i,dat=0;& & & & for(i=0;i&8;i++)& & & & {& & & & & & & & & & & & & & & & DS18B20_DQ=0;& & & &&&& & & & & & & & & & & & & & & & //拉低总线,产生读信号& & & & & & & & dat&&=1;& & & & & & & & DS18B20_DQ=1;& & & & & & & & & & & & & & & & & & & & //释放总线,准备读1位数据& & & & & & & & & & & & Delayus(2);& & & & & & & & & & & & & & & & & & & & //延时4us& & & & & & & & if(DS18B20_DQ) dat|=0x80;& & & & //合并每位数据& & & & & & & & Delayus(15);& & & & & & & & & & & & & & & & & & & & //延时60us& & & & & & & & DS18B20_DQ=1;& & & & & & & & & & & & & & & & & & & & //拉高总线,准备读下1位数据& & & & }& & & &} /*----------------------------------------------------------------* 功能:读取温度值并转换成有符号的数值形式* 参数:无* 返回:无----------------------------------------------------------------*/void ReadTemperatureFromDS18B20(){& & & & uchar flag=0;//正负符号标志& & & & //存储当前采集的温度值& & & & uchar TempValue[]={0,0}; & & & & if(Reset_DS18B20())& & & & {& & & & & & & & CurTempInteger=255;& & & & & & & & CurTempDecimal=0;& & & & }& & & & else& & & & {& & & & & & & & WriteByteToDS18B20(0xCC);//跳过ROM命令& & & & & & & & WriteByteToDS18B20(0x44);//温度转换命令& & & & & & & & Reset_DS18B20();//复位& & & & & & & & WriteByteToDS18B20(0xCC);//跳过ROM命令& & & & & & & & WriteByteToDS18B20(0xBE);//读取温度暂存器命令& & & & & & & & TempValue[0]=ReadByteFromDS18B20();//先读低字节温度值& & & & & & & & TempValue[1]=ReadByteFromDS18B20();//后读高字节温度值& & & & & & & & Reset_DS18B20();//复位 & & & & & & & & //计算温度值& & & & & & & & //先进行正温度与负温度判断,高5位全为1(0xF8)则为负数& & & & & & & & if((TempValue[1]&0xF8)==0xF8)& & & & & & & & {& & & & & & & & & & & & //负温度计算:取反加1,低字节为0时,高字节取反加1,否则不需要。& & & & & & & & & & & & TempValue[1]=~TempValue[1];& & & & & & & & & & & & TempValue[0]=~TempValue[0]+1;& & & & & & & & & & & & if(TempValue[0]==0x00) TempValue[1]++;& & & & & & & & & & & & flag=1;//负数标志& & & & & & & & }& & & & & & & & //将温度值分为整数和小数两部分存储(默认为12位精度)& & & & & & & & CurTempInteger=((TempValue[1]&0x07)&&4)|((TempValue[0]&0xF0)&&4);& & & & & & & & & & & & if(flag) CurTempInteger=-CurTempI& & & & & & & & CurTempDecimal=(TempValue[0]&0x0F)*625;& & & & & & & & }} //& & & & LCD1602程序代码:/*----------------------------------------------* 程序功能:1602液晶显示程序* 单片机型号:STC90C160 12MHz------------------------------------------------*/ /*1602液晶显示器控制端口分配,数据使用P0端口*/sbit LCD_RS=P2^6;sbit LCD_RW=P2^5;sbit LCD_EN=P2^7; /*--------------------------------------------* 功能:毫秒级延时函数* 参数:ms=毫秒数值* 返回:无--------------------------------------------*/void LCDDelay(uint ms){& & & & uchar i,& & & & while(ms--)& & & & {& & & & & & & & _nop_();& & & & & & & & i = 2;& & & & & & & & j = 239;& & & & & & & & do& & & & & & & & {& & & & & & & & & & & & while (--j);& & & & & & & & }while (--i);& & & & }& & & & & & & & } /*--------------------------------------------* 功能:1602液晶忙状态检测* 参数:无* 返回:0或1,1表示状态忙,0表示状态闲--------------------------------------------*/bit LCD_Busy_Check(){& & & && & & & LCD_RS=0;& & & & LCD_RW=1;& & & & LCD_EN=1;& & & & Delay4us();& & & & result=(bit)(P0&0x80);& & & & LCD_EN=0;& & & &} /*--------------------------------------------* 功能:1602液晶写指令* 参数:cmd=1602LCD指令* 返回:无--------------------------------------------*/void Write_LCD_Command(uchar cmd){& & & & while(LCD_Busy_Check());& & & & LCD_RS=0;& & & & LCD_RW=0;& & & & & & & & LCD_EN=0;& & & & _nop_();& & & & _nop_();& & & & P0=& & & & Delay4us();& & & & LCD_EN=1;& & & & Delay4us();& & & & LCD_EN=0;} /*--------------------------------------------* 功能:1602液晶写数据* 参数:dat=一个字节数据* 返回:无--------------------------------------------*/void Write_LCD_Data(uchar dat){& & & & while(LCD_Busy_Check());& & & & LCD_RS=1;LCD_RW=0;LCD_EN=0;& & & & P0=Delay4us();& & & & LCD_EN=1;Delay4us();LCD_EN=0;} /*--------------------------------------------* 功能:设置1602液晶显示位置* 参数:pos=位置地址值* 返回:无--------------------------------------------*/void LCD_Set_POS(uchar pos){& & & & Write_LCD_Command(pos|0x80);} /*--------------------------------------------* 功能:1602液晶初始化* 参数:无* 返回:无--------------------------------------------*/void LCD_Initialize(){& & & & Write_LCD_Command(0x01);& & & & LCDDelay(5);& & & & Write_LCD_Command(0x38);& & & & LCDDelay(5);& & & & Write_LCD_Command(0x0C);& & & & LCDDelay(5);& & & & Write_LCD_Command(0x06);& & & & LCDDelay(5);} /*--------------------------------------------* 功能:在1602液晶指定的行上显示字符串& && &&&(共两行,一行16个字符)* 参数:*str=字符串指针,& && &&&LineNo=行首地址(第一行0x00,第二行0x40)* 返回:无--------------------------------------------*/void LCD_Display_String(uchar *str, uchar LineNo){& & & && & & & LCD_Set_POS(LineNo);& & & & for(k=0;k&16;k++) & & & & {& & & & & & & & Write_LCD_Data(str[k]); & & & & }& & & & }&&/*--------------------------------------------* 功能:在1602液晶指定位置显示一个字符& && &&&(共两行,一行16个字符)* 参数:Dat=一个字符,& && &&&X=列位置(0-15)& & & & & & & & Y=行位置(0,1)* 返回:无--------------------------------------------*/void LCD_Display_OneChar(uchar Dat, uchar X, uchar Y){& & & & Y &= 0x01;& & & & //限制Y不能大于1(2行,0-1)& & & & X &= 0x0F; & & & & //限制X不能大于15(16个字符,0-15)& & & & if(Y) {X |= 0x40;} //当要在第二行显示时地址码+0x40;& & & & X |= 0x80; //算出指令码& & & & Write_LCD_Command(X);& & & & Write_LCD_Data(Dat);}
/*主函数*/void main(){& & & & LCD_Initialize();//1602初始化& & & & LCD_Display_String(Prompts[0],0x00);& & & & LCD_Display_String(Prompts[5],0x40);& & & & ReadTemperatureFromDS18B20();//测温度& & & & HCSR04_Initialize();//HC-SR04初始化& & & & while(1)& & & & {& & & & & & & & if(K1==0)& & & & & & & & {& & & & & & & & & & & & DelayMS(5);& & & & & & & & & & & & if(K1==0)& & & & & & & & & & & & {& & & & & & & & & & & & & & & & Beep(1);& & & & & & & & & & & & & & & & while(K1==0);& & & & & & & & & & & & & & & & LEDRed=0;& & & & & & & & & & & & & & & & ReadTemperatureFromDS18B20();//测温度& & & & & & & & & & & & & & & & DisplayTemperatureValue();& & & & & & & & & & & & & & & & if(CurTempInteger&14) & & & & & & & & & & & & & & & & & & & & CurTempInteger=14;& & & & & & & & & & & & & & & & else if(CurTempInteger&26)& & & & & & & & & & & & & & & & & & & & CurTempInteger=26;& & & & & & & & & & & & & & & & SPEEDSOUND=334.1+CurTempInteger*0.61;//计算声速& & & & & & & & & & & & & & & & DistanceValue=DistanceStatistics();//测距并返回距离值& & & & & & & & & & & & & & & & DisplayDistanceValue(DistanceValue);//显示距离值& & & & & & & & & & & & & & & & LEDRed=1;& & & & & & & & & & & & }& & & & & & & & }& & & & }} //测距的数值排序求平均float DistanceStatistics(){& & & & uchar i,j;& & & & float disData[7],t;& & & & //连续测距& & & & for(i=0;i&7;i++)& & & & {& & & & & & & & disData=MeasuringDistance();& & & & & & & & & & & & DelayMS(80);& & & & & & & & }& & & & //排序& & & & for(j=0;j&=6;j++)& & & & {& & & & & & & & for(i=0;i&7-j;i++)& & & & & & & & {& & & & & & & & & & & & if(disData&disData[i+1])& & & & & & & & & & & & {& & & & & & & & & & & & & & & & t=disData;& & & & & & & & & & & & & & & & disData=disData[i+1];& & & & & & & & & & & & & & & & disData[i+1]=t;& & & & & & & & & & & & }& & & &&&& & & & }& & & & }& & & & return (disData[2]+disData[3]+disData[4])/3;}
00:45:31  
我可以试试
07:21:59  
这个有点复杂,
09:35:11  
有点复杂啊喂,&&正在做一个F149到G2553的小程序移植,到目前发现,头文件,宏定义,函数的格式都有可能有差别的,感觉很复杂啊
19:34:20  
首先换成430的头文件
那后面呢,后面该怎么改?
19:35:46  
我可以试试
我要做一个MSP430F5529的超声波测距,模块是lcd5110显示屏,us-100两个,亲你可以吗
16:41:17  
你觉得写着会很简单吗?so long...............
16:45:22  
好复的样子!!!!!!!!!!!!!!
Powered bymain msp430g5数码管显示
运用 串入并出的方式 8位共阴 ,本实验 SCM 单片机开发 238万源代码下载-
&文件名称: main
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 2 KB
&&上传时间:
&&下载次数: 12
&&提 供 者:
&详细说明:msp430g5数码管显示
运用74HC595串入并出的方式显示8位共阴数码管,本实验是用P2.0,1,2
利用看门狗定时器,实现电子表。即:数码管高两位显示时,中间两位显示分
最后两位显示秒。-Digital tube display msp430g2553+ 74 hc595 are needed Using series with 74 hc595 are needed and the digital tube display 8, a total of Yin, this experiment is to use P2.0, 1, 2 Using the watchdog timer, electronic. I.e., the digital tube high two shows, in the middle two points The final two seconds.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&[]:还不错
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 四位数码管显示设计(74HC595&SPI)(ICC)附带电路原理图
&[] - MSP430与CC1100通过SPI接口通信,四个按键,当按下某一个按键时,相应的指示灯变亮---------短距离无线通信
&[] - msp430g2553写的低功耗数字钟!!!
&[] - msp430g2553单片机控制led数码管显示程序
&[] - msp430g2553单片机的时钟设置程序,原创,有注释。
&[] - msp430g2553相关程序列子,可以给广大单片机学习者提供好的列子
&[] - 基于msp430g2553的超声波测距,使用捕获比较器,再通过5110显示}

我要回帖

更多关于 数码管秒表c语言程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信