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

交流<b>直流转换器</b>

  • 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实现DA转换电路设计

    在电子和自动化技术的应用中,单片机和D/A是经常需要同时使用的,在一般的应用中外接昂贵的D/A转换器,这样就增加了成本。但是,几乎所有的单片机有提供了定时器,甚至直接提供PWM输出功能。这就能够通过单片机的PWM输出,再加上简单的外围电路及对应的软件设计,实现对PWM的信号处理,得到稳定,精确的模拟输出,以实现D/A转换,这将大大降低电子设备的成本,减小体积,并容易提高精度。

    标签: PWM DA转换 电路设计

    上传时间: 2018-05-01

    上传用户:songguoda

  • 全能音频转换器

    可制作flash的音频,可以将音乐转换成144HZ

    标签: 音频转换器

    上传时间: 2018-05-07

    上传用户:xixihaha54

  • 韩文乱码转换器

    可以把韩文乱码转换成韩文的工具。在里面输入乱码后,点击确定就可以自动生成乱码对应的韩文

    标签: 转换器

    上传时间: 2021-01-03

    上传用户:

  • 移相全桥的原理及设计

    本文对PWM全桥软开关直流变换器进行了研究。具体阐述了PWM全桥ZS软开关直流变换器的工作原理和软开关的实现条件,就基本的移相控制FB ZVS PWM变换器存在的问题给予分析并对两种改进方案进行了研究:1、能在全部工作范围内实现零电压开关的改进型全桥移相zvs-PWM DCDC变换器,文中通过对其开关过程的分析,得出实现全负载范围内零电压开关的条件。采用改进方案设计了一台48V~6 VDC/DC变换器,实验结果证明其比基本的 ZVS-PWM变换器具有更好的软开关性能。2、采用辅助网络的全桥移相 ZVZCS-PWM DCDC变换器,文中具体分析了其工作原理及变换器特性,并进行实验研究随着电力电子技术的发展,功率变换器在开关电源、不间断电源、CPU电源照明、电机驱动控制、感应加热、电网的无功补偿和谐波治理等众多领域得到日益广泛的应用,电力电子技术高频化的发展趋势使功率变换器的重量大大减轻体积大大减小,提高了产品的性能价格比,但采用传统的硬开关技术,开关损耗将随着开关频率的提高而成正比地增加,限制了开关的高频化提高功率开关器件本身的开关性能,可以减少开关损耗,另一方面,从变换器结构和控制上改善功率开关器件的开关性能,可以减少开关损耗。如缓冲技术、无损缓冲技术、软开关技术等软开关技术在减少功率开关器件的开关损耗方面效果比较好,理论上可使开关损耗减少为零。12软开关技术的原理和类型功率变换器通常采用PwM技术来实现能量的转换。硬开关技术在每次开关通断期间功率器件突然通断全部的负载电流,或者功率器件两端电压在开通时通过开关释放能量,这种方式的工作状况下必将造成比较大的开关损耗和开关应力,使开关频率不能做得很高。软开关技术是利用感性和容性元件的谐振原理,在导通前使功率开关器件两端的电压降为零,而关断时先使功率开关器件中电流下降到零,实现功率开关器件的零损耗开通和关断,并且减少开关应力。

    标签: 移相全桥

    上传时间: 2022-03-29

    上传用户:jason_vip1

  • 基于STC15F2K60S2单片机的电流信号检测仪

    本设计采用分立元件和STC15F2K60S2单片机设计出了电流信号检测仪。STC15F2K60S2单片机与采样电路和整流电路相配合,利用STC15F2K60S2单片机的A/D转换器和中断系统测量出交流电流的大小和频率,并通过OLED实时显示参数。该方案能较好地测量出交流电流的大小和频率,且电路简单,成本较低。

    标签: stc15f2k60s2 单片机 电流信号检测仪

    上传时间: 2022-04-03

    上传用户:

  • LLC串联谐振全桥DCDC变换器研究

    高频化、高功率密度和高效率,是DC/DC变换器的发展趋势。传统的硬开关变换器限制了开关频率和功率密度的提高。移相全桥 PWM ZVS DC/DC变换器可以实现主开关管的wV5s,但滞后桥臂实现zwS的负载范围较小:整流二极管存在反向恢复问题不利于效率的提高:输入电压较高时,变换器效率较低,不适合输入电压高和有掉电维持时间限制的高性能开关电源。LLC串联谐振Dc/DC变换器是直流变换器研究领域的热点,可以较好的解决移相全桥 PWM ZVS DC/DC变换器存在的缺点。但该变换器工作过程较为复杂,难于设计和控制,目前尚处于研究阶段。本文以LLC串联谐振全桥DC/DC变换器作为研究内容。以下是本文的主要研究工作:对LLC串联谐振全桥DC/DC变换器的工作原理进行了详细研究,利用基频分量近似法建立了变换器的数学模型,确定了主开关管实现Zs的条件,推导了边界负载条件和边界频率,确定了变换器的稳态工作区域,推导了输入,输出电压和开关频率以及负载的关系。仿真结果证明了理论分析的正确性采用扩展描述函数法建立了变换器在开关频率变化时的小信号模型,在小信号模型的基础上分析了系统的稳定性,根据动态性能的要求设计了控制器。仿真结果证明了理论分析的正确性讨论了一台500w实验样机的主电路和控制电路设计问题,给出了设计步骤,可以给实际装置的设计提供参考。最后给出了实验波形和实验数据。实验结果验证了理论分析的正确性

    标签: llc

    上传时间: 2022-04-04

    上传用户:

  • 基于Proteus的单片机模数转换电路的设计与仿真

    以单片机控制A/D转换器TLC549为例,对A/D转换器的主要技术指标进行了分析研究,在Proteus平台下,完成了A/D转换电路的构建,采用器件工作时序方式进行程序编写,借助仿真图表、虚拟仪器等工具对A/D转换的数据进行测量并对失调误差、增益误差、微分非线性、积分非线性和转换时间等重要参数进行了详细分析。结果表明:使用Proteus软件可对A/D转换过程进行定性分析,将抽象的A/D转换器技术指标直观化、形象化展现出来,有助于学生更好地理解A/D转换过程。The main technical indicators of A/D converter were analyzed and studied with an example from A/D converter TLC2543 which is controlled by using SCM.It was completed the construction of the A/D converter circuit under the Proteus software.The programming based on the operation sequence of the chip is put forward.With the aid of the simulation tools such as virtual instrument,simulation charts provided by Proteus,the important parameters of circuit such as offset error,gain error,differential nonlinearity(DNL),integral nonlinearity (INL) and conversion time are analyzed detailedly.Simulation results show that the A/D conversion process can be qualitatively analyzed and visualized the abstract indicators of A/D.The system can help students better to understand the SCM conversion process.

    标签: proteus 单片机 模数转换

    上传时间: 2022-04-04

    上传用户:

  • 高频准谐振反激控制器 NCP1342中文介绍

    NCP1342是一款高度集成的准谐振反激控制器,适用于设计高性能离线电源转换器。借助集成的有源X2电容器放电功能,NCP1342可以实现低于30 mW的空载功耗。NCP1342具有专有的谷值锁定电路,可确保稳定的谷值切换。该系统工作到第六谷,并转换到频率折返模式以减少开关损耗。随着负载进一步降低,NCP1342进入安静跳跃模式以管理功率传输,同时将噪声降至最低。为确保高频设计的轻负载性能,NCP1342集成了具有最小峰值电流调制的快速折返功能,可快速降低开关频率。为确保转换器坚固耐用,NCP1342实施了多个关键保护功能,例如内部掉电检测,无输入功率的无耗散过功率保护(OPP),可实现恒定的最大输出功率,通过专用引脚的锁存过压和NTC就绪的过热保护,以及断线检测以便在移除交流电源线时对X2电容器安全放电。

    标签: ncp1342 准谐振反激控制器

    上传时间: 2022-04-25

    上传用户:jiabin

  • 电力电子技术(第4版)

    本书为学习电力电子技术的经典教材!电力电子技术是自动化专业、电气工程及其自动化专业的重要专业基础课之一。本书主要包括电力电子器件、交流直流变换器、交流交流变换器、直流直流变换器、直流交流变换器、谐振开关电路、无功功率补偿、谐波抑制和MATLAB/Simulink在电力电子技术中的仿真应用等内容,对读者了解和掌握变换器特性,特别是设计新型变换器具有重要的作用。本书还增加了一些实际应用环节,具有较强的应用性和工程适用性。

    标签: 电力电子

    上传时间: 2022-05-11

    上传用户:zhaiyawei