51单片机语音+温度控制的源码

发布者:CelestialGarden最新更新时间:2015-07-14 来源: 51hei关键字:51单片机  语音  温度控制 手机看文章 扫描二维码
随时随地手机看文章
#include
#define uchar unsigned char
#define uint unsigned int
uchar index;
uchar a,b,c; //定义三个变量、。
uchar m;         //
uint teempr;       //
uint  z,i;

//*********************************************★下面是PWM调制的数组★********************************************************
//220- zhan0.02  214--0.04  209-0.07 203-0.11  195- 0.15  185-0.25  173-0.31 160-0.38  145-0.45 129-0.48 111-0.48   42OFF
//0.74 .81  .91 1.03   1.22   1.45  1.69   2.28   2.62     0.74   0.81   0.90    1.03   右大
// 热敏电阻受热以后阻值变小。受凉以后阻值变大。

uchar code pwm[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,
116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,
147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,
178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,
209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254};
//3525 2脚电压高输出占空比也大,2脚电压越低那么占空比也就越小。  6脚电压拉低的话频率就升高,6脚电压高频率就降低。
//************************************************************************************************************************
//************************************************************************************************************************
 
//************************************************ 下面的是DISP显示数组***************************************************
uchar code table100[]={"※※※※※※※※"};
uchar code table101[]={"  www.51hei.com "};
uchar code table1[]={"★当前档位一★"};
uchar code table2[]={"★当前档位二★"};
uchar code table3[]={"★当前档位03★"};
uchar code table4[]={"★当前档位四★"};
uchar code table5[]={"★当前档位五★"};
uchar code table6[]={"★当前档位六★"};
uchar code table7[]={"★当前档位七★"};
uchar code table8[]={"★当前档位八★"};
uchar code table9[]={"★当前档位九★"};
uchar code table10[]={"★当前档位十★"};
uchar code table11[]={"测试版本:V1.1"};
uchar code table12[]={"zhinengjiqi.com"};
uchar code table13[]={"欢迎使用智能机器"};
uchar code table14[]={"GSM:18663523202"};
uchar code table15[]={"警告电压过高保护"};
uchar code table16[]={"警告检测短路故障"};
uchar code table17[]={"警告长时间没放锅"};
uchar code table18[]={"警告线盘温度过高"};
uchar code table19[]={"警告散热器温度高"};
uchar code table20[]={"警告风扇发生故障"};
uchar code table21[]={"警告环境湿度过高"};
uchar code table22[]={"机器锁定咨询客服"};
uchar code table23[]={"警告电源线未接好"};
uchar code table24[]={"Θ开机软启动中Θ"};
uchar code table25[]={"请稍候¨¨"};
//******************************************************************************************************************


//*************************************************按键定义***********************************************************
sbit pd =   P0^4    ;  //占空比升高
sbit px =   P0^5    ;  //占空比降低
sbit zd =   P0^6    ;  //频率增加
sbit zx =   P0^7    ;  // 频率减小
//**************************************************按键定义到此结束。******************************************************
sbit rs=P0^0; //数据,命令选择端
sbit rw=P0^1; //读写选择
sbit beiguang=P0^3;//LED背光
sbit e=P0^2; //使能端
sbit baohu=P5^3; //PWM保护关闭。
//***************************************************  液晶pin定义结束。***************************************************
sbit DQ=P3^4;   //温度探头数据口。
sbit yurest=P4^4; //语音复位
sbit yushuju=P4^1; //语音数据
sbit yuzhuangtai=P4^5; //语音状态
//***************************************************语音pin定义到此结束*****************************************************
//*********************************************************************************************************

//**************************************************** 各种延时子函数*******************************************************
void yanshi(uint xms)//延时多久需要计算。
  {
   uint x ,y;
    for(x=xms;x>0;x--)
   for(y=110;y>0;y--);
  }
//******************************************************************************************************************
void delay_1ms(uint z)   //延时一毫秒的指令。核对过时间很准确
{
uint x,y;
for(x=z;x>0;x--)
for(y=1800;y>0;y--);
}
//**************************************************************
void delay_50us(uint t)  //延时50微秒的指令。核对过时间很准确
{
uint j;
for(;t>0;t--)
for(j=91;j>0;j--);
}
//************************************************************************************************************************
 


//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//************************************************************************************************************************
//************************************************以下是12864显示的子函数*****************   ******************************
//******************************************************************************************************************
void write_12864_com(uchar com) //写命令子函数
{
 rs=0; //数据命令选择端口。=1写数据,=0写命令 。
 P2=com;//把数据送到P2口传递给液晶。
 e=1;//使能端高电平。
 delay_50us(10); //延时一小会保证使能的高电平宽度达到要求、
 e=0;//完成使能信号的脉冲要求给置零。
 delay_50us(2);
}
 //*******************************************************

void write_12864_dat(uchar dat) //写数据子函数
{
 rs=1; //数据命令选择端口。=1写数据,=0写命令 。
 rw=0; //读写
 delay_50us(1);
 P2=dat;//把数据送到P2口传递给液晶。
 e=1;//使能端高电平。 delay_50us(10); //延时一小会保证使能的高电平宽度达到要求、
 e=0;//完成使能信号的脉冲要求给置零。
 delay_50us(2);
}
//********************************************************************************************************           
void init_12864()  //液晶初始化子函数。
 {
     delay_1ms(100);
  write_12864_com(0x30); //基本指令操作); //
      delay_50us(4);
  write_12864_com(0x0c);
  write_12864_com(0x06);
  delay_50us(10);
 }
//***************************************************以下是各个档位的画面***********************************************

void dispdangwei(uint f)     //*****************************f是多少就是几档画面*************************************************
 {
     init_12864();//初始化液晶。
  write_12864_com(0x80);//设定显示位置是第一行。
  for(i=0;i<16;i++)    //第一行有多少字,汉字占两个位置。标点符号一个。
  {
  write_12864_dat(table101[i]); //开始挨个把表中的字一位一位的通过12864的数据发送子程序发送出去。
  delay_50us(1);          //延时一会保证数据有发送完毕。
   }
  write_12864_com(0x90); //设定第二行。
  for(i=0;i<16;i++)
  {dat(table100[i]);;
  }
  write_12864_com(0x88); //设定第三行
  for(i=0;i<14;i++)
  {
   switch(f)
    {
     case 1:
     write_12864_dat(table1[i]);
     break;
     case 2:
     write_12864_dat(table2[i]);
     break;
     case 3:
     write_12864_dat(table3[i]);
     break;
     case 4:
     write_12864_dat(table4[i]);
     break;
     case 5:
     write_12864_dat(table5[i]);
     break;
     break;
     case 7:
     write_12864_dat(table7[i]);
     break;
     case 8:
     write_12864_dat(table8[i]);
     break;
     case 9:
     write_12864_dat(table9[i]);
     break;
     case 10:
     write_12864_dat(table10[i]);
     break;
    }
   delay_50us(1);行显示位置。
  for(i=0;i<16;i++)
  {
   write_12864_dat(table100[i]);
   delay_50us(1);
  }
 }
//*************************************************************************************************************************
//***********************************************************************************************************************
//*******************************************************************************************************************

 

//***********************************************************************************************************************
//***********************************************下面是语音参数设定******************************************************
//***********************************************************************************************************************
void yufuwei() //语音复位子程序。
{
 yurest=0;//这句是防止REST不是低电平。保险起见给他拉低。
 yurest=0; //到这里语音就复位结束。
}
//**********************************************************************************************************************
void yuyin(z) //语音的播放程序。Z等于几就播放第几段。(语音参数内部调用,主程序不用。)
{
  yufuwei();  //清除以前的播放数据进行复位。防止和前次的播放数据相加播放错误、 
    while(z>0)
    {
     yushuju=0;
  } 
//**********************************************************************************************
void dangweitouyin() // 语音:档位。 用来给档位语音添加头音。
  {
   yufuwei();  //语音复位子函数。目的是在播放这段之前停止正在播放的。、一小会。
   yuyin(11);  //指定播放语音IC中的第11段语音。
  }
//********************************************************************************************************
void jinggao() //报警用的音乐文件。 用来给各种告警添加头音。只是警告语音的前头那段音乐。位子函数。目的是在播放这段之前停止正在播放的。、
 机速度太快了延一小会。
   yuyin(23);  //指定播放语音IC中的第11段语音。
  }
//***********************************************************************************************
void baojing(uint o) // 各种报警的子函数里面的O等于几就是对应的报警。
  {
   jinggao();   //这里是警告的头音音乐文件。
   delay_1ms(2000);//延时2秒想起来警告头音。
   yuyin(o); //警告的内容。 
  }
//*****************************************************************************************
void jinggaoduanlu()  //短路保护警告音。
  {
   baojing(18);//播放第18条报警语音。内容是:短路保护.
  }
//*****************************************************************************************
void jinggaofengshanguzhang()
  {
   baojing(19);//播放第19条报警语音。内容是:警告风扇故障。
  }
//*****************************************************************************************
void jinggaoguoyabaohu()
  {
   baojing(21);//播放第12条报警语音。内容是:电源线未接好,请检查。
  }
//*****************************************************************************************
void jinggaoguowenbaohu()
  {
   baojing(20);//播放第20条报警语音。内容是:警告过压保护。
  }
//*****************************************************************************************
 void dianyuanxianweijiehao()
  {
   baojing(12);//播放第12条报警语音。内容是:电源线未接好,请检查。
  }
//*****************************************************************************************
 void jinggaomima()
  {
   baojing(22);//播放第22条报警语音。内容是:请咨询客服输入密码。
  }
//*****************************************************************************************
void jinggao1() //报警用的音乐文件。 用来给各种告警添加头音。只是警告语音的前头那段音乐。
  {
   yufuwei();  //语音复位子函数。目的是在播放这段之前停止正在播放的。、
   delay_50us(1);//单片机速度太快了延一小会。
   yuyin(26);  //指定播放语音IC中的第11段语音。
  }
//********************************************************************************************************************
void music(uint j)   //带参数的子函数,里面的J等于几就是播放 第几段语音。
{
  dangweitouyin();//档位头音。
    if(yuzhuangtai==0) //检测是不是语音头文件在播放。如果播放就让程序进入里面等一会让头文件播放结束。
       {
  while(!yzhuangtai);//如果检测到语音状态发生了改变那么就跳出来这个死循环。否则就在这原地打转等待。
      }
    if(yuzhuagtai==1) //检测是不是语音头文件播放结束了。如果结束了那么开始播放本段语音。
       {
     if(j==10)   //因为语音的十不是在语音的第十段,那就利用这么两个if语句进行判断是不是档位数据送来10.
       {
      yuyin(28);  //如果来的数据是10,那么就进入把语音的子函数参数修改成 28执行档位十的语音。
    }
     if(j!=10) //又为了避免在档位十的时候送完28的语音参数再过来送10的错误数据,所以在送来不是10的时候才执行1-9数据
     { 
          yuyin(j); //播放语音的第K段。~~~~~~~~~~~~~~~内容是:j ~~~~~~~~~~~~~~~~~
          }
    }


 }[page]
//*********************************************************************************************************************
//*********************************************************************************************************************
//*********************************************************************************************************************

//*********************************************************************************************************************


//*********************************************************************************************************************
//***********************************下面是1-10档位的子函数调用了显示画面和语音*****************************************
//**********************************************************************************************************************
void dangwei(uint k) // 档位1-10的子函数。
 {
   switch(k)
    {
 case 1:  //档位1.
 a=25;//火力的占空比是25.
 break;
    case 2:  //档位2.
 a=50;//火力的占空比是50.
 break;
 case 3:  //档位3
 a=75;//火力的占空比是75.

 break;
 case 4:  //档位4        

 a=100;//火力的占空比是25.
 break;
 case 5:  //档位5
 a=125;//火力的占空比是25.
 break;
 case 6:  //档位6
 a=25;//火力的占空比是25.
 break;
 case 7:  //档位7
 a=25;//火力的占空比是25.
 break;
 case 8: //档位8
 a=25;//火力的占空比是25.
 break;
 case 9:
 a=25;//火力的占空比是25.
 break;
 case 10:
 a=25;//火力的占空比是25.
 break;
 }
 dispdangwei(k);//档位K的画面
 music(k);//档位K的语音。
  } 
//**********************************************************************************************************************
//*************************************************************************************************************************
//******************************************到这里档位定义信息完毕!!*****************************************************
//**********************************************************************************************************************

 

//****************************************************下面是PCA计数器初始化************************************************  
void init_pca(void)//pca计数器初始化函数
{
CMOD=0x00;
CCON=0x00;
CCAP0=0X2; //8位PWM输出,无中断。PWM0
CCAP1=0x2;//8位PWM输出,无中断 。PWM1
CL=0x00;//清零pca计数器
CH=0x00;
CCA1L=pm[0];    //初始化PWM1输出的占空比
CCA1H=pw[0];
CCA0L=pm[0];    //初始化PWM0输出的占空比
CCA0H=pm[0];
CR=1;//运行pca计数器
}
//*************************************************************************************************************************
//*****************************************************************************************************************
//***********************************************************************************************************************
void huanying()
 {
     yuyin(30);//语音的欢迎语。
     init_12864();//初始化液晶。
  write_12864_com(0x80);//设定显示位置是第一行。
  for(i=0;i<16;i++)    //第一行有多少字,汉字占两个位置。标点符号一个。
  {
  write_12864_at(table100[i]); //开始挨个把表中的字一位一位的通过12864的数据发送子程序发送出去。
  delay_50us(1);          //延时一会保证数据有发送完毕。
   }
  write_12864_com(0x90); //设定第二行。
  for(i=0;i<16;i++)
  {
   write_1284_dat(table24[i]);
   delay_50us(1;
  }
  write_12864_com(0x88); //设定第三行
  for(i=0;i<10i++)
  {
   write_12864_dat(table25[i]);
   delay_50us(1);
  }
   write_12864_com(0x98);//设定第四行显示位置。
  for(i=0;i<16;i++)
  {
   write_12864dat(table100[i]);
   delay_50us(1);
  }
//##################################第二幅画面。
     delay_1s(2000);//延时保持2秒钟的第一幅画面。
     init_12864();//初始化液晶。
  write_12864_com(0x80);//设定显示位置是第一行。
  for(i=0;i<14;i++)    //第一行有多少字,汉字占两个位置。标点符号一个。
  {
  write_12864_dat(table11[i]); //开始挨个把表中的字一位一位的通过12864的数据发送子程序发送出去。
  delay_50us(1);          //延时一会保证数据有发送完毕。
   }
  write_12864_com(0x90); //设定第二行。
  for(i=0;i<16;i++)
  {
   write_12864_dat(table13[i]);
   delay_50us(1);
  
  write12864_com(0x88); //设定第三行
  for(i=0;i<16;i++)
  {
   write_12864_dat(table12[i]);
   delay_50us(1);
  }
   write_12864_com(0x98);//设定第四行显示位置。
  for(i=0;i<16;i++)
  {
   write_12864_dat(table14[i]);
   delay_50us(1);
  }

 }
//***********************************************************************************************************************
//*********************************************************************************************************************


void main()
{
P4SW=0x7F; //设置P4为双向IO口。
c=0;//写入未执行过按键操作的标志位  
baohu=1;//先强制打开保护功能,促使PWN彻底关闭,防止上机的那种不可控的频率。让PWM有规律可循。
beiguang=1;//打开背光
yanshi(30);//延时一小会保证已经彻底关闭。
init_pa();//初始化PWM控制器。
m=0;
temp=0;
init_1864();//初始化液晶。
huanying();//开机欢迎语和欢迎画面。
while(1)
 {
     if(pd==0)  //档位加
       {
        yanshi(50);
      if(pd==0)
        {
         m++  //检测火力+按键按了几次。是几次就是几档位、
      if(m==11) //当档位增加到11次以后,就给复位到档位1.防止出现错误。
        {
         m=1;
        }
         dangwei(m); //档位的各种信息。
       while(!pd);
     
      }   
   
      }
                 
   if(px==0) //档位减
       {
        yanshi(50);
      if(px==0)
        { 
         if(m==0)
       {
         m=2;
       }
          m--;  //检测火力-按键按了几次。是几次就是几档位、
      if(m<=0)//当档位增加到0次以后,就关闭所有档位的输出。
        {
         m=1;
        }
         dangwei(m); //档位的各种信息。
       while(!p);
        }
                  }

      if(zd==0)
       {
        yanshi(10);
      if(zd==0)
        {
          b--;
       if(b<=0)
        {
         b=56;
        };
         c=1;
       while(!zd);
        }
     }
  if(zx==0)
       {
        yanshi(10);
      if(zx==0)
        {
          b++;
       if(b>=56)
        {
         b=0;
        };
       while(!zx);
        }
                   }
  
CCAP1L=pwm[a];    //初始化PWM1输出的占空比

CCAP1H=pwm[a];

CCAP0L=pw[b];    //初始化PWM0输出的占空比

CCAP0H=pm[b];

if(c>=1)//检测是不是已经稳定好了PWM。
     {
   baohu=0;//开启PWM输出。
  }
    }
 
}
关键字:51单片机  语音  温度控制 引用地址:51单片机语音+温度控制的源码

上一篇:HMC5883 IIC测试程序
下一篇:keilc51中如何看堆栈的分配情况

推荐阅读最新更新时间:2024-03-16 14:25

基于MSP430的语音与音频压缩/解压缩技术
   引言   采用微控制器 (MCU) 来实施语音记录器比较简单。许多 MCU 均采用集成模数 (A/D) 转换器。扩音器将捕获到的声音提供给放大器,然后再馈送给 A/D 转换器的模拟输入。可将录制的声音存储在闪存或 RAM 等存储器中,按下按钮就能触发 MCU 以播放录制到的声音,其原理是将存储的数据先提供给数模 (D/A) 转换器,然后再提供给音频功率放大器。   利用 MSP430 很容易实现这种语音记录器。MSP430 微控制器利用集成外设来实现片上模拟信号链。此外,MSP430 的 CPU 处理能力非常强大,足以执行录制声音的压缩。   压缩与解压缩算法   举例来说,实现语音记录器的最简单办法就是将 A/D
[单片机]
基于MSP430的<font color='red'>语音</font>与音频压缩/解压缩技术
51单片机】 火焰传感器用法及代码
这里用的是4线,3线的原理也是一样的。 IO口在程序中自定义,下面用的是P3^0 #include regx51.h void main() { while(1) { P2=0xff; //初始化led if(P3_0==0) //传感器检测到火焰信号 P2=0x00; //led全亮 } } 接线: AO:模拟输出信号 DO:数字输出信号 本文只用数字输出信号DO–接P3^0口,Vcc、Gnd分别是电源和接地
[单片机]
【<font color='red'>51单片机</font>】 火焰传感器用法及代码
51单片机的上拉电阻一般多大
1、51单片机的p0口为了实现准3态,采用了oc输出,也就是集电极悬空输出,也有叫图腾柱输出的。这种电路结构,只有下拉能力,高电平输出没有电流,在高电平时表现为高阻态;加上上拉电阻,就会失去高阻态,变成 1、0 两态。 2、p0口上拉电阻的选择,应遵循基本的电路设计原则,不能盲目套用,要看后级情况而定: 例如,后级驱动的是1只npn三极管,这个三极管的放大倍数( )=100倍,三极管的负载电流(ic)要求100ma,当电源为5v时: a、三极管的ib=ic/ =1ma; b、上拉电阻大约=r=5v/ib=5k ; c、为了使三极管注入ib后就迅速进入导通(开)状态,r应再小一些,如4k3; 3、由上面计算可见,三极管的负载大小、放大
[单片机]
用户端设备的语音分组设计与语音网关
    话音分组(VoP,Voice-over-Packet)服务与设备的诱人之处主要表现在三个方面:节约成本(由于传输效率高),简便(话音、数据在一个网络上传输)与增值服务(远优于电路交换网络)。传统的话音呼叫,是通过拨号接通公用交换电话网(PSTN),形成一条专用的通信“透明信道”,在通话期间,双方各占64Kb/s带宽。这种方式十分可靠,通话质量近乎无可挑剔,但在只有一人讲话及通话间隔期会造成容量浪费。而包交换网络则充分利用了数据传输高效的特点,与电路交换网络相比,可节省数倍的带宽。     正因如此,VoP市场呈现出迅速扩展之势,其全球营业额将从2000年的20亿美元,上升到2004年的880亿美元,年综合增长
[嵌入式]
51单片机驱动直流电机,测试可用,可调速
单片机源程序如下: #include REG52.H //包含51单片机相关的头文件 #define uchar unsigned char #define uint unsigned int /*================== 对各个输出端口的定义 对占空比的端口定义 ====================*/ sbit IN4=P1^3; //定义左轮前进 sbit IN3=P1^2; //定义左轮后退 sbit IN1=P1^0; //定义右轮前进 sbit IN2=P1^1;
[单片机]
C51单片机指针实例
#pragma src #include reg51.H f(){} f1(){} f2(){} main() { { int x; int *px; //下面这些表示虽然很烦,但是生成的代码却及其简洁: //将 xdata 型指针 0x4000 赋给 px px=(int xdata *)0x4000; //表示从 xdata 0x4000处取一个 char 给x x=*((char xdata *)0x4000); // 表示从 code 0x4000处取一个 word 作为 xdata 型的指针 给 px px=*((int xdata * xdata *)0x4000); //表示从 code 0x4000处取一个 wor
[单片机]
托尼把数字音乐播放器的想法带到苹果
     现今任何新系统都是由许许多多的人完成的。   Tony Fadell这位在工作间里穿着T恤和毛边牛仔短裤的General Magic(一家互联网语音技术公司)前资深工程师,如今已成长为创新和常居于幕后的移动系统架构的海报男孩。   作为一个从大学出来没多久的男孩,Tony Fadell努力使其供职的初创公司那笨拙、宣传过度的PDA成为值得像苹果和索尼这样著名的合作伙伴付钞的产品。当那家初创公司倒闭时,Fadell继续为飞利浦公司创造耐用的手持设备。   一天,他把自己有关数字音乐播放器的想法带到了苹果,接下来的就是iPod的历史。Fadell和苹果没有发明MP3播放器,他们甚至没有发明可以上网的智能手机或是多
[焦点新闻]
基于51单片机的LED显示屏控制电路设计
LED显示屏广泛应用于工矿企业、学校、商场、店铺、公共场所等进行图文显示,广告宣传,信息发布。本文设计一种由4个16×16点阵LED模块组成的显示屏,由单片机作控制器,平滑移动显示任意多个文字或图形符号,本电路可级联扩展实现由任意多个16×16点阵LED模块组成的显示屏。 1 电路设计 控制电路由AT89C51单片机作控制器,显示屏由4个16×16点阵LED模块组成,每个16×16点阵LED模块由4个8×8点阵LED模块组成,用户可根据需要扩展增加任意多个16×16点阵LED模块。8×8点阵LED模块结构如图1所示,共8行8列,每个发光二极管放置在行线和列线的交叉点上,共64个发光二极管。当某一列为高电平,某一行为低电平时,
[单片机]
基于<font color='red'>51单片机</font>的LED显示屏控制电路设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved