128*64液晶采用"单片机内部显示缓冲"的程序

发布者:Volare最新更新时间:2016-09-25 来源: eefocus关键字:128*64液晶  单片机  内部显示缓冲 手机看文章 扫描二维码
随时随地手机看文章
/* 

 *   
 * 文件名称: 
 * 摘 要   : 读写lcd显示缓冲区 
 * 
 * 当前版本:v1.0 
 * 作 者   :laoliu2008 
 * 完成日期:2008年4月12日 

*/ 

#i nclude  
#i nclude <全局变量.h> 


unsigned  char  xx,yy;//全局插入点坐标 

extern const unsigned char character_tab[][17]; //显示数据库 
extern const unsigned char Chinese_characters_tab[][34];//显示数据库 

unsigned char lcd_bit_buffer[8][128];//显示缓冲区 

//************************************ 
//            lcd  初始化 
//  7  ___________________________     
//    |             |             |      
//    |             |             |               
// /|\|             |             |     
//  | |             |             |        
//  | |             |             |       
//  | |             |             |           
//  Y |_____________|_____________|                    
//  |                                 
//  0 ----------->  数学坐标:x  127     
// 
// 文字坐标: 0 _____ 
//            |     |         
//            |     |         
//            |-----| 
//            |     | 
//            |_____| 
// 可以在任意点显示汉字字符  
// 首先调用 w_xx_yy();写入要显示的字符在屏幕位置坐标 (文字坐标为左上角) 调用dis_buffer();显示一个汉字或英文 
// dis_lcd_buffer() 显示字符串  Y地址自动右移8 或16  显示字符串可以自动保持一行   
// 坐标自动循环  例如你在右下角x=119 y=7 的地方显示一个汉字  这个汉字的3/4将会出现在屏幕的左上角 
// 字库 16*16 英文 16*8 文字的坐标参考点选则左上角  即所说的在x=119 y=7 所说的是字符的左上角坐标 
//************************************ 
//*********************************** 
//   初始化缓冲区 
//*********************************** 
void lcd_buffer_ini() 

unsigned char x,y; 
unsigned char temp; 


 for(y=8;y>0;y--)//清零缓冲区 
   for(x=128;x>0;x--)    
        lcd_bit_buffer[y-1][x-1]=0;   

 xx=0; 
 yy=0;   
  

//******************************* 
//     显示输出 
//******************************* 
void  dis_out_lcd() 


unsigned char x0,y0; 
unsigned char  temp; 
 for(y0=8;y0>0;y0--) 
   {     
       w_lcd_address(y0-1,0); 
      for(x0=128;x0>0;x0--)  
    {  
   
      w_lcd_data(lcd_bit_buffer[y0-1][x0-1]);//调用显示函数 
 } 
   } 


  
//******************************** 
//      到  xx yy 写一点  
//******************************** 
unsigned char wb_lcd_bit_buffer() 

unsigned char temp; 
unsigned char y1,y2; 
//   xx  yy   

  y1=yy%8; // 0-7 bie 
  y2=yy>>3; //0-7  行 
  temp=lcd_bit_buffer[y2][xx]; 
  temp|=(1<   lcd_bit_buffer[y2][xx]=temp; 
}   

//******************************** 
//     到  xx yy  擦一点  
//******************************** 
unsigned char n_wb_lcd_bit_buffer() 

unsigned char temp; 
unsigned char y1,y2; 
//   xx  yy 
if((yy>63)) 
   return 0; 
y1=yy%8; // 0-7 bie 
y2=yy>>3; //0-7  行 
  temp=lcd_bit_buffer[y2][xx]; 
  temp&=~(1<   lcd_bit_buffer[y2][xx]=temp; 


//******************************** 
//       写显示地址  xx yy      
//******************************** 
void w_xx_yy(unsigned char x,unsigned char y) 

xx=x%128; 
yy=y%64; 


//*********************************** 
//  取反一个点 
//*********************************** 
void cpl_dian() 


unsigned char temp; 
unsigned char y1,y2; 
//   xx  yy   

  y1=yy%8; // 0-7 bie 
  y2=yy>>3; //0-7  行 
  temp=lcd_bit_buffer[y2][xx]; 
  temp^=(1<   lcd_bit_buffer[y2][xx]=temp; 


//******************************* 
// 取反一个 英文字符 
//******************************* 
void  cpl_asc() 

unsigned char  i,j; 
unsigned char  x_x,y_y; 
unsigned char temp_data,y; 

unsigned char temp; 
unsigned char y1,y2; 
x_x=xx; 
y=y_y=yy; //保存 y轴 

    i=8;//显示  字模 8*16 
   while(i--) 
      { 
   
   yy=y; 
   //------------写一个字节---------------------------  
  for(j=8;j>0;j--)    
    {    
 y1=yy%8; // 0-7 bie 
         y2=yy>>3; //0-7  行 
  
         temp=lcd_bit_buffer[y2][xx];//写一个点 不调用函数减少调用浪费的系统时间 
         temp^=(1<          lcd_bit_buffer[y2][xx]=temp; 
    
 //yy=(yy+64-1)%64;//修正y地址 
 yy=(yy+63)%64;//修正y地址 
   } 
//------------------------------------------------- 
 xx=(xx+1)%128;  
  
 }   
  
y=yy;//显示下半个字 
  
xx=x_x; //写x_x到 xx 
   i=8;//显示 字模 8*16 
   while(i--) 
     { 
   
    yy=y; 
    //------------写一个字节--------------------------- 
  for(j=8;j>0;j--)    
    {    
 y1=yy%8; // 0-7 bie 
         y2=yy>>3; //0-7  行 
  
         temp=lcd_bit_buffer[y2][xx]; 
         temp^=(1<          lcd_bit_buffer[y2][xx]=temp; 
  
// yy=(yy+64-1)%64;//修正y地址 
 yy=(yy+63)%64;//修正y地址 
    } 
//------------------------------------------------- 
 xx=(xx+1)%128;    
 }     
yy=y_y; // 恢复原y轴 



//******************************** 
//     显示一个  英文字符   
//******************************** 
void dis_char_buffer(const unsigned char *sp) 

unsigned char  i,j; 
unsigned char  x_x,y_y; 
unsigned char temp_data,y; 

unsigned char temp; 
unsigned char y1,y2; 
x_x=xx; 
y=y_y=yy; //保存 y轴 

    i=8;//显示  字模 8*16 
   while(i--) 
      { 
   temp_data=*sp++; 
   yy=y; 
   //------------写一个字节---------------------------  
  for(j=8;j>0;j--)    
    {    
y1=yy%8; // 0-7 bie 
            y2=yy>>3; //0-7  行  
    temp=lcd_bit_buffer[y2][xx]; 
if(temp_data&0x80)//写点  
            temp|=(1<              
else    
            temp&=~(1<  lcd_bit_buffer[y2][xx]=temp;     
  temp_data<<=1;    
  yy=(yy+64-1)%64;//修正y地址 
   } 
//------------------------------------------------- 
 xx=(xx+1)%128;  
  
 }   
  
y=yy;//显示下半个字 
  
xx=x_x; //写x_x到 xx 
   i=8;//显示 字模 8*16 
   while(i--) 
     { 
   temp_data=*sp++; 
    yy=y; 
    //------------写一个字节--------------------------- 
  for(j=8;j>0;j--)    
    {    
y1=yy%8; // 0-7 bie 
            y2=yy>>3; //0-7  行  
    temp=lcd_bit_buffer[y2][xx]; 
if(temp_data&0x80)//写点  
            temp|=(1<              
else    
            temp&=~(1<  lcd_bit_buffer[y2][xx]=temp;    
  temp_data<<=1;    
  yy=(yy+64-1)%64;//修正y地址 
   } 
//------------------------------------------------- 
 xx=(xx+1)%128;    
 }     
yy=y_y; // 恢复原y轴 
   

//******************************** 
//     显示一个  汉字 
//******************************** 
void dis_hz_buffer(const unsigned char *sp) 

unsigned char  i,j; 
unsigned char  x_x,y_y; 
unsigned char temp_data,y; 

unsigned char temp; 
unsigned char y1,y2; 
x_x=xx; 
y=y_y=yy; //保存 y轴 

    i=16;//显示  字模 8*16 
   while(i--) 
      { 
   temp_data=*sp++; 
   yy=y; 
   //------------写一个字节---------------------------  
  for(j=8;j>0;j--)    
    {    
 y1=yy%8; // 0-7 bie 

         y2=yy>>3; //0-7  行  
    temp=lcd_bit_buffer[y2][xx]; 
 if(temp_data&0x80) 
            temp|=(1<  else     
            temp&=~(1<  lcd_bit_buffer[y2][xx]=temp;     
  temp_data<<=1;    
  yy=(yy+64-1)%64;//修正y地址 
   } 
//------------------------------------------------- 
 xx=(xx+1)%128;    
 }   
  
y=yy;//显示下半个字 
  
xx=x_x; //写x_x到 xx 
   i=16;//显示 字模 16*16 
   while(i--) 
     { 
   temp_data=*sp++; 
    yy=y; 
    //------------写一个字节--------------------------- 
  for(j=8;j>0;j--)    
    {    
y1=yy%8; // 0-7 bie 
            y2=yy>>3; //0-7  行  
    temp=lcd_bit_buffer[y2][xx]; 
if(temp_data&0x80)//写点  
            temp|=(1< else    
            temp&=~(1<  lcd_bit_buffer[y2][xx]=temp;    
  temp_data<<=1;    
  yy=(yy+64-1)%64;//修正y地址 
   } 
//------------------------------------------------- 
 xx=(xx+1)%128;    
 }     
yy=y_y; // 恢复原y轴 

//********************************* 
//      显示一个汉字 字符  
//      包含自动查字库 
//********************************* 
void dis_buffer(unsigned int data) 

 unsigned char temp,data_temp; 
 unsigned char temp_h,temp_l; 
 unsigned char a_temp; 
 unsigned char i;  


 if((data>>8)>128) 
   { 
    //汉字 
  
   i=0; 
   temp_h=( unsigned char)(data>>8); 
   temp_l=( unsigned char)(data&0x00ff); 
  while(1) 
    { 
 WDR(); 
if((Chinese_characters_tab[i][0]==0xff)&&(Chinese_characters_tab[i][1]==0xff))//查找失败 失败显示黑色方块          
 break; 

     if((Chinese_characters_tab[i][0]==temp_h)&&(Chinese_characters_tab[i][1]==temp_l))//查找成功 
         break; 
  i++; 
   } 
    
   dis_hz_buffer(&Chinese_characters_tab[i][2]); 
   
   } 
 else //英文 
  { 
      i=0; 
  data_temp=(unsigned char)data; 
  while(1) //查字库 
   { 
     WDR(); 
     if(character_tab[i][0]==0xff)//查找失败 失败显示黑色方块    
 break; 

     if(character_tab[i][0]==data_temp)//查找成功 
         break; 
  i++; 
   }     
     
   dis_char_buffer(&character_tab[i][1]); 
  } 


//**************************** 
//      显示字符串  ram中 
//**************************** 
void dis_lcd_buffer(unsigned char *aa) 

 while(*aa) 
 { 
  
  if(*aa>128)   
   {  
     dis_buffer( ((*aa<<8)|*(aa+1)) );   
 aa+=2; 
    } 
  else 
  { 
   dis_buffer(*aa);    
   aa++; 
   } 
  } 

//**************************** 
//      显示字符串  Rom中 
//**************************** 
void dis_lcd_buffer_rom(const unsigned char *aa) 

 while(*aa) 
 { 
  
  if(*aa>128) 
   {  
     dis_buffer( ((*aa<<8)|*(aa+1)) );   
 aa+=2; 
    } 
  else 
   { 
    dis_buffer(*aa);    
    aa++; 
   } 
  } 

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

-----------------------------------------------------------------------------------------------------------

//字库结构 

//  汉字 
typedef const struct{ 

      const unsigned char cha[2]; 
      const unsigned char data[32]; 
     
} character_struct; 

character_struct Chinese_characters_tab[]={ 

{"温"}, 
{0x08,0x84,0x61,0x0E,0x00,0x7E,0x52,0x52,0x52,0x52,0x52,0x7E,0x00,0x00,0x00,0x00, 
0x40,0x7F,0x80,0x02,0xFE,0x82,0x82,0xFE,0x82,0x82,0xFE,0x82,0x82,0xFE,0x02,0x00}, 
}, 

{"度"}, 
{0x00,0x00,0x3F,0x20,0x24,0x24,0x3F,0xA5,0x65,0x25,0x3F,0x24,0x24,0x24,0x20,0x00, 
0x01,0x06,0xF8,0x01,0x01,0x42,0x62,0x54,0x48,0x48,0x54,0x64,0x42,0x03,0x02,0x00,}, 
}, 
//....................... 
//结束标志 
   { 
     {0xff,0xff}, 
 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }  
   }, 

}; 
//英文 
const unsigned char character_tab[][17]={ 

/*--  文字:  !  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
'!',0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0x0C,0x00,0x00,0x00, 
//'!',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
/*--  文字:  #  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
'#',0x02,0x03,0x1E,0x02,0x03,0x1E,0x02,0x00,0x20,0xFC,0x20,0x20,0xFC,0x20,0x20,0x00, 
//'#',0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 
/*--  文字:  %  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
'%',0x0F,0x10,0x0F,0x00,0x07,0x18,0x00,0x00,0x00,0x84,0x38,0xC0,0x78,0x84,0x78,0x00, 

/*--  文字:  *  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
'*',0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00, 

/*--  文字:  -  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
'-',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80, 

/*--  文字:  +  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
'+',0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xF8,0x80,0x80,0x80,0x00, 

/*--  文字:  =  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
'=',0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00, 

/*--  文字:  [  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
'[',0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00, 

/*--  文字:  ]  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
']',0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00, 

/*--  文字:  ?  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
'?',0x00,0x0E,0x12,0x10,0x10,0x10,0x0F,0x00,0x00,0x00,0x00,0x0C,0x6C,0x80,0x00,0x00, 

/*--  文字:  /  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
'/',0x00,0x00,0x00,0x00,0x01,0x06,0x18,0x20,0x00,0x06,0x18,0x60,0x80,0x00,0x00,0x00, 

/*--  文字:  \  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
0x5c,0x00,0x30,0x0C,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x1C,0x03,0x00, 


/*--  文字:  空格  --*/ 
/*--  New Century Schoolbook12;  此字体下对应的点阵为:宽x高=8x16   --*/ 
' ',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
//摄氏度符号 
0xfe, 0x18,0x18,0x03,0x04,0x08,0x08,0x08,0x04,0x00,0x00,0xF0,0x08,0x04,0x04,0x04,0x08, 
//结束标志 
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 

};

关键字:128*64液晶  单片机  内部显示缓冲 引用地址:128*64液晶采用"单片机内部显示缓冲"的程序

上一篇:一个51单片机实现数字时钟(1602显示)
下一篇:KEIL51调试时一些错误总结

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

PIC系列单片机程序设计基础
1、PIC单片机程序的基本格式   先介绍二条伪指令:   EQU ——标号赋值伪指令   ORG ——地址定义伪指令   PIC16C5X单片机在RESET后指令计算器PC被置为全“1”,所以PIC16C5X几种型号芯片的复位地址为:    PIC16C54/55:1FFH    PIC16C56:3FFH    PIC16C57/58:7FFH   一般来说,PIC单片机的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。但这里我们推荐一种清晰明了的格式供参考。   TITLE This is …… ;程序标题   ;--------------------------------------   ;名称定义和变
[单片机]
使用8051单片机在LCD屏幕上显示内容的教程
液晶显示器(LCD)是一种常用的显示屏,在许多电子产品中经常使用它来以文本或图像格式显示信息。LCD用于在其屏幕上显示字母、数字等字符。LCD显示器由8条数据线和3条控制线组成,用于将LCD显示器与8051单片机连接。 考虑使用基于Proteus的模拟LCD与8051单片机的接口是: 如何在LCD显示屏上显示“8051单片机”,案例程序如下: #include reg51.h #define kam P0 void lcd_initi(); void lcd_dat(unsigned char ); void lcd_cmd(unsigned char ); void delay(); void di
[单片机]
使用8051<font color='red'>单片机</font>在LCD屏幕上<font color='red'>显示</font>内容的教程
嵌入式和单片机到底有什么区别?
嵌入式系统是一种专用计算机系统,它可以控制产品、设备或系统的操作。嵌入式系统可以包括硬件、软件和固件等组件。单片机则是嵌入式系统的核心部件之一,它通常集成了微处理器、内存和输入输出接口等组件,使其能够承载多种任务。 在嵌入式系统中,单片机是一个重要的组件,也是将软件和系统硬件紧密结合的关键部分。单片机继承了传统的微处理器的所有优点,同时又集成了内存、外设和输入输出接口等元件,从而可以高效地控制嵌入式系统。 单片机的主要特点是集成度高、功耗低、体积小、功能强大及性价比高。这些优势使得单片机广泛应用于家电、汽车、通信等行业领域的嵌入式系统中。 在嵌入式系统设计中,单片机可以充当控制器,负责实现各种复杂的功能。在实现复杂功能
[单片机]
日立单片机模糊控制开发平台及其应用
     摘 要: 介绍已开发成功的“日立单片机模糊控制开发平台”的主要功能。在该软件平台上可以方便地定义和调试一个复杂的模糊控制系统。模糊控制系统调试完成后,能够自动生成用c和汇编两种语言书写的模糊控制执行程序。给出的温度模糊控制系统示例的开发过程和实验,证明了该平台应用的有效性。     关键词: 模糊控制 开发平台 单片机应用     模糊控制在工业自动化中获得了广泛的应用。在一般的控制系统设计中,仿真技术被大量用来进行系统模拟调试,以期提高系统开发速度。然而,对模糊控制系统的通用性仿真手段却很鲜见,使得应用系统的开发效率较低。因此,开发一个模糊控制仿真平台具有现实的意义。在日立亚洲科技有限公司的鼎力
[传感技术]
基于LabVIEW和AVR单片机的镇痛仪系统实现
疼痛治疗一向是临床医学深感棘手的问题之一,在疼痛治疗领域,穴位刺激镇痛一直备受推崇,即通过对穴位施加低频的脉冲电压实现对神经系统的刺激,使其释放阿片肽,达到减轻疼痛的目的。上世纪80年代以来,电子技术在疾病诊疗领域的取得广泛应用,穴位刺激镇痛治疗仪器成为其中的一个研究热点,韩式仪是其中的一个典型代表。随着电子技术便携化和智能化的发展,利用当前最新技术革新产品,研发新型镇痛医疗器械势在必行。 针对镇痛仪电路研发要求,以及人体对低电频生理反映的特征,设计了基于LabVIEW和AVR单片机的一个精度高、稳定可靠、抗干扰能力强、功耗低、可扩展性强的医疗器械镇痛仪。 1 系统总体介绍 本系统包括上位机模块、通信模块和下位机模块,其
[单片机]
基于LabVIEW和AVR<font color='red'>单片机</font>的镇痛仪系统实现
stm32F4系列MCU,窗口看门狗 WWDG中的bug
stm32F4系列MCU,窗口看门狗 WWDG中的bug。 1. 如果使能预喂狗中断,那么必须满足如下两点 (1)在开启wwdg中断之前,需要先将 SR 寄存器中的EWI标志位清零,否则会看门狗会不断复位 (2)在wwdg_irq里加上一小段延时,否则看门狗会不断复位 2. 如果系统里还有其他中断,比如按键,在按键中断中设置一个变量,这个变量在wwdg_isr中读取,来决定是否停止喂狗 这样按下按键以后,系统直接就飞了。 这里给出一个测试代码。 如下所示。 / * @file USART/USART_Printf/main.c * @author MCD Application Team * @version V1
[单片机]
基于51单片机的带时间显示的红绿灯设计
功能: 带时间显示的红绿灯设计,30秒南北绿灯,东西红灯;3次闪烁黄灯;切换为30秒东西绿灯,南北红灯; 具体定时时间可根据程序自行修改,带有源程序、仿真图。 仿真效果图: 部分程序: #include reg51.h #include intrins.h #define uchar unsigned char uchar led ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar delay(int i) {uchar a,b,c; for(i;i 0;i--) {for(c=167;c 0;c--) for(b=171;b 0;b--) for(
[单片机]
使用51单片机实现抢答器的设计资料和代码说明
在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。 ! 系统工作原理本系统采用8051单片机作为核心。控制系统的四个模块分别为:存储模块、显示模块、语音模块、抢答开关模块。该抢答器系统通过开关电路四个按键输入抢答信号;利用语音芯片ISD1420 完成语音的录放功能; 利用存储程序; 利用一个数码管来完成显示功能。工作时,用按键通过开关电路输入各路的抢答信号
[单片机]
使用51<font color='red'>单片机</font>实现抢答器的设计资料和代码说明
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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