历史上的今天
返回首页

历史上的今天

今天是:2025年01月27日(星期一)

正在发生

2018年01月27日 | EM78P468 NTC lcd测温设计C语言源代码

2018-01-27 来源:eefocus

/********************************************************
 *  Description: 468N RC temperature                    *
 *  Company:     HANTA (suzhou) LTD.                  *
 *  Author:      Sunli                     *
 *  Date:        03/09/2007
 *  最后更新日期:13/09/2007                            *
 * Version:     v1.0                                   *
 *******************************************************/

#i nclude "em78x468xx.h"
#i nclude "table.h"

#define DISI() _asm{disi}
#define ENI() _asm{eni}
#define SLEP() _asm{slep}
#define NOP() _asm{nop}
#define WDTC() _asm{wdtc}

#define uchar unsigned char
#define ushort unsigned short
#define ulong unsigned long
#define Rp R55
#define Rc R61
#define Rm R60
#define SCL R63
#define SDA R62
#define LOW R65
#define MID R66
#define HI  R67
#define COOL R85
#define HOT  R86
#define COL_RST R87
#define LED R54
#define COOL_IF_L R57==0 //如果COOL关
#define COOL_IF_H R57==1 //如果COOL开
#define HEAT_IF_L R56==0 //如果HEAT关
#define HEAT_IF_H R56==1 //如果HEAT开 
#define SCL_L R63=0 //I2总线时钟线
#define SCL_H R63=1
#define SDA_L R62=0 //I2总线数据线
#define SDA_H R62=1
#define Rp_TO_IN P5CR|=0x20;NOP()
#define Rp_TO_OUT P5CR&=0xdf;NOP()
#define SDA_TO_IN P6CR|=0x04; NOP() //设数据线位输入
#define SDA_TO_OUT P6CR&=0xfb; NOP() //设数据线位输出
#define SDA_IF_L R62==0  //如果sda为低
#define SDA_IF_H R62==1   //如果sda为高
#define DELAY_us NOP();NOP();NOP();NOP()
#define PAGE_SIZE 8
#define SIZE 0x00ff
#define ON_OFF    0x1e
#define MODE      0x1d
#define FAN       0x1b
#define INCREASE  0x17
#define DECREASE  0x0f
#define W_ADD_COM 0xa0 //写字节命令及器件地址(根据地址实际情况改变), 1010 A2 A1 A0 0
#define R_ADD_COM 0xa1 //读命令字节及器件地址(根据地址实际情况改变), 1010 A2 A1 A0 1
#define LCD_init(init_v) _asm{mov a,@init_v}\
       _asm{mov %LCDCR,a}


uchar lcd_ram[10]=
{ // 0  , 1  ,  2 , 3 ,  4  ,  5 , 6,   7  , 8 ,  9
 0xdf,0x0e,0xeb,0xaf,0x3e,0xbd,0xfd,0x0f,0xff,0xbf
};

ushort dly; 
ushort test_temp[6];
ushort Rm_t,Rc_t;

uchar RC_num,Rmin_p,Rmax_p;
ushort Rmin_t,Rmax_t;
ulong Ttmp;

uchar key_state = 0;//按键值
uchar new_key = 0;
uchar key_tCC = 0;
uchar key_temp= 0;
uchar timer_cnt=0;
uchar r_buf[2];
uchar w_buf[2];
uchar set_temper =0;
uchar fan_st   = 0;
uchar mode_on_off=0;
uchar timer1,times;
//ushort timer;
bit key_flag=0;
bit timer_2ms_ok=0;
bit COL_RST_FLAG=0;
/******************函数声明********************/
void main(void);
void sys_init(void);
void tms(uchar i);
void i2cstart(void);
uchar i2cwt(uchar a);
uchar i2crd(void);
void i2cstop(void);
uchar wt24c(uchar *p, uchar ad, uchar n);
void rd24c(uchar *p_dst, uchar ad_rsc, uchar num);
uchar KeySCAN(void);
void KeyDo(uchar key);
//void   key_find(void);
void display(uchar v,uchar tamp_v,uchar set_tmp);
unsigned char test_temperature(void);
unsigned char Bin1toBcd(unsigned char Xbin1);
/*********************end*********************/

void sys_init(void)
{
 SBPCR=0x17; //rc 2.13mHz,sleep->Idle mode,sub-cLOCk run program
 IRCR=0;  //dISAble IR/PWM,port5 is general i/o
 ISR=0;  //clear count1 interrupt flag bit
 
 P5CR=0xc3;  //port7 is lcd segment,port8 is general i/o
 P6CR=0x00;
 P7CR=0;
 P8CR=0x1f;
 CNT12CR=0x06;
 CNT1PR=5;
 CNT1EN=1;
 HPWTPR=0;
 LPWTPR=0;
 IMR|=0x08;  //enable count1 interrupt
 
// WUCR=0x70; //enable p60~3 wake up
// TCCCR=0x0f; //disable main interrupt,TCC pre-scaler 1:256
 WDTCR=0xff; //0xf7; //disable WDT  
 HLPWTCR=0x77;
 P6PH=0xff;  //enable  port6 internal pull high
 P6OD=0;  //disable por6 open-drain
 P8PH=0xff;  //disable port8 internal pull high
 P6PL=0;  //disable port6 internal pull down

 PORT5=0x00;
 PORT6=0x00;
 PORT8=0x00;
 //变量清零
 COL_RST_FLAG=0;
 
}

void tms(uchar i)
{
 uchar j;
 for(;i>0;i--)
  {
   for(j=0;j<200;j++);
   WDTC();
   }
}


/**********************W/R EEPROM*******************************************/
//起始信号
void i2cstart(void)
{  
 SCL_L; DELAY_us;
    SDA_H; DELAY_us;
    SCL_H; DELAY_us;
    SDA_L; DELAY_us;
    SCL_L; DELAY_us;
}


//把一个字节数据输入器件,并以收到应答信号为止
//写入成功返回1,失败返回0
uchar i2cwt(uchar a)
{   uchar i;
 
    for(i=0;i<8;i++)
    {   SCL_L; DELAY_us;
        if((a<     else SDA_L;
     DELAY_us;
        SCL_H; DELAY_us;
       
    }
    SCL_L; DELAY_us;
    SDA_H; DELAY_us;
    SCL_H; DELAY_us;
 
 SDA_TO_IN;   
 
    if(SDA_IF_L)  //测试有无应答
    { SDA_TO_OUT;
     return(1);  //有应答
    }
    else
    { SDA_TO_OUT;
     return(0);  //无应答
    }
}


//i2c读要调用的函数
//从器件读出一个字节
uchar i2crd(void)
{   uchar i,temp;
           
    for(i=0;i<8;i++)
    {   SCL_L; DELAY_us; 
        SDA_H; DELAY_us;    //置数据线接上内部上拉(数据输入方式),此为必须
        SCL_H; DELAY_us;
        temp<<=1;
       
        SDA_TO_IN;   
       
  if(SDA_IF_H) temp+=1;
        DELAY_us;
       
        SDA_TO_OUT;   
 }
    SCL_L; DELAY_us;  //主器件应答脉冲
    SDA_L; DELAY_us;
    SCL_H; DELAY_us;
    return(temp);
}
 

//停止信号
void i2cstop(void)
{   SCL_L; DELAY_us;
    SDA_L; DELAY_us;
    SCL_H; DELAY_us;
    SDA_H;
}


uchar wt24c(uchar *p, uchar ad, uchar n)
{ uchar t=0;
 
 i2cstart();     //发送起始信号
  
 if(i2cwt(W_ADD_COM))  //发送写字节命令及器件地址
 { 
  i2cwt(ad);    //ad_dst的低位到器件
   
  for(;n>0;n--)   //发送要写入的数据
  {   i2cwt(*p);
   p++;
  }
 }
// else syserr=I2C_ERR;  //写字节命令及器件地址错
 
 i2cstop();
    tms(6);      //延时6ms
 
 return(*p);
}

//从24cxx读出数据
//参数: *p_dst要读入数据的主机内存地址指针; ad_rsc要输出数据的i2c的地址(整形); num数据个数(整形)
//参数条件:  ad_dst+(num-1)不能大于器件的最高地址; num必须>0;
void rd24c(uchar *p_dst, uchar ad_rsc, uchar num)

    uchar t=0;
 i2cstart();     //发送起始信号
  
 if(i2cwt(W_ADD_COM))  //发送写字节命令及器件地址
 { 
  i2cwt(ad_rsc);   //ad_rsc的低位
    
  i2cstart();    //再发送起始信号
  i2cwt(R_ADD_COM);  //发送SLA_R, 读命令字节及器件地址
    
  for(;num>0;num--)
  {   *p_dst=i2crd();  //从器件读出一个字节
   p_dst++;
  }
 }
// else syserr=I2C_ERR;  //写字节命令及器件地址错或对方无应答
  
 i2cstop();

}

/***************************************************************************/
unsigned char Bin1toBcd(unsigned char Xbin1)
{
 unsigned short xBCD=0;
 do
 {
  //if(Xbin1>=100)
  //{
  // Xbin1-=100;
  // xBCD+=0x100;
  //}
  //else
  //{
   if(Xbin1>=10)
   {
    Xbin1-=10;
    xBCD+=0x10;
   }
   else
   {
    xBCD+=Xbin1;
    break;
   }
  //}
 }while(1);
 return xBCD;
}

unsigned char test_temperature(void)
{  
    uchar tamp=0;
    Ttmp=0;
 RC_num=0;
 do
 {
  P6CR&=0xfc;
  Rp_TO_OUT;
  Rm=0;
  Rc=0;
  Rp=0;
  for(dly=0xa00;dly;dly--)
  {
   WDTC();
  }
 
  Rm_t=0;
  P6CR|=0x02;
  Rp_TO_IN;
  Rm=1;      //用基准电阻充电
  while(1)
  {
   if(Rp)
   {
    break;
   }
   Rm_t++;
  }
  WDTC();
  test_temp[RC_num]=Rm_t;
  RC_num++;
 }while(RC_num<6);
 
 RC_num=0;  
 Rmin_p=0;
 Rmax_p=5;
 Rmin_t=test_temp[0];
 Rmax_t=test_temp[5];
 do
 {
  if(test_temp[RC_num+1]  {
   Rmin_t=test_temp[RC_num+1];
   Rmin_p=RC_num+1;
  }
  if(test_temp[4-RC_num]>Rmax_t)
  {
   Rmax_t=test_temp[4-RC_num];
   Rmax_p=4-RC_num;
  }
  RC_num++;
 }while(RC_num<5);
 
 RC_num=0;
 Rm_t=0;
 do
 {
  if(RC_num!=Rmin_p)
  {
   if(RC_num!=Rmax_p)
   {
    Rm_t+=test_temp[RC_num];
   }
  }
  RC_num++;
 }while(RC_num<6);//去max,min,取平均值
 Rm_t>>=2;

 RC_num=0;
 do
 {
  P6CR&=0xfc;
  Rp_TO_OUT;
  Rm=0;
  Rc=0;
  Rp=0;
  for(dly=0xa00;dly;dly--)
  {
   WDTC();
  }
 
  Rc_t=0;
  P6CR|=0x01;//用NTC充电
  Rp_TO_IN;
  Rc=1;
  while(1)
  {
   if(Rp)
   {
    break;
   }
   Rc_t++;
  }
  WDTC();
  test_temp[RC_num]=Rc_t;
  RC_num++;
 }while(RC_num<6);
 
 RC_num=0;  
 Rmin_p=0;
 Rmax_p=5;
 Rmin_t=test_temp[0];
 Rmax_t=test_temp[5];
 do
 {
  if(test_temp[RC_num+1]  {
   Rmin_t=test_temp[RC_num+1];
   Rmin_p=RC_num+1;
  }
  if(test_temp[4-RC_num]>Rmax_t)
  {
   Rmax_t=test_temp[4-RC_num];
   Rmax_p=4-RC_num;
  }
  RC_num++;
 }while(RC_num<5);
 
 RC_num=0;
 Rc_t=0;
 do
 {
  if(RC_num!=Rmin_p)
  {
   if(RC_num!=Rmax_p)
   {
    Rc_t+=test_temp[RC_num];
   }
  }
  RC_num++;
 }while(RC_num<6);//去max,min,取平均值
 Rc_t>>=2;
 
 Ttmp=(unsigned long)Rc_t*9950;
 Ttmp=Ttmp/Rm_t;//求ntc值
 
 if(Ttmp>=32960)
 {
  return 0;
 }
 if(Ttmp<=3588)
 {
  return 0x50;
 }
 
 RC_num=0;
 Rm_t=Ttmp;

 do
 {
  if(Rm_t>=table[RC_num+1])//查表微调
  {
   /*Rm_t-=table[RC_num+1];
   Rc_t=table[RC_num]-table[RC_num+1];
   Rm_t*=10;
   Rm_t=Rm_t/Rc_t;
//   RC_num++;*/
   break;
  }
  RC_num++;
 }while(RC_num<48);

 tamp=Bin1toBcd(RC_num);
 //Rc_t<<=4;
 //Rm_t|=Rc_t;
 P6CR&=0xfC;
 PORT6&=0xfC;

 return tamp;
}

void display(uchar v,uchar tamp_v,uchar set_tmp)
{      
        uchar real_dep,tmp1;
       
        LCD_ADDR=6;
        LCD_DB=0x08;
        //风速+冷热
        LCD_ADDR=0;
        LCD_DB=tamp_v;
        LCD_ADDR=23;
      _asm
  {
   swap %tamp_v
  }
     LCD_DB=tamp_v;
     //当时温度
     real_dep=v;
     v>>=4;
  
     real_dep&=0x0f; 
  LCD_ADDR=4;
  tmp1=lcd_ram[real_dep];
  tmp1&=0xf7;
  LCD_DB=tmp1;
  
  LCD_ADDR=3;
  _asm
  {
   swap %tmp1
  }
  LCD_DB=tmp1;  
  
  tmp1=v&0x0f; 
  LCD_ADDR=2;
  tmp1=lcd_ram[tmp1];
  LCD_DB=tmp1;
  LCD_ADDR=1;
  _asm
  {
   swap %tmp1
  }
  LCD_DB=tmp1;
  //设置温度
  real_dep=set_tmp;
     set_tmp>>=4;
  
     real_dep&=0x0f; 
  LCD_ADDR=10;
  tmp1=lcd_ram[real_dep];
  LCD_DB=tmp1;
  
  LCD_ADDR=9;
  _asm
  {
   swap %tmp1
  }
  LCD_DB=tmp1;  
  
  tmp1=set_tmp&0x0f; 
  LCD_ADDR=8;
  tmp1=lcd_ram[tmp1];
  LCD_DB=tmp1;
  LCD_ADDR=7;
  _asm
  {
   swap %tmp1
  }
  LCD_DB=tmp1;   
}

/*void lcd_on_off(void)
{  
    uchar i;
 for(i=0;i<32;i++)
 {
  LCD_ADDR=i;
  LCD_DB=0xff;
 }
 
 for(dly=0x00ff;dly;dly--)
 {
  WDTC();
 }
   
 for(i=32;i;i--)
 {
  LCD_ADDR=i;
  LCD_DB=0;
 }
 
 for(dly=0x1fff;dly;dly--)
 {
  WDTC(); 
 }
  
}*/

/******************************按键扫描************************/
/*****************************按键处理************************/
void KeyDo(uchar key)
{  
    uchar fan_temp;
    if (key == ON_OFF){
      if(mode_on_off==0)
        {
         key_flag=1;
         mode_on_off=1;
        }
      else
        {
         mode_on_off=0;
        }

    }
    else if (key == FAN)
    {
     timer1=0;
      key_flag=1;
        if(mode_on_off==1)
         {
         fan_temp=fan_st&0xe0;
         if(fan_temp==0x80)
          {
           fan_st|=0x40;
           fan_st&=0x7f;
          }
         else if(fan_temp==0x40)
          {
           fan_st|=0x20;
           fan_st&=0xbf;
          }
         else if(fan_temp==0x20)
          {
           fan_st|=0x80;
           fan_st&=0xdf;
          }
         }
    }
   else if (key == MODE)
   {
    timer1=0;
     key_flag=1;
     if(mode_on_off==1)
      {
        fan_temp=fan_st&0x03;
        if(fan_temp==0x01)
           fan_st++;
           else
           {
           fan_st|=0x01;
           fan_st&=0xfd;
           }     
      }
    }
    else if (key == DECREASE)
    {      
           timer1=0;
           key_flag=1;
            if (set_temper == 10)
            {
                set_temper = 10;
            }
            else
            {
                set_temper--;
            }
    }
    else if (key == INCREASE)
    {       timer1=0;
           key_flag=1;
            set_temper++;
            if (set_temper > 30)
            {
               set_temper = 30;
            }

    }

}
uchar KeyScan(void)
{
      uchar temp = 0;
      temp = PORT8;
      temp&=0x1f;
      if(temp!=0x1f)
      return temp;
    return 0x1f;
}

void _intcall counter1_l(void) @ 0x0C:low_int 3
{
 
}

void _intcall counter1(void) @ int 3
{
  //backup R4
  _asm
   {
     SWAPA 0x04
     MOV 0x1F,A
   }   
 
   //backup C system
  _asm
    {
    BS 0X4,6
    BS 0X4,7   
 MOV A,0X10 // USE 1 BYTE C TYPE,C SYSTEM BACKUP
 MOV 0X3C+1,A
 MOV A,0X14
 MOV 0X3B+1,A
 MOV A,0X18
 MOV 0X3A+1,A
 MOV A,0X1B
 MOV 0X39+1,A
 MOV A,0X1C
 MOV 0X38+1,A
    }
   
            ISR=0;
            timer_2ms_ok=1;
            if (key_state == 0)
           {
            new_key = KeyScan();
            if (new_key != 0x1f)
            {
                key_state++;
            }
           }
        else if (key_state < 5)
        {
            if (KeyScan() == new_key)
            {
                key_state++;
            }
            else
            {
                key_state = 0;
            }
        }
        else if (key_state == 5)
        {
            key_state++;
            KeyDo(new_key);
        }
        else if (key_state == 6)
        {
            key_temp = KeyScan();
            if (key_temp == 0x1f)
            {
                key_state ++;
            }
            else if (key_temp == DECREASE || key_temp == INCREASE)
            {
                if (key_tcc >= 10)
                {
                    key_tcc = 5;
                    KeyDo(key_temp);
                }
                else
                {
                    key_tcc++;
                }
            }
        }
        else if (key_state < 10)
        {
            if (KeyScan() == 0x1f)
            {
                key_state ++;
            }
            else
            {
                key_state = 6;
            }
        }
        else if (key_state == 10)
        {
            key_state = 0;
            key_tcc = 0;
       
        }
     if(mode_on_off)
     {
     times++;
     timer1++;
     //rst_tim++;
     }
 
  // Write your code (inline assembly or C) here
 
   //restore C system
  _asm
    { 
    BS 0X4,6
    BS 0X4,7
 MOV A,0X3C+1 // USE 1 BYTE C TYPE,C SYSTEM RESTORE
 MOV 0X10,A
 MOV A,0X3B+1
 MOV 0X14,A
 MOV A,0X3A+1
 MOV 0X18,A
 MOV A,0X39+1
 MOV 0X1B,A
 MOV A,0X38+1
 MOV 0X1C,A
    }


  //restore R4
  _asm
   {
     SWAPA 0x1F
     MOV 0X04,A
   }
  
}

void  main()
  {
  uchar temp1,temp2;
  uchar i,j;
  uchar *r;
     uchar b;
     uchar c;
     uchar stst;
     uchar *w;
     uchar x;
     uchar y;
       DISI(); 
    tms(10);
    sys_init();
    //lcd_init(0xf7);
       r_buf[0]=0;
       r_buf[1]=0;

     r=r_buf; //读参数
     b=0x00;
     c=2;

     w=w_buf; //写参数
     x=0x00;
     y=2;
    
     //w_buf[0]=0x81;
     //w_buf[1]=0x19;
     // wt24c(w,x,y); //出厂写EEPROM

     rd24c(r,b,c); //初始读EEPROM
     fan_st=r_buf[0];
     set_temper=r_buf[1];
     temp1=test_temperature();
  for(i=0;i<32;i++)// 清屏
 {
  LCD_ADDR=i;
  LCD_DB=0;
 }
  for(dly=0x1fff;dly;dly--)
 {
  WDTC(); 
 }
 //LED=1;
 ENI();
 while(1)
 {  
     //key_find();
   while(timer_2ms_ok)
   {
   timer_2ms_ok=0;
   if(mode_on_off==1)
    {
     lcd_init(0xf7);
     if(key_flag)
     {
     LED=1;
     if(timer1>=200)
      {
      timer1=0;
      LED=0;
      if((r_buf[0]!=fan_st)||(r_buf[1]!=set_temper))
      {
      r_buf[0]=fan_st;
      r_buf[1]=set_temper;
      w_buf[0]=fan_st;
      w_buf[1]=set_temper;
      wt24c(w,x,y); //写
      }
      key_flag=0;      
         }
      }
        if(times>=250)
         {
          temp1=test_temperature();
       times=0;
      }
       temp2=Bin1toBcd(set_temper);
    display(temp1,fan_st,temp2);
    PORT6=fan_st&0xe0;
    stst=fan_st&0x01;
    if(stst==0x01)
    { 
       COOL=1;
       HOT=0;
       tms(1);
       if((temp1>temp2)&&(COL_RST_FLAG==0))
         { 
            j=0;
          while((COOL_IF_L)&&(j<=3))
            {
             j++;
             COL_RST=1;
                   tms(10);
                   COL_RST=0;
             COL_RST_FLAG=1;                  
             }        
                   j=0;
          }
        else if((temp1         {  
            j=0;
        while((COOL_IF_H)&&(j<=3))
             {
             j++;  
             COL_RST=1;
                   tms(10);
                   COL_RST=0;
             COL_RST_FLAG=0;                  
             }        
                  j=0;
         }         
    }
        //stst=fan_st&0x02;
    else
     { 
        COOL=0;
         if((temp1         HOT=1;
         else
         HOT=0;
      }
       
    }
    else
    {
     LED=0;
     lcd_init(0x00);
     LOW=0;
     MID=0;
     HI=0;
     COOL=0;
     HOT=0;
     }

 WDTC(); 
   } 
 WDTC(); 
 }
  }


推荐阅读

史海拾趣

Belkin公司的发展小趣事

贝尔金在创新方面的努力得到了行业的广泛认可。例如,在2015年,贝尔金获得了CES创新大奖,这充分证明了其在电子产品设计和技术创新方面的实力。此外,贝尔金还多次获得其他行业奖项和荣誉,这些成绩不仅提升了贝尔金的品牌形象,也为其未来的发展奠定了坚实的基础。

以上五个故事从不同的角度展示了Belkin公司在电子行业中的发展历程和成就。从创立初期的艰辛到逐步成长壮大,再到全球化布局和创新发展,贝尔金凭借坚定的信念和不懈的努力,成为了电子行业的佼佼者。

品赞(G-Switch)公司的发展小趣事
检查电流继电器是否动作正常,触点是否接触良好。
Cretex Companies Inc公司的发展小趣事

在电子行业的早期,Cretex Companies Inc.凭借对半导体技术的深入研究和创新,迅速崭露头角。公司研发出一款具有高效能、低功耗特点的芯片,这一技术突破使得电子设备的性能大幅提升,同时降低了能耗。凭借这一优势,Cretex的产品在市场上获得了广泛认可,公司规模逐渐扩大。

Falco Electronics公司的发展小趣事

Falco Electronics自创立之初就注重技术创新。公司创始人深知,在电子行业,只有不断推陈出新,才能在激烈的市场竞争中立足。因此,公司投入大量研发资金,吸引了一批优秀的科研人才。经过不懈努力,Falco Electronics成功开发出了一款具有革命性的新型芯片,这款芯片在性能上远超同类产品,迅速在市场上占据了一席之地。

FOX [Fox Electronics]公司的发展小趣事

随着全球对环保和可持续发展的重视,Fox Electronics积极响应行业趋势,将绿色生产理念融入企业运营中。公司投资引进先进的环保设备和生产工艺,减少生产过程中的废弃物排放和能源消耗。同时,Fox Electronics还推出了一系列符合RoHS(限制有害物质)指令的产品,满足市场对环保产品的需求。这些举措不仅提升了公司的社会责任感,也为其在绿色电子市场赢得了良好的声誉。

Chip Quik公司的发展小趣事

在不断发展壮大的过程中,Chip Quik公司始终注重品牌建设和持续创新。公司加大了对研发部门的投入,不断推出新技术和新产品,以满足市场的不断变化。同时,公司还通过加强品牌宣传和推广,提高了品牌知名度和美誉度,为公司的长远发展奠定了坚实的基础。

这些故事虽然基于假设和一般性的行业趋势,但它们可以反映出一家电子行业中类似公司可能经历的发展路径和挑战。希望这些故事能够为您了解Chip Quik公司或其他电子行业公司的发展提供一定的参考。

问答坊 | AI 解惑

绝好资料:模拟电子电路学习基础下载

这是许多电子类学生学习模电的经典教材,其中各种模拟器件的原理、应用应有尽有!…

查看全部问答>

求S3C2410+WINCE5.0+VS2005操作步骤

我接手同事的工作,但没有用过arm,求注意事项以及与开发这些东西相关的软件工具和操作步骤…

查看全部问答>

基于CS结构的远程数字视频监控系统

一、前言   当前视频监控系统正逐步由模拟化走向数字化。随着视频压缩技术和网络技术的发展,开发新一代基于计算机网络和多媒体MPEG-4压缩算法的视频监控系统已成为整个行业技术发展的主要方向之一。本文提出并研究设计了一种分布式网络视频监 ...…

查看全部问答>

有人用S3C2440点过LVDS的屏吗?

   再开一贴!    最近被LVDS的屏搞晕了。一个是分辨率大,一个是对刷新率要求也高。手头两块屏,1024X600,800X600。点起来都有点闪。    问题是由分辨率太大以及vclk速度不够引起的。    一般TLL的屏 ...…

查看全部问答>

TMS320C5515/14/05/04

TMS320C5515 实现业界最低功耗,远远超过同类竞争产品 德州仪器 (TI) TMS320C5515/14/05/04 是 C5000 平台旗下的最新器件之一,是业界最低功耗的 16 位数字信号处理 (DSP) 平台,与前代器件相比,性能提升 20%。C5515是 ...…

查看全部问答>

电烙铁分类及锡焊操作指导

  电烙铁是电子组装和封装上必备的重要工具,其质量和操作工艺对产品质量和生产效率有较大的影响。  1. 电烙铁的构造、分类  1.1 电烙铁是手工施焊的主要工具。是一种电热器件,通电后产生高温,可使焊锡熔化,利用它将电子元件焊接。   ...…

查看全部问答>

STM32bxCAN设置Filter指向不同FIFO不成功,请指点!

贴代码: Filter代码: //CAN过滤器设置         CAN_FilterInitStructure.CAN_FilterNumber=0;         CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;       ...…

查看全部问答>

用单片机控制220V电流

要做一个电热毯控制电路,要求温度可调,可以实时显示温度,用430做,控制器件成本。电压220V,功率100瓦左右,控制220V的电流用什么器件?打算通过PWM方式,但是220V电压用什么器件控制比较便宜效果还很好?求助…

查看全部问答>

msp430 USCI初始化程序求解释,请大神帮忙

                                       // Put state machine in reset     UCB1CTL1 |= UCSW ...…

查看全部问答>

FPGA配置不成功的原因分析

在调试FPGA最小电路能否正常工作的时候,出现了这样一个问题:用JTAG烧写器往FPGA中烧写配置文件的时候,文件可以正常烧写,但是FPGA并没有相应的反应,就是FPGA并没有工作。又尝试了一下AS模式配置FPGA,同样,配置文件也可以烧写进去,FPGA同样不 ...…

查看全部问答>