今天要学习的这个芯片叫做DAC0832技术流程我们不讲,就讲怎么用,学习单片机技术,我提倡如果看不懂,就先拿着用。
看一下如何接线:
![06911e3484539c230f96187673e2f043.png](https://i-blog.csdnimg.cn/blog_migrate/fa3f8ac7e625d2cdc6881d5d01e8ada0.jpeg)
wr低电平有效,输入寄存器写选通信号
cs低电平有效, 输入寄存器选择信号
ILE 允许锁存信号,高电平有效
D0-D7 转换数据信号,也就是接在51单片机上接收数据。
XFER 数据传输信号,低电平有效。
Iout 电流输出引脚。
然后先看一下效果图:
![2abb846760726e371fdf8b62a57f42ae.png](https://i-blog.csdnimg.cn/blog_migrate/e8c13c46725b4d28b5449dc212ded1f4.jpeg)
然后代码送给大家:
#include "reg52.h" //头文件,包含51类单片机的头文件
#define uchar unsigned char //宏定义,把后面的长句子,定义为前面的短句子
#define uint unsigned int //宏定义,把后面的长句子,定义为前面的短句子
sbit cs=P3^7; //位操作定义,把3.7这个口,重新取个名字。叫CS
sbit wr=P3^6;//位操作定义,把3.6这个口,重新取个名字。叫wr
void delayms(uint xms) //延时子程序
{
uint i,j; //定义两个 无符号整形参数,
for(i=xms;i>0;i--) //循环XMS次
for(j=110;j>0;j--); //循环 xms*110
} //就是上面的循环一次,下面的循环110次,约为1毫秒。
void main() //主程序
{
uchar k= 0; //定义一个无符号数据 K=0,
cs=0; //输入寄存器选择信号 让他低电平。
wr=0;//输入寄存器写选通信号 也让他低电平 ,让他们都有效。
while(1) //判断为真,进行循环
{
while(1) //判断为真进行循环
{
P1= k++ ; //把k+1每次,送入P1口,
delayms(10);//延时10毫秒
if(k==0xff) //如果K+1不等于 256也就是FF,那么就会循环再次加一。
break; //如果等于256,就会退出,执行下一行。
}
while(1) //判断为真,进行循环。
{
P1= k-- ;// 把K-1每次,送到P1口。
delayms(10);//延时10毫秒
if(k==0x00) //如果K=0,那么就结束,如果不等于就继续循环去减一。
break; 如果等于0就退出。从主程序的开头继续运行程序。循环。
然后我们看一下仿真效果。
}
}
}
![a3f7791a6a19c25ecadb8fc11b0b8975.png](https://i-blog.csdnimg.cn/blog_migrate/d046d4be043ed9526bba8fa2c2e7f467.jpeg)