DAC_WRTA是对D/A写数据的,DAC_clk是D/A的工作时钟,应该不能直接连接一起的。
选择双通道模式,可以使用一个通道,但好像有点画蛇添足的感觉。
开发板不重要,重要的是这个开发板上用什么FPGA芯片
同学,你的问题有问题
你是想问STC系列单片机的AD问题还是串口问题
你上面这段程序是51单片机串口初始化程序而不是AD程序。
51单片机串口初始化为
void COM_Init(void)
{
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20;
PCON |= 0x80;
TH1 = 0xFD;
ES=1;EA=1;
TR1 = 1;
TI = 1;
}
AD转换程序
//定义与ADC有关的特殊功能寄存器
sfr ADC_CONTR =0xC5;
sfr ADC_DATA =0xC6;
sfr ADC_LOW2 =0xBE;
sfr P1M0 =0x91;
sfr P1M1 =0x92;
sbit p20 =P2^0;
void STC90CxxAD_delay(int timer) //延时函数
{
while(timer--);
}
int Ad_Change(char channel) //AD转换
{
int AD_Result_Temp = 0 ;
P1 = 0xff; //将P1口置高,为A/D转换作准备
ADC_CONTR = ADC_CONTR|0x80; //1000,0000打开A/D转换电源
P1M0 = 0x03; //0000,0011用于A/D转换的P1x口,先设为开漏
P1M1 = 0x03; //0000,0011P10--P11先设为开漏。断开内部上拉电阻
STC90CxxAD_delay(20); //20
ADC_CONTR = ADC_CONTR&0xE0; //1110,0000 清ADC_FLAG,ADC_START位和低3位
ADC_CONTR = ADC_CONTR|(channel); //设置当前通道号
STC90CxxAD_delay(1); //延时使输入电压达到稳定
ADC_DATA = 0; //清A/D转换结果寄存器
ADC_LOW2 = 0;
ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,启动转换
do { ; }
while((ADC_CONTR & 0x10)==0); //0001,0000等待A/D转换结束
ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换
AD_Result_Temp = ((AD_Result_Temp|ADC_DATA)<<2)|(ADC_LOW2&0x03);
//保存返回AD转换的 结果
STC90CxxAD_delay(1); //
return AD_Result_Temp;
}
已调试通过,望对你有用
这个是使用外部RAM总线形式来通讯的(最好把电路图贴上来)
CTRL _at_ 0x2FFF;//这个代表对外部0x2FFF地址进行 *** 作
ADSEL _at_ 0x4FFF;//这个代表对外部0x4FFF地址进行 *** 作
通过硬件的总线协议 提高通讯速度
以上就是关于求FPGA控制AD9767的驱动程序!!!!全部的内容,包括:求FPGA控制AD9767的驱动程序!!!!、STC单片机自带AD代码问题、急问:用ad1674和8051的一个ad转换的程序,具体程序如下:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)