编写串行 DA 芯片 MCP4921 与单片机的接口程序,实现 周期性 、 锯齿波、 0-5V 信号的输出 。
单片机源程序如下:
- //主文件,用于程序数值的输入
- #include <reg52.h>
- #include <intrins.h>
- #include "delay.h"
- #include "DAC0832.h"
- #include "MCP4921.h"
- #define Max 0xFFFF //其对应的电压值5V
- void main()
- {
- unsigned int Data1,Data2;
- int IniVa;//定义初值
- while(1)
- {
- //令输出为锯齿波输出
- for(IniVa = 0;IniVa < Max; IniVa++)
- {
- Data1 = IniVa;
- //Data2 = Max-IniVa;
- //DA2channel(Data1, Data2);
- MCP4921(Data1);
- }
- }
- }
复制代码
- //子程序文件,MCP4921的SPI输入时序
- #include <reg52.h>
- #include <intrins.h>
- #include "delay.h"
- #include "MCP4921.h"
- void MCP4921(unsigned int DAdata)
- {
- unsigned int DAdataout;
- unsigned char i;
- DAdataout = (DAdata | 0x3000);
- CS = 1;
- SCK = 0;
- LDAC = 1;
- delay10us();
- CS = 0;
- for(i=0;i<=15;i++)
- {
- SI = DAdataout >> (15 - i)&0x0001;//移位,将最低位取出,高位赋值为0
- delay10us();
- SCK = 1;
- delay10us();
- SCK = 0;
- }
- delay10us();
- CS = 1;
- LDAC = 0;
- delay10us();
- LDAC = 1;
- }
复制代码
所有资料51hei提供下载:
MCP4921 锯齿波zy.zip
(175.58 KB, 下载次数: 59)
|