原理图:代码如下:程序功能:DA转换,D12由灭到亮,蜂鸣器响一次,再由亮到灭,蜂鸣器响一次,依次循环头文件includeinclude
原理图:
代码如下:
//程序功用:D/A转化,D12由灭到亮,蜂鸣器响一次,再由亮到灭,蜂鸣器响一次,顺次循环
//头文件
#include
#include //延时一个机械周期函数地点头文件(_nop_())
//界说宏
#define uint unsigned int
#define uchar unsigned char
//操控端声明
sbit duanxuan=P2^6; //数码管段选口
sbit weixuan=P2^7; //数码管位选口
sbit DAC0832_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);
}
}
以上,完毕。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/259187.html