新闻中心

EEPW首页>嵌入式系统>设计应用> 51单片机 DAC0832

51单片机 DAC0832

作者: 时间:2016-11-25 来源:网络 收藏
原理图:

本文引用地址://m.amcfsurvey.com/article/201611/321313.htm


代码如下:

//程序功能:D/A转换,D12由灭到亮,蜂鸣器响一次,再由亮到灭,蜂鸣器响一次,依次循环
//头文件
#include
#include//延时一个机械周期函数所在头文件(_nop_())
//定义宏
#define uint unsigned int
#define uchar unsigned char
//控制端声明
sbit duanxuan=P2^6;//数码管段选口
sbit weixuan=P2^7;//数码管位选口
sbitDAC0832_CS=P3^2;//DAC0832选通端
sbit DAC0832_WR=P3^6;//DAC0832写选通端
sbit beeper=P2^3;//蜂鸣器
//函数声明
void delay(uint);//延时函数声明
void init();//初始化函数声明
void DAC0832_star();//DAC0832启动函数声明
void switch_process();//D/A转换过程函数声明
//变量定义
uint digital_data;//转换的数字量(不需要转换为二进制,直接可以赋值给P0口)
uint flag;//数字量上下限标志量
//主函数
void main()
{
init();//初始化
DAC0832_star();//启动DAC0832
while(1)
{
switch_process();//D/A转换
}
}
//延时函数主体
void delay(uint xs)
{
uint i,j;
for(i=xs;i>0;i--)
{
for(j=110;j>0;j--)
{
}
}
}
//初始化函数主体
void init()
{
//目的是关闭数码管,因为数码管数据输入端与DAC0832数据输入端同为P0端口
duanxuan=0;
weixuan=0;
P0=0;//保证第一次点亮D12是最暗的(熄灭)
}
//DAC转换启动函数主体
void DAC0832_star()
{
DAC0832_CS=0;//选通DAC0832
DAC0832_WR=0;//输入端有效(这么理解,具体与DAC0832其它引脚接法有关)
}
//DAC转换过程函数主体
void switch_process()
{
if(flag==0)//flag=0时,代表数字量达到最下限
{
digital_data+=5;//每次加5
P0=digital_data;//赋值给P0,给DAC0832转换为模拟量
if(digital_data==255)//达到最大值上线
{
flag=1;//flag=1,说明数字量达到最上限
//蜂鸣器响50us
beeper=0;
delay(50);
beeper=1;
}
delay(20);//延时用于等待转换完成,保证转换是完成的(The DAC083_switch_time is 1us)
}
else//flag=1
{
digital_data-=5;
P0=digital_data;
if(digital_data==0)
{
flag=0;
beeper=0;
delay(50);
beeper=1;
}
delay(20);
}
}

以上,结束。



关键词:51单片机DAC083

评论


技术专区

关闭