虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

低延时

  • 12345

    /****************temic*********t5557***********************************/    #include   <at892051.h>     #include   <string.h>    #include   <intrins.h>     #include   <stdio.h>     #define    uchar    unsigned char     #define    uint     unsigned int     #define    ulong    unsigned long     //STC12C2051AD的SFR定义     sfr  WDT_CONTR = 0xe1;//stc2051的看门狗??????     /**********全局常量************/    //写卡的命令     #define    write_command0       0//写密码     #define    write_command1       1//写配置字     #define    write_command2       2//密码写数据     #define    write_command3       3//唤醒     #define    write_command4       4//停止命令     #define    TRUE       1     #define    FALSE      0     #define    OK         0     #define    ERROR      255     //读卡的时间参数us     #define ts_min          250//270*11.0592/12=249//取近似的整数     #define ts_max          304//330*11.0592/12=304     #define t1_min          73//90*11.0592/12=83:-10调整     #define t1_max          156//180*11.0592/12=166     #define t2_min          184//210*11.0592/12=194     #define t2_max          267//300*11.0592/12=276     //***********不采用中断处理:采用查询的方法读卡时关所有中断****************/     sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13     sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE     PIN=6     sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut  PIN=2     sbit wtd_sck = P1^7;//SPI总线     sbit wtd_si = P1^3;    sbit wtd_so = P1^2;    sbit iic_data = P1^2;//lcd IIC     sbit iic_clk = P1^7;    sbit led_light = P1^6;//测试绿灯     sbit led_light1 = P1^5;//测试红灯     sbit led_light_ok  = P1^1;//读卡成功标志     sbit fengmingqi = P1^5;    /***********全局变量************************************/       uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密码             //uchar idata card_snr[4];   //配置字     uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7};     //存储卡上用户数据(1-7)7*4=28     uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收数组ram     uchar command; //第一个命令     uchar command1;//     //uint  temp;     uchar j,i;    uchar myaddr = 8;    //uchar ywqz_count,time_count;             //ywqz jishu:     uchar bdata DATA;    sbit BIT0 = DATA^0;    sbit BIT1 = DATA^1;    sbit BIT2 = DATA^2;    sbit BIT3 = DATA^3;    sbit BIT4 = DATA^4;    sbit BIT5 = DATA^5;    sbit BIT6 = DATA^6;    sbit BIT7 = DATA^7;    uchar bdata DATA1;    sbit BIT10 = DATA1^0;    sbit BIT11 = DATA1^1;    sbit BIT12 = DATA1^2;    sbit BIT13 = DATA1^3;    sbit BIT14 = DATA1^4;    sbit BIT15 = DATA1^5;    sbit BIT16 = DATA1^6;    sbit BIT17 = DATA1^7;    bit i_CurrentLevel;//i_CurrentLevel  BIT 00H(Saves current level of OutPut pin of U2270B)     bit timer1_end;    bit read_ok = 0;    //缓存定时值,因用同一个定时器     union HLint { uint W;    struct   {    uchar H;uchar L;   }   B; };//union HLint idata a     union HLint data a;    //缓存定时值,因用同一个定时器     union HLint0 { uint W;    struct {   uchar H;   uchar L; } B; };//union HLint idata a     union HLint0 data b;    /**********************函数原型*****************/    //读写操作     void f_readcard(void);//全部读出1~7 AOR唤醒     void f_writecard(uchar x);//根据命令写不同的内容和操作     void f_clearpassword(void);//清除密码     void f_changepassword(void);//修改密码     //功能子函数     void write_password(uchar data *data p);//写初始密码或数据     void write_block(uchar x,uchar data *data p);//不能用通用指针     void write_bit(bit x);//写位     /*子函数区*****************************************************/    void delay_2(uint x)    //延时,时间x*10us@12mhz,最小20us@12mhz     {    x--; x--;    while(x)    {      _nop_();      _nop_();      x--;    }    _nop_();//WDT_CONTR=0X3C;不能频繁的复位     _nop_();    }    /////////////////////////////////////////////////////////////////////     void initial(void)    {    SCON = 0x50; //串口方式1,允许接收     //SCON  =0x50;     //01010000B:10位异步收发,波特率可变,SM2=0不用接收到有效停止位才RI=1,     //REN=1允许接收     TMOD = 0x21; //定时器1 定时方式2(8位),定时器0 定时方式1(16位)     TCON = 0x40; //设定时器1 允许开始计时(IT1=1)     TH1 = 0xfD;  //FB 18.432MHz 9600 波特率     TL1 = 0xfD;  //fd 11.0592 9600     IE = 0X90;     //EA=ES=1     TR1 = 1;     //启动定时器     WDT_CONTR = 0x3c;//使能看门狗     p_U2270B_Standby = 0;//单电源     PCON = 0x00;    IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0     led_light1 = 1;    led_light = 0;    p_U2270B_OutPut = 1;    }    /************************************************/    void f_readcard()//读卡     {    EA = 0;//全关,防止影响跳变的定时器计时     WDT_CONTR = 0X3C;//喂狗     p_U2270B_CFE = 1;//      delay_2(232);  //>2.5ms            /*   //   aor    用唤醒功能来防碰撞   p_U2270B_CFE = 0; delay_2(18);//start gap>150us   write_bit(1);//10=操作码读0页   write_bit(0);       write_password(&bankdata[24]);//密码block7   p_U2270B_CFE =1 ;//    delay_2(516);//编程及确认时间5.6ms   */    WDT_CONTR = 0X3C;//喂狗     led_light = 0;    b.W = 0;    while(!(read_ok == 1))    {             //while(p_U2270B_OutPut);//等一个稳定的低电平?超时判断?              while(!p_U2270B_OutPut);//等待上升沿的到来同步信号检测1       TR0 = 1;      //deng xia jiang       while(p_U2270B_OutPut);//等待下降沿       TR0 = 0;   a.B.H = TH0;   a.B.L = TL0;   TH0 = TL0 = 0;   TR0 = 1;//定时器晚启动10个周期       //同步头       if((324 < a.W) && (a.W < 353)) ;//检测同步信号1                  else     {     TR0 = 0;     TH0 = TL0 = 0;     goto read_error;    }      //等待上升沿        while(!p_U2270B_OutPut);   TR0 = 0;   a.B.H = TH0;   a.B.L = TL0;   TH0 = TL0 = 0;   TR0 = 1;//b.N1<<=8;            if(a.B.L < 195);//0.5p       else     {     TR0 = 0;     TH0 = TL0 = 0;     goto read_error;    }      //读0~7块的数据       for(j = 0;j < 28;j++)      {       //uchar i;                  for(i = 0;i < 16;i++)//8个位        {        //等待下降沿的到来         while(p_U2270B_OutPut);                TR0 = 0;     a.B.H = TH0;     a.B.L = TL0;     TH0 = TL0 = 0;     TR0 = 1;              if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P          {         b.W >>= 2;//先左移再赋值          b.B.L += 0xc0;                             i++;        }        else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p         {         b.W >>= 1;         b.B.L += 0x80;                           }        else      {      TR0 = 0;      TH0 = TL0 = 0;      goto read_error;     }        i++;        while(!p_U2270B_OutPut);//上升                   TR0 = 0;     a.B.H = TH0;     a.B.L = TL0;     TH0 = TL0 = 0;     TR0 = 1;                      if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P          {         b.W >>= 2;         i++;        }        else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P         //else if(!(a.W==0))         {         b.W >>= 1;         //temp+=0x00;          //led_light1=0;led_light=1;delay_2(40000);         }        else      {      TR0 = 0;      TH0 = TL0 = 0;      goto read_error;     }        i++;       }       //取出奇位        DATA = b.B.L;       BIT13 = BIT7;    BIT12 = BIT5;    BIT11 = BIT3;    BIT10 = BIT1;       DATA = b.B.H;       BIT17 = BIT7;    BIT16 = BIT5;    BIT15 = BIT3;    BIT14 = BIT1;       bankdata[j] = DATA1;      }              read_ok = 1;//读卡完成了     read_error:    _nop_();    }       }    /***************************************************/    void f_writecard(uchar x)//写卡     {    p_U2270B_CFE = 1;    delay_2(232);  //>2.5ms            //psw=0 standard write     if (x == write_command0)//写密码:初始化密码     {      uchar i;      uchar data *data p;      p = cominceptbuff;      p_U2270B_CFE = 0;   delay_2(31);//start gap>330us       write_bit(1);//写操作码1:10       write_bit(0);//写操作码0       write_bit(0);//写锁定位0       for(i = 0;i < 35;i++)      {       write_bit(1);//写数据位1       }      p_U2270B_CFE = 1;      led_light1 = 0;   led_light = 1;   delay_2(40000);//测试使用       //write_block(cominceptbuff[4],p);       p_U2270B_CFE = 1;      bankdata[20] = cominceptbuff[0];//密码存入       bankdata[21] = cominceptbuff[1];      bankdata[22] = cominceptbuff[2];      bankdata[23] = cominceptbuff[3];    }    else if (x == write_command1)//配置卡参数:初始化     {      uchar data *data p;      p = cominceptbuff;      write_bit(1);//写操作码1:10       write_bit(0);//写操作码0       write_bit(0);//写锁定位0               write_block(cominceptbuff[4],p);      p_U2270B_CFE=  1;    }    //psw=1  pssword mode     else if(x == write_command2)  //密码写数据    {      uchar data*data p;      p = &bankdata[24];      write_bit(1);//写操作码1:10       write_bit(0);//写操作码0       write_password(p);//发口令       write_bit(0);//写锁定位0       p = cominceptbuff;      write_block(cominceptbuff[4],p);//写数据            }    else if(x == write_command3)//aor    //唤醒 {      //cominceptbuff[1]操作码10 X xxxxxB       uchar data *data p;      p = cominceptbuff;      write_bit(1);//10       write_bit(0);             write_password(p);//密码       p_U2270B_CFE = 1;//此时数据不停的循环传出     }    else //停止操作码     {      write_bit(1);//11       write_bit(1);             p_U2270B_CFE = 1;         }    p_U2270B_CFE = 1;    delay_2(560);//5.6ms     }    /************************************/    void f_clearpassword()//清除密码     {    uchar data *data p;    uchar i,x;          p = &bankdata[24];//原密码     p_U2270B_CFE = 0; delay_2(18);//start gap>150us     //操作码10:10xxxxxxB     write_bit(1);    write_bit(0);              for(x = 0;x < 4;x++)//发原密码     {             DATA = *(p++);      for(i = 0;i < 8;i++)      {       write_bit(BIT0);       DATA >>= 1;      }    }    write_bit(0);//锁定位0:0     p = &cominceptbuff[0];    write_block(0x00,p);//写新配置参数:pwd=0             //密码无效:即清除密码     DATA = 0x00;//停止操作码00000000B     for(i = 0;i < 2;i++)    {    write_bit(BIT7);    DATA <<= 1;    }    p_U2270B_CFE = 1;       delay_2(560);//5.6ms     }    /*********************************/    void f_changepassword()//修改密码            {       uchar data *data p;    uchar i,x,addr;    addr = 0x07;//block7     p = &Nkey_a[0];//原密码     DATA = 0x80;//操作码10:10xxxxxxB     for(i = 0;i < 2;i++)    {      write_bit(BIT7);      DATA <<= 1;    }    for(x = 0;x < 4;x++)//发原密码     {             DATA = *(p++);      for(i = 0;i < 8;i++)      {       write_bit(BIT7);       DATA >>= 1;      }    }    write_bit(0);//锁定位0:0     p = &cominceptbuff[0];    write_block(0x07,p);//写新密码     p_U2270B_CFE = 1;    bankdata[24] = cominceptbuff[0];//密码存入     bankdata[25] = cominceptbuff[1];    bankdata[26] = cominceptbuff[2];    bankdata[27] = cominceptbuff[3];    DATA = 0x00;//停止操作码00000000B     for(i = 0;i < 2;i++)    {      write_bit(BIT7);      DATA <<= 1;    }    p_U2270B_CFE = 1;       delay_2(560);//5.6ms     }    /***************************子函数***********************************/    void write_bit(bit x)//写一位     {    if(x)    {      p_U2270B_CFE = 1;   delay_2(32);//448*11.0592/120=42延时448us       p_U2270B_CFE = 0;   delay_2(28);//280*11.0592/120=26写1     }    else    {      p_U2270B_CFE = 1;   delay_2(92);//192*11.0592/120=18       p_U2270B_CFE = 0;   delay_2(28);//280*11.0592/120=26写0     }    }    /*******************写一个block*******************/    void write_block(uchar addr,uchar data *data p)    {    uchar i,j;        for(i = 0;i < 4;i++)//block0数据     {             DATA = *(p++);      for(j = 0;j < 8;j++)      {       write_bit(BIT0);       DATA >>= 1;      }    }    DATA = addr <<= 5;//0地址     for(i = 0;i < 3;i++)    {      write_bit(BIT7);      DATA <<= 1;    }                   }    /*************************************************/    void write_password(uchar data *data p)    {    uchar i,j;        for(i = 0;i < 4;i++)//     {             DATA = *(p++);      for(j = 0;j < 8;j++)      {       write_bit(BIT0);       DATA >>= 1;      }    }        }   /*************************************************/   void main()    {    initial();    TI = RI = 0;    ES = 1;    EA = 1;  delay_2(28);   //f_readcard();     while(1) {   f_readcard();      //读卡   f_writecard(command1);  //写卡    f_clearpassword();   //清除密码     f_changepassword();    //修改密码 } }

    标签: 12345

    上传时间: 2017-10-20

    上传用户:my_lcs

  • 模拟 PWM 输出控制灯的 10 个亮度级别

    LED 一般是恒流操作的,如何改变 LED 的亮度呢?答案就是 PWM 控制。在一定的 频率的方波中,调整高电平和低电平的占空比,即可实现。比如我们用低电平点亮一个 LED 灯,我们假设把一个频率周期分为 10 个时间等份,如果方波中的高低电平占空比是 9:1, 这是就是一个比较暗的亮度,如果方波中高低电平占空比是 10:0,这时,全部是高电平, 灯是灭的。如果占空比是 5:5,就是一个中间亮度,如果高低比是 1:9,是一个比较亮的 亮度,如果高低是 0:10,这时全部是低电平,就是最亮的。  实际上应用中,电视屏幕墙中的几十百万 LED 象素都是这样控制的,而且每一个象素 都有红绿蓝 3 个 LED,每个 LED 可以变化的亮度是几百到几万或者更多的级别,以实现真 彩色的显示。还有在您的手机中,背光灯的亮度如果是可以变化的,也应该是这种工作方式。 目前的城市彩灯也有很多都使用了 LED,需要控制亮度是也是 PWM 控制。  下面来分析我们的例程,在这个例程中,我们将定时器 2 溢出定为 1/1200 秒。每 10 次脉冲输出一个 120HZ 频率。这每 10 次脉冲再用来控制高低电平的 10 个比值。这样,在 每个 1/120 秒的方波周期中,我们都可以改变方波的输出占空比,从而控制 LED 灯的 10 个 级别的亮度。  为什么输出方波的频率要 120HZ 这么高?因为如果频率太低,人眼就会看到闪烁感 觉。一般起码要在 60HZ 以上才感觉好点,120HZ 就基本上看不到闪烁,只能看到亮度的变 化了。  下面请看程序,程序中有比较多的注释:  ―――――――――――――――――――――――  #define uchar unsigned char //定义一下方便使用  #define uint unsigned int  #define ulong unsigned long  #include <reg52.h> //包括一个 52 标准内核的头文件    sbit P10 = P1^0; //要控制的 LED 灯  sbit K1= P3^2; //按键 K1    uchar scale;//用于保存占空比的输出 0 的时间份额,总共 10 份    char code dx516[3] _at_ 0x003b;//这是为了仿真设置的  //模拟 PWM 输出控制灯的 10 个亮度级别  void main(void) // 主程序  {   uint n;     RCAP2H =0xF3; //赋 T2 的预置值,溢出 1 次是 1/1200 秒钟   RCAP2L =0x98;   TR2=1; //启动定时器   ET2=1; //打开定时器 2 中断   EA=1; //打开总中断   while(1) //程序循环   { ;//主程序在这里就不断自循环,实际应用中,这里是做主要工作   for(n=0;n<50000;n++); //每过一会儿就自动加一个档次的亮度   scale++;   if(scale==10)scale=0;   }  }  //1/1200 秒定时器 2 中断  timer2() interrupt 5  {   static uchar tt; //tt 用来保存当前时间在一秒中的比例位置   TF2=0;     tt++;   if(tt==10) //每 1/120 秒整开始输出低电平   {   tt=0;     if(scale!=0) //这里加这一句是为了消除灭灯状态产生的鬼影   P10=0;   }     if(scale==tt) //按照当前占空比切换输出高电平   P10=1;    }  ――――――――――――――――――  在主程序中,每延时一段时间,就自动换一个占空比,以使亮度自动变化,方便观察。  编译,运行,看结果。  可以看到,LED 的亮度以每种亮度 1 秒左右不断变化,共有 10 个级别。

    标签: PWM 10 模拟 控制灯 亮度 输出

    上传时间: 2017-11-06

    上传用户:szcyclone

  • XA003M人体红外感应模块原理图 PCB

    XA003M人体红外感应模块原理图 PCB   ,有需要样板的,请联系我,人体红外感应模块工作电压范围:DC3V-16V电平输出:高3.3V/低0V触发方式:可重复购发(默认)延时时间:默认30S(可定做范围)感应角度:C100度锥角感应距离:3米以内(可定做范围)工作温度:-20 ----  80度电路板外形尺寸:10*23mm感应透镜尺寸:直径:10mm产品尺寸:34*10mm

    标签: xa003m 人体红外感应模块

    上传时间: 2021-10-18

    上传用户:

  • 194个Protel99ses设计经典电路原理图PCB工程文件合集 可以做为你的学习设计参考

    194个Protel99ses设计经典电路原理图PCB工程文件合集,可以做为你的学习设计参考1820温度采集.ddb2003院电子竞赛.ddb2005CCTVROBOT.ddb2051流水灯.ddb232通信电路.ddb300M射频遥控电路.ddb458通信.ddb4X4动态扫描键盘.ddb4X4键盘.ddb51单片机最小系统.ddb555延时关灯.ddb61A板电路原理图.DDB8人表决器.ddbADC0832.DDBaltra下载电缆.DDBARM7MP3.ddbARMPower.ddbAtmega128.DDBATMEGA162.ddbATmega8最小系统板.ddbAVR.LibAVRJTAG.ddbAVR_KIT_MAINBOARD_v23_M2_OUT.DDBAVR_OSD.DDBAVR下载器.DDBBH1417+2051.DDBC2051红外遥控器.DdbCCD_control_1.ddbCLAADD8S.DDBCOM-RS232.ddbcommon.ddbdatacollector.ddbdds-huang1.ddbDDS_FPGA.ddbDDS_FPGA_OK.ddbDS12887.DDBFPGA-10K10单片机配置.DDBFPGA下载线.DdbGpro--桂电烧.DDBhuangqin.ddbhuangqin_2007-11-20.ddbI2C脉宽调制器.ddbICL7107.DDBIDE-TO-USB.ddbISP下载线.Ddbj113与k399功放.ddbLED电子钟.ddbLIJING.ddbLM3886功率放大器.DdbLM3S101核心板.ddbLPC2131pack.DdbLPC2292.ddbMAX7219.DDBMCU-Control.DDBOLED.ddbPCB1.DDBPCB11.DDBPCM语音编解码.ddbPC红外遥控器.ddbPT2262_PT2272无线收发-OK.DdbPT2262_PT2272无线收发.DdbPWM电机驱动.ddbRTL8019网卡.ddbSD_CARD_99SE.DDBTC1297功放.ddbTDA2004功放.ddbTDA2030功放.ddbTDA7240 功放.ddbTDA7294.ddbTDA7294功放.ddbtest.ddbWIGGLE.DDB三极管动态LED.ddb串行LCD驱动.Ddb串行显示模块.ddb串行点阵LCD.ddb串行键盘165-完成.ddb串行键盘165.ddb主控板.DDB主控板1.DDB交通灯交通灯.ddb低频功率放大器.ddb信号号发生器.ddb光控变色蠕虫.ddb八路AD.ddb具有看门狗的单片机电机控制.ddb冷光电源.ddb出租车计费器.ddb单片机在线编程板-下载板.Ddb单片机编码-机器人.Ddb单片机编码2-机器人.Ddb单片机解码-机器人.Ddb单片机解码2-机器人.Ddb参考电路.DDB双15V+5V稳压电源.ddb双稳压电源.Ddb基于1302的万年历8951.ddb基于M16的信号采集系统.ddb基于MC145170的调频锁相环收音机.Ddb声控延时灯.ddb多功能定时器.ddb多功能编程器.ddb完美的编程器.DDB巡线板.DDB常用封装库1.Ddb常用库元件.Ddb广西电子竞赛.ddb序列号发生器.ddb彩电待机节电器.DDB微机综合设计.ddb手机.DDB打印专用.Ddb控制板.DDB搜球机.ddb搜球机_完成.ddb搜球机通信电路.ddb放大器.DDB教室灯控制器.ddb数字电位器.Ddb数字钟1.ddb数控电压表.ddb数控电源.DDB数控直流电流源.ddb数码管1.DDB数码音响修改完成无线串口通信.ddb无线报警器.ddb智能充电器--OK.ddb智能充电器-huang.DDB智能车--完成.ddb最简单的AVR编程器模电实验.ddb步进电机控制-修改版.DDB水开报警器.ddb水温控制器.ddb汽车防盗器.ddb波形发生器1.Ddb波形发生器1完成.Ddb涡流测厚仪涡流测厚仪-8位低精度.ddb涡流测厚仪.ddb液体点滴速度监控装置.ddb温度定时巡检系统.ddb温湿度控制.ddb滤波器.ddb激光测液位.Ddb电机伺服控制.ddb电机控制电路.ddb电机驱动模块.ddb电源.ddb电话报警器.ddb直接合成信号发生器.ddb看门狗MAX813L.ddb稳压电源.ddb简易51单片机编程器简易无线红外耳机.ddb简易编程器-卢打印.DDB简易编程器-黄.Ddb简易频率特性测试仪.ddb精密光电放大器0.ddb精密光电放大器1-黄.ddb精密恒流源数控部分.ddb精密放大器1.ddb红外发射器.ddb红外循迹.ddb红外接收头放大与整形电路.ddb红外控制灯.ddb红外线光控开关.ddb红外遥控数字钟.Ddb红外遥控电子钟.ddb耳机放大器.ddb自制PIC单片机编程器电路.DDB自适应巡线板.ddb舞蹈机器人.ddb调光电路.ddb通用放大器-错误.Ddb通用放大器.Ddb铁人三项.ddb锁相环函数发生器-修改.Ddb锁相环函数发生器-原版.Ddb锁相环函数发生器_优化版.ddb锁相环电机稳速.ddb频率计.ddb高精度信号放大与采集器.ddb高精度频率计.ddb

    标签: protel99ses 电路 原理图 pcb

    上传时间: 2021-10-25

    上传用户:slq1234567890

  • SH367309参考手册

    SH367309是5-16串锂电池BMS用数字前端芯片,适用于总电压不超过70V的锂电池Pack。        SH367309工作在保护模式下,可独立保护锂电池Pack。提供过充电保护、过放电保护、温度保护、充放电过流保护、短路保护、二次过充电保护等。集成平衡开关提高电芯一致性。        SH367309工作在采集模式下,可配合MCU管理锂电池Pack,同时使能所有保护功能。        SH367309内置VADC,用于采集电芯电压、温度以及电流;内置CADC采集电流,用于统计Pack剩余容量;内置EEPROM,用于保存保护阈值及延时等可调参数;内置TWI通讯接口,用于操作相关寄存器及EEPROM。产品特性介绍■ 硬件保护功能     - 过充电保护功能     - 过放电保护功能     - 充放电高温保护功能     - 充放电低温保护功能     - 充放电过流保护功能     - 短路保护功能     - 二次过充电保护功能     - 断线保护功能■ 内置平衡开关■ 禁止低压电芯充电功能■ 小电流检测功能■ 支持乱序上下电■ 内置看门狗模块■ 模式设计     - 采集模式(SH367309配合MCU应用)     - 保护模式(SH367309独立应用)     - 仓运模式     - 烧写模式■ 13-bit VADC用于采集电压/温度/电流     - 转换频率:10Hz     - 16路电压采集通道     - 1路电流采集通道     - 3路温度采集通道■ 16-bit Ʃ-∆CADC用于采集电流     - 转换频率:4Hz■ 内置EEPROM     - 编程/擦除次数:≤ 100次■ 稳压电源     - 3.3V(25mA@MAX)■ MOSFET驱动:电池组负端NMOS驱动■ CTL管脚:优先控制充放电MOSFET关闭■ TWI通讯接口:支持CRC8校验■ 低功耗设计:     - IDLE状态     - SLEEP状态     - Powerdown状态■ 封装     - TQFP48L

    标签: sh367309

    上传时间: 2021-11-22

    上传用户:jason_vip1

  • 电子电路单片机设计毕业设计论文资料软硬件设计50例资料合集资料

    电子电路单片机设计毕业设计论文资料软硬件设计50例资料合集资料0652、14093组成的脉宽调制器电路(电机调速).rar0653、CMOS单通道调制电路.rar0654、DC-AC变换器.rar0655、DC-AC变换器LCD显示电子温度计.rar0656、DC-AC变换器PWM控制式电机速度控制电路.rar0657、DC-AC变换器TC4069UB组成的方波振荡器.rar0658、DC-AC变换器按钮型游戏基准电路.rar0659、DC-AC变换器变形多谐振荡器.rar0660、DC-AC变换器标准多谐振荡器.rar0661、不规则变换循环LED闪烁电路.rar0662、采用3524的PWM式电机速度控制电路.rar0663、超声波鱼缸加氧器.rar0664、车辆转向灯电路.rar0665、出租车空车灯LED环形闪烁电路.rar0666、触摸调光灯.rar0667、触摸开关.rar0668、触摸控制定时器.rar0669、触摸控制转换开关.rar0670、串联式多谐振荡器.rar0671、串入式声控延时开关.rar0672、单结晶体管多谐振荡器.rar0673、单脉冲控制转换开关.rar0674、单脉冲控制转换开关基本电路.rar0675、单稳态多谐振荡器.rar0676、单稳态多谐振荡器组成的定时器电路.rar0677、单轴操纵杆接口电路.rar0678、低电平输出光控电路.rar0679、第三刹车灯电路.rar0680、电场与漏电检测器.rar0681、电动车充电自动控制电路.rar0682、电话机检修测试仪.rar0683、电话检修仪.rar0684、电子节拍器.rar0685、电子锁.rar0686、电子音乐门铃.rar0687、短波无线监听发射器1(100MHz).rar0688、短波无线监听发射器2(100MHz).rar0689、短路检测式报警电路.rar0690、断线检测式报警电路.rar0691、断线式防贼报警电路.rar0692、断续音报警信号发生器.rar0693、多功能密码锁.rar0694、多谐—张弛振荡器.rar0695、发射极耦合式多谐振荡器.rar0696、方波发生器.rar0697、非对称多谐振荡器.rar0698、峰谷用电定时器.rar0699、改进型发射极耦合式多谐振荡器.rar0700、改进型模拟PUT(可编程单结晶体管)器件振荡器.rar

    标签: 电子电路 单片机

    上传时间: 2021-12-10

    上传用户:

  • 网络安全技术-QoS技术白皮书

    网络安全技术-QoS技术白皮书摘 要:本文对Internet的三种服务模型(Best-Effort、IntServ和DiffServ),以及服务模型的 发展历程进行了简单介绍,较为详细地介绍了H3C系列数据通信产品所支持的QoS技 术,内容包括:流量分类和标记、拥塞管理、拥塞避免、流量监管与流量整形、链路 效率机制以及MPLS网络相关QoS技术,并且简要描述了在实际应用中的QoS解决方 案。网络运营商及行业用户等通过对这些QoS技术的灵活运用,可以在Internet或任何 基于IP的网络上为客户提供有保证的区分服务。1 概述 1.1 产生背景 在传统的IP网络中,所有的报文都被无区别的等同对待,每个转发设备对所有的报 文均采用先入先出(FIFO)的策略进行处理,它尽最大的努力(Best-Effort)将报 文送到目的地,但对报文传送的可靠性、传送延迟等性能不提供任何保证。 网络发展日新月异,随着IP网络上新应用的不断出现,对IP网络的服务质量也提出 了新的要求,例如VoIP等实时业务就对报文的传输延迟提出了较高要求,如果报 文传送延时太长,用户将不能接受(相对而言,E-Mail和FTP业务对时间延迟并不 敏感)。为了支持具有不同服务需求的语音、视频以及数据等业务,要求网络能够 区分出不同的通信,进而为之提供相应的服务。传统IP网络的尽力服务不可能识别 和区分出网络中的各种通信类别,而具备通信类别的区分能力正是为不同的通信提 供不同服务的前提,所以说传统网络的尽力服务模式已不能满足应用的需要。 QoS技术的出现便致力于解决这个问题。 1.2 技术优点 QoS旨在针对各种应用的不同需求,为其提供不同的服务质量。如: z 可以限制骨干网上 FTP 使用的带宽,也可以给数据库访问以较高优先级。 z 对于 ISP,其用户可能传送语音、视频或其他实时业务,QoS 使 ISP 能区分 这些不同的报文,并提供不同服务。 z 可以为时间敏感的多媒体业务提供带宽和低时延保证

    标签: 网络安全 qos

    上传时间: 2022-02-26

    上传用户:kingwide

  • 电子书- 十天学会单片机实例100.pdf

    电子书-十天学会单片机实例100.pdf//实例 4:用单片机控制一个灯闪烁:认识单片机的工作频率 #include<reg51.h> //包含单片机寄存器的头文件 /**************************************** 函数功能:延时一段时间 *****************************************/ void delay(void) //两个 void 意思分别为无需返回值,没有参数传递 { unsigned int i; //定义无符号整数,最大取值范围 65535 for(i=0;i<20000;i++) //做 20000 次空循环 ; //什么也不做,等待一个机器周期 } /******************************************************* 函数功能:主函数 (C 语言规定必须有也只能有 1 个主函数) ********************************************************/ void main(void) { while(1) //无限循环 { P1=0xfe; //P1=1111 1110B, P1.0 输出低电平 delay(); //延时一段时间 P1=0xff; //P1=1111 1111B, P1.0 输出高电平 www.91

    标签: 单片机

    上传时间: 2022-03-19

    上传用户:kingwide

  • 宏晶 STC15F2K60S2开发板配套软件源码 基础例程30例

    宏晶 STC15F2K60S2开发板配套软件源码 基础例程30例/**********************基于STC15F2K60S2系列单片机C语言编程实现使用如下头文件,不用另外再包含"REG51.H"#include <STC15F2K60S2.h>***********************/#include "STC15F2K60S2.H"//#include "REG51.H" //sfr P4   = 0xC0;#define  uint unsigned int  #define  uchar unsigned char  /**********************引脚别名定义***********************/sbit SEL=P4^3; // LED和数码管选择引脚 高:LED有效 低:数码管有效 // SEL连接的单片机引脚必须为带有上拉电阻的引脚 或将其直接连接VCC#define data P2 // 数据输入定义  /**********************函数名称:Delay_1ms功能描述:延时入口参数:unsigned int t 表示要延时t个1ms 出口参数:无备注:通过参数t,控制延时的时间长短***********************/void Delay_1ms(uint t){ uchar j;   for(;t>0;t--)       for(j=110;j>0;j--)     ;}/**********************函数名称:Led_test功能描述:对8个二极管进行测试,依次轮流点亮8个二极管入口参数:无出口参数:无备注:  ***********************/void Led_test(){    uchar G_value=0x01; // 给变量赋初值 SEL=1;    //高电平LED有效   while(1) { data=G_value; Delay_1ms(10000); G_value=G_value<<1; if(G_value==0x00) { data=G_value; Delay_1ms(10000); G_value=0x01;      } }}/***********************主函数************************/void main(){ ///////////////////////////////////////////////// //注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为 //      高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用 //相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2 //        P2.3/P2.7/P3.7/P4.2/P4.4/P4.5 ///////////////////////////////////////////////// P4M1=0x00; P4M0=0x00; P2M0=0xff; P2M1=0x00; //将P2设为推挽 Led_test();  }

    标签: STC15F2K60S2

    上传时间: 2022-05-03

    上传用户:

  • 单片机原理及应用 作业 —— 数码管 显示 学号

    一、 实验目的使用 51单片机的八位数码管顺序显示自己的学号。掌握 C 语言、汇编语言两种编程单片机控制程序的方法。掌握使用 Keil 4 或 Keil 5 软件编写、编译、调试程序的方法。掌握使用 Proteus 软件绘制电路原理图、硬件仿真和程序调试。二、实验设备笔记本电脑51 单片机(普中科技)八位数码管(单片机上已集成)应用程序:Proteus 8.0、Keil uVision5、stc-isp-v6.88E三、实验原理(1)数码管数码管按段数可分为七段数码管和 8 段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP),这个小数点可以更精确的表示数码管想要显示的内容。按能显示多少个(8),可分为 1 位、2位、3位、4位、5 位、6位、7 位等数码管。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时将公共极 COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极 COM 接到地线 GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。(2)51单片机单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器 CPU、随机存储器 RAM、只读存储器ROM、多种 I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。MSC-51 单片机指以 8051为核心的单片机,由美国的 Intel 公司在 1980 年推出,80C51 是 MCS-51系列中的一个典型品种;其它厂商以 8051为基核开发出的CMOS 工艺单片机产品统称为 80C51 系列。本实验中我使用普中科技的 51 单片机来点亮八位数码管并使其显示我的学号(20198043)。四、 实验 过程(1)熟悉数码管使用 Proteus 软件构建电路图,学会如何点亮数码管,熟悉如何使数码管显示不同的数字(0-9)。我们可以按照上面的原理图让对应的段导通,以显示数字。对于共阳数码管,若显示数字 0,可以让标号为 A,B,C,D,E,F 的段导通,标号为 G,H 的段不导通,然后将阳极通入高电压,即显示数字 0。代码举例如下:最后效果如下,成功点亮一个数码管。经过更多尝试和学习,学会使多位数码管显示多位数字。结果举例如下:(2)多位数码管显示学号为了显示我们学号,就不能只使用一位数码管,需要使用八位数码管,相较于单位数码管,多位数码管更加复杂,驱动函数有很大区别。多位数码管使用同一组段选,不同的位选,因此就不能够一对一地固定显示,这就需要动态扫描。动态扫描:利用人眼视觉暂留,多位数码管每次只显示一位数字,但是切换频率大于 200HZ(50 × 4),这样就能让人产生同时显示多个数字的错觉。具体操作是轮流向数码管送字形码和相应的位选。一个完整的驱动程序不只以上这些,一个完整的数码管驱动有 6部分:1. 码表(ROM):存储段码(一般放在 ROM中,节省 RAM空间),例如数字 0的段码就是 0xC0,码表则包含 0-9的段码2. 显存(RAM):保存要显示的数字,取连续地址(便于查表)3. 段选赋值:通过查表(码表)操作,将显存映射到段码4. 位选切换:切换显示的位置5. 延时:显示的数字短暂保持,提升亮度6. 消影:消除切换时不同位置互相影响而产生的残影

    标签: 单片机 数码管

    上传时间: 2022-06-08

    上传用户:canderile