基于课本例5.5.1,控制DAC0832输出电流,让发光二极管D12由灭均匀变到最亮,再由最亮均匀熄灭。在最亮和最暗的时候蜂鸣器分别警报一声,完成整个周期时间控制在8s,循环变化。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dawr = P3^6;
sbit dacs=P3^2;
sbit beep=P2^3; //定义蜂鸣器端口
void delayms(uint xms){
uint i,j;
for(i=xms;i>0;i--){
for(j=110;j>0;j--);
}
}
void main(){
uchar val,flag;
beep=0; //给蜂鸣器端口置0,防止模拟仿真时,在程序加载阶段,蜂鸣器发出声音,破坏实验预期结果
dacs=0;
dawr=0;
P0=0;
while(1){
if(flag==0){
val+=5;
P0=val;
if(val==255){
flag=1;
beep=1;
delayms(100);
beep=0;
}
delayms(80);
}else{
val-=5;
P0=val;
if(val==0){
flag=0;
beep=1;
delayms(100);
beep=0;
}
delayms(80);
}
}
}