Ds3231+12864液晶显示AT89C51带温度功能的时钟程序

发布者:zukeq2009最新更新时间:2017-09-02 来源: elecfans关键字:Ds3231  液晶显示  AT89C51  时钟程序 手机看文章 扫描二维码
随时随地手机看文章

    Ds3231+12864液晶显示AT89C51带温度功能的时钟程序。

Ds3231+12864液晶显示AT89C51带温度功能的时钟程序

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit LCD_RS=P2^6;

sbit LCD_RW=P2^5;

sbit LCD_EN=P2^4;

sbit LCD_PSB=P2^3;

sbit DQ=P3^7;                              //18b20

sbit SDA=P1^4;                              //ds32321            //模拟I2C数据传送位SDA        

sbit SCL=P1^3;                                   //模拟I2C时钟控制位SCL

//

////

////

////

////

sbit K1=P3^2;                       

sbit K2=P3^3;

sbit K3=P3^4;

sbit K4=P3^5;

//定义变量               

uchar numbr[10]="0123456789";                      //字模

uchar dis4[]="   ";                                                            //          第四行显示   自己添加

uchar t[]="  .   ℃" ;                                            //18b20

uint sdata,xiaoshu1,xiaoshu2;                                 //整数、小数1位、小数2位

bit fg=1;                                  //温度正负标志

uchar tempL=0,tempH=0;                                                                // 变量         

uchar year,month,date,hour,min,sec;                                 //    ds3231

uchar a[]="2011年22月33日";

uchar b[]="11时22分33秒";

                                ///函数

/

    

                                                                                             

void write_cmd(uchar cmd)

{

         LCD_RS=0;

         LCD_RW=0;

         LCD_EN=0;

         P0=cmd;

         delay1ms(5);

         LCD_EN=1;

         delay1ms(5);

         LCD_EN=0;

}

                                                                                   

void lcd_pos(uchar X, uchar Y)

{

         ucharpos;

         if(X== 0)

         {

                   X= 0x80;

         }

         elseif(X == 1)

         {

                   X= 0x90;

         }

         elseif(X == 2)

         {

                   X= 0x88;

         }

         elseif(X == 3)

         {

                   X= 0x98;

         }

         pos= X + Y;

         write_cmd(pos);                                                     //显示地址

}

                                                                                                               

                                                                                                               

void write_dat(uchar dat)

{

         LCD_RS=1;

         LCD_RW=0;

         LCD_EN=0;

         P0=dat;

         delay1ms(5);

         LCD_EN=1;

         delay1ms(5);

         LCD_EN=0;

}

                                                                                                                         

void lcd_init()

{        uinti;

         LCD_PSB=1;                                                                                //并口方式

         write_cmd(0x30);                                                            //基本操作指令

         delay1ms(5);

         write_cmd(0x0c);                                                            //打开显示,光标关闭

         delay1ms(5);

         write_cmd(0x01);                                                            //清除LCD显示类容

         delay1ms(5);

         lcd_pos(3,0);

                                     i=0;

                                     while(dis4[ i]!='\0')

                                               {

                                               delay1ms(1);

                                               write_dat(dis4);

                                               delay1ms(1);

                                               i++;

                                               }

}

void Init_DS18B20(void)                                                                                              //初始化

{

uchar x=0;

DQ=1; //DQ先置高

delay(8); //稍延时

DQ=0; //发送复位脉冲

delay(80); //延时(>480us)

DQ=1; //拉高数据线

delay(5); //等待(15~60us)

x=DQ; //用X的值来判断初始化有没有成功,18B20存在的话X=0,否则X=1

delay(20);

}

//

ReadOneChar(void)  //主机数据线先从高拉至低电平1us以上,再使数据线升为高电平,从而产生读信号

{

unsigned char i=0; //每个读周期最短的持续时间为60us,各个读周期之间必须有1us以上的高电平恢复期

unsigned char dat=0;

for (i=8;i>0;i--) //一个字节有8位

{

DQ=1;

delay(1);

DQ=0;

dat>>=1;

DQ=1;

if(DQ)

dat|=0x80;

delay(4);

}

return(dat);

}

//

void WriteOneChar(unsigned char dat)

{

unsigned char i=0; //数据线从高电平拉至低电平,产生写起始信号。15us之内将所需写的位送到数据线上,

for(i=8;i>0;i--) //在15~60us之间对数据线进行采样,如果是高电平就写1,低写0发生。

  {

  DQ=0; //在开始另一个写周期前必须有1us以上的高电平恢复期。

  DQ=dat&0x01;

  delay(5);

  DQ=1;

  dat>>=1;

  }

delay(4);

}

void ReadTemperature(void)                                                                                      //读温度值(低位放tempL;高位放tempH;)//

         {

          Init_DS18B20(); //初始化

          WriteOneChar(0xcc); //跳过读序列号的操作

          WriteOneChar(0x44); //启动温度转换

          delay(125); //转换需要一点时间,延时

          Init_DS18B20(); //初始化

          WriteOneChar(0xcc); //跳过读序列号的操作

          WriteOneChar(0xbe); //读温度寄存器(头两个值分别为温度的低位和高位)

          tempL=ReadOneChar(); //读出温度的低位LSB

          tempH=ReadOneChar(); //读出温度的高位MSB

                   if(tempH>0x7f)      //最高位为1时温度是负

                   {

                    tempL=~tempL;         //补码转换,取反加一

                    tempH=~tempH+1;      

                    fg=0;     //读取温度为负时fg=0

      }

                   sdata= tempL/16+tempH*16;      //整数部分

                   xiaoshu1= (tempL&0x0f)*10/16; //小数第一位

                   xiaoshu2= (tempL&0x0f)*100/16;//小数第二位

                   t[0]=numbr[sdata/10];

                   t[1]=numbr[sdata];

                   t[3]=numbr[xiaoshu1];

                   t[4]=numbr[xiaoshu2];

         }

#define ADDRTW          0xD0    //器件写地址

#define ADDRTD          0xD1 //器件读地址

#define DS3231_SEC      0x00   //秒

#define DS3231_MIN      0x01   //分

#define DS3231_HOUR     0x02   //时

#define DS3231_DAY      0x03   //星期

#define DS3231_DATE     0x04   //日

#define DS3231_MONTH    0x05   //月

#define DS3231_YEAR     0x06   //年

//闹铃1            

#define DS3231_Al1SEC   0x07   //秒

#define DS3231_AL1MIN   0x08   //分

#define DS3231_AL1HOUR  0x09   //时

#define DS3231_AL1DAY   0x0A   //星期/日

//闹铃2

#define DS3231_AL2MIN   0x0b   //分

#define DS3231_AL2HOUR  0x0c   //时

#define DS3231_AL2DAY   0x0d   //星期/日

#define DS3231_CONTROL  0x0e   //控制寄存器

#define DS3231_STATUS   0x0f   //状态寄存器

bit ack;

uchar BCD2HEX(uchar val)           //BCD转换为Byte           

{        uchari;

   i= val&0x0f;

   val >>= 4;

   val &= 0x0f;

   val *= 10;

    i+= val;

   return i;

}

uchar HEX2BCD(uchar val)//B码转换为BCD码

         {

         uchari,j,k;

           i=val/10;

           j=val;

           k=j+(i<<4);

           return k;

         }

void Start()      

{

   SDA=1;                  //发送起始条件的数据信号

   delay(1);

   SCL=1;

   delay(5);             //起始条件建立时间大于4.7us,延时

     SDA=0;                  //发送起始信号

   delay(5);             // 起始条件锁定时间大于4μs

   SCL=0;                  //钳住I2C总线,准备发送或接收数据

   delay(2);

}

void Stop()

{

   SDA=0;                  //发送结束条件的数据信号

   delay(1);             //发送结束条件的时钟信号

   SCL=1;                  //结束条件建立时间大于4us

    delay(5);

   SDA=1;                  //发送I2C总线结束信号

   delay(4);

}

void SendByte(uchar Dat)

{

uchar BitCnt;

   for(BitCnt=0;BitCnt<8;BitCnt++)         //要传送的数据长度为8位

    {

       if((Dat<

           SDA=1;                          //判断发送位

       else

           SDA=0;               

         delay(1);

         SCL=1;                            //置时钟线为高,通知被控器开始接收数据位

         delay(5);                       //保证时钟高电平周期大于4μs   

         SCL=0;

    }

   delay(2);

   SDA=1;                                 //8位发送完后释放数据线,准备接收应答位

   delay(2);  

   SCL=1;

    delay(3);

   if(SDA==1)

       ack=0;   

   else

       ack=1;                             //判断是否接收到应答信号

   SCL=0;

   delay(2);

}

uchar RcvByte()                                                                                  //功能:     用来接收从器件传来的数据,并判断总线错误(不发应答信号),发完后请用应答函数应答从机。

{

uchar retc;

uchar BitCnt;

  retc=0;

  SDA=1;                          //置数据线为输入方式

  for(BitCnt=0;BitCnt<8;BitCnt++)

   {

       delay(1);  

       SCL=0;                      //置时钟线为低,准备接收数据位

       delay(5);                 //时钟低电平周期大于4.7μs

       SCL=1;                      //置时钟线为高使数据线上数据有效

       delay(3);

       retc=retc<<1;

       if(SDA==1)

           retc=retc+1;            //读数据位,接收的数据位放入retc中

       delay(2);

   }

  SCL=0;

  delay(2);

  return(retc);

}

void I2CACK(bit a)                       // 功能:       主控器进行应答信号(可以是应答或非应答信号,由位参数a决定)

{

   if(a==0)

       SDA=0;              //在此发出应答或非应答信号

   else

       SDA=1;

   delay(3);     

   SCL=1;

   delay(5);             //时钟低电平周期大于4μs

   SCL=0;                  //清时钟线,钳住I2C总线以便继续接收

   delay(2);   

}

uchar I2CRead()                                                                                  

{

uchar read_data;

         Start();

   SendByte(ADDRTD);                                             

   if(ack==0)

    {

return(0);

    }

   read_data = RcvByte();

   I2CACK(1);

   Stop();

   return read_data;

}

uchar I2CReadAdd(uchar addr)                                                      

         {

             Start();

             SendByte(ADDRTW);                           

             if(ack==0)

             {        

           return(0);

             }

             SendByte(addr);

             if(ack==0)

             {        

           return(0);

             }

             return(I2CRead());

         }

void Readtime()                                                                                            

         {

          uchar temp;

          temp=I2CReadAdd(DS3231_SEC);//秒

          sec=BCD2HEX(temp);

          temp=I2CReadAdd(DS3231_MIN);//分

          min=BCD2HEX(temp);

          temp=I2CReadAdd(DS3231_HOUR);  //时                  

          hour=BCD2HEX(temp);

          temp=I2CReadAdd(DS3231_DATE);  //日

          date=BCD2HEX(temp);

          temp=I2CReadAdd(DS3231_MONTH); //月

          month=BCD2HEX(temp);

          temp=I2CReadAdd(DS3231_YEAR);  //年

          year=BCD2HEX(temp);

          }

void InitDS3231()                                                                                                            //ds3231初始化

         {SCL=1;

          delay(5);

          SDA=1;

          delay(5);

         }

void TimeDisplay(uchar Dhour,ucharDmin,uchar Dsec)                                     //时分秒数组赋值

         {        b[0]=numbr[Dhour / 10];        // 时十位

             b[1]=numbr[Dhour % 10];        // 时个位

             b[4]=numbr[Dmin / 10];         // 分十位

             b[5]=numbr[Dmin % 10];         // 分个位

             b[8]=numbr[Dsec / 10];         // 秒十位

             b[9]=numbr[Dsec % 10];         // 秒个位

         }

void DateDisplay(uchar Dyear,ucharDmonth,uchar Dday)                       //年月天数组赋值   

         {        a[2]=numbr[Dyear / 10];        // 年十位

             a[3]=numbr[Dyear % 10];        // 年个位

             a[6]=numbr[Dmonth / 10];       // 月十位

             a[7]=numbr[Dmonth % 10];       // 月个位

             a[10]=numbr[Dday / 10];         // 天十位

             a[11]=numbr[Dday % 10];         // 天个位                                   

         }

void Start_I2C()

{

   SDA=1;                  //发送起始条件的数据信号

   delay(1);

   SCL=1;

   delay(5);             //起始条件建立时间大于4.7us,延时

   SDA=0;                  //发送起始信号

   delay(5);             // 起始条件锁定时间大于4μs

   SCL=0;                  //钳住I2C总线,准备发送或接收数据

   delay(2);

}

void Stop_I2C()

{

    SDA=0;                  //发送结束条件的数据信号

   delay(1);             //发送结束条件的时钟信号

   SCL=1;                  //结束条件建立时间大于4us

   delay(5);

   SDA=1;                  //发送I2C总线结束信号

   delay(4);

}

uchar write_byte(uchar addr, ucharwrite_data)

{

   Start_I2C();

   SendByte(ADDRTW);                ///////////////

   if (ack == 0)

       return 0;

   SendByte(addr);   

   if (ack == 0)

       return 0;

   SendByte(write_data);

   if (ack == 0)

       return 0;

   Stop_I2C();

    delay1ms(10);      

   return 1;

}

void ModifyTime(uchar yea,uchar mon,ucharda,uchar hou,uchar min,uchar sec)

{     uchar temp=0;

   temp=HEX2BCD(yea);

   write_byte(DS3231_YEAR,temp);   //修改年

   temp=HEX2BCD(mon);

   write_byte(DS3231_MONTH,temp);  //修改月

   temp=HEX2BCD(da);                                                                                     /////////////////////

   write_byte(DS3231_DATE,temp);   //修改日

   temp=HEX2BCD(hou);

   write_byte(DS3231_HOUR,temp);   //修改时

   temp=HEX2BCD(min);

   write_byte(DS3231_MIN,temp); //修改分

   temp=HEX2BCD(sec);

   write_byte(DS3231_SEC,temp); //修改秒

}

void xianshi(void)

   {

                            {uint i;

                   TimeDisplay(hour,min,sec);                                                                                         

                                     lcd_pos(1,1);                         //时间

                                     i=0;

                                     while(b[ i]!='\0')

                                               {

                                               delay1ms(1);

                                               write_dat(b);

                                               delay1ms(1);

                                               i++;

                                               }

                                     DateDisplay(year,month,date);        //显示日期                                                                                                                                                                   

                                     delay1ms(1);

                                     lcd_pos(0,0);

                                     i=0;

                                     while(a[ i]!='\0')

                                               {

                                               delay1ms(1);

                                               write_dat(a);

                                               delay1ms(1);

                                               i++;

                                               }

                                     ReadTemperature();                                                                //显示温度

                                     delay1ms(1);

                                     lcd_pos(2,1);

                                     delay1ms(1);

                                     i=0;

                                     while(t[ i]!='\0')

                                                        {

                                                        delay1ms(1);

                                                        write_dat(t);

                                                        delay1ms(2);

                                                        i++;

                                                        }

                            }

}

void shuaxin(void)

         {                 uint i;

                 TimeDisplay(hour,min,sec);                                                                                         

                                     lcd_pos(1,1);                         //时间

                                     i=0;

                                     while(b[ i]!='\0')

                                               {

                                               delay1ms(1);

                                               write_dat(b);

                                               delay1ms(1);

                                               i++;

                                               }

                                     DateDisplay(year,month,date);        //显示日期                                                                                                                                                                   

                                     delay1ms(1);

                                     lcd_pos(0,0);

                                     i=0;

                                     while(a[ i]!='\0')

                                               {

                                               delay1ms(1);

                                               write_dat(a);

                                               delay1ms(1);

                                               i++;

                                               }

         }

void sotp(void)                                                                                                                 

{

         uinti;                     

while(1)

          {

         duan1:                if(K1==0)

                            {

                            delay1ms(100);

                            if(K1==0)

                                     {

                                     Readtime();

                                     shuaxin();

                                     i=0;

                            gotoduan2;

                                     }

                            }

                            else

                            {gotoduan5;}

         duan2:               if(K2==0)

                            {

                                     delay1ms(100);

                                     if(K2==0)

                                     {

                                     i++;

                                     if(i>6){i=0;}

                                     shuaxin();

                                     }        

                            }

                            switch(i)

                             {

                                     case 0:  if(K3==0){delay1ms(100);if(K3==0){year=year+1;}                 if(year>=100){year=0;}                                                             shuaxin();}break;

                                      case 1:  if(K3==0){delay1ms(100);if(K3==0){month=month+1;}        if(month>=13){month=0;}                                                                shuaxin();}break;

                                     case 2:  if(K3==0){delay1ms(100);if(K3==0){date=date+1;}                if(date>=32){date=0;}                                                              shuaxin();}break;

                                     case 3:  if(K3==0){delay1ms(100);if(K3==0){hour=hour+1;}                if(hour>=25){hour=0;}                                                              shuaxin();}break;

                                     case 4:  if(K3==0){delay1ms(100);if(K3==0){min=min+1;}                 if(min>=61){min=0;}                                                                        shuaxin();}break;

                                     case 5:  if(K3==0){delay1ms(100);if(K3==0){sec=sec+1;}                   if(sec>=61){sec=0;}                                                                shuaxin();} break;

                             }

         duan4:               if(K4==0)

                            {

                            delay1ms(100);

                            if(K4==0)

                            {

                            ModifyTime(year,month,date,hour,min,sec);

                            gotoduan5;                                 ///////////////////////////

                            }        

                   }

                          else

                            {gotoduan2;}

duan5:      Readtime();

                    xianshi();

                   }

         }

main()                                              

{

         lcd_init();

         delay1ms(5);

         InitDS3231();

         delay1ms(5);

         delay1ms(5);

         sotp();      

}


关键字:Ds3231  液晶显示  AT89C51  时钟程序 引用地址:Ds3231+12864液晶显示AT89C51带温度功能的时钟程序

上一篇:51单片机自动打铃C语言程序
下一篇:51单片机智能温控器C语言源程序

推荐阅读最新更新时间:2024-03-16 15:35

基于AT89C51单片机的LCD160音乐盒设计
一.系统概述 系统使用的模块有AT89C51单片机+LCD1602+按键+蜂鸣器。 系统内使用AT89C51单片机作为主控,使用LCD1602显示屏显示音乐信息,通过按键就能控制音乐盒的歌曲切换以及歌曲的开始和暂停,系统在运行后需要点击开机键才能开始工作。当点击播放键后以蜂鸣器为主体的播放装置就会开始播放歌曲。 二.仿真概述 1.通过LCD1602显示屏显示歌曲信息,其中包括歌曲序号和歌曲时间。 2.通过左侧的按键控制歌曲,其中包括上一首、下一首、播放暂停、开关机。 3.通过播放装置播放相应的歌曲。 三.程序设计 使用Keil 51进行程序设计,打开Proteus时程序是默认烧录的状态,如果没有烧录点击AT89
[单片机]
基于<font color='red'>AT89C51</font>单片机的LCD160音乐盒设计
AT89C51最小系统原理电路图
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。 对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统。但是一般我们在设计中总是喜欢把按键输入、显示输出等加到上述电路中,成为小系统。 单片机主要擅长系统控制,而不适合做复杂的数据处理,在设计单片机最小系统时通常选用AT89C5l、AT89C52、AT89S51、AT89S52(S系列芯片支持ISP功能)等型号的8位DIP-40封装的单片机作为MCU,一个典型的单片机最小系统一般由时钟电路、复位电路、键盘电路、显示电路等部分组成,有时也外扩有片外RAM和ROM以及外部扩展接口等电路。图1为单片机最小系统结构框图。 1、系
[单片机]
<font color='red'>AT89C51</font>最小系统原理电路图
液晶显示器的分类
常见的液晶显示器分为四种:    1.TN-LCD(Twisted Nematic-LCD,扭曲向列LCD)   2.STN-LCD(Super TN-LCD,超扭曲向列LCD)    3.DSTN-LCD(Double layer STN-LCD,双层超扭曲向列LCD) 4.TFT-LCD(Thin Film Transistor-LCD,薄膜晶体管LCD) 从结构上看TN-LCD与STN-LCD似乎差别不大,但实质上它们的工作原理是完全不同的:   ①在TN液晶盒中扭曲角为90°;在STN液晶盒中扭曲角为270°或附近值;    ②在TN液晶盒中,起偏镜的偏光轴与上基片表面液晶分子长轴平行,检偏镜的偏光轴与下基片表面液晶分子
[模拟电子]
51单片机普通定时器时钟参考程序
/* 1、按键可以调整当时时间 2、按键可以调节定时时间 *8位数码管显示 时间格式格式 12-08-00 标示12点08分00秒 S1 用于小时 加1操作 S2 用于小时减1操作 S3 用于分钟 加1操作 S4 用于分钟减1操作 */ #include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 sbit KEY1=P3^0; //定义端口参数 sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; co de unsigned char tab ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
[单片机]
内置SED1520控制驱动器的图形液晶显示模块MGLS-12032在智能测试仪中的应用
    摘要: 文章介绍了内置SED1520图形液晶显示模块MGLS-12032的特点和工作原理,给出了MGLS-12032与8031单片机的接口电路,介绍了SED1520的指令集,并结合具体实例给出了显示模块的相关程序。     关键词: 图形显示 液晶 单片机 SED1520 MGLS-12032 1 SED1520功能特点 SED1520是集行、列驱动器和控制器于一体的液晶显示控制驱动器,可广泛用于小规模液晶显示模块,例如香港精电公司的MGLS-12032、MGLS10032等。 SED1520液晶显示驱动器具有以下特性: ●内置显示RAM区,RAM容量为2560位。RAM中的1位数据控制
[应用]
基于AT89C51单片机16×16 LED汉字滚动显示屏的设计
O 引言 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的用于公交汽车、商店、体育场馆、车站、学校、银行、高速公路等公共场所的信息发布和广告宣传。LED显示屏发展较快,本文讲述了基于 AT89C51单片机 16×16LED汉字点阵滚动显示的基本原理、硬件组成与设计、程序编写与调试、Proteus软件仿真等基本环节和相关技术。 1 硬件电路组成及工作原理 本产品采用以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HCl54)、16×16LED点阵5部分组
[单片机]
基于<font color='red'>AT89C51</font>单片机16×16 LED汉字滚动显示屏的设计
51单片机GPS+sim800c GSM定位短信LCD1602液晶显示程序
sim800c+GPS芯片 一个练手的小设计,有点丑哈。附上程序和原理PcB图。 第一次发帖,做的不好烦请原谅哈 按键功能一个按键报警,蜂鸣器响,另外一个按键发送短信到指定的手机上,手机号码程序里面写好就行了 单片机源程序如下: #include common.h #include uart.h #include gps.h #include gsm.h #include lcd.h #define GPS_STR_LEN 48 uchar ess_inc; //char xdata GPS_SEND_STR ; sbit key = P1^3; sbit key1 = P1^4; sbit
[单片机]
51单片机GPS+sim800c GSM定位短信LCD1602<font color='red'>液晶显示</font><font color='red'>程序</font>
stm8 软件模拟IIC驱动PCF8563T,NOKIA5110液晶显示
调试stm8硬件IIC,弄了几天,搞得人头大,一直程序就是卡在 while((I2C_SR1&0x02))这里,数据手册和网上的各种帖子基本都看了,程序都试了,ARF位也设置了,还是调试不通,最后没办法只能使用软件模拟IIC了。 这次使用软件模拟IIC驱动PCF8563T,这个时钟芯片。其实软件模拟也不难。 我们就来直接看代码吧。具体的实验现象,没有图片,现在硬件也拆了,但是程序都是验证过了的。通过一个NOKIA5110液晶屏显示出来时间数据。 #include IOSTM8S105K4.h #define u16 unsigned int #define u8 unsigned char u8 i;
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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