#include "reg51h"
#define data_point P0
sbit EOC=P2^0;
sbit ADDA=P2^1;
sbit ADDB=P2^2;
sbit ADDC=P2^3;
sbit OE=P2^5;
sbit START=P2^6;
sbit CLK=P2^7;
sbit ALE=P2^6;
unsigned char disp[3]={0,0,0};
char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char t0count=0;
unsigned int temp;
double sum;
unsigned char val_Integer; //整数
unsigned int val_Decimal; //小数
sbit k1 = P1^0;
sbit k2 = P1^1;
sbit k3 = P1^2;
sbit k4 = P1^3;
void delay(unsigned char ms)
{
unsigned char i;
while(ms--)
for(i=0;i<125;i++);
}
void display()
{
disp[0]=disp[0]&0x7f;
P3= disp[0];
k1 = 1;
delay(2);
k1 = 0;
P3= disp[1];
k2 = 1;
delay(2);
k2 = 0;
P3= disp[2];
k3 = 1;
delay(2);
k3 = 0;
P3= disp[3];
k4 = 1;
delay(2);
k4 = 0;
}
unsigned char ADC0808()
{
unsigned char d;
ADDC=0;
ADDB=0;
ADDA=0;
TR1=1;
ALE=1;ALE=0;
START=1;START=0;
while(EOC==0);
OE=1;
d=data_point;
OE=0;
TR1=1;
return d;
}
void covert(unsigned char x)
{
sum=x00201378;
val_Integer=(unsigned char)sum;
val_Decimal=(unsigned int)((sum-val_Integer)1000);
disp[3]=dispcode[val_Decimal%10];
disp[2]=dispcode[val_Decimal/10%10];
disp[1]=dispcode[val_Decimal/100];
disp[0]=dispcode[val_Integer];
}
void main()
{
TMOD=0x21;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=256-2;
ET0=1;
ET1=1;
EA=1;
TR0=1;
OE=0;
START=0;
EOC=1;
while(1)
{
display();
}
}
void time0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
t0count++;
if(t0count==100)
{
t0count=0;
covert(ADC0808());
}
}
void time1() interrupt 3
{
CLK=~CLK;
}
AD芯片是TLC549,EP2c5t144单线的串行数据传送。
先例化一个sdram controller,再打个testbench,然后再build image,再上板测试。这可能是比较快的方式了。最好要对sdram的读写时序比较熟悉,然后例化的controller才能比较靠谱,如果能搞到sdram的bfm模型,那可能更好。
AD输出的数据直接进FPGA,不管是高速AD的串行输出还是并行差分数据,FPGA的IO都可以支持。进FPGA后数据可以存在FPGA的BRAM里面。
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
考虑的问题。
1 可以使用运放做加法电路,和一个给定参考电压相加,在负极性的峰值时,能保证运放输出>=0V,这个可以通过调整给定参考来实现
2 记得运放一定用双电源供电,或者轨对轨运放单电源也行。
3 考虑,信号的动态范围,如果信号的最大峰峰值超过MCU的参考电压,就会出现消顶,而导致采样失真。所以在加法电路之前,最后加一级运放反向放大/缩小的处理,可以调整信号的最大峰峰值《= MCU的参考电压。放大/缩小倍数通过软件处理还原。
不知能否帮到你!!!
1、首先双开AD应用程序,进入到编辑首页中。
2、然后辑页面中,选择打开自定义中的“自定义UI与默认设置切换设置选项。
3、然后在d出来的设置窗口中,点击选择用户界面方案中的DefaultUI设置选项。
4、然后点下角的设置,重新打开应序就完成了。
以上就是关于adc8080的ad转换单片机程序全部的内容,包括:adc8080的ad转换单片机程序、你的AD数据存在FPGA中去是这么实现的、STC单片机做AD转换时双极性信号程序是怎么处理的编程思路是怎么样的啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)