今天要学习的这个芯片叫做DAC0832技术流程我们不讲,就讲怎么用,学习单片机技术,我提倡如果看不懂,就先拿着用。
看一下如何接线:
![359332ab0bbfc73d0cf00a7dfd9694c1.png](https://i-blog.csdnimg.cn/blog_migrate/2de6b796c47b5d932cff5a09a6b0e9e8.jpeg)
wr低电平有效,输入寄存器写选通信号
cs低电平有效, 输入寄存器选择信号
ILE 允许锁存信号,高电平有效
D0-D7 转换数据信号,也就是接在51单片机上接收数据。
XFER 数据传输信号,低电平有效。
Iout 电流输出引脚。
然后先看一下效果图:
![7c74413683828efcaffba0517922cfba.png](https://i-blog.csdnimg.cn/blog_migrate/bf3d023bd5127e3cc7edacfe0780de26.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就退出。从主程序的开头继续运行程序。循环。
然后我们看一下仿真效果。
}
}
}
![8205fb50d6ea7c86f084f34eb67faa19.png](https://i-blog.csdnimg.cn/blog_migrate/743db903cbdadfe9e2943a6e87964ad8.jpeg)