ADC0804的详细控制程序和仿真(595芯片和四位一体数码管)图
595芯片的工作原理(二)
595芯片的工作原理(二)595芯片的工作原理什么是595芯片?595芯片,全名为74HC595移位寄存器芯片,是一种集成电路,常被用于扩展数字输出的IO口。
它具有串行输入、并行输出的特点,可用于驱动LED灯、数码管等外部设备。
串行输入与并行输出595芯片的串行输入和并行输出是其最重要的特征。
它可以通过SPI(串行外设接口)协议进行控制。
SPI协议是一种同步的全双工通信协议,利用时钟线(SCK)和数据线(MOSI)进行数据传输。
工作流程使用595芯片时,需要将数据写入串行输入寄存器(SI)中,然后通过时钟线(SCK)的上升沿脉冲,将数据移入移位寄存器(SR)。
当所有数据位都移入移位寄存器后,通过使锁存器时钟线(RCK)的上升沿脉冲,将移位寄存器的数据移入并行输出寄存器(PO)中。
最后,通过将移位寄存器清零,可以开始下一轮数据的传输。
引脚功能595芯片一般有16个引脚,其中重要的引脚包括:•Vcc:芯片供电正极;•GND:芯片地线;•OE:输出使能,控制数据在输出端口显示或关闭;•SRCLR:移位寄存器清零使能,用于将寄存器中的数据清零;•RCK:锁存器时钟,决定数据是否被移入并行输出寄存器。
应用实例595芯片的应用十分广泛,特别是在数字输出驱动方面。
以下是一些常见实例:1.控制LED灯:通过595芯片可以控制多个LED灯的亮灭、亮度等;2.驱动数码管:通过595芯片可以实现对多位数码管的显示控制;3.扩展输出端口:通过级联多个595芯片,可以扩展大量的数字输出端口。
总结595芯片是一种常用的数字输出扩展芯片,具有串行输入、并行输出的特点。
通过SPI协议进行数据的传输和控制,可以实现对LED 灯、数码管等设备的驱动。
其工作原理简单清晰,应用广泛。
ADC0804实验
实验报告实验名称: [ADC0804实验]姓名:学号:指导教师:实验时间: [2013年6月15日] 信息与通信工程学院ADC0804实验1.实验任务AD0804 是A/D 转换器。
从ADC0804的通道IN输入0~5V之间的模拟量,转换成数字量在数码管上以十进制显示出来。
任务1:将数码管中的显示数字对应单位“V”的位置加上小数点,使原来以“mV”为单位的输出转变为以“V”为单位。
任务2:在任务1的基础上,将AD0804的8位2进制输出用点阵中的一列反映出来,点阵的亮暗代表该位为1或者0。
2.实验原理2.1 ADC0804原理ADC0804是8位全MOS中速逐次逼近式A/D转换器,片内有三态数据输出锁存器,可以和单片机直接接口。
单通道输入,转换时间大约100us。
ADC0804转换时序是:当CS=0许可进行A/D转换。
WR由低到高时,A/D开始转换,一次转换共需要66-73个时钟周期。
CS与WR同时有效时启动A/D转换,转换结束产生INTR信号(低电平有效),可供查询或者中断信号。
在CS和RD的控制下可以读取数据结果。
ADC0804 为一只具有20引脚8位CMOS 连续近似的A/D 转换器,其规格如下:(1) 高阻抗状态输出(2) 分辨率:8 位(0~255)(3) 存取时间:135 ms(4) 转换时间:100 ms(5) 总误差:-1~+1LSB(6) 工作温度:ADC0804C为0度~70度;ADC0804L为-40 度~85 度(7) 模拟输入电压范围:0V~5V(8) 参考电压: 2.5V(9) 工作电压:5V(10) 输出为三态结构1. 接脚说明见图1:2. PIN1 (CS ):Chip Select,与RD、WR 接脚的输入电压高低一起判断读取或写入与否,当其为低位准(low) 时会active。
3. PIN2 ( RD ):Read。
当CS 、RD 皆为低位准(low) 时,ADC0804 会将转换后的数字讯号经由DB7 ~ DB0 输出至其它处理单元。
数模转换ADC0804的应用实验
数模转换ADC0804的应用实验[实验任务]从ADC0804的通道IN+输入0-5V之间的模拟量,通过ADC0804转换成数字量在数码管上以十进制形成显示出来。
[实验原理]ADC0804是8位全MOS中速A/D转换器、它是逐次逼近式A/D转换器,片内有三态数据输出锁存器,可以和单片机直接接口。
单通道输入,转换时间大约为100us。
ADC0804转换时序是:当CS=0许可进行A/D转换。
WR由低到高时,A/D开始转换,一次转换一共需要66-73个时钟周期。
CS与WR同时有效时启动A/D转换,转换结束产生INTR信号(低电平有效),可供查询或者中断信号。
在CS和RD的控制下可以读取数据结果。
[C语言源程序]/*注意:程序下载到DPY-1实验板单片机后一定要使SW DIP1的开关脱离ON档。
或者直接将下载线从实验板上拔下。
因为下载线接在I/O口P1.5,P1.6,P1.7上,下载线的电平将会影响测量结果*/#include<reg52.h>code unsigned char seg7code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示段码sbit int1=P3^3;//定义管脚功能sbit cs=P3^2;sbit wr=P3^6;sbit rd=P3^7;void Delay(unsigned int tc)//显示延时程序{while(tc!=0){unsigned int i;for(i=0;i<100;i++);tc--;}}unsigned char adc0804(void)//读AD0804子程序{unsigned char addata,i;rd=1;wr=1;int1=1;//读ADC0804前准备P1=0xff;//P1全部置一准备cs=0;wr=0;wr=1;//启动ADC0804开始测电压while(int1==1);//查询等待A/D转换完毕产生的INT(低电平有效)信号rd=0;//开始读转换后数据i=i;i=i;//无意义语句,用于延时等待ADC0804读数完毕addata=P1;//读出的数据赋与addaterd=1;cs=1;//读数完毕return(addata);//返回最后读出的数据}unsigned int datpro(void)//ADC0804读出的数据处理{unsigned char x;unsigned int dianyah,dianyal;//用于存储读出数据的高字节和低字节unsigned int dianya=0;//存储最后处理完的结果注意数据类型for(x=0;x<10;x++)//将10次测得的结果存储在dianya中{dianya=adc0804()+dianya;}dianya=dianya/10;//求平均值dianyah=dianya&0xf0;//屏蔽低四位dianyah=dianyah>>4;//右移四位取出高四位dianyal=dianya&0x0f;//屏蔽高四位取出低四位dianya=dianyal*20+dianyah*320;//最后的结果是一个四位数,便于显示return(dianya);//返回最后处理结果}void Led(){unsigned int date;date=datpro();//调用数据处理最后结果P2=P2&0xef;P0=seg7code[date/1000]|0x80;//输出个位数和小数点Delay(8);P2=P2|0xf0;P2=P2&0xdf;P0=seg7code[date%1000/100];//输出小数点后第一位Delay(8);P2=P2|0xf0;P2=P2&0xbf;P0=seg7code[date%100/10];//输出小数点后第二位Delay(8);P2=P2|0xf0;P2=P2&0x7f;P0=seg7code[date%10];//输出小数点后第三位Delay(8);P2=P2|0xf0;}main(){while(1){Led();//只需调用显示函数}}。
LG单片机-AD0804
实验任务:从ADC0804 的模拟量通道输入0-5V 之间的模拟量,通过ADC0804 转换成数字量送给单片机,经单片机处理后在数码管上以十进制形成显示出来。
实验目的:学习用单片机控制A/D模数转换。
实验原理:ADC0804是8位全MOS中速A/D 转换器、它是逐次逼近式A/D 转换器,片内有三态数据输出锁存器,可以和单片机直接接口。
单通道输入,转换时间大约为100us。
ADC0804 转换时序是:当CS=0 许可进行A/D 转换。
WR由低到高时,A/D开始转换,一次转换一共需要66-73 个时钟周期。
CS与WR同时有效时启动A/D转换,转换结束产生INTR 信号(低电平有效),可供查询或者中断信号。
当CS=0和RD=0 时可以读取数据结果。
实验原理图:注意:做A/D实验前,请用跳线将J8中的VCC与AD0804的20脚相连。
5.实验源程序org 00HSTART:mov p3,#0ffhclr p3.3 ;CS=0 许可进行A/D 转换CLR P3.5nopSETB P3.5 ;WR由低到高时,A/D开始转换nopjb p3.2,$ ;查询转换结束产生INTR 信号(低电平有效)setb p3.3 ;停止A/D转换nopmov p1,#0ffhclr p3.3 ;选中A/Dclr p3.4 ;读取转换数据结果数据结果nopsetb p3.4 ;停止A/D读取mov a,p1setb p3.3jisuan:mov B,#100DIV AB ;将转换后的数除100,用来分离出百位mov r3,AMOV A,BMOV B,#10DIV AB ;除以10分离出十位MOV r2,AMOV r0,B ;将个位数寄存到R0SETB P2.0MOV R4,#40 ;设置数码管扫描次数QQQQ:mov r1,#255QQQ:setb p2.5 ;以下是数码管动态扫描显示setb p2.4MOV A,r3MOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,Aclr p2.6NOPSETB P2.6setb p2.4MOV A,r2MOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ACLR P2.5NOPSETB P2.5setb p2.6MOV A,r0MOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ANOPCLR P2.4DJNZ R1,QQQDJNZ R4,QQQQSJMP STARTTABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH。
ADC08040
模拟/数字(A/D)转换器的原理与应用ADC08041、A/D转换就是将模拟信号输换成数字信号。
A/D转换器就是用来实现这一功能的器件。
信号输入端常常是传感器或相应电路的模拟输出,由ADC器件转换成数字信号再提供给微处理器,以便用作显示等后期信号处理。
2、ADC0804的规格及引脚图8位COMS依次逼近型的A/D转换器.三态锁定输出存取时间:135US分辨率:8位转换时间:100US总误差:正负1LSB工作温度:ADC0804LCN---0~70度引脚图及说明见下图3、引脚定义/CS芯片选择信号。
/RD外部读取转换结果的控制输出信号。
/RD为高时,DB0~DB7处理高阻抗:/RD为低时,数字数据才会输出。
/WR:用来启动转换的控制输入,相当于ADC的转换开始(/CS=0时),当/WR由高变为低时,转换器被清除:当/WR回到高时,转换正式开始。
CLK IN,CLK R:时钟输入或接振荡无件(R,C)频率约限制在100KHZ~1460KHZ,如果使用RC电路则其振荡频率为1/(1.1RC)/INTR:中断请求信号输出,低地平动作.VIN(+)VIN(-):差动模拟电压输入.输入单端正电压时,VIN(-)接地:而差动输入时,直接加入VIN(+)VIN(-).AGND,DGND:模拟信号以及数字信号的接地.VREF:辅助参考电压.DB0~DB7:8位的数字输出.VCC:电源供应以及作为电路的参考电压.ADC0804模拟转数字对照表十六进制二进制高四位低四位相对电压值(2.56V)分别与满刻度的比率高四位低四位F111115/1615/256 4.8000.300 E111014/1614/256 4.4800.280 D110113/1613/256 4.1600.260 C110012/1612/256 3.8400.240B 101111/1611/256 3.5200.220A 101010/1610/256 3.2000.200910019/169/256 2.8800.180810008/168/256 2.5600.160701117/167/256 2.2400.140601106/166/256 1.9200.120501015/165/256 1.6000.100401004/164/256 1.2800.080300113/163/2560.9600.060200102/162/2560.6400.040100011/161/2560.3200.020000000/160/256321234567891011121314151617181920ADC0804PP10PP11PP12PP13PP14PP15PP16PP17R24R25R27R26VCCC15VCC01VINPP37PP36PP20R成功一号A D 转换实验部分电路图数字输出接口模拟输入接口4、根据以上对照表,可以得出以下结论如果:输入模拟量VIN=4V,由上表可知 3.840+0.160=4V数字为11001000=C8H5、如何在成功一号实验板上实现这一想法了?实验步骤如下:a、理解并将ADC0804转换程序写入AT89S51;b、对照说明书上的图的18号位置分别插入可插电位器c、旋转输入可调电位器,使输入电压由0V调到5V;d、程序中已使转换得到的数字信号,送P0口显示以便观察;实验板的P1口的LED也可以看到现象。
AD0804滑変调试有效
/从ADC0804 的模拟量通道输入0-5V 之间的模拟量,通过ADC0804 转换成数字量送给单片机,经单片机处理后在数码管上以十进制形成显示出来。
学习如果用单片机控制ADC0804芯片进行数模转换,掌握数码管动态扫描显示的原理。
动态扫描:就六位数码管显示123456先让第一个数码管显示1,其余的全部不亮,1大约亮几毫秒,然后熄灭,紧接着立即让第二个数码管显示2,其余的全部不亮,2同样亮几毫秒,依次这样亮到第六个数码管,然后再回来显示1,如此这样以很快的速度不断循环下去,由于人眼的视觉暂留时间大约为20毫秒左右,所以是感觉不出有不亮的数码管存在的,看见的是六个数码管同时在显示,数值是123456,如果我们把这个过程一点点放慢,看见的是从第一个数码管显1,然后移到第二个再显2,。
也就是说在任一时刻只有一位数码管是亮的。
这就是数码管动态扫描显示的原理ADC0804: ADC0804是8位全MOS中速A/D 转换器、它是逐次逼近式A/D 转换器,片内有三态数据输出锁存器,可以和单片机直接接口。
单通道输入,转换时间大约为100us。
ADC0804 转换时序是:当CS=0 许可进行A/D 转换。
WR由低到高时,A/D开始转换,一次转换一共需要66-73个时钟周期。
CS与WR同时有效时启动A/D转换,转换结束产生INTR 信号(低电平有效),可供查询或者中断信号。
在CS和RD 的控制下可以读取数据结果。
本实验没有使用INTR 信号。
//拧动AD旁边的电位器,会在数码管的前三位显示0-255之间的数值。
这就是把模拟信号转换成数字信号,即模数转换。
#include<reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char//IO口定义sbit adwr=P3^6;//写sbit adrd=P3^7;//读sbit adcs=P3^5;//片选信号//数组定义uchar code wei[]={0,1,2,3,4,5,6,7};//分别对应相应的数码管点亮,即位码uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示段码//变量定义uchar j,k,adval;void delay(unsigned char i) //延时程序{for(j=i;j>0;j--)for(k=125;k>0;k--);}void display(uchar bai_c,uchar sh_c,uchar g_c)//显示程序{P0=table[bai_c];//送个位显示P2=wei[5];//选通第一个数码管delay(2);P0=table[sh_c];//送十位显示P2=wei[6];//选通第二个数码管delay(2);P0=table[g_c];//送百位显示P2=wei[7];//选通第三个数码管delay(2);}void main() // 主程序{uchar a,A1,A2,A2t,A3;while(1){adcs=0;//选通ADCSadwr=1;_nop_();adwr=0;//AD写入(随便写个什么都行,主要是为了启动AD转换)_nop_();adwr=1;//adcs=1;//关闭ADCS//delay(10);for(a=20;a>0;a--)//需要注意的是ADC0804在写和读之间的时间间隔要足够长否则无法读出数据{ //这里把显示部分放这里的原因也是为了增加写读之间的时间间隔display(A1,A2,A3);} //送去显示各位P1=0xff;//读取P1口之前先给其写全1//adcs=0;//选通ADCSadrd=1;_nop_();adrd=0;//AD读使能_nop_();adval=P1;//AD数据读取赋给P1口adrd=1;//adcs=1;//关闭ADCS//adwr=0;P1=adval;//同时把AD的值送八个发光二极显示A1=adval/100;//分出百、十、个位A2t=adval%100;A2=A2t/10;A3=A2t%10;}}。
ADC0804工作原理其程序
前言:本文详细说明了ADC0804工作原理及过程,还附有一个ADC0804在单片机中的典型应用,包含原理图,源程序,程序注释详细清楚,这有助于更好地理解与应用ADC0804芯片。
1、A/D转换概念:即模数转换(Analog to DigitalConversion),输入模拟量(比如电压信号),输出一个与模拟量相对应的数字量(常为二进制形式)。
例如参考电压VREF为5V,采用8位的模数转换器时,当输入电压为0V时,输出的数字量为0000 0000,当输入的电压为5V时,输出的数字量为1111 1111。
当输入的电压从从0V到5V变化时,输出的数字量从0000 0000到1111 1111变化。
这样每个输入电压值对应一个输出数字量,即实现了模数转换。
2、分辨率概念:分辨率是指使输出数字量变化1时的输入模拟量,也就是使输出数字量变化一个相邻数码所需输入模拟量的变化值。
分辨率与A/D转换器的位数有确定的关系,可以表示成FS / 2 n 。
FS表示满量程输入值,n为A/D转换器的位数。
例如,对于5V的满量程,采用4位的ADC时,分辨率为5V/16=0.3125V (也就是说当输入的电压值每增加0.3125V,输出的数字量增加1);采用8位的ADC时,分辨率为5V/256=19.5mV(也就是说当输入的电压值每增加19.5mV,则输出的数字量增加1);当采用12位的ADC时,分辨率则为5V/4096=1.22mV(也就是说当输入的电压值每增加1.22mV ,则输出的数字量增加1)。
显然,位数越多,分辨率就越高。
3、ADC0804引脚功能:CS:芯片片选信号,低电平有效。
即CS=0时,该芯片才能正常工作,高电平时芯片不工作。
在外接多个ADC0804芯片时,该信号可以作为选择地址使用,通过不同的地址信号使能不同的ADC0804芯片,从而可以实现多个ADC通道的分时复用。
WR:启动ADC0804进行ADC采样,该信号低电平有效,即WR信号由低电平变成高电平时,触发一次ADC转换。
ADC0804的应用
ADC0804简介及应用ADC0804是一个早期的A/D转换器,因其价格低廉而在要求不高的场合得到广泛应用。
ADC0804是一个8位、单通道、低价格A/D转换器,主要特点是:摸数转换时间大约100us;方便的TTL或CMOS标准接口;可以满足差分电压输入;具有参考电压输入端;内含时钟发生器;单电源工作时(0V~5V)输入信号电压范围是0V~5V;不需要调零等等。
图1 ADC0804引脚图所有引脚定义如下:(引脚1):片选信号。
低电平有效,高电平时芯片不工作。
(引脚2):外部读数据控制信号。
此信号低电平时ADC0804把转换完成的数据加载到DB口。
(引脚3):外部写数据控制信号。
此信号的上升沿可以启动ADC0804的A/D转换过程。
CLK IN(引脚4):时钟输入引脚。
ADC0804使用RC振荡器作为A/D时钟,CLK IN 是振动器的输入端。
(引脚5):转换结束输出信号。
ADC0804完成一次A/D转换后,此引脚输出一个低脉冲。
对单片机可以称为中断触发信号。
Vin(+)(引脚6):输入信号电压的正极。
Vin(-)(引脚7):输入信号电压的负极。
可以连接到电源地。
AGND(引脚8):模拟电源的地线。
Vref/2(引脚9):参考电源输入端。
参考电源取输入信号电压(最大值)的二分之一。
例如输入信号电压是0V~5V时,参考电源取2.;输入信号电压是0V~4V时,参考电源取2. 0V。
DGND(引脚10):数字电源的地线。
DB8~DB0(引脚11~引脚18):数字信号输出口,连接单片机的数据总线。
CLK R(引脚19):时钟输入端。
V CC(引脚20):5V电源引脚。
补充说明:CLKI(引脚4)和CLKR(引脚19):ADC0801~0805 片内有时钟电路,只要在外部“CLKI”和“CLKR”两端外接一对电阻电容即可产生A/D 转换所要求的时钟,其振荡频率为fCLK≈1/1.1RC。
其典型应用参数为:R=10KΩ,C=150PF,fCLK≈640K Hz,转换速度为100μs。
ADC0804中文资料_数据手册_参数
595原理图及功能简介
________QB--|1 16|--VccQC--|2 15|--QAQD--|3 14|--SIQE--|4 13|--/GQF--|5 12|--RCKQG--|6 11|--SCKQH--|7 10|--/SCLRGND- |8 9|--QH'|________|74595的数据端:QA--QH: 八位并行输出端,可以直接控制数码管的8个段。
QH': 级联输出端。
我将它接下一个595的SI端。
SI: 串行数据输入端。
74595的控制端说明:/SCLR(10脚): 低点平时将移位寄存器的数据清零。
通常我将它接Vcc。
SCK(11脚):上升沿时数据寄存器的数据移位。
QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。
(脉冲宽度:5V时,大于几十纳秒就行了。
我通常都选微秒级)RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。
通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。
我通常都选微秒级),更新显示数据。
/G(13脚): 高电平时禁止输出(高阻态)。
如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。
比通过数据端移位控制要省时省力。
注:74164和74595功能相仿,都是8位串行输入转并行输出移位寄存器。
74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。
74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。
这在串行速度慢的场合很有用处,数码管没有闪烁感。
与164只有数据清零端相比,595还多有输出端时能/禁止控制端,可以使输出为高阻态。
74HC595是具有8位移位寄存器和一个存储器,三态输出功能。
移位寄存器和存储器是分别的时钟。
数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。
595驱动程序
/******************************************************************//*********************************************************************************/ *********************************************************************************** *********************************************************************************************************************文杰工作室********************************************************************************************************************** *********************************************************************************** ************************AVR**********************************MCU************** *********************************************************************************** ***********************************************************************///功能介绍://作者:文杰工作室//创作时间:2009年4月//QQ:570526723#include<reg52.h> //51芯片管脚定义头文件#include<intrins.h> //内部包含延时函数_nop_();#define uchar unsigned char#define uint unsigned intuchar code DA T[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};sbit SDA TA_595=P0^0; //串行数据输入sbit SCLK_595 =P0^1; //移位时钟脉冲sbit RCK_595 =P0^2; //输出锁存器控制脉冲uchar temp;/********************************************************//**//* 延时子程序*//**//********************************************************/void delay(int ms){int k;while(ms--){for(k=0; k<250; k++){_nop_();_nop_();_nop_();_nop_();}}}/********************************************************//**//*将显示数据送入74HC595内部移位寄存器*//**//********************************************************/void WR_595(void){uchar j;for (j=0;j<8;j++){temp=temp<<1;SDA TA_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=DA T[i]; //取显示数据WR_595();OUT_595();delay(100);}}}。
595驱动数码管共阳极电路
595驱动数码管共阳极电路1. 引言在现代电子技术中,使用数码管来显示数字、字母和符号已经成为常见的做法。
595驱动数码管共阳极电路是一种常用的电路设计,可以有效地控制数码管的亮灭和显示内容。
本文将介绍595驱动数码管共阳极电路的原理、工作方式和应用场景,并探讨其优缺点以及对电子技术的影响。
2. 595驱动数码管共阳极电路的原理我们需要了解数码管的共阳极和共阴极两种类型。
在共阳极数码管中,所有的阳极都连接在一起,而阴极则分别控制每一位数码管的亮灭。
而595驱动芯片则是一种能够控制多个输出端口的移位寄存器,通过串行输入的方式将控制信号逐位传送到数码管中。
在595驱动数码管共阳极电路中,使用了一个或多个595芯片来控制每一位数码管的亮灭。
通过对595芯片的控制信号进行编程,可以实现数字、字母和符号的显示。
通过将控制信号传输给595芯片的串行数据输入端,再通过时钟信号进行移位操作,最后通过并行输出端口将数据传输到数码管中,实现对每一位数码管的控制。
3. 595驱动数码管共阳极电路的工作方式在595驱动数码管共阳极电路中,一个595芯片可以控制8位数码管的亮灭,因此多个595芯片可以实现更多位数码管的控制。
控制信号通过串行输入端口进入第一个595芯片,并通过时钟信号逐位移位,最终通过并行输出端口将数据传输到数码管中。
每一位数码管的亮灭由595芯片的输出端口控制,通过选择性地给输出端口提供电压,可以控制数码管的亮度和显示内容。
4. 595驱动数码管共阳极电路的应用场景595驱动数码管共阳极电路广泛应用于计数器、钟表、温度显示器等设备中。
通过合理设计控制信号和编程逻辑,可以实现静态和动态的数字显示效果。
由于595芯片具有高速移位和输出能力,还可以通过串联多个595芯片来控制更多位数码管的显示。
5. 595驱动数码管共阳极电路的优缺点595驱动数码管共阳极电路具有以下优点:- 控制电路简单,使用595芯片可以减少对控制信号的数量。
AD0804简介
AD0804简介最近做到A/D转换器,我有的那块FPGA上的AD是AD0804,到网上一搜,发现关于这个型号的文章不多,大部分都是关于AD0809的。
功夫不负有心人,我终于在一本书(《VHDL与数字电路设计》卢毅、赖杰编著,科学出版社)上找到关于AD0804的详细讲解,现在传上来以供大家参考。
ADC0804的管脚图如下所示它的主要电气特性如下:●工作电压:+5V,即VCC=+5V。
●模拟输入电压范围:0~+5V,即0≤Vin≤+5V。
●分辨率:8位,即分辨率为1/28=1/256,转换值介于0~255之间。
●转换时间:100us(f CK=640KHz时)。
●转换误差:±1LSB。
●参考电压:2.5V,即V ref=2.5V。
1.ADC0804的转换原理ADC0804是属于连续渐进式(Successive Approximation Method)的A/D转换器,这类型的A/D转换器除了转换速度快(几十至几百us)、分辨率高外,还有价钱便宜的优点,普遍被应用于微电脑的接口设计上。
以输出8位的ADC0804动作来说明“连续渐进式A/D转换器”的转换原理,动作步骤如下表示(原则上先从左侧最高位寻找起)。
第一次寻找结果:10000000 (若假设值≤输入值,则寻找位=假设位=1)第二次寻找结果:11000000 (若假设值≤输入值,则寻找位=假设位=1)第三次寻找结果:11000000 (若假设值>输入值,则寻找位=该假设位=0)第四次寻找结果:11010000 (若假设值≤输入值,则寻找位=假设位=1)第五次寻找结果:11010000 (若假设值>输入值,则寻找位=该假设位=0)第六次寻找结果:11010100 (若假设值≤输入值,则寻找位=假设位=1)第七次寻找结果:11010110 (若假设值≤输入值,则寻找位=假设位=1)第八次寻找结果:11010110 (若假设值>输入值,则寻找位=该假设位=0)这样使用二分法的寻找方式,8位的A/D转换器只要8次寻找,12位的A/D转换器只要12次寻找,就能完成转换的动作,其中的输入值代表图1的模拟输入电压Vin。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
仿真电路图,经过测试,没问题下面是上个图的分解图模拟电路:设计模拟电路的原因主要有以下两点1.由于外界信号的复杂性,使得传感器直接输出的电信号可能会存在一些问题(如不稳定),这些不稳定信号如果直接送到A/D 芯片进行采样,则最终结果可能使得最后的显示值来回乱跳,而无法确定待测的外界信号到底是多少。
因此,可能需要设计一套模拟电路对传感器输出的不稳定电信号进行滤波等处理,去除干扰,使得进入A/D 转换芯片的电压值为一个稳定的信号。
2.每一个A/D 转换芯片都有一个参考电压,只有输入的模拟电压值在这个参考电压的范围内才能进行正确的转换,例如:本试验将ADC0804芯片的参考电压设置成0V ~5V ,因此如果输入的电压值大于5V ,则转换出的结果永远为0xFF,若输入的电压值小于0V,则转换出的结果永远为0,这样便无法正确的还原出被测信号的大小。
基于上述原因,我们可能需要设计一套模拟电路,传感器的输出电压值进行一些变换(放大,缩小),使得送到A/D转换芯片的电压值在转换芯片的参考电压范围内。
A/D转换芯片:即模拟/数字转换芯片,它将输入的模拟电压信号转换成单片机等控制处理器能够识别的数字二进制形式。
处理器芯片:处理器芯片有很多中(比如51单片机,ARM或者是PC上的奔腾处理器,AMD处理器)这些处理器虽然架构不一样,但是有个共同的特点,就是它们能够运行程序,因此它们能通过程序对A/D芯片送入的二进制形式的电压值进行处理,通过运算将其还原成待测的外界信号值,控制显示部件(如LCD,八段数码管)将这个值显示出来。
例如:假如ADC0804输出的二进制值0x80,则根据A/D转换公式可以推出ADC0804的输入电压大小为(0x80/0x100)*5V=2.5V。
假设信号经过模拟电路缩小了8倍,则可以推出传感器的输出电压为2.5V*8=20V,再根据传感器的转换公式(一般手册会给出)即可得到输入的外界信号的值。
显示:显示的作用是将计算出的待测外界信号的值展示给测量人员,显示的形式有很多种,如LCD,八段数码管,上位机软件等。
通过上面的介绍,大家一定对这种基于A/D芯片的嵌入式设计模式有了一个大致的了解,其实现时中很多应用都是遵循了这种设计模式,比如常用的数字万用表,数字温度测量仪,血糖测量仪等。
本试验也遵循了这种设计模式,只不过它省略了传感器和模拟电路部分,首先通过滑动变阻器调节输入到ADC0804芯片的电压值(ADC0804芯片的参考电压调节成0V~5V,而滑动变阻器产生的电压范围也为0V~5V,因此没有必要设计额外的模拟电路),然后通过51单片机进行运算处理得到这个输入电压值,最后再控制八段数码管将这个电压值显示出来,实际上是实现了一个简易的数字电压测量表。
图2是试验框图。
图2:本试验示意图接下来我们首先介绍实现本试验的电路设计,然后介绍软件实现方法。
2.2 硬件设计本部分,我们首先介绍ADC0804芯片的一些相关知识,然后介绍基于ADC0804和51单片机实现A/D转换的电路设计。
2.2.1 ADC0804芯片介绍图3:ADC0804规格及引脚分配图本试验采用的A/D芯片为ADC0804,它是CMOS 8位单通道逐次渐近型的模/数转换器,其规格及引脚图如图3所示,根据手册我们可以得到各个引脚的大致功能如下:/CS:芯片片选信号,低电平有效,即/CS=0,该芯片才能正常工作,在外接多个ADC0804芯片时,该信号可以作为选择地址使用,通过不同的地址信号使能不同的ADC0804芯片,从而可以实现多个ADC通道的分时复用。
/WR:启动ADC0804进行ADC采样,该信号低电平有效,即/WR信号由高电平变成低电平时,触发一次ADC转换。
/RD:低电平有效,即/RD=0时,可以通过数据端口DB0~DB7读出本次的采样结果。
UIN(+)和UIN(-):模拟电压输入端,模拟电压输入接UIN(+)端,UIN (-)端接地。
双边输入时UIN(+)、UIN(-)分别接模拟电压信号的正端和负端。
当输入的模拟电压信号存在“零点漂移电压”时,可在UIN(-)接一等值的零点补偿电压,变换时将自动从UIN(+)中减去这一电压。
VREF/2:参考电压接入引脚,该引脚可外接电压也可悬空,若外界电压,则ADC的参考电压为该外界电压的两倍,如不外接,则Vref与Vcc共用电源电压,此时ADC的参考电压即为电源电压Vcc的值。
CLKR和CLKIN:外接RC电路产生模数转换器所需的时钟信号,时钟频率CLK = 1/1.1RC,一般要求频率范围100KHz~1.28MHz。
AGND和DGND:分别接模拟地和数字地。
/INT:中断请求信号输出引脚,该引脚低电平有效,当一次A/D转换完成后,将引起/INT=0,实际应用时,该引脚应与微处理器的外部中断输入引脚相连(如51单片机的INT0,INT1脚),当产生/INT信号有效时,还需等待/RD=0才能正确读出A/D转换结果,若ADC0804单独使用,则可以将/INT引脚悬空。
DB0~DB7:输出A/D转换后的8位二进制结果。
2.2.2 外围电路设计图4:ADC0804的外围电路图4为ADC0804外围电路原理图,其中,A VCC=5V,引脚VREF/2悬空,因此ADC转换的参考电压为A VCC的值,即5V。
VIN-接地,而VIN+连接滑动变阻器VR1的输出,因此VIN+的电压输入范围为0V~5V,正好处于参考电压范围内。
引脚CS_1, WR_1和RD_1分别连接单片机的P3_5,P3_6以及P3_7脚,而DB0~DB7连接单片机的P2脚.下面介绍一些电路设计方面的知识初学者看到这里可能会有这样的疑问,就是“图4的外围电路为什么是这样设计?CLKR引脚为什么要外接一个电阻R36和一个电容C15?引脚CLKIN为什么要外接一个电容C15?)。
其实这里并没有任何神秘的地方,我们仔细看看ADC0804的手册就知道答案了,手册(本试验所属的文件夹中包含了这个pdf文件)的第12页有一段内容为“Testing the A/D Conveter”,该段介绍了一个简易的芯片测试方法,其中的“FIGURE 18”就给出了进行这个简易试验的原理图,以及计算公式。
如图5所示图5:ADC0804手册给出的参考电路图大家仔细看看,图5给出中的手册中的参考电路图是不是和图4的原理图如出一辙?的确,我们就是参考了手册的推荐电路从而确定了ADC0804的外围电路的设计。
手册中甚至连RC电路的电容和电阻的取值都给出来了,照搬就是了!真的是没有任何神秘之处!下面介绍一下datasheet对电路设计以及软件编写的重要作用。
根据我们多年的设计经验,当我们的电路中需要用到某一块芯片的时候,往往首先去下载它的手册,也就是datasheet,有很多专门提供datasheet下载的网站,推荐一个我们常用的网址:/。
进入该页面后输入我们所要查询的芯片名称(如这里的ADC0804)即可得到该芯片的datasheet。
芯片的datasheet会介绍你所需要的芯片信息,从典型外围电路的搭建,到芯片的封装,电气特性以及软件编程模型。
一般来说,直接copy手册中给出的推荐外围电路即可。
当然,若是阅读完手册后还是无法确定外围电路的搭建,则可以直接联系生产这块芯片的公司的技术服务部门(这里可以联系AD公司),他们肯定给你提供一套完整详尽的电路解决方案的(包括外围电路的设计以及甚至是软件的示例代码)。
这也就是现在比较流行的单芯片解决方案的含义所在,芯片提供商提供一块芯片后往往会提供一套基于该芯片的完整解决方案,该解决方案包括基于这块芯片的电路设计,软件设计。
产品制造厂商只要根据这个解决方案做及少的改动,即可以设计出满足自身需要的产品来!2.2 软件设计下面我们介绍软件的编写。
本试验的软件需要实现一下几个步骤1.控制ADC0804芯片进行正确采样,读取采样结果。
2.对采样值进行运算变换,换算出实际的滑动变阻器输入电压值。
3.将该电压值通过八段数码管显示出来,从而实现一个简易的数字电压测量表功能。
其中第三个步骤涉及到八段数码管显示相关知识,其内容在本套学习板的“”试验中有详细的介绍。
下面我们主要介绍实现前两个步骤的方法。
步骤一:控制ADC进行正确采样,读取正确的采样值。
前面我们已经提到了芯片的datasheet对于硬件设计以及软件编程的重要性。
同样,要使得ADC0804正常工作,我们依然首先需要仔细的阅读其使用手册。
仔细阅读手册后,我们发现了在手册的第7页给出了一个时序图(Timing Diagrams),如图6所示图6:ADC0804手册给出的ADC转换时序图图6给出的其实就是使ADC0804正确工作的软件编程模型。
由图可见,实现一次ADC转换主要包含下面三个步骤:1.启动转换:由图6中的上部“FIGURE 10A”可知,在/CS信号为低电平的情况下,将/WR引脚先由高电平变成低电平,经过至少tW(WR)I延时后,再将/WR 引脚拉成高电平,即启动了一次AD转换。
注:手册中给出了要正常启动AD转换/WR的低电平保持时间tW(WR)I的最小值为100ns,(见手册第4页的Electrical Specification,如图7红圈所示)即/WR 拉低后延时大于100ns即可以,具体做法可通过插入NOP指令或者调用delay()延时函数实现,不用太精确,只要估计插入的延时大于100ns即可。
2.延时等待转换结束:依然由图6中的上部“FIGURE 10A”可知,由拉低/WR信号启动AD采样后,经过1到8个Tclk+INTERNAL Tc延时后,AD转换结束,因此,启动转换后必须加入一个延时以等待AD采样结束。
注:手册中给出了内部转换时间“INTERNAL Tc”的时间范围为62~73个始终周期(见手册第4页的Electrical Specification,如图7兰圈所示),因此延时等待时间应该至少为8+73=81个时钟周期。
本试验时钟频率约为Fclk=1/1.1R36C15=606KHz,其中R36约为150K, C15约为150pF,因此时钟周期约为Tclk=1/Fclk=1.65us。
所以该步骤至少应延时81*Tclk=133.65us. 具体做法可通过插入NOP指令或者调用delay()延时函数实现,不用太精确,只要估计插入的延时大于133.65us即可。
3.读取转换结果:由图6的下部“FIGURE 10B”可知,采样转换完毕后,再/CS信号为低的前提下,将/RD脚由高电平拉成低电平后,经过tACC的延时即可从DB脚读出有效的采样结果。
注:手册中给出了tACC的典型值和最大值分别为135ns和200ns(见手册第4页的Electrical Specification,如图7绿圈所示),因此将/RD引脚拉低后,等待大于200ns后即可从DB读出有效的转换结果。