标题: 单片机+MCP4921实现DA转换的Proteus的仿真程序 [打印本页]

作者: dankey    时间: 2020-6-14 20:56
标题: 单片机+MCP4921实现DA转换的Proteus的仿真程序
编写串行 DA 芯片 MCP4921 与单片机的接口程序,实现 周期性 、 锯齿波、 0-5V 信号的输出 。


单片机源程序如下:
  1. //主文件,用于程序数值的输入

  2. #include <reg52.h>
  3. #include <intrins.h>
  4. #include "delay.h"
  5. #include "DAC0832.h"
  6. #include "MCP4921.h"

  7. #define Max 0xFFFF  //其对应的电压值5V

  8. void main()
  9. {
  10.         unsigned int Data1,Data2;
  11.         int IniVa;//定义初值
  12.         while(1)
  13.         {       
  14.                 //令输出为锯齿波输出
  15.                 for(IniVa = 0;IniVa < Max; IniVa++)
  16.                 {
  17.                         Data1 = IniVa;
  18.                         //Data2 = Max-IniVa;
  19.                         //DA2channel(Data1, Data2);
  20.                         MCP4921(Data1);
  21.                 }
  22.         }
  23. }
复制代码

  1. //子程序文件,MCP4921的SPI输入时序
  2. #include <reg52.h>
  3. #include <intrins.h>
  4. #include "delay.h"
  5. #include "MCP4921.h"

  6. void MCP4921(unsigned int DAdata)
  7. {
  8.         unsigned int DAdataout;
  9.         unsigned char i;
  10.         DAdataout = (DAdata | 0x3000);
  11.         CS = 1;
  12.         SCK = 0;
  13.         LDAC = 1;
  14.         delay10us();
  15.         CS = 0;
  16.         for(i=0;i<=15;i++)
  17.         {
  18.                 SI = DAdataout >> (15 - i)&0x0001;//移位,将最低位取出,高位赋值为0
  19.           delay10us();
  20.                 SCK = 1;
  21.                 delay10us();
  22.                 SCK = 0;
  23.         }
  24.         delay10us();
  25.         CS = 1;
  26.         LDAC = 0;
  27.         delay10us();
  28.         LDAC = 1;
  29. }
复制代码

所有资料51hei提供下载:
MCP4921 锯齿波zy.zip (175.58 KB, 下载次数: 59)


作者: linuxcso    时间: 2020-12-9 22:37
大佬,能加个sd卡播放wav音乐吗。proteus 自带arduino例子有一个 wave 模块(sd+mcp4921)




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1