• 74LS 系列与 74HC,74HCT,CD系列的区别

     74LS 系列与 74HC,74HCT,CD系列的区别: 1.LS、HC 二者高电平低电平定义不同:HC 高电平规定为 0.7 倍电源电压,低电平规定为 0.3 倍电源电压。LS 规定高电平为 2.0V,低电平为 0.8V。 带负载特性不同。 2.HC 上拉下拉能力相同,LS 上拉弱而下拉强。 3.输入特性不同:HC 输入电阻很高,输入开路时电平不定。LS 输入内部有上拉,输入开路时为高电平。 4.74LS 系列是“低功耗肖特基 TTL”,统称 74LS 系列。其改进型为“先进低功耗肖特基 TTL”,既 74ALS 系列,它 的性能比 74LS 更好。 5.74HC 系列,它具有 CMOS 的低功耗和相当于 74LS 高速度的性能,属于一种高速低功耗产品。 6.74HC 系列与 74LS 的工作频率都在 30mHz 以下,74ALS 略高,可达 50mHz。 7.工作电压却大不相同:74LS 系列为 5V,74HC 系列为 2~6V。 8.扇出能力:74LS 系列为 20,而 74HC 系列在直流时则高达 1000 以上,但在交流时很低,由工作频率决定。 9.74hc 与 74hct 都是高速 CMOS 器件,是同一系列,其中 74hct 的输入信号为 TTL电平. 10.74hc与74hct都是高速CMOS器件,是同一系列,其中74hct的输入信号为TTL电平. .

    时间:2018-04-25 关键词: 74hc535

  • 74HC595详解

     工作电压2-6V,推荐5V。 14脚串行输入:595的数据来源只有这一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。 13脚OE 输出使能控制脚:如果它不工作,那么595的输出就是高阻态,595就不受我们程序控制了,这显然违背我们的意愿。OE的上面画了一条线,表示他是低电平有效。于是我们将他接GND。 10脚SRCLR 位移寄存器清空脚:他的作用就是将位移寄存器中的数据全部清空,这个很少用到,所以我们一般不让他起作用,也是低电平有效,于是我们给他接VCC。 12脚RCLK存储寄存器:数据从位移寄存器转移到存储寄存器,也是需要时钟脉冲驱动的,这就是12脚的作用。它也是上升沿有效。 11脚SRCLK移位寄存器时钟输入:当一个新的位数据要进来时,已经进入的位数据就在移位寄存器时钟脉冲的控制下,整体后移,让出位置。 分析下数据输入和输出过程: 假如,我们要将二进制数据0111 1111 输入到595的移位寄存器中,下面来上一张动态图,模拟了前2个位输入的情景。 第一个从SER送入的bit将会从Q7出去。 数据传输完毕后是这样的。 存储寄存器: 存储寄存器是直接和8个输出引脚相通的,将移位寄存器的数据转移到存储寄存器后,Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 就可以接受带到我们开始输入的一个字节的数据。所谓存储寄存器,就是数据可以存在这个寄存器中,并不会随着一次输出就消失,只要595不断电,也没有新的数据从移位寄存器中过来,数据就一直不变且有效。新的数据过来后,存储寄存器中的数据就会被覆盖更新。 在上面的程序中没用到9脚,如果要让2个595串联起来的话,就需要它了。 想一下,我们将移位寄存器的8个位填满后,再往移位寄存器中塞一个会怎么样?也许你想到了。 对!移位寄存器的最后一个位数据会被挤出去,从哪里出去?就是从9脚输出的(第一个595移位寄存器需要8个脉冲,级联的下一个595第一位Q0实际需要第9个脉冲...以此类推)。如果我们把第一个595的 9脚连接到第二个的串行数据输入脚SER,那么,就形成了595的级联。这样,如果我们用2个595组合成了一个新的超级595,

    时间:2018-04-12 关键词: 74hc595

  • 74HC595驱动程序

     74HC595时序图如下 #include //52芯片管脚定义头文件 #include //内部包含延时函数 _nop_(); #define uchar unsigned char #define uint unsigned int uchar code DAT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; sbit SDATA_595=P1^0; //串行数据输入 sbit SCLK_595 =P1^1; //移位时钟脉冲 sbit RCK_595 =P1^2; //输出锁存器控制脉冲 uchar temp; void delay(int ms) { int k; while(ms--) { for(k=0; k<250; k++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } void WR_595(void) { uchar j; for (j=0;j<8;j++) { temp=temp<<1 ; SDATA_595=CY; SCLK_595=1; //上升沿发生移位 _nop_(); _nop_(); SCLK_595=0; } } void OUT_595(void) { RCK_595=0; _nop_(); _nop_(); RCK_595=1; //上升沿将数据送到输出锁存器 _nop_(); _nop_(); _nop_(); RCK_595=0; } main() { SCLK_595=0; RCK_595=1; while(1) { uchar i; for (i=0; i<8; i++) { temp=DAT[ i ]; //取显示数据 WR_595(); OUT_595(); delay(100); } } }

    时间:2018-04-09 关键词: 74hc595

  • STM32+74HC595:带领你10分钟用对74HC595芯片

    使用的是STM32CBT8,小模块用起来性价比超级高,资源丰富,移植u/COS及HTTP、MQTT协议等等用起来简直欲罢不能,摇摇欲仙! BUT:IO口资源太少了,我想让你驱动100个LED,你缺告诉我,我的要求太多,你满足不了...... 还好,找到了74HC595,但是网上很多资源讲的我看了半天才总结、提炼并另辟蹊径出来精髓 ========================================================== 595具体使用的步骤: 第1步:目的:将要准备输入的位数据移入74HC595数据输入端上。 方法:送位数据到_595。 第2步:目的:将位数据逐位移入74HC595,即数据串入 方法:SH_CP__(S_CLK)产生一上升沿,将DS上的数据移入74HC595移位寄存器中,先送低位,后送高位。 第3步:目的:并行输出数据。即数据并出 方法:ST_CP__(R_CLK)产生一上升沿,将由DS上已移入数据寄存器中的数据 送入到输出锁存器。 说明: 从上可分析:从SH_CP产生一上升沿(移入数据)和ST_CP产生一上升沿(输出数据)是二个独立过程,实际应用时互不干扰。即可输出数据的 同时移入数据。 ============================================================= 理论掌握那点其实已经够了呢,不过我贴出代码,更容易明白 /*--ZQP的74HC595的初始化*/ void HC595_Init() { GPIO_InitTypeDef GPIO_InitS;   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);     GPIO_InitS.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;   GPIO_InitS.GPIO_Mode = GPIO_Mode_Out_PP;   GPIO_InitS.GPIO_Speed = GPIO_Speed_50MHz;   GPIO_Init(HC595_PORT, &GPIO_InitS); GPIO_SetBits(HC595_PORT,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14); }     void HC595SendData(unsigned int SendVal) {   uint8_t i; for (i=0; i<16; i++)   { /*--step1、串行输入引脚,所谓串行就是使数据在一根信号线上按顺序一位一位地传输*/     if (((SendVal << i) & 0x8000) != 0 )  MOSIO_Pin14_DS_OUT=1;     else  MOSIO_Pin14_DS_OUT=0; /*--step2、SHCP发生一次上升沿的时候,74HC595才会从DS引脚上取得当前的数据*/     S_CLK_Pin11_SHCP_OUT=0; delay_us(100);     S_CLK_Pin11_SHCP_OUT=1;   } /*--step3、当移位寄存器的8位数据全部传输完毕后,制造一次锁存器时钟引脚的上升沿(先拉低电平再拉高电平)*/ R_CLK_Pin12_STCP_OUT=0; delay_us(100); R_CLK_Pin12_STCP_OUT=1; }   /////main函数 unsigned char tab[]={0xFF,0XFE}; unsigned int Val; /*--Z QP的74HC595*/ Val=tab[1]&0x00ff; //--保存tab[1],并将将tab[1]放置在高8位 Val<<=8; Val=Val+tab[0]; //--保存tab[0]放置在低8位 HC595SendData(Val);   如果你使用2个74HC595,两个的级联:<1的9引脚:_Q7S>连接<2的14引脚:_DS>;一切搞定!   实物连接的初期大概就是这样子,还是很开心的

    时间:2018-04-09 关键词: 74hc595

  • 单片机芯片74HC595详解

    引脚图 14脚:DS(SER),串行数据输入引脚 13脚:OE,%20输出使能控制脚,它是低电才使能输出,所以接GND 12脚:RCK,存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存带存储寄存器。 11脚:SCK,移位寄存器时钟引脚,上升沿时,移位寄存器中的bit%20数据整体后移,并接受新的bit(从SER输入)。 10脚:MR,低电平时,清空移位寄存器中已有的bit数据,一般不用,接%20高电平即可。 9%20脚%20:串行数据出口引脚。当移位寄存器中的数据多于8bit时,会把已有的bit“挤出去”,就是从这里出去的。用于595的级联。 Qx:并行输出引脚 使用参数VCC:2V~6V,5V最好 I%20Qn:+-%2035mA 注意第一个从SER送入的bit将会从Q7出去。 74HC595介绍一张图片和一段文字,哪种信息传递方式给人的第一视觉冲击是最大的?我想大家心中都有答案。 这也是我文章标题的来由。废话就到这里,下面我就用图片来分析595这个chip。 74HC595的最重要的功能就是:串行输入,并行输出。3态高速位移寄存器(好腻害的说) 595里面有2个8位寄存器:移位寄存器、存储寄存器 移位寄存器 在我看来,74HC595的移位寄存器工作方式就像shou%20%20qiang弹夹。但是子弹的发射(移位寄存器中的数据转储到存储寄存器),又像是【散x弹】(因为是并行输出嘛) 为什么说和弹夹很像呢? 1、串行输入,已进入的位数据依次下移(所以叫移位寄存器)%20|%20子弹也是一颗一颗上的,先上的子弹,被后上的慢慢往下压。 2、第一个输入的位,是并行输出的最后一个位%20|%20最先进入弹夹的子弹,最后射出。 74HC595的引脚图 14脚:DS,又叫SER 英文全称是:Serial data input ,顾名思义,就是串行数据输入口。 595的数据来源只有这一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。 假如,我们要将二进制数据0111 1111 输入到595的移位寄存器中,下面来上一张动态图,模拟了前2个位输入的情景。 这个图有7帧,做了很久,毕竟不是做美工的。可谓术业有专攻,闻道有先后啊,还是要虚心学习 :) 0111 1111 这个数据完全输入后是这样的 我们还要注意一个脚:11脚,(shift register clock input) 移位寄存器时钟引脚。上升沿有效。 首先我们要介绍这个引脚的作用。 我们知道51单片机的工作离不开晶振,他使CPU的工作步调稳定有序,就像跑步时喊1,2,1的那个人。 那么这里的位移寄存器时钟也是同样的道理,当一个新的位数据要进来时,已经进入的位数据就在移位寄存器时钟脉冲的控制下,整体后移,让出位置。 上升沿:电平从低到高的那个过程。移位寄存器时钟在上升沿这个过程中才起作用。 存储寄存器 到这里我们已经大致讲了怎么上子弹,也把子弹上齐了。下面来将怎么将子弹打出去,也就是怎么将移位寄存器的数据转移到存储寄存器 存储寄存器是直接和8个输出引脚相通的,将移位寄存器的数据转移到存储寄存器后,Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 就可以接受带到我们 开始输入的一个字节的数据。所谓存储寄存器,就是数据可以存在这个寄存器中,并不会随着一次输出就消失,只要595不断电,也没有新 的 数据从移位寄存器中过来,数据就一直不变且有效。新的数据过来后,存储寄存器中的数据就会被覆盖更新。 12脚: (storage register clock input ) 存储寄存器时钟 数据从位移寄存器转移到存储寄存器,也是需要时钟脉冲驱动的,这就是12脚的作用。它也是上升沿有效。 自此,我们已经讲解了一个595正常情况下的工作流程

    时间:2018-04-09 关键词: 单片机 74hc595

  • 收藏!三端可调稳压集成电路LM317的多种应用电路

     LM317是一种价格便宜使用方便的集成可调稳压电路,应用广泛。给该集成电路加一些简单的外围电路,可以扩大它的应用范围,使它发挥更大作用,下面作一下介绍。 这个电路是LM317最基本的应用电路,在使用的过程中要注意最小压差不得小于4V和最大压差不得大于37V,小于4V电路将不工作,大于37V将导致集成电路的损坏。 在需要使用大电流的情况下可用大功率管对电路进行扩流,这个电路是使用PNP型大功率三极管对LM317进行扩流。 这个电路是使用NPN型大功率三极管进行扩流,效果很好,我曾经将电流扩到5A,电路仍然工作稳定。 具有限流保护的充电电路Iom=0.6/1=0.6A,调整R3可调整充电电流。 12V恒压充电电路。 恒流电池充电电路。Io=1.25/24=52mA 改变电阻R1的数值,可提供不同的充电电流。 高稳定度的集成稳压电路。 0~30V连续可调的集成稳压电路 高精度高稳定性的+10V稳压电源电路。 1.25~160连续可调的集成稳压电源。 以上几款电路在实际使用中应用较多,尤其是喜欢动手的朋友,都希望自己有一台连续可调,输出电流大的稳压电源,用LM317加扩流的方式是个不错的选择。而1.25~160V连续可调的稳压电源对维修电视和需要较高直流电压的场合比较适用。恒流源电路对大功率LED的供电是个不错的选择。

    时间:2018-04-04 关键词: 应用电路 lm317

  • LM317的使用详细资料

     LM117/LM317 是美国国家半导体公司的三端可调正稳压器集成电路。LM117/LM317 的输出电压范围是1.2V至37V,负载电流最大为1.5A。它的使用非常简单,仅需两个外接电阻来设置输出电压。此外它的线性调整率和负载调整率也比标准的固定稳压器好。LM117/LM317 内置有过载保护、安全区保护等多种保护电路。通常 LM117/LM317 不需要外接电容,除非输入滤波电容到 LM117/LM317 输入端的连线超过 6 英寸(约 15 厘米)。使用输出电容能改变瞬态响应。调整端使用滤波电容能得到比标准三端稳压器高的多的纹波抑制比。LM117/LM317能够有许多特殊的用法。比如把调整端悬浮到一个较高的电压上,可以用来调节高达数百伏的电压,只要输入输出压差不超过LM117/LM317的极限就行。当然还要避免输出端短路。还可以把调整端接到一个可编程电压上,实现可编程的电源输出。 ◆ 特性简介 可调整输出电压低到1.2V。保证1.5A 输出电流。典型线性调整率0.01%。典型负载调整率0.1%。80dB 纹波抑制比。输出短路保护。过流、过热保护。调整管安全工作区保护。标准三端晶体管封装。 ◆ 电压范围 LM117/LM317 1.25V 至 37V 连续可调。 其封装形式如下: 绝对最大额定值罗亩的笔记,如要转载请注明。 符号 参数 值 单位 VI-O 输入-输出电压差 40 V IO 输出电流 内部限制   Top 工作结温 LM117 -55到150 ℃ LM217 -25到150 LM317 0到125 Ptot 功耗 内部限制   Tstg 储存温度 -65到150 ℃ 引脚图(顶视) 注: 输入至少要比输出高2V,否则不能调压。输入电要最高不能超过40V吧。输出电流最好不超过1A。 输入12V的话,输出最高就是10V左右。 由于它内部还是线性稳压,因此功耗比较大。当输入输入电压差比较大且输出电流也比较大时,注意317的功耗不要过大。一般加散热片后功耗也不超过20W。因此压差大时建议分档调压。 应用电路

    时间:2018-04-04 关键词: datasheet lm317

  • DS18b20多路温度检测

     DS18B20 是温度检测器件,具有单总线、数字化的特点。 每个 DS18B20 都有一个 48 位的系列号,这样就可以把多个 DS18B20 连接在同一条线上,用系列号来对它们分别进行控制。 但是,据有关资料说明,一条总线上,连接 DS18B20 的个数,不要超过 8 个,否则驱动困难。总线的长度,也不宜太长。 另外,多个 DS18B20 连接在一起,还有些缺点: 1.必须采用 ROM 匹配的方法,这样,速度、效率就较低。 2.编程比较麻烦,必须先逐个读出并记录每个 DS18B20 的 ROM 代码,然后再编写到程序中。 3.故障涉及面大,当有一个出现短路,这一条总线上的全部器件就都不会工作。 4.故障查找困难,当总线上有一个 DS18B20 不正常工作时,很难一眼就看出是那一个。 5.无法即插即用,当更换一个 DS18B20 时,必须重新写入程序,这样的维修方法为产品的售后服务带来很大的困难。 那么,较好的方法还是每一个 DS18B20 单独使用一条总线。 现在,单片机芯片的价位已经很低,有 40 个 I/O 引脚的 STC89C52 才几块钱。利用单总线来节约引脚,已经没有什么意义了。 鉴于目前这种情况,让每一个 DS18B20 单独使用一个 I/O 引脚,才能扬长避短。 如果一片单片机所能构成的温度测试点还不够用(如孵蛋柜就需要上百个测试点),也可以使用多片单片机,再利用 MAX232 或 MAX485 组成网络,即可把各个点的温度信息汇集到中央控制机。 485 总线的长度可达 1200m,半双工多机串口通信的编程也是简单的很。 单个的 DS18B20 单独占用一个引脚,用 51 单片机进行读写,这种方案已经相当成熟。 做而论道多年前也写了一个程序,利用数码管显示,精度可以达到两位小数,还可以测量零下的温度。 详细的内容可见博文: http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/dacd401ac7533f398718bf61.html 当多个 DS18B20 分别使用不同的引脚,电路并不复杂,编程就困难一些了。 因为针对单个的 DS18B20,一般都是用:CLR DQ 和 SETB DQ,这些都是 51 单片机的位操作指令,都是直接寻址。 换了另一个引脚,就要重新编写一套程序。有些人就是这么做的,这就太麻烦了。 其实并不用针对每个 DS18B20 都编写一套程序,只要使用字节操作的指令就可以了。 例如 R3 = 1111 1011B,执行 MOV P1, R3 后,就相当于针对 P1.2 执行了 CLR DQ。 想要 SETB P1.2,只需执行 MOV P1, #255 即可。 只是在读出 DQ 时,需要多编写几条指令。 下面是一个利用 51 系列单片机驱动多路 DS18B20 的电路图。 图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/c4a06d2e070828385b4ce9bab899a9014d08f138.html 限于篇幅,图中只画出了 8 个 DS18B20。其实,P2 和 P0 也是可用的。 如果不使用 P2 和 P0,那么就可以选用 AT89C2051,这样一来,整机的体积将会更小。 图中有两种输出温度数据的方法,可供选择: 现场显示:使用 LCD1602 和 595/164; 串口通信:使用 MAX232 或 485。 LCD1602、595/164 也可以和 2051 制作成分离的 PCB 板,用接插件的形式进行连接。 需要显示的时候,插上显示部分,就可当场显示温度。 如果不需要当场显示,那就在 P3.0 和 P3.1 连接电平转换芯片,用串口传输温度信息。 由于 LCD1602 的显示面积较小,多路温度只能分屏显示。显示的仿真截图如下。 做而论道编写程序,基本上是以汇编为主,一般也不想拿出来,因为很少有人能看汇编的程序。 上次,还有人评论汇编语言程序的结构性不好。呵呵,的确是这样,没有一定的水平,确实是看不下去。 本程序,也是用汇编语言编写的,就不拿出来献丑了。

    时间:2018-01-29 关键词: ds18b20

  • ADC0809使用中的小问题,小数点后保留两位的处理方法

    ADC0809转换结果在输出显示之前先要进行数据处理,其原理如下: 转换输出结果在0—255之间分别对应着0~+5V之间的256个电压值,因此单片机必须把A/D转换输出的结果转换成可以显示的电压值,具体方法是: VIN=DOUT *5/255,其中DOUT是ADC0809输出的八位二进制数。 由上述公式可知:当ADC0809输出为(11111111)B 时,输入电压的值为VIN=5.00V; 当ADC0809输出为(00000000)B 时,输入电压的值为VIN=0.00V;当ADC0809输出为(10000000)B,输入电压值为VIN=2.50V,但是单片机进行数学运算时结果只去整数部分,因此输出为(10000000)B时计算出来的电压值为VIN=2V。 由此可以看出这样运算输出的结果很不准确,在0~+5V之间只有0,1,2,3,4,5六个电压值,所以必须把单片机运算结果中的小书部分保留下来。 具体方法是:如果保留小数点后两位,在运算时分子乘以100,保留三位就乘以1000。小数点后保留两位的公式如下:VIN=DOUT*5*100/255= DOUT *100/51,有公式可知,单片机的运算结果为250。然后单片机将250除以10得到商为25,余数为0,再将25除以10得到商为2余数为5。这样就可以得到电压值的三个数字,最后分别将2,5,0三个数送出显示

    时间:2018-01-29 关键词: adc0809

  • 用VHDL状态机控制ADC0809

    以前做硬件,现在转做软件了,对以前做的东西还是很怀念,想当年做的一个用Altera公司的EPM7128SLC84-7和ADC0809做的一个简单系统,玩得团团转,多有成就感啊。特别觉得状态机的思想很奇妙。所以现在找了一篇VHDL状态机的程序,转帖怀念。 基于VHDL语言实现对ADC0809简单控制源码 -------------------------------------------------------------------------------- --文件名:ADC0809.vhd --功能:基于VHDL语言,实现对ADC0809简单控制 --说明:ADC0809没有内部时钟,需外接10KHz~1290Hz的时钟信号,这里由FPGA的系 --统时钟(50MHz)经256分频得到clk1(195KHz)作为ADC0809转换工作时钟。 --最后修改日期:2004.3.20. library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity ADC0809 is port ( d : in std_logic_vector(7 downto 0); --ADC0809输出的采样数据 clk,eoc : in std_logic; --clk为系统时钟,eoc为ADC0809转换结束信号 clk1,start, ale,en: out std_logic; --ADC0809控制信号 abc_in :in std_logic_vector(2 downto 0); --模拟选通信号 abc_out :out std_logic_vector(2 downto 0); --ADC0809模拟信号选通信号 q : out std_logic_vector(7 downto 0)); --送至8个并排数码管信号 end ADC0809; architecture behav of ADC0809 is type states is ( st0,st1, st2, st3, st4,st5,st6); --定义各状态的子类型 signal current_state, next_state:states:=st0; signal regl :std_logic_vector(7 downto 0); --中间数据寄存信号 signal qq:std_logic_vector(7 downto 0); begin com:process(current_state,eoc) --规定各种状态的转换方式 begin case current_state is when st0=>next_state<=st1;ale<='0';start<='0';en<='0'; when st1=>next_state<=st2;ale<='1';start<='0';en<='0'; when st2=>next_state<=st3;ale<='0';start<='1';en<='0'; when st3=> ale<='0';start<='0';en<='0'; if eoc='1' then next_state<=st3; --检测EOC的下降沿 else next_state<=st4; end if; when st4=> ale<='0';start<='0';en<='0'; if eoc='0' then next_state<=st4; --检测EOC的上升沿 else next_state<=st5; end if; when st5=>next_state<=st6;ale<='0';start<='0';en<='1'; when st6=>next_state<=st0;ale<='0';start<='0';en<='1';regl<=d; when others=> next_state<=st0;ale<='0';start<='0';en<='0'; end case; end process; clock:process(clk) --对系统时钟进行分频,得到ADC0809转换工作时钟 begin if clk'event and clk='1' then qq<=qq+1; --在clk1的上升沿,转换至下一状态 if QQ="01111111" THEN clk1<='1'; current_state <=next_state; elsif qq<="01111111" then clk1<='0'; end if; end if; end process; q<=regl; abc_out<=abc_in; end behav;

    时间:2018-01-29 关键词: adc0809

  • ADC0809:8位逐次逼近型A/D转换器

    ADC0809A/D转换器:cs0809接地址x IN0-IN7:8 条模拟量输入通道的地址为:[x、x+1、x+2、x+3、x+4、x+5、x+6、x+7] ADC0809 EOC(EOC 为转换结束信号。当EOC 为高电平时,表明转换结束(我实验中是低电平时,表明转换结束))接到8255的pc0上(8255(8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口)pc口设为为输入)。 ADC0809启动: 使用ADC0809和DAC0832等模块独立完成输入输出通道的实验:通过模拟量信号控制直流电机的转速。 Lines: 8255:220 pc0接0809 EOC 0809:210  IN3接电位器 0832:200  OUT接电机   .model small .code   start: mov al,10001001b   ;初始化8255 mov dx,223h out dx,al   l: mov dx,213h       ;启动0809 out dx,al tst: mov dx,222h            ;读8255的C口 in al,dx test al,00000001b jnz tst mov dx,213h   ;读0809 in al,dx mov dx,203h ;输出到OUT口 out dx,al jmp l

    时间:2018-01-29 关键词: adc0809

  • ADC0809采样转换程序代码

     #include #include #define uchar unsigned char #define IN0 XBYTE[0x7ff8] /*设置ADC0809的通道0地址*/ sbit ad_busy=P3^3; /*即EOC状态*/ void adc0809(uchar idata *x) /*采样结果放指针中的A/D采集函数*/ { uchar i; uchar xdata *ad_adr; ad_adr=&IN0; for(i=0;i<8;i++) /*处理8通道 */ { *ad_adr=0; /*启动转换*/ i=i; i=i; /*延时等待EOC变低*/ while(ad_busy==0) /*查询等待转换结束*/ x[i]=*ad_adr; /*存转换结果*/ ad_adr++; /*下一通道*/ } } void main(void) { static uchar idata ad[10]; adc0809(ad); /*采样ADC0809通道的值*/ }

    时间:2018-01-29 关键词: adc0809

  • STM32|4-20mA输出电路,使用TL431

    为工业场合开发的设备通常情况下都会具有4-20mA输出接口,在以往没有DAC模块的单片机系统,需要外加一主片DAC实现模拟量的控制,或者采用PWM来摸拟DA,但也带来温漂和长期稳定性问题。在以STM32为中心的设备中,使用它自带的DAC即可非常方便的实现4-20mA的输出接口,具有精度高、稳定性好、漂移小以及编程方便等特点。 在STM32单片机系统中,100脚以下没有外接出VREF引脚,但这样使得DAC的参考端和VCC共用,带来较大误码差,为解决这一问题,可以使用廉价的TL431来解决供电问题,TL431典型温漂为30ppm,所以在一般应用中已非常足够。选用两只低温漂电阻,调整输出使TL431的输出电压在3V-3.6V之间,它的并联稳压电流可达到30mA,正好能满足一般STM32核心的功耗需求。 利用TL431解决了供电问题,余下的就是4-20mA的转换电路,如下图: 上图即为非常精确的转换电路,OPA333是一颗非常优异的单电源轨至轨运算放大器,其工作电压为2.7-5.5V,其失调电压仅为10uV,实测最低输出为30uV,最高输出可达VCC-30uV。电路组成压控恒流源,其关键在于OPA333这颗芯片的优异性能,使得以上电路获得了极高的精度和稳定性。DACOUT来自于STM32的DAC1或者DAC2输出,由C25进行数字噪场滤波之后进入运算,进行1:1缓冲,后经过Q2进行电流放大,在R7上形成检测电压,C17进行去抖动处理。4-20mA信号由AN_OUT+/AN_OUT-之间输出。 上图中,负载中的电流在R7上形成压降,经运放反馈后得到Vdacout=Vr7=I*R7,所以:I=Vdacout/R7,当Vdacout在400mV到2000mV之间变化时,可得到4-20mA的输出。改变R7的大小,便可改变DACOUT的需求范围。电路中,R2的基射极之间将有0.7V左右的偏压,所以Vb[MAX]=2V+0.7V=2.7V,这正好在OPA333的输出范围之内。电路中R14做为输出端的限流电流,使得输出端的最大输出电流Imax=Vcc/(R7+R14),若Vcc取6V,则Imax=6V/200 O=30mA,若没有R14,则最大电流可能有60mA,这时R7上的耗散功率为0.06*0.06*100=0.36W,若选用0805贴片电阻,将导致R7烧坏,或者由于温度升高太严重导致R7阻值变化太大输出引起较大偏差。加入R14之后,R7上的最大耗散功率为:0.03*0.03*100=0.09W,此时在正常的范围之内。 电路中R14不可省去,C17不可省去,由于外负载可能的微小干扰或波动将导致OPA333组成的深度负反馈电路形成振荡,使输出电流波动,加入C17能抑制这种波动,使输出更稳定,但是C17的值不宜过大。 使用STM32编程应注意,其内部不应当开DAC缓冲,因以上电路已经为一个高输入阻抗的缓冲电路。由STM32内部缓冲电路将损失掉输出线性度。

    时间:2017-08-18 关键词: tl431

  • 「翻译」Crowbar 电路

     Crowbar 电路 crowbar 电路是一种过电压保护电路。这种电路的设计思想是当电源电压超过预定值时将电源短路掉,通过短路将电源电压硬生生的拉下了。这时电源通路上的保险丝等过电流保护设备起作用切断电源以防止损坏电源。从这种机制可以看出这个电路要求电源能够承受短时间的短路状态而不损坏,否则虽然保护了后端设备但却牺牲了电源设备。 Crowbar 中文含义是撬棍,我刚看到这个词时首先联想到的是杠杆,以为这个电路用到了某种杠杆原理。不过后来发现这个电路的名字与杠杆一点关系都没有。所谓Crowbar 电路,其实意思是就好像将一个撬棍(或其他的粗的导电的棍子)扔到电源导线上将其短路掉。这个名字起得挺没文化的! Crowbar 电路中通常会用到晶闸管一类的元器件。这种元器件通常情况下是不导通的,但是可以通过在控制端上的电压或电流信号使其导通。当晶闸管导通时其导通压降大约在1-2V。 Crowbar 电路一般不会用三极管或场效应管来短路电源,因为当电源被短路后就无法提供维持三极管导通所需的基极电流。而可控硅一旦导通后就不需要控制信号了。 基本 crowbar 电路 下图给出的是一个典型的Crowbar 电路。 当电源电压超过稳压二极管的稳压值后D1导通。当电源电压超过稳压二极管的稳压值加上可控硅的开启电压时,可控硅开启,将电源电压拉低到1-2V。直到流过可控硅的电流减小到接近0时可控硅才会关闭。 电路中的电容用来确保不会被干扰误启动。 如果电源输出电流的能力是无限的,很快crowbar 电路就会被烧毁,因此电源输出电流必须被限制,最简单的方法就是安装保险丝或者电源本身就是限流型的。 这个电路的一个缺点是开启电压很难精确的控制,毕竟稳压二极管的稳压电压只有固定的几种,并且稳压二极管的离散型比较大(2-5 %),还受温度影响。 可控硅的开启电压离散性也蛮大的。因此,当电源电压比较低时我们需要改进上面的电路使其控制电压更精确一些。 精确 crowbar 电路 下面电路的开启电压要准确的多。 TL431 是个廉价的电压源芯片,可以输出2.5 到 36V 之间的电压。用它可以解决稳压二极管离散性大的缺点,同时电压稳定度也比稳压二极管好得多。 三极管T2用来解决可控硅开启电压离散型大的问题。当Vbe大于0.6V时三极管导通可控硅开启。由于三极管的放大作用使得电源电压很小的变化可以产生可控硅控制端较大的电压变化。虽然三极管也受温度影响,但是整个电路开启电压的稳定度比原始的电路小得多。 TL431 的基准电压是 2.5V,所以上面电路中TL431的输出电压是5V, crowbar 电路的开启电压在 5.6 - 6.0 V之间.这个电路可以保护5V供电的设备。 di/dt 保护 上面的电路仍然有些值得改进的地方,当可控硅的控制端的流入电流只比触发开启电流高一点点时,晶闸管内部开始时只有一部分被开启了,需要一定的时间才能使晶闸管完全的开启。这段时间大量的电流通过晶闸管内的部分区域,很容易损坏晶闸管。晶闸管芯片手册上有一个指标叫做最大di/dt,只有晶闸管流过的电流的变化率小于这个指标规定的最大值时晶闸管才是安全的。通常,一个12A 的晶闸管的最大di/dt为100 A/µs。 负载的电源输入端通常会有很大容量的电容,当Crowbar 电路工作时,这个大电容会向晶闸管灌入大量的电流。尤其是大容量的陶瓷电容会产生相当大的di/dt 脉冲。一种保护晶闸管免受大电流冲击的办法就是串接一个电感,利用电感来限制di/dt 。所需的电感量可以这样计算: U = L*di/dt L = U/(di/dt) 在上面的电路中,开启电压大约为 6V,晶闸管的导通压降大约为 1V,所以U = 6V - 1V = 5V。假设晶闸管可以承受的 di/dt 为100A/µs,则电感量需不小于 50 nH。除此之外还要保证电感可以承受足够大的电流,至少要在保险丝烧断之前不被烧坏。 另一个基于TL431的crowbar 电路 TL431的芯片手册上给出了一个参考电路如下。 当TL431的参考输入端的电压低于2.5V时,流过TL431的电流不超过400 µA,因此R3上的压降很小。当电源电压增大使得TL431的参考输入端的电压超过2.5V时,TL431 导通,R3上的压降增加,直到晶闸管导通。 这个电路的工作电压更准确。但是必须要用双向晶闸管,普通的单向晶闸管不能工作。 改进的基于 TL431的Crowbar 电路 上面的电路还可以改进,进一步消除温度对晶闸管的影响。 Crowbar 控制器 ON Semiconductor 有一款专用芯片MC3423,控制电压更准确,同时还能确保晶闸管迅速导通。利用简单的电阻分压电路就可以设置开启电压在4.5 V 到 40 V 之间。 与前面的电路相比,这个电路的缺点是功耗稍大,开启电压比较高。

    时间:2017-08-18 关键词: 电路 tl431 crowbar

  • AC/DC电源的设计原理

     1、输入整流滤波单元 本设计电源的输入电压是50Hz交流电压85~265Vac,需要整流成直流再参与变换。最简单的方法是整流桥整流,50Hz交流电压经过全波整流后变成脉动直流电压,再通过输入滤波电容得到直流高压。 1)整流桥的选择 整流桥的主要参数有反向峰值电压VRR(V),正向压降VF(V),平均整流电流IF(A),正向峰值浪涌电流IFSM(A),最大反向漏电流IRM(μA)。 整流桥的反向击穿电压VRM应满足下式要求: VRM>1.25*1.4Vinmax 即1.25*1.4*265=450 V 应选耐压600V的整流桥 整流桥额定的有效值电流为IF,应当使IF≥3IRMS。计算IRMS的公式如下: IRMS= Is= P/η/Vs=2.5/0.75/110=30.3 mA 实际选用lA、600V的整流桥,以留出一定余量。 2)输入滤波电容器的选择 铝电解电容器的额定电压的1.3倍作为电容器的浪涌电压,工作电压高于160V时,是额定工作电压+50V作为浪涌电压,这是生产厂家保证的电压,可以允许在短时间内承受此电压。电容器处于浪涌电压时,电流会很大,如果时间太长,会爆开。 所以铝电容器应该选用额定电压稍高的,实际工作电压为标称额定电压的70~80%为宜,所以选用额定电压值为400V的铝电解电容。 由于模块电源体积的限制,在85~265Vac的输入范围内,前级储能铝电解电容的容值一般选取2倍于输出功率的值,即2.5*2=5,综上,铝电解电容的取值以4.7μF/400V为宜。 2、功率变压器的设计 1) 考虑到2.5W的输出功率实际很小,还有模块电源的体积限制。选择截面积足够而体积尽可能小的EPC13(Ae=12.5mm2)的铁氧体磁芯来完成功率的转换。 2) 计算ton 原边绕组开关管的最大导通时间对应在最低输出电压和最大负载时发生。 设D=ton/Ts=0.45 有:Ts=1/f=1*106/66*103=15.2 μs ton =D* Ts =0.45*15.2=6.84 μs 3) 计算最低直流输入电压 设电源在最低电压时输出最大负载,计算输入端的直流电压。对于单项交流整流用电容滤波,直流电压不会超过交流电压有效值的1.4倍也不小于1.2倍。现取1.3倍。 即:Vs=85*1.3=110 V 4) 选择工作时的磁通密度值 已知EPC13的中心柱磁路的有效面积Ae=12.5mm2,饱和磁感应强度在100℃时是390mT,则65%的饱和值: △Bac=390*0.65=250 mT。 5) 计算原边匝数 因为变压器输入电压是一个方波,一个导通期间的伏秒值与原边匝数关系: Np=Vs *ton/ (△Bac * Ae ) 式中 Np—原边匝数 Vs—原边直流电压 ton—导通时间 Ae—磁芯有效面积 即: Np=Vs *ton/ (△Bac * Ae ) =110*6.84/(0.25*12.5)=240 匝 6) 计算副边匝数 输出电压5V,整流管压降0.5V,则副边绕组对应电压值为 Vo= 5+0.5=5.5V 原、副边绕组匝比为Vs*D/【Vo*(1-D)】=110*0.45/【5.5*(1-0.45)】=16.36 副边匝数Ns=240/16.36=14.7 匝,取整数15匝 7) 自供电绕组的匝数 根据VIOer12A芯片的资料,自供电电压取值为11V左右为宜, 则 Vf=15*(11+0.7)/(5+0.5)=31.9 匝,取整数32匝 8) 实际占空比及ton的计算 副边匝数取整数15则实际占空比为0.44, ton=15.2*0.44=6.69 μs 9) 原边电感量的计算 设在最大占空比时,当开关管开通时,原边电流为Ip1,当开关管关断时,原边电流上升到Ip2。若Ip1为0,则说明变换器工作于断续模式,否则工作于连续模式。 设计电源工作在连续模式,这样开关管、线路的损耗都比较小,而且可以减轻输入输出电容的工作应力 设计电源工作在连续模式,由能量守恒,有下式: 1/2*(Ip1+Ip2)*D*Vs=P/η 连续模式设计,令Ip2=3Ip1 这样就可以求出变换器的原边电流,由此可以得到原边电感量: Lp= D*Vs/(f*ΔIp) ΔIp=Ip2-Ip1=2Ip1; 根据设计要求,电源的效率为75%,则电源全周期Ts的平均输入电流Is为 Is=P/Vs=2.5/0.75/110=30.3 mA 则ton时间内的电流 Im=ΔIp =Is*Ts/ton=30.3*15.2/6.69=68.84 mA Ip1=Im/2=68.84/2=34.42 mA Ip2=3Ip1=3*34.42=103.26 mA ΔIp=Ip2-Ip1=103.26-34.42=68.84 mA 此电流等于ton时间内的电流变化量△i Lp=Vs*ton/△i=110*6.69/68.84=10.6 mH 10) 线径的取值 设导线的电流密度为15A/m2 原边电流Im=68.84m;副边电流Io=500mA;自供电绕组电流约几十个mA 根据计算得 0.08mm铜线可走电流75mA; 0.27mm铜线可走电流860 mA; 0.15mm铜线可走电流260 mA; 所以变压器Np、Ns、Nf三个绕组的线径分别取 0.08mm;0.27mm、0.15mm; 至此,功率电源变压器的主要参数设计完成。同时,在变压器的制作中还有一些工艺问题需要注意。 3、输出整流滤波单元 本设计电源的输出电压是5Vdc,需要先把变压器变换过来的低压方波整流成直流,然后用铝电解电容储能滤波。 由于整流的工作频率等于功率开关管的开关频率,必须使用具有快速恢复功能的肖特基整流二极管作为输出整流二极管。输出整流二极管的标称电流(IF)值应为输出直流电流额定值(Io)的3倍以上,即IF1>3Io,大于1.5A; 整流管的反向耐压值的计算 输入电压的最高值/匝比=265*1.3/16.36=25.8 V 依据此原则,输出整流二极管采用2A/40V的肖特基二极管为宜,反向耐压选择稍高,有利于降低整流管上的损耗。 而整流部分使用的铝电解电容不但容量要大,还要有较低的交流电阻,,否则就无法滤除电流中的高频交流电成分,同时要考虑铝电解电容的封装体积不能过大,所以选用标称值330μF/10V的铝电解电容。 为了降低输出纹波,在电源的输出端还要增加LC滤波单元,L取10μH左右的Ф4*7的小工字电感,C取100μF/10V的铝电解电容。 4、控制反馈单元 控制反馈电路采用‘电压基准源TL431+光电耦合器P521’组合作为参考、隔离、取样(电路图见附录二)。它可以将输出电压变化控制在±1%以内。 反馈电压由输出端取样。输出电压Vo通过分压电阻R63、R64获得取样电压后,与TL431中的2.5V基准电压进行比较并输出误差电压,然后通过光电耦合器改变VIPer12A芯片的控制端电流IFB,再通过改变PWM宽度来调节输出电压Vo,使其保持不变。光电耦合器的另一作用是对原、副边进行隔离。 自供电绕组的输出电压经D31、C32整流滤波后,可给光电耦合器中的三极管提供电压。 调整控制反馈单元的任务要确定R61、R62、R63及R64的值。该电路利用输出电压与TL431构成的基准电压比较,通过光电耦合器P521二极管-三极管的电流变化去控制VIPer12A芯片的FB端,从而改变PWM宽度,达到稳定输出电压的目的。 从VIPer12A的技术手册可知IFB的典型电流应在3mA,PWM会线性变化,因此光电耦合器P521三极管的电流Ice也应应在3mA左右。而Ice是受二极管电流If控制的,我们通过光电耦合器P521的Vce与If的关系曲线可以正确确定光电耦合器P521二极管正向电流If约为5mA。 再看电压基准源TL431的要求。从TL431的技术参数知,Vka在2.5V-37V变化时,Ik可以在从1mA到100mA以内很大范围里变化,一般选20mA即可,既可以稳定工作,又能提供一部分死负载。 确定了上面几个关系后,那几个电阻的值就好确定了。根据电压基准源TL431的性能,R63、R64、Vo、VR有固定的关系: Vo=(1+ R63/R64) Vr 式中,Vo为输出电压,Vr为参考电压,Vr=2.50V,先取R64一个值,一般R64的取值为10kΩ,根据Vo的值就可以算出R63 R63=(Vo/ Vr-1)* R64=(5/2.5-1)* 10kΩ=10kΩ 再来确定R61和R62。由前所述,光电耦合器P521的If取5mA,先取R61的值为430Ω,则其上的压降为 Vr1=If* R61=5*430=2.2V 由光电耦合器P521技术手册知,其二极管的正向压降Vf典型值为1.1V,则可以确定R62上的压降 Vr3=Vr1+Vf=2.2+1.1=3.3 V 又知流过R62的电流Ir3=Ik-If,因此R62的值可以计算出来: R62= Vr3/ Ir3= (Vr1+Vf)/( Ik-If) =3.3/(20-5)=220Ω 根据以上计算得出结果: R61=430Ω、R62=220Ω、R63=10KΩ、R64=10KΩ

    时间:2017-08-18 关键词: tl431

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章