单片机C52编程MCP4822--DAC试验
本帖最后由 pdshyh 于 2020-12-10 17:25 编辑I2C读写24C08程序确实操蛋断断续续半个月书本例程还是搞不定,还是论坛老师提供的程序可以,单片机C52编程SPI通讯MCP4822--DAC试验轻松多了,网上搜的例程,参照书本并行DAC0832修改了一个LED灯由不亮-暗-亮循环的程序,电压由2.2--2.6V,LED灯万用表二极管档测量导电电压是2.5V。
有一个情况延时函数在主函数后面出错书本示例在主函数后面:L焊接MCP4822/LED到编程调整示波器捕获一天时间:lol :lol :lol
C52扩展板左1是MCP4822
SPI通讯时序示波器也完美捕捉
程序
#include<reg52.h> //包含52系列单片机头文件
#include<intrins.h> //包含52系列单片机函数头文件
#define uchar unsigned char//为宏定义,把unsigned char用uchar表示,方便书写
#define uint unsigned int //为宏定义,把unsigned int用uint表示,方便书写
sbit MCP4822_SCL = P2^3; //SCLK
sbit MCP4822_LDAC = P2^6; //LDAC
sbit MCP4822_SDI = P2^4; //SDI
sbit MCP4822_CS = P2^5; //cs
uint i,j,k;
void setVoltage(uchar config, uint dat)
{
uint command = 0;
// uchar i;
command |= config << 12; //config 0x01 --A通道 x2最高输出4096mV关闭输出0x00
//config 0x03 --A通道 x1最高输出2048mV关闭输出0x02
//config 0x09 --B通道 x2最高输出4096mV关闭输出0x08
command |= (dat & 0x0FFF); //0000 1111 1111 1111config 0x0b --B通道 x1最高输出2048mV 关闭输出 0x0b 设置和数据到command
MCP4822_CS =1;//刚开始MCP4822_CS为高电平
MCP4822_LDAC =1 ; //MCP4822_LDAC为高电平
MCP4822_SCL =0; //刚开始MCP4822_SCL为低平
MCP4822_CS = 0;; //ce变为低电平,允许单片机向MCP4822中的寄存器写入设置参数和数据
_nop_(); //稍微延时(一个机器周期)
for (i=0; i<16;i++)
{
MCP4822_SCL=0;
//MCP4822_SDI=command&0x80>>15 ;
command=command<<1 ;
MCP4822_SDI=CY; // command<<1高位溢出最高位自动寄存在CY
MCP4822_SCL=1 ; //config 0x09 --B通道 x2最高输出4096mV关闭输出0x08
}
MCP4822_CS = 1; //设置参数和数据写完之后,把MCP4822_CS拉高,防止对写入的数据进行误操作
_nop_();//稍微延时
MCP4822_SDI=1; //释放MCP4822_SDI数据线
MCP4822_SCL=1; //释放sclk时钟线
MCP4822_LDAC=0; //输入存储器数据传递到DAC存储器。
MCP4822_LDAC=1;
}
void delay(uint x)
{
for(j=x;j>0;j--)
{
for(k=120;k>0;k--);
}
}
void main(void)
{
while (1)
{
uint text;
for(text=2200;text<2600;text++)
{
setVoltage(0x01,text);
setVoltage(0x09,text);
delay(20) ;
}
}
}
恭喜,马上做个BT接收机之类的都不是问题了。 little-f 发表于 2020-12-10 17:43
恭喜,马上做个BT接收机之类的都不是问题了。
谢谢,蓝牙是SPI通讯....O(∩_∩)O哈哈~很猜BT是什么;P 本帖最后由 pdshyh 于 2020-12-11 08:36 编辑
延时函数在主函数后面出错在前面加了一个说明void delay(uint x);错误消失,下班看看书本示例在主函数后面延时示例前面有没有相应函数说明。:D
洞洞板扩展连接线惨不忍睹:lol :lol 感觉lz在论坛写日记;P iffi123 发表于 2020-12-11 09:45
感觉lz在论坛写日记
O(∩_∩)O哈哈~,:handshake 电桥使用规定放到论坛用的时候找着挺方便的,还是休闲无事。还有I2C读写24C08程序折腾苦了,这个太顺了也高兴。:lol pdshyh 发表于 2020-12-11 10:27
O(∩_∩)O哈哈~, 电桥使用规定放到论坛用的时候找着挺方便的,还是休闲无事。还有I2C读写24C0 ...
其实有些自己的摸索过程没必要都放在论坛上的,把最后的心得体会经验告诉大家更有意义 iffi123 发表于 2020-12-11 10:42
其实有些自己的摸索过程没必要都放在论坛上的,把最后的心得体会经验告诉大家更有意义
谢谢iffi123老师提醒,看了这个帖子以后注意:L ,这次延时函数的函数声明应该前面书本视频讲到过,实操就忘得一干二净,单片机C语言编程会者不难难者不会。小白体会多做。
页:
[1]