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

1.<b>10</b>

  • 实现HDB3编码,使用VHDL语言

    实现HDB3编码,使用VHDL语言,-1用01表示,1用10表示,0用00表示。

    标签: HDB3 VHDL 编码 语言

    上传时间: 2013-12-14

    上传用户:jjj0202

  • 使用单片机

    使用单片机,正弦波发生器,key0口按键减小输出频率,key1口按键增加输出频率 sinout口输出正弦波,(cosout口输出余弦波),使用定时器T0,16位定时模式。 R6、R7用作10毫秒延时寄存器。Fout输出方波。且输出的正弦波在0.01-83Hz范围内,方波在1.3Hz-10.6kHz范围内。

    标签: 用单片机

    上传时间: 2017-09-03

    上传用户:cmc_68289287

  • AVR单片机转速表

    /****************************************************************                  外部晶振8M                  PA0~3:四位数码管的位选                  PB0~7:数码管的8位段选                  外部中断0用于计数                  定时器0溢出中断的定时为1ms                  说明 :检测到水流较小时,继电器延时1秒关闭  ******************************************************************/                #include<iom16v.h>   #include<macros.h>   #define uchar unsigned char   #define uint unsigned int       char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};  //数码管段选        char position[4]={0xfe,0xfd,0xfb,0xf7};//数码管位选        uint sumnum=0;  //用于记录1000ms内进入中断的次数        uint time=0;   //记录进入比较定时器0的次数        uint num=0;     //记录1ms内进入中断的次数        uint count=0;   //进入外部中断0的次数        uchar flag;        uint sumnum1;   //记录100ms内的数目       /***************************函数声明***************************/        void delay();        void display(uint m );        void init();        void init_0();        void init_2();    void _delay_us(uint l)   {        unsigned int i;        for(i=0;i<l;i++)        {        asm("nop");        }   }           /**************************主函数***********************************/       void main()   {        init();        init_0();        init_2();        while(sumnum<5)        {           PORTD=0XBF;           segdisplay(sumnum1);        }       while(1)       {           segdisplay(sumnum1);       }           }        /*************************扫描数码管时的延时函数*********************/        void delay()    {         uchar i,j;         for(i=6;i>0;i--)         for(j=225;j>0;j--);    }        /************************数码管显示函数*****************************/       void segdisplay( int temp)        {         int seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};         int temp1,temp2,temp3,temp4;         temp1=temp/1000;         temp2=(temp/100)%10;         temp3=(temp/10)%10;         temp4=temp%10;         DDRB=0xff;         DDRA|=0x0f;           PORTA=~BIT(3);           PORTB=seg[temp1];           _delay_us(100);           PORTA=~BIT(2);           PORTB=seg[temp2];           _delay_us(100);           PORTA=~BIT(1);           PORTB=seg[temp3];           _delay_us(100);           PORTA=~BIT(0);           PORTB=seg[temp4];           _delay_us(100);       }        /***********************管脚初始化函数*********************/        void init()    {                      DDRD|=0X40;   //PD4 设置为输出             PORTD=0XBF;                DDRA=0XFF;             DDRB=0XFF;             PORTA=0XFF;             PORTB=0XFF;    }        /***********************外部中断0初始化*********************/        void init_0()    {         MCUCR=0X02;   //INT0为下降沿触发         GICR=0X40;   //使能INT0中断         SREG=0X80;  //使能总中断    }        /**********************定时器2初始化***********************/        void init_2()    {         TCCR0=0x03;   // 内部时钟,64 分频(8M/64=125KHz)          TCNT0=0x83;   //装初值           TIMSK=0x01;   // 允许 T/C0溢出中断中断      }          /***********************外部中断0子函数********************/        #pragma interrupt_handler int0_isr:2        void int0_isr(void)        {             count++;        }        /*********************定时计数器0溢出中断子函数*****************/       #pragma interrupt_handler int0_over:10        void int0_over(void)       {           TCNT0=0x83;   //重装初值            if((time%100) == 0)               sumnum1 = num;           if(time == 1000)           {               sumnum=num;               if(sumnum<10)               {                                      if((flag==1)&&(sumnum<10))                   {                       PORTD=0XFF;                       flag=0;                   }                                      flag++;               }               else                       PORTD=0XBF;               num=0;               time=0;           }           num+=count;           count=0;           ++time;        } 

    标签: C语言

    上传时间: 2016-03-09

    上传用户:彦 yan

  • 共轭梯度法--MATLAB程序

    共轭梯度法为求解线性方程组而提出。后来,人们把这种方法用于求解无约束最优化问题, 使之成为一种重要的最优化方法。   共轭梯度法的基本思想是把共轭性与最速下降方法相结合, 利用已知点处的梯度构造一组共 轭方向, 并沿这组方向进行搜索, 求出目标函数的极小点。 根据共轭方向的基本性质, 这种 方法具有二次终止性。 在各种优化算法中, 共轭梯度法是非常重要的一种。 其优点是所需存 储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。   共轭方向   无约束最优化方法的核心问题是选择搜索方向 . 在本次实验中 , 我们运用基于共轭方向的一种 算法 — 共轭梯度法   三.算法流程图:     四.实验结果:   (1). 实验函数   f=(3*x1-cos(x2*x3)-1/2)^2+(x1^2-81*(x2+0.1)+sin(x3)+1.06)^2+(exp(-x1*x2)+20*x3+ 1/3*(10*3.14159-3))^2;   给定初始点 (0,0,0) , k=1 ,最 大迭代次数 n       d   确定搜索方向   进 退 法 确 定 搜 索 区 间   分割法确定最 优步长  

    标签: MATLAB 梯度 程序

    上传时间: 2016-05-08

    上传用户:saren11

  • 红外遥控RGB

    #include "STC90.h" #include < intrins.h > #define uchar unsigned char #define uint unsigned int #define led_port P1 sbit IR_RE = P3^2; sbit led_r = P1^3; sbit led_g = P1^4; sbit led_b = P1^5; sbit led_wd = P1^7; sbit K1 =P3^0 ; //增加键 sbit K2 =P3^1 ; //减少键 sbit BEEP =P3^7 ; //蜂鸣器 uchar temp,temp1; bit k=0; //红外解码判断标志位,为0则为有效信号,为1则为无效 bit Flag2; uchar date[4]={0,0,0,0}; //date数组为存放地址原码,反码,数据原码,反码 uint lade_1,lade_2,lade_3,lade_4; uint num; uchar date_ram,ee_temp,ee_temp1; uchar WDT_NUM=0; uchar const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值01234567 uchar code seg[]={7,6,5,4,3,2,1,0};//分别对应相应的数码管点亮,即位码 unsigned long disp_date; void fade(); void fade1(); /*************************** 看门狗子程序*************************/ void watchdog_timer() { if(WDT_NUM==5) { WDT_NUM=0; led_wd=!led_wd; } WDT_NUM++; WDT_CONTR=0x3f; } /******************************************************************/ void delay(unsigned int cnt) { while(--cnt); } /*--------------------------延时1ms程子程序-----------------------*/ void delay_1ms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=126;y>0;y--); } /*--------------------------延时1ms程子程序-----------------------*/ delay1000() { uchar i,j; i=5; do{j=95; do{j--;} while(j); i--; } while(i); } /*---------------------------延时882us子程序-----------------------*/ delay882() { uchar i,j; i=6; do{j=71; do{j--;} while(j); i--; }while(i); } /*--------------------------延时2400us程子程序-----------------------*/ delay2400() { uchar i,j; i=5; do{j=237; do{j--;} while(j); i--; }while(i); } /**********************************************************************/ /* void display() { uchar i; for(i=0;i<8;i++) { P0=dofly[disp_date%10];//取显示数据,段码 P2=seg[i]; //取位码 delay_1ms(1); disp_date/=10; } } */ /*********************************************************************/ uchar EEPROM_read(uint addr)//EEPROM字节读 { ISP_CONTR=0x83; //系统时钟<12M时,对ISP_CONTR寄存器设置的值,本电路为11.0592M ISP_CMD=1; //字节读 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); return ISP_DATA; } //-------------------------------------------------------------------- void EEPROM_write(uint addr,uchar dat)//EEPROM字节写 { ISP_CONTR=0x83; //系统时钟<12M时,对ISP_CONTR寄存器设置的值,本电路为11.0592M ISP_CMD=2; //字节编程 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_DATA=dat; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); } //-------------------------------------------------------------------- void EEPROM_ERASE(uint addr)//EEPROM扇区擦除 { ISP_CONTR=0x83; //系统时钟<12M时,对ISP_CONTR寄存器设置的值,本电路为11.0592M ISP_CMD=3; //扇区擦除 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); } //************************************************************** /*----------------------------------------------------------*/ /*-----------------------红外解码程序(核心)-----------------*/ /*----------------------------------------------------------*/ void IR_decode() { uchar i,j; while(IR_RE==0); delay2400(); if(IR_RE==1) //延时2.4ms后如果是高电平则是新码 { delay1000(); delay1000(); for(i=0;i<4;i++) { for(j=0;j<8;j++) { while(IR_RE==0); //等待地址码第1位高电平到来 delay882(); //延时882us判断此时引脚电平 ///CY=IR_RE; if(IR_RE==0) { date[i]>>=1; date[i]=date[i]|0x00; } else if(IR_RE==1) { delay1000(); date[i]>>=1; date[i]=date[i]|0x80; } } //1位数据接收结束 } //32位二进制码接收结束 } } /* void LED_PWM() { lade_2=num; //384 lade_4=num; //384 while(lade_2!=0&Flag2==1) { for(lade_3=512;lade_3>lade_4;lade_3--) //512 { led_port=0x00; delay(1); } lade_3=512; //512 lade_4--; for(lade_1=0;lade_1<lade_2;lade_1++) { led_port=0x38; //c7 delay(1); } lade_1=0; lade_2--; if(temp!=0x0c&Flag2==1) { lade_2=0; } lade_2=num; //384 lade_4=num; //384 } } */ void calc() { EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; //************************************* 1 /* if(date[3]==0xff&Flag2==1) { if(num>=20) { num=num-80; } //else num=1; LED_PWM(); } if(date[3]==0xfe&Flag2==1) { if(num<=500) { num=num+80; } // else num=511; LED_PWM(); } if(ee_temp1==0xfd) { led_port=0x00; watchdog_timer(); } if(ee_temp1==0xfc) { led_port=0x00; led_r=1; led_g=1; led_b=1; watchdog_timer(); } */ //********************************************** 2 if(ee_temp1==0xfb) { led_port=0x00; led_r=1; watchdog_timer(); } if(ee_temp1==0xfa) { led_port=0x00; led_g=1; watchdog_timer(); } if(ee_temp1==0xf9) { led_port=0x00; led_b=1; watchdog_timer(); } if(ee_temp1==0xf8) { led_port=0x00; led_r=1; led_g=1; led_b=1; watchdog_timer(); } //************************************** 3 if(ee_temp1==0xf7) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x07) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x07) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf6) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x06) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x06) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf5) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x05) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x05) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf4) { while(ee_temp==4) { led_port=0x00; led_r=1; delay_1ms(200); led_port=0x00; led_r=1; led_g=1; delay_1ms(200); led_port=0x00; led_g=1; delay_1ms(200); watchdog_timer(); led_port=0x00; led_g=1; led_b=1; delay_1ms(200); led_port=0x00; led_b=1; delay_1ms(200); led_port=0x00; led_b=1; led_r=1; delay_1ms(200); watchdog_timer(); } } //************************************** 4 if(ee_temp1==0xf3) { uint fade_1,fade_2,fade_3,fade_4; fade_2=416; //384 fade_4=416; //384 while(fade_2!=0&ee_temp==0x03) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x03) { fade_2=0; } watchdog_timer(); fade_2=416; //384 fade_4=416; //384 } } if(ee_temp1==0xf2) { uint fade_1,fade_2,fade_3,fade_4; fade_2=384; //384 fade_4=384; //384 while(fade_2!=0&ee_temp==0x02) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x02) { fade_2=0; } watchdog_timer(); fade_2=384; //384 fade_4=384; //384 } } if(ee_temp1==0xf1) { uint fade_1,fade_2,fade_3,fade_4; fade_2=348; //384 fade_4=348; //384 while(fade_2!=0&ee_temp==0x01) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x01) { fade_2=0; } watchdog_timer(); fade_2=348; //384 fade_4=348; //384 } } if(ee_temp1==0xf0) { while(ee_temp==0) { led_port=0x00; led_r=1; delay_1ms(500); watchdog_timer(); led_port=0x00; led_g=1; delay_1ms(500); led_port=0x00; led_b=1; delay_1ms(500); watchdog_timer(); } } //******************************************** 5 if(ee_temp1==0xef) { uint fade_1,fade_2,fade_3,fade_4; fade_2=384; //384 fade_4=384; //384 while(fade_2!=0&ee_temp==0x0f) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0f) { fade_2=0; } watchdog_timer(); fade_2=384; //384 fade_4=384; //384 } } if(ee_temp1==0xee) { uint fade_1,fade_2,fade_3,fade_4; fade_2=320; //384 fade_4=320; //384 while(fade_2!=0&ee_temp==0x0e) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0e) { fade_2=0; } watchdog_timer(); fade_2=320; //384 fade_4=320; //384 } } if(ee_temp1==0xed) { uint fade_1,fade_2,fade_3,fade_4; fade_2=320; //384 fade_4=320; //384 while(fade_2!=0&ee_temp==0x0d) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0d) { fade_2=0; } watchdog_timer(); fade_2=320; //384 fade_4=320; //384 } } if(ee_temp1==0xec) fade(); //******************************************* 6 if(ee_temp1==0xeb) { led_port=0x00; led_r=1; led_g=1; watchdog_timer(); } if(ee_temp1==0xea) { led_port=0x00; //led_r=0; led_g=1; led_b=1; watchdog_timer(); } if(ee_temp1==0xe9) { led_port=0x00; led_r=1; //led_g=0; led_b=1; watchdog_timer(); } if(ee_temp1==0xe8) fade1(); } void fade() { // uchar i; uint fade_1,fade_2,fade_3,fade_4; fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x10; delay(1); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0c) { fade_2=0; } } watchdog_timer(); fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { if(ee_temp!=0x0c) { fade_2=0; } for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x20; delay(1); // watchdog_timer(); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); // watchdog_timer(); } fade_1=0; fade_2--; } watchdog_timer(); fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { if(ee_temp!=0x0c) { fade_2=0; } for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x08; delay(1); watchdog_timer(); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); watchdog_timer(); } fade_1=0; fade_2--; } watchdog_timer(); } void fade1() { // uchar i; uint fade_1,fade_2,fade_3,fade_4; fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x10; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x08) { fade_2=0; } } watchdog_timer(); fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { if(ee_temp!=0x08) { fade_2=0; } for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x20; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; } watchdog_timer(); fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { if(ee_temp!=0x08) { fade_2=0; } for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x08; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; } watchdog_timer(); } void init() { led_port=0x00; /* led_r=1; delay_1ms(500); led_port=0x00; led_g=1; delay_1ms(500); led_port=0x00; led_b=1; delay_1ms(500); led_port=0x00; */ delay_1ms(2); WDT_CONTR=0x3f; delay_1ms(500); } //******************************** void main() { init(); Flag2=0; SP=0x60; //堆栈指针 EX0=1; //允许外部中断0,用于检测红外遥控器按键 EA=1; num=255; while(1) { calc(); } } //******************************************************************** /*------------------------外部中断0程序-------------------------*/ /*------------------主要用于处理红外遥控键值--------------------*/ void int0() interrupt 0 { uchar i; Flag2=0; /////// k=0; EX0=0; //检测到有效信号关中断,防止干扰 for(i=0;i<4;i++) { delay1000(); if(IR_RE==1){k=1;} //刚开始为9ms的引导码. } led_port=0x00; if(k==0) { IR_decode(); //如果接收到的是有效信号,则调用解码程序 if(date[3]>=0xe8) { if(date[3]<=0xfb) { temp1=date[3]; EEPROM_ERASE(0x2000); //STC_EEROM_0X2000 temp1 EEPROM_write(0x2000,temp1); EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; /* temp=date[3]&0x0f; EEPROM_ERASE(0x2004); //STC_EEROM_0X2004 temp EEPROM_write(0x2004,temp); */ } else { EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; } } delay2400(); delay2400(); delay2400(); delay_1ms(500); } EX0=1; //开外部中断,允许新的遥控按键 }

    标签: RGB 红外遥控

    上传时间: 2016-07-02

    上传用户:184890962

  • 600w變壓器计算

    那么我们可以进行如下计算:1,输出电流Iout=Pout/Udc=600/400=1.5A2,最大输入功率Pin=Pout/η=600/0.92=652W3,输入电流最大有效值Iinrmsmax=Pin/Umin=652/85=7.67A4,那么输入电流有效值峰值为Iinrmsmax*1.414=10.85A5,高频纹波电流取输入电流峰值的20%,那么Ihf=0.2*Iinrmsmax=0.2*10.85=2.17A6,那么输入电感电流最大峰值为:ILpk=Iinrmsmax+0.5*Ihf=10.85+0.5*2.17=11.94A7,那么升压电感最小值为Lmin=(0.25*Uout)/(Ihf*fs)=(0.25*400)/(2.17*65KHz)=709uH8,输出电容最小值为:Cmin=Iout/(3.14*2*fac*Voutp-p)=1.5/(3.14*2*50*10)=477.7uF,实际电路中还要考虑hold up时间,所以电容容量可能需要重新按照hold up的时间要求来重新计算。实际的电路中,我用了1320uF,4只330uF的并联。

    标签: 变压器

    上传时间: 2021-12-04

    上传用户:

  • 周立功RS485协议指南 44页 高清文字版

    周立功RS485协议指南,RS485选型及应用指南。 1 章 RS-485 选型及应用指南 .........................................................................1 1.1 RS-232/422/485 标准 ...............................................................................................1 1.1.1 RS-232 标准 .....................................................................................................2 1.1.2 RS-422/485 标准 ..............................................................................................2 1.2 RS-485/RS-422 芯片................................................................................................5 1.2.1 增强型低功耗半双工 RS-485 收发器-SP481E/SP485E ..............................7 1.2.2 1/10 单位负载 RS-485 收发器-SP481R/SP485R .....................................10 1.2.3 +3.3V 低功耗半双工 RS-485 收发器-SP3481/SP3485..............................13 1.2.4 增强型低功耗全双工 RS-422 收发器-SP490E/SP491E ............................15 1.2.5 +3.3V 低功耗全双工 RS-422 收发器-SP3490/SP3491..............................20 1.3 RS-485 接口电路 ...................................................................................................22 1.3.1 基本 RS-485 电路...........................................................................................22 1.3.2 隔离 RS-485 电路...........................................................................................23 1.3.3 上电抑制电路.................................................................................................24 1.3.4 RS-485 自动换向电路....................................................................................24 1.4 RS-485 通讯协议 ...................................................................................................25 1.4.1 ModBus 协议(RTU 模式)...............................................................................25 1.4.2 多功能电能表通讯规约(DL/T645-1997) ......................................................27 1.5 RS-485 程序设计 ...................................................................................................28 1.5.1 RS-485 接口电路............................................................................................28 1.5.2 通讯规约.........................................................................................................28 1.5.3 程序设计流程图.............................................................................................29 1.5.4 数据接收部分.................................................................................................29 1.5.5 命令执行部分.................................................................................................29 1.5.6 数据发送部分.................................................................................................30 1.5.7 RS-485 程序清单............................................................................................31 1.6 RS-485 应用要点 ...................................................................................................38 1.6.1 合理选用芯片.................................................................................................38 1.6.2 终端匹配电阻.................................................................................................39 1.6.3 应用层通信协议.............................................................................................39 1.6.4 3V-5V 系统的连接.........................................................................................39 1.6.5 网络节点数.....................................................................................................40 1.6.6 节点与主干距离.............................................................................................40 1.6.7 RS-485 系统的常见故障及处理方法............................................................40 1.6.8 RS-422 与 RS-485 的网络拓朴 .....................................................................41 1.6.9 RS-422 与 RS-485 的接地问题 .....................................................................41 1.6.10 RS-422 与 RS-485 的瞬态保护 .....................................................................42 1.7 参考文献.................................................................................................................43 广州周立功单片机发展有限公司 Tel:(020)38730977 38730977 Fax:38730925 http://www.zlgmcu.通常的微处理器都集成有 1 路或多路硬件 UART 通道,可以非常方便地实现串行通讯。 在工业控制、电力通讯、智能仪表等领域中,也常常使用简便易用的串行通讯方式作为数据 交换的手段。 但是,在工业控制等环境中,常会有电气噪声干扰传输线路,使用 RS-232 通讯时经常 因外界的电气干扰而导致信号传输错误;另外,RS-232 通讯的最大传输距离在不增加缓冲 器的情况下只可以达到 15 米。为了解决上述问题,RS-485/422 通讯方式就应运而生了。 本章将详细介绍 RS-485/422 原理与区别、元件选择、参考电路、通讯规约、程序设计 等方面的应用要点,以及在产品实践中总结出的一些经验、窍门。

    标签: 周立功 rs485

    上传时间: 2022-04-27

    上传用户:qingfengchizhu

  • stm32f103最小系统使用手册

    1.STM32F103C8T6 最小系统简介硬件资源:1、STM32F103C8 主芯片一片2、贴片8M 晶振(通过芯片内部PLL 最高达72M)ST 官方标准参数3、LM1117-3.3V 稳压芯片,最大提供800mA 电流4、一路miniUSB 接口,可以给系统版供电,预留USB 通讯功能5、复位按键6、标准JTAG 下载口一个,支持JLink,STLink7、BOOT 选择端口8、IO 扩展排针 20pin x 29、电源指示灯1 个10、功能指示灯一个,用于验证IO 口基本功能11、预留串口下载接口,方便和5V 开发板连接,用串口即可下载程序12、尺寸:64mm X 36.4mm13、高性能爱普生32768Hz 晶振,价格是直插晶振的10 倍价格,易起振14、20K RAM,64K ROM ,TQFP48 封装

    标签: stm32f103 最小系统

    上传时间: 2022-07-23

    上传用户:kingwide

  • VIP专区-嵌入式/单片机编程源码精选合集系列(6)

    VIP专区-嵌入式/单片机编程源码精选合集系列(6)资源包含以下内容:1. vmware使用简介.2. 串行设备驱动开发笔记.3. 44b0x开发板源代码.4. 基于8051嵌入式系统的GPRS终端实现..5. 嵌入式系统下语音压缩编码g.729.6. 自动完成寄存器配置的44b0定时中断和ADC程序.7. 用IO口模拟串口.8. ks8695网络处理器资料汇编。.9. 44b0x 1 program.10. msp430驱动ad9853.11. 射频卡读写器.12. sunplus miniOS 文档.13. Minios153 的源代码.14. 基于8019的c8051f的tcpip源程序.15. 轻量级TCP/IP协议栈最新版本.16. ATmega103、ATmega128做的开发板web server源码.17. webserver文件.18. 嵌入式TCP/IP协议栈.19. AT90S8515驱动液晶显示.20. 使用汇编语言实现A口的输出.21. 小喇叭就可以发出救护车的声音.22. lcd12864手册.23. sdt2.51的使用手册(英文).24. PS/2接口C语言通信函数库设计.25. 这段代码用嵌入式汇编写成,md5最为核心的部分用汇编写成,具有很高的运算速度,比C代码快将近两倍.26. 清华魏永名miniGUI dos下的源码.27. 液晶自模点阵提取软件.28. 本程序实现的是液晶显示.29. 模拟异步串行通信.30. SJA1000驱动程序(分别用C&ASM书写).31. linBUS驱动原码.32. 对norflash进行擦初、编程的源码.33. 对nand_flash的擦除、编程算法源码.34. uc/fs文件系统.35. fpga实用倍频电路.36. TMS320VC5509 EVM技术资料.37. C6211DSK板原理图.38. mpc860中断管理及其实例代码.39. MPC860中文培训教材.40. 嵌入式键盘体系源码.

    标签: 计算机组成原理

    上传时间: 2013-05-22

    上传用户:eeworm

  • 近200份MOSFET IGBT应用入门与精通学习资料合集

    MOSFET栅极应用电路分析汇总.pdf 理解功率-理解功率MOSFET管的电流.pdf 何种应用条件要考虑MOSFET雪崩能量.doc 66KB2019-10-08 11:34 反激式电源中MOSFET的钳位电路.pdf 1.3M2019-10-08 11:34 (核心)MOSFET栅极应用电路分析汇总.pdf 762KB2019-10-08 11:34 MOS管驱动电阻怎么选择.doc 254KB2019-10-08 11:34 采用电压箝位控制实现串联IGBT的动态均压.pdf 868KB2019-10-08 11:34 MOSFET驱动器与MOSFET栅极电荷匹配设计.pdf 理解MOSFET的每个特性参数的分析.pdf 读懂并理解MOSFET的Datasheet.pdf 2M2019-10-08 11:34 功率MOSFET并联驱动特性分析.pdf 592KB2019-10-08 11:34 功率MOSFET的高温特性及其安全工作区分析.pdf 118KB2019-10-08 11:34 MOS管驱动电阻怎么选择.pdf 1009KB2019-10-08 11:34 并联MOSFET的雪崩特性分析.doc 229KB2019-10-08 11:34 MOSFET并联技术 -2019-10-08 11:34 IGBT -2019-10-08 11:34 MOSFET驱动电阻功耗讨论-综合电源技术-世纪电源网社区.pdf 3.8M2019-10-08 11:34 MOS管与三极管的区别作用特性参数.pdf 2.3M2019-10-08 11:34 MOSFET驱动方式详解.pdf 592KB2019-10-08 11:34 (核心)MOSFET开关详细过程.pdf 1.3M2019-10-08 11:34 关于MOSFET驱动电阻值的计算.doc 80KB2019-10-08 11:34 理解功率MOSFET的电流.pdf 1.8M2019-10-08 11:34 IR系列MOS驱动ic中文应用手册.pdf 5.5M2019-10-08 11:34 功率MOSFET和IGBT.pdf 1.5M2019-10-08 11:34 如何确定MOSFET的驱动电阻.pdf 977KB2019-10-08 11:34 张兴柱之MOSFET分析.pdf 1.6M2019-10-08 11:34 MOSFET驱动电路设计参考.pdf 369KB2019-10-08 11:34 MOSFET的雪崩能量与器件的热性能.doc 264KB2019-10-08 11:34 mos管的最大持续电流是如何确定.pdf 929KB2019-10-08 11:34 (核心)功率MOSFET的特性.pdf 3.8M2019-10-08 11:34 MOSFET选型手册(ALPHA&OMEGA).pdf …………

    标签: 制造 工程师 实体 数控加工

    上传时间: 2013-07-01

    上传用户:eeworm