求dac0832与51单片机接口电路图,

除了单片机p0口外其他口都行,但不能用p0口,我的p0口是要连接总线的。并求 相应的程序 最好是51单片机的汇编语言 没有也可以用c语言。

我做的滤波器

 #include<reg51.h>

 #include"math.h"

 #define N 25

 #define PI 3.1415926

 sbit  da_wr1=P3^6;

 sbit  da_cs=P2^7;

void InputWave();

 float FIR();

 void da0832();

 float fHn[N]={0.0,0.0,0.001,-0.002,0.01,-0.09,

               -0.018,0.049,-0.02,0.11,0.28,0.64,0.28,

   -0.11,-0.02,0.049,-0.018,-0.009,0.01,

   -0.002,-0.002,0.001,0.0,0.0     

              };

float fXn[N]={0.0};

float fInput,fOutput;

float fSignal1,fSignal2;

float fStepSignal1,fStepSignal2;

float f2PI;

int i;

float FIN[256],FOUT[256];

int nIn ,nOut;

main(void)

{

 nIn=0;nOut=0;

 f2PI=2*PI;

 fSignal1=0.0;

 fSignal2=PI*0.1;

 fStepSignal1=2*PI/30;

 fStepSignal2=2*PI*1.4;

 while(1)

 {

 // fInput=InputWave();

 InputWave();

 // FIN[nIn]=fInput;

 // nIn++;nIn%=256;

  fOutput=FIR();

  FOUT[nOut]=fOutput;

  

  nOut++;

  if(nOut>=256)

  {nOut=0;da0832();

   }

 }

}

  /*float InputWave()

  {

  for(i=N-1;i>0;i--)    fXn[i]=fXn[i-1];

  fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0;

   fSignal1+=fStepSignal1;

   if(fSignal1>=f2PI)   fSignal1-=f2PI;

   fSignal2+=fStepSignal2;

   if(fSignal2>=f2PI) fSignal2-=f2PI;

   return(fXn[0]);

  } */

  void InputWave()

  {

  int i;

  for(i=0;i<=15000;i++)

  {

  fXn[i]=(sin(PI*2*i/N*15000)+1)*5;

  }

  }

  float FIR()

  {

  float fSum;

  fSum=0;

  for(i=0;i<N;i++) fSum+=(fXn[i]*fHn[i]);

  return(fSum);

  }

   void da0832()

   {

   unsigned char i;

    da_cs=0;//da转换输出使能标志置位

    da_wr1=0;//输入寄存器的官写选通信号,表示单片机要传送数据了

for (i=0;i<255;i++)

    P0=FOUT[i];

    da_wr1=1;//数据传送完成,使能锁存

    da_cs=1;

  }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-06
我买了一个,不错!
一、AT-12A学习板主要特点:
1.直接USB口供电,可通过电脑USB口下载程序,方便没有串口的笔记本电脑下载并直接烧写程序。
2.直接在线下载烧写程序,不需要另外购买单片机烧写器,也能随时方便的烧写程序到单片机里查看程序运行情况,学习、调试

程序省去复杂频繁的烧写、换片过程。
3.具有直接在线仿真功能,不需要另外购置昂贵的仿真器。将仿真芯片安在实验上后便可直接进行在线单步,全速调试等。
4.昂天AT-12A学习板集实验开发板、编程器、烧写器、仿真器四合一,简单高效。
5.丰富的硬件资源:AD模数转换芯片,DA数模转换芯片,先进的光耦隔离驱动继电器模块,红外接收通信模块,18B20温度传感模块,三个端口复用锁存器,基于IIC协议的EEPROM 24C0**系列芯片,全八位数码管,全八位发光二激管(和单片机8位系统完整对应),发声音乐实验的蜂鸣器,串口RS232转换芯片,4x4矩阵键盘和4个特殊功能键盘等等。
6.丰富的扩展接口:1602字符液晶接口(液晶对比度亦可任意调节),12864字符、汉字、图形液晶接口(液晶对比度亦可任意调

节),继电器外控电源接口,TTL串行数据外扩接口(方便做与其他单片机通信实验),单片机IO引脚全部40个外扩接口,全部可以自行扩展,这是非常重要的。
7,人性化设计:芯片全部采用插座可更换式,方便根据需求随时更换芯片。单片机采用紧锁装置,方便更换仿真芯片和批量烧写

程序。串行下载程序状态指示灯。功能模块布局合理,使用方便,开发板四端加电保护螺丝等等。使用方便舒适。

二、AT-12A丰富的硬件资源介绍:
1、全八位发光二极管:流水灯相关试验:比如正反流水灯、交通指示、移位显示等等。(周边硬件状态指示实验等)。
2、全八位数码管:全八位发光二极管和数码管与单片机8位完整对应,硬件不缩水,使用显示更方便更完整。可做实验:比如计

数器、秒表、电子钟、数码管动态显示、静态显示等等。(做静态显示实验,动态扫描实验,8位与IO口全匹配)。
3、串行通信接口:MAX232芯片RS232通信接口,(可以做为与计算机串行通信的接口,同时也可做为STC单片机下载程序的接口,还可以做为主从系统中多机互连接口。一口多用,非常方便)。串口TTL电平外扩接口,可方便与其他单片机做串口通信实验,同时可以直接通过串口在线烧写STC芯片和在线仿真。含有232接口,支持串口通讯实验、仿真芯片自举、SST仿真模块在线硬件仿真,通过此接口可直接支持各种类型的嵌入式仿真器。学习串行通信的有关原理,51单片机串行口的结构、串行口编程的方法。
4、USB供电系统:直接插接到电脑USB口即可提供电源,不需另接直流电源。
5,AD模数转换模块(含ADC0804芯片):(做模/数转换实验)工业上最常用的将模拟量转变成单片机可识别的数字量实验,学好模数转换技术,在实际单片机应用中非常重要。
6,DA数模转换模块(含DAC0832芯片):(做数/模转换实验)将单片机的数字量转换成模拟信号电路,在单片机应用中也很重要。
7、IIC总线接口:通过EEPROM的24C**写入、读取试验,学习工业上常用的IIC协议以及掉电存储芯片的使用。 (IIC总线元件实验验)
8、实用的继电器控制模块:AT-12A学习板采用工控中先进的、具有良好隔离性和稳定性的光电耦合器驱动,继电器因为需要分离电路,电路比较复杂,一般实验板没有,AT-12A学习板采用独立的驱动隔离电路,所有原理图一并提供。继电器及分离驱动电路模块(学习工业设备中最常用的以弱控强继电器的使用,以及其驱动电路的设计)。
9、光电耦合器:学习工控现场系统中稳定可靠的电隔离系统的设计)。
10,红外线接收通信模块:可做红外线接收解码实验,把学习板做成无线控制中心。IR红外线通信接收器(可做红外线通信接收实

验,可将单片机做成无线红外控制器,通过遥控器控制其它设备,学习红外无线调制、解调、编码等实验)。
11,字符液晶1602接口(含1602液晶):可显示两行字符。
12、图形液晶12864接口(具有液晶对比度调节功能):可显示任意汉字及图形。
13,DS18B20温度显示器:可做温度传感显示实验,可以做成温度检测控制器。(初步掌握单片机操作后即可亲自编写程序获知当时的温度,可深入设计温控系统)。
14、音乐、发声电路:学习板系统带蜂鸣器,可做发声、音乐实验。(做单片机发声实验,闹钟提醒实验等)
15. 4X4矩阵键盘,4个特殊功能键盘共20个键盘:做各种复杂的键盘控制扫描实验,实现对系统复杂的控制。(键盘检测试验)
16、全开放扩展接口:单片机32个IO口全部引出,方便自己进行自由扩展。整个系统采用全开放模块化设计,独立结构,稳定实

用。通过扩展口,可以自己做各种想做的实验,让自己在电子世界里自由翱翔吧!
17,锁紧装置:非常方便主芯片的安装及卸取。
18,专业的技术支持:光盘中含本实验板所有例程。赠送伟褔仿真软件,easy 51pro下载软件,STC单片机程序下载软件,KEIL51

等及所有电路图、实验板详细使用教程,下载教程等。丰富的学习资源光盘,让你学习起到事半功倍的效果,快速进入优秀工程

师的行列。

另外,团IDC网上有许多产品团购,便宜有口碑
第2个回答  推荐于2017-07-27

这是这样

本回答被网友采纳
第3个回答  2011-05-09
这是当年我写小报告。用的是DA0832,AD0809。是C的,但很简单的C。链接中有图有真相。

参考资料:http://wenku.baidu.com/view/ec9d10d149649b6648d7471c.html

第4个回答  2013-03-20

MOVX的指令必须要用到P0口的。。(见引用第7页),除非你自己编时序


MOV DPTR,#2FFFH

MOV A,DATA(你要的值,从00-FFH)

MOVX @DPTR,A

参考资料:http://wenku.baidu.com/view/2f2ec36825c52cc58bd6be50.html

相似回答