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

齿轮缺陷<b>快速检测</b>

  • 基于MEMS与单片机的西瓜成熟度无损检测系统的研究

    摘要:通过对西瓜的力学和物理特性的分析,设计一套以凌阳十六位单片机为控制核心,以MEMS(微机电系统)加速度传感器为检测工具,以FFT(快速傅里叶变换)为信号分析和计算方法的西瓜成熟度快速检测装置.检测过程中,利用对西瓜的敲击产生的振动频率响应,来准确判断西瓜的成熟程度.检测结果将显示在液晶显示器上,包括振动波形,振动频率和成熟度指数,并且进行成熟度等级分类.关键词:MEMS;单片机;西瓜成熟度

    标签: MEMS 单片机 无损检测

    上传时间: 2013-10-14

    上传用户:urgdil

  • MSP430系列flash型超低功耗16位单片机

    MSP430系列flash型超低功耗16位单片机MSP430系列单片机在超低功耗和功能集成等方面有明显的特点。该系列单片机自问世以来,颇受用户关注。在2000年该系列单片机又出现了几个FLASH型的成员,它们除了仍然具备适合应用在自动信号采集系统、电池供电便携式装置、超长时间连续工作的设备等领域的特点外,更具有开发方便、可以现场编程等优点。这些技术特点正是应用工程师特别感兴趣的。《MSP430系列FLASH型超低功耗16位单片机》对该系列单片机的FLASH型成员的原理、结构、内部各功能模块及开发方法与工具作详细介绍。MSP430系列FLASH型超低功耗16位单片机 目录  第1章 引 论1.1 MSP430系列单片机1.2 MSP430F11x系列1.3 MSP430F11x1系列1.4 MSP430F13x系列1.5 MSP430F14x系列第2章 结构概述2.1 引 言2.2 CPU2.3 程序存储器2.4 数据存储器2.5 运行控制2.6 外围模块2.7 振荡器与时钟发生器第3章 系统复位、中断及工作模式3.1 系统复位和初始化3.1.1 引 言3.1.2 系统复位后的设备初始化3.2 中断系统结构3.3 MSP430 中断优先级3.3.1 中断操作--复位/NMI3.3.2 中断操作--振荡器失效控制3.4 中断处理 3.4.1 SFR中的中断控制位3.4.2 中断向量地址3.4.3 外部中断3.5 工作模式3.5.1 低功耗模式0、1(LPM0和LPM1)3.5.2 低功耗模式2、3(LPM2和LPM3)3.5.3 低功耗模式4(LPM4)22 3.6 低功耗应用的要点23第4章 存储空间4.1 引 言4.2 存储器中的数据4.3 片内ROM组织4.3.1 ROM 表的处理4.3.2 计算分支跳转和子程序调用4.4 RAM 和外围模块组织4.4.1 RAM4.4.2 外围模块--地址定位4.4.3 外围模块--SFR4.5 FLASH存储器4.5.1 FLASH存储器的组织4.5.2 FALSH存储器的数据结构4.5.3 FLASH存储器的控制寄存器4.5.4 FLASH存储器的安全键值与中断4.5.5 经JTAG接口访问FLASH存储器39第5章 16位CPU5.1 CPU寄存器5.1.1 程序计数器PC5.1.2 系统堆栈指针SP5.1.3 状态寄存器SR5.1.4 常数发生寄存器CG1和CG25.2 寻址模式5.2.1 寄存器模式5.2.2 变址模式5.2.3 符号模式5.2.4 绝对模式5.2.5 间接模式5.2.6 间接增量模式5.2.7 立即模式5.2.8 指令的时钟周期与长度5.3 指令组概述5.3.1 双操作数指令5.3.2 单操作数指令5.3.3 条件跳转5.3.4 模拟指令的简短格式5.3.5 其他指令第6章 硬件乘法器6.1 硬件乘法器6.2 硬件乘法器操作6.2.1 无符号数相乘(16位×16位、16位×8位、8位×16位、8位×8位)6.2.2 有符号数相乘(16位×16位、16位×8位、8位×16位、8位×8位)6.2.3 无符号数乘加(16位×16位、16位×8位、8位×16位、8位×8位)6.2.4 有符号数乘加(16位×16位、16位×8位、8位×16位、8位×8位)6.3 硬件乘法器寄存器6.4 硬件乘法器的软件限制6.4.1 寻址模式6.4.2 中断程序6.4.3 MACS第7章 基础时钟模块7.1 基础时钟模块7.2 LFXT1与XT27.2.1 LFXT1振荡器7.2.2 XT2振荡器7.2.3 振荡器失效检测7.2.4 XT振荡器失效时的DCO7.3 DCO振荡器7.3.1 DCO振荡器的特性7.3.2 DCO调整器7.4 时钟与运行模式7.4.1 由PUC启动7.4.2 基础时钟调整7.4.3 用于低功耗的基础时钟特性7.4.4 选择晶振产生MCLK7.4.5 时钟信号的同步7.5 基础时钟模块控制寄存器7.5.1 DCO时钟频率控制7.5.2 振荡器与时钟控制寄存器7.5.3 SFR控制位第8章 输入输出端口8.1 引 言8.2 端口P1、P28.2.1 P1、P2的控制寄存器8.2.2 P1、P2的原理8.2.3 P1、P2的中断控制功能8.3 端口P3、P4、P5和P68.3.1 端口P3、P4、P5和P6的控制寄存器8.3.2 端口P3、P4、P5和P6的端口逻辑第9章 看门狗定时器WDT9.1 看门狗定时器9.2 WDT寄存器9.3 WDT中断控制功能9.4 WDT操作第10章 16位定时器Timer_A10.1 引 言10.2 Timer_A的操作10.2.1 定时器模式控制10.2.2 时钟源选择和分频10.2.3 定时器启动10.3 定时器模式10.3.1 停止模式10.3.2 增计数模式10.3.3 连续模式10.3.4 增/减计数模式10.4 捕获/比较模块10.4.1 捕获模式10.4.2 比较模式10.5 输出单元10.5.1 输出模式10.5.2 输出控制模块10.5.3 输出举例10.6 Timer_A的寄存器10.6.1 Timer_A控制寄存器TACTL10.6.2 Timer_A寄存器TAR10.6.3 捕获/比较控制寄存器CCTLx10.6.4 Timer_A中断向量寄存器10.7 Timer_A的UART应用 第11章 16位定时器Timer_B11.1 引 言11.2 Timer_B的操作11.2.1 定时器长度11.2.2 定时器模式控制11.2.3 时钟源选择和分频11.2.4 定时器启动11.3 定时器模式11.3.1 停止模式11.3.2 增计数模式11.3.3 连续模式11.3.4 增/减计数模式11.4 捕获/比较模块11.4.1 捕获模式11.4.2 比较模式11.5 输出单元11.5.1 输出模式11.5.2 输出控制模块11.5.3 输出举例11.6 Timer_B的寄存器11.6.1 Timer_B控制寄存器TBCTL11.6.2 Timer_B寄存器TBR11.6.3 捕获/比较控制寄存器CCTLx11.6.4 Timer_B中断向量寄存器第12章 USART通信模块的UART功能12.1 异步模式12.1.1 异步帧格式12.1.2 异步通信的波特率发生器12.1.3 异步通信格式12.1.4 线路空闲多机模式12.1.5 地址位多机通信格式12.2 中断和中断允许12.2.1 USART接收允许12.2.2 USART发送允许12.2.3 USART接收中断操作12.2.4 USART发送中断操作12.3 控制和状态寄存器12.3.1 USART控制寄存器UCTL12.3.2 发送控制寄存器UTCTL12.3.3 接收控制寄存器URCTL12.3.4 波特率选择和调整控制寄存器12.3.5 USART接收数据缓存URXBUF12.3.6 USART发送数据缓存UTXBUF12.4 UART模式,低功耗模式应用特性12.4.1 由UART帧启动接收操作12.4.2 时钟频率的充分利用与UART的波特率12.4.3 多处理机模式对节约MSP430资源的支持12.5 波特率计算 第13章 USART通信模块的SPI功能13.1 USART同步操作13.1.1 SPI模式中的主模式13.1.2 SPI模式中的从模式13.2 中断与控制功能 13.2.1 USART接收/发送允许位及接收操作13.2.2 USART接收/发送允许位及发送操作13.2.3 USART接收中断操作13.2.4 USART发送中断操作13.3 控制与状态寄存器13.3.1 USART控制寄存器13.3.2 发送控制寄存器UTCTL13.3.3 接收控制寄存器URCTL13.3.4 波特率选择和调制控制寄存器13.3.5 USART接收数据缓存URXBUF13.3.6 USART发送数据缓存UTXBUF第14章 比较器Comparator_A14.1 概 述14.2 比较器A原理14.2.1 输入模拟开关14.2.2 输入多路切换14.2.3 比较器14.2.4 输出滤波器14.2.5 参考电平发生器14.2.6 比较器A中断电路14.3 比较器A控制寄存器14.3.1 控制寄存器CACTL114.3.2 控制寄存器CACTL214.3.3 端口禁止寄存器CAPD14.4 比较器A应用14.4.1 模拟信号在数字端口的输入14.4.2 比较器A测量电阻元件14.4.3 两个独立电阻元件的测量系统14.4.4 比较器A检测电流或电压14.4.5 比较器A测量电流或电压14.4.6 测量比较器A的偏压14.4.7 比较器A的偏压补偿14.4.8 增加比较器A的回差第15章 模数转换器ADC1215.1 概 述15.2 ADC12的工作原理及操作15.2.1 ADC内核15.2.2 参考电平15.3 模拟输入与多路切换15.3.1 模拟多路切换15.3.2 输入信号15.3.3 热敏二极管的使用15.4 转换存储15.5 转换模式15.5.1 单通道单次转换模式15.5.2 序列通道单次转换模式15.5.3 单通道重复转换模式15.5.4 序列通道重复转换模式15.5.5 转换模式之间的切换15.5.6 低功耗15.6 转换时钟与转换速度15.7 采 样15.7.1 采样操作15.7.2 采样信号输入选择15.7.3 采样模式15.7.4 MSC位的使用15.7.5 采样时序15.8 ADC12控制寄存器15.8.1 控制寄存器ADC12CTL0和ADC12CTL115.8.2 转换存储寄存器ADC12MEMx15.8.3 控制寄存器ADC12MCTLx15.8.4 中断标志寄存器ADC12IFG.x和中断允许寄存器ADC12IEN.x15.8.5 中断向量寄存器ADC12IV15.9 ADC12接地与降噪第16章 FLASH型芯片的开发16.1 开发系统概述16.1.1 开发技术16.1.2 MSP430系列的开发16.1.3 MSP430F系列的开发16.2 FLASH型的FET开发方法16.2.1 MSP430芯片的JTAG接口16.2.2 FLASH型仿真工具16.3 FLASH型的BOOT ROM16.3.1 标准复位过程和进入BSL过程16.3.2 BSL的UART协议16.3.3 数据格式16.3.4 退出BSL16.3.5 保护口令16.3.6 BSL的内部设置和资源附录A 寻址空间附录B 指令说明B.1 指令汇总B.2 指令格式B.3 不增加ROM开销的模拟指令B.4 指令说明(字母顺序)B.5 用几条指令模拟的宏指令附录C MSP430系列单片机参数表附录D MSP430系列单片机封装形式附录E MSP430系列器件命名

    标签: flash MSP 430 超低功耗

    上传时间: 2014-04-28

    上传用户:sssnaxie

  • 本规范是华为公司资料。冗余备份协议VRRP 特性增强技术是一项VRRP实现快速切换的技术

    本规范是华为公司资料。冗余备份协议VRRP 特性增强技术是一项VRRP实现快速切换的技术,通过VRRP 绑定的BFD完成链路的快速检测,然后通过配置保证VRRP实现快速切换

    标签: VRRP 华为公司 冗余 备份

    上传时间: 2014-11-30

    上传用户:253189838

  • 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

  • vibe检测

    基于vibe的运动目标检测,可以实现快速检测出运动目标。实时性好

    标签: vibe 检测

    上传时间: 2017-12-04

    上传用户:fangfeng

  • (网盘)300本Python电子书

    |- 数据科学速查表 - 0 B|- 迁移学习实战 - 0 B|- 零起点Python机器学习快速入门 - 0 B|- 《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码 - 0 B|- 《Python生物信息学数据管理》中文版PDF+英文版PDF+源代码 - 0 B|- 《Python深度学习》2018中文版pdf+英文版pdf+源代码 - 0 B|- 《Python编程:从入门到实践》中文版+源代码 - 0 B|- stanford machine learning - 0 B|- Python语言程序设计2018版电子教案 - 0 B|- Python网络编程第三版 (原版+中文版+源代码) - 0 B|- Python机器学习实践指南(中文版带书签)、原书代码、数据集 - 0 B|- python官方文档 - 0 B|- Python编程(第4版 套装上下册) - 0 B|- PyQt5快速开发与实战(pdf+源码) - 0 B|- linux - 0 B|- 征服PYTHON-语言基础与典型应用.pdf - 67.40 MB|- 与孩子一起学编程_中文版_详细书签.pdf - 69.10 MB|- 用Python做科学计算.pdf - 6.10 MB|- 用Python写网络爬虫.pdf - 9.90 MB|- 用Python进行自然语言处理(中文翻译NLTK).pdf - 4.40 MB|- 像计算机科学家那样思考 Python中文版第二版.pdf - 712.00 kB|- 网络爬虫-Python和数据分析.pdf - 6.90 MB|- 图解机器学习.pdf - 59.40 MB|- 凸优化.pdf - 5.70 MB|- 数据挖掘导论.pdf - 2.50 MB|- 数据科学入门.pdf - 13.30 MB|- 数据结构与算法__Python语言描述_裘宗燕编著_北京:机械工业出版社_,_2016.01_P346.pdf - 74.30 MB|- 神经网络与深度学习.pdf - 92.60 MB|- 深入Python3...

    标签: python

    上传时间: 2022-06-06

    上传用户:

  • 基于有源电力滤波器谐波与无功补偿电流的控制算法研究.rar

    随着电力电子装置越加广泛的投入使用,电能得到了更加充分的应用,但是伴随而来的是越来越多的非线性、冲击性负载的投入使用,电网中谐波污染日益严重,在针对此类谐波抑制和无功补偿装置的研究中,电力有源滤波器APF得到了广泛应用. 与传统无源滤波器比较,有源电力滤波器具有动态响应特性好,滤波特性不受系统阻抗的影响等优势.而APF所采用的谐波电流检测方法,直接决定了谐波的检测精度和跟踪速度,是决定谐波补偿特性的关键.本论文重点研究了谐波电流检测方法. 在众多有源滤波器的谐波及无功电流检测算法中,基于三相瞬时无功功率理论的应用最为广泛.应用此理论的i<,p>-i<,q>岛检测方法计算简单,具有较好实时性,适合电流快速检测的优点;但同时也存在很多局限性. 本文首先通过分析、比较总结出各类APF的优缺点和适用性,系统地研究了有源电力滤波器的两个关键技术:谐波电流检测和PWM信号发生器的控制策略;在此基础上,针对在负载电流有较大突变时补偿电路会产生较大畸变影响补偿效果的问题,以及三相电压畸变时i<,p>-i<,q>检测法存在的误差等问题,从基于DSP控制的三相四线制并联型有源电力滤波器的结构出发进行优化设计,提出了一种改进的i<,p>-i<,q>检测法,在该检测法中增加了平衡.APF直流侧电容总电压和上下电容电压的闭环控制,以消除负载电流突变时产生的畸变;并采用一种新颖的基于低通滤波的A相正序电压提取单元来代替原始的i<,p>-i<,q>检测法的PLL锁相环,在三相电压畸变情况下仍可以正确提取A相正序电压,以精确检测出谐波和无功电流. 最后通过MATLAB6.5对系统进行了仿真验证,仿真结果表明该算法能有效保证检测效果的实时性和精确性,证明了该算法的可行性.

    标签: 有源电力滤波器 无功补偿 控制

    上传时间: 2013-04-24

    上传用户:jackgao

  • 数字化交流方波埋弧焊电源的研究.rar

    数字技术、电力电子技术以及控制论的进步推动弧焊电源从模拟阶段发展到数字阶段。数字化逆变弧焊电源不仅可靠性高、控制精度高而且容易大规模集成、方便升级,成为焊机的发展方向,推动了焊接产业的巨大发展。针对传统的埋弧焊电源存在的体积大、控制电路复杂、可靠性差等问题,本文提出了双逆变结构的焊机主电路实现方法和基于“MCU+DSP”的数字化埋弧焊控制系统的设计方案。 本文详细介绍了埋弧焊的特点和应用,从主电源、控制系统两个方面阐述了数字化逆变电源的发展历程,对数字化交流方波埋弧焊的国内外研究现状进行了深入探讨,设计了双逆变结构的数字化焊接系统,实现了稳定的交流方波输出。 根据埋弧焊的电弧特点和交流方波的输出特性,本文采用双逆变结构设计焊机主电路,一次逆变电路选用改进的相移谐振软开关,二次逆变电路选用半桥拓扑形式,并研究了两次逆变过程的原理和控制方式,进行了相关参数计算。根据主电路电路的设计要求,电流型PWM控制芯片UC3846用于一次逆变电路的控制并抑制变压器偏磁,选择集成驱动芯片EXB841作为二次逆变电路的驱动。 本课题基于“MCU+DSP”的双机主控系统来实现焊接电源的控制。其中主控板单片机ATmega64L主要负责送丝机和行走小车的速度反馈及闭环PI运算、电机PWM斩波控制以及过压、过流、过热等保护电路的控制。DSP芯片MC56F8323则主要负责焊接电流、焊接电压的反馈和闭环PI运算以及控制焊接时序,以确保良好的电源外特性输出。外部控制箱通过按键、旋转编码器进行焊接参数和焊接状态的给定,预置和显示各种焊接参数,快速检测焊机状态并加以保护。 主控板芯片之间通过SPI通讯,外部控制箱和主控板之间则通过RS—485协议交换数据。通过软件设计,实现焊接参数的PI调节,精确控制了焊接过程,并进行了抗干扰设计,解决了影响数字化埋弧焊电源稳定运行的电磁兼容问题。 系统分析了交流方波参数的变化对焊接效果的影响,通过对焊接电流、焊接电压的波形分析,证明了本课题设计的埋弧焊电源能够精确控制引弧、焊接、 收弧等焊接时序,并可以有效抑制功率开关器件的过流和变压器的偏磁问题,取得了良好的焊接效果。 最后,对数字化交流方波埋弧焊的控制系统和焊接试验进行了总结,分析了系统存在的问题和不足,并指出了新的研究方向。 关键词:埋弧焊;交流方波;数字化;逆变;软开关技术

    标签: 数字化 交流 埋弧焊

    上传时间: 2013-04-24

    上传用户:kjgkadjg

  • 基于ARM架构的嵌入式人脸识别技术研究

    嵌入式人脸识别系统建立在嵌入式操作系统和嵌入式硬件系统平台之上,具有起点高、概念新、实用性强等特点。它涉及嵌入式硬件设计、嵌入式操作系统应用开发、人脸识别算法等领域的研究;嵌入式人脸识别系统携带方便、安装快捷、机动性强,可广泛应用于各类门禁系统、户外机动布控的实时监测等特殊场合,因此对嵌入式人脸识别的研究工作具有突出的理论意义和广泛的应用前景。 本文是上海市经委创新研究项目《射频识别RFID系统-自动识别和记录人群的身份》(编号:04-11-2)与上海市科委AM基金项目《基于ARM和RFID芯片的自组织安全监控系统的研制》(编号:0512)的主要研究内容之一。论文从构建自动人脸识别系统所需解决的若干关键问题入手,重点探讨了基于嵌入式ARM微处理器的实时人脸检测、关键特征定位、高效的人脸特征描述、鲁棒的人脸识别分类器及自动人脸识别系统设计等问题的研究。论文的主要工作和创新点表现在以下方面: 1实现了结合肤色校验的Haar特征级联分类器嵌入式实时人脸检测,提出了基于人脸约束的人眼Haar特征RSVM级联分类器人眼检测算法和基于遮罩掩磨与椭圆拟合的瞳孔定位算法。 复杂背景中的人脸检测是自动人脸识别系统首先要解决的关键问题,通过对基于肤色模型和基于Haar特征级联强分类器的人脸检测算法的分析研究,综合两个算法的优点,提出了基于肤色模型校验和Haar特征级联强分类器的嵌入式实时人脸检测算法。实验结果表明,该算法不仅解决了复杂背景中的类肤色和类人脸结构问题,而且具有较高的检测率和较快的检测速度,同时对光照、尺度等变化条件下的人脸检测也具有较强的鲁棒性。 人眼检测与瞳孔定位在人脸归一化和有效人脸特征抽取等方面起着非常重要的作用,为了快速检测人眼并精确定位人眼瞳孔中心,论文提出了基于人脸约束的人眼Haar特征RSVM级联分类器人眼检测算法和基于遮罩掩磨与椭圆拟合的瞳孔定位算法,首先利用人眼检测分类器在人脸区域内完成对人眼位置的检测,然后通过对检测到的人眼进行遮罩掩磨、简单图像形态学变换及椭圆拟合实现瞳孔中心的精确定位。测试结果表明该算法只需几百毫秒便能完成人眼检测与瞳孔中心定位整个过程,在保证检测速度较快的同时,还能确保较高的定位精度。 2 针对传统线性判别分析法存在的小样本问题(sss),通过调整Fisher判别准则,实现了自适应线性判别分析算法及相应的人脸识别方法人脸识别中的小样本问题使线性判别分析算法的类内散布矩阵发生严重退化,导致问题无法求解。本文在人脸识别小样本问题的基础上,通过调整Fisher判别准则,利用类间散布矩阵的补空间巧妙地避开类内散布矩阵的求逆运算,通过训练集每类样本的样本数信息自适应改变调整参数,实现了自适应线性判别分析算法,实验结果表明,该算法能有效解决人脸识别中的小样本问题。 3 提出了基于有效人脸区域的Gabor特征抽取算法,有效地解决了Gabor特征抽取维数过高的问题。 Gabor小波对图像的光照、尺度变化具有较强鲁棒性,是一种良好的人脸特征表征方法。但维数过高的Gabor特征造成应用系统的维数灾难,为解决Gabor特征的维数灾难问题,论文第四章提出了基于有效人脸区域的Gabor特征抽取算法,该算法不仅有效地降低了人脸特征向量维数,缩小了人脸特征库的规模,同时降低了核心算法的时间和空间复杂度,而且具有与传统Gabor特征抽取算法同样的鲁棒性。 4 结合有效人脸区域的Gabor特征抽取、自适应线性判别分析算法和基于支持向量机分类策略,提出并实现了基于支持向量机的嵌入式人脸识别和嵌入式人像比对系统支持向量机通过引入核技巧对训练样本进行学习构造最小化错分风险的最优分类超平面,不仅具有强大的非线性和高维处理能力,而且具有更强的泛化能力。本文研究了支持向量机的多类分类策略和训练方法,并结合论文中提出的基于有效人脸区域的Gabor特征提取算法、自适应线性判别分析算法,首次在基于Windows CE操作系统的嵌入式ARM平台中实现了具有较强鲁棒性的嵌入式自动人脸识别系统和嵌入式人像比对系统。 5 提出并初步实现了基于客户机/服务器结构无线网络模型的远距离人脸识别方案为解决嵌入式人脸识别系统在海量人脸库中进行识别的难题,论文提出并初步实现了基于客户机/服务器结构无线网络模型的嵌入式远距离人脸识别方案。 客户机(嵌入式平台)完成对人脸图像的检测、归一化处理和人脸特征提取,然后通过无线网络将提取后的人脸特征数据传输到服务器端,由服务器在海量人脸库中完成人脸识别,并将识别后的结果通过无线网络传输到客户机显示输出,从而实现基于客户机/服务器无线网络模型的嵌入式远距离人脸识别方案。 6 结合我们开发的基于ARM的嵌入式自动人脸识别系统和嵌入式人像比对系统,从系统设计的角度探讨了在嵌入式系统中进行人脸识别应用设计的思路及应该注意的问题虽然嵌入式人脸识别系统的性能很大程度上取决于高效的人脸特征描述和鲁棒的人脸识别核心算法。但是,嵌入式系统的设计思想对嵌入式人脸识别系统的性能影响同样值得重视。本文第六章重点阐述了嵌入式自动人脸识别应用系统的设计思路,并结合我们自主开发的嵌入式自动人脸识别系统和嵌入式人像比对系统从系统设计的角度探讨了嵌入式人脸识别应用系统设计中应该注意的关键技术问题。 结合本文提出的算法我们在PC上完成对人脸识别分类器的训练,然后在嵌入式ARM开发平台上实现了嵌入式自动人脸识别、嵌入式人像比对两个便携式人员身份认证系统,经测试运行效果良好。所提出的人脸识别算法不仅具有一定的理论参考价值,而且对于嵌入式系统应用开发、AFR应用系统开发也具有一定的借鉴意义。

    标签: ARM 架构 嵌入式 人脸识别

    上传时间: 2013-05-18

    上传用户:我们的船长

  • 可重构FPGA通讯纠错进化电路及其实现

    ASIC对产品成本和灵活性有一定的要求.基于MCU方式的ASIC具有较高的灵活性和较低的成本,然而抗干扰性和可靠性相对较低,运算速度也受到限制.常规ASIC的硬件具有速度优势和较高的可靠性及抗干扰能力,然而不是灵活性较差,就是成本较高.与传统硬件(CHW)相比,具有一定可配置特性的场可编程门阵列(FPGA)的出现,使建立在可再配置硬件基础上的进化硬件(EHW)成为智能硬件电路设计的一种新方法.作为进化算法和可编程器件技术相结合的产物,可重构FPGA的研究属于EHW的研究范畴,是研究EHW的一种具体的实现方法.论文认为面向分类的专用类可重构FPGA(ASR-FPGA)的研究,可使可重构电路粒度划分的针对性更强、设计更易实现.论文研究的可重构FPGA的BCH通讯纠错码进化电路是一类ASR-FPGA电路的具体方法,具有一定的实用价值.论文所做的工作主要包括:(1)BCH编译码电路的设计——求取实验用BCH码的生成多项式和校验多项式及其相应的矩阵并构造实验用BCH码;(2)建立基于可重构FPGA的基核——构造具有可重构特性的硬件功能单元,以此作为可重构BCH码电路的设计基础;(3)构造实现可重构BCH纠错码电路的方法——建立可重构纠错码硬件电路算法并进行实验验证;(4)在可重构纠错码电路基础上,构造进化硬件控制功能块的结构,完成各进化RLA控制模块的验证和实现.课题是将可重构BCH码的编译码电路的实现作为一类ASR-FPGA的研究目标,主要成果是根据可编程逻辑电路的特点,选择一种可编程树的电路模型,并将它作为可重构FPGA电路的基核T;通过对循环BCH纠错码的构造原理和电路结构的研究,将基核模型扩展为能满足纠错码电路需要的纠错码基本功能单元T;以T作为再划分的基本单元,对FPGA进行"格式化",使T规则排列在FPGA上,通过对T的控制端的不同配置来实现纠错码的各个功能单元;在可重构基核的基础上提出了纠错码重构电路的嵌套式GA理论模型,将嵌套式GA的染色体串作为进化硬件描述语言,通过转换为相应的VHDL语言描述以实现硬件电路;采用RLA模型的有限状态机FSM方式实现了可重构纠错码电路的EHW的各个控制功能块.在实验方面,利用Xilinx FPGA开发系统中的VHDL语言和电路图相结合的设计方法建立了循环纠错码基核单元的可重构模型,进行循环纠错BCH码的电路和功能仿真,在Xilinx公司的Virtex600E芯片进行了FPGA实现.课题在研究模型上选取的是比较基本的BCH纠错码电路,立足于解决基于可重构FPGA核的设计的基本问题.课题的研究成果及其总结的一套ASR-FPGA进化硬件电路的设计方法对实际的进化硬件设计具有一定的实际指导意义,提出的基于专用类基核FPGA电路结构的研究方法为新型进化硬件的器件结构的设计也可提供一种借鉴.

    标签: FPGA 可重构 通讯 纠错

    上传时间: 2013-07-01

    上传用户:myworkpost