本人大一新生,目前写数字电位器遇到了点问题,想让大佬们帮忙查查。
出来的音乐有旋律,但是是滋滋滋滋的那种音调
功放芯片是 PAM8403
#include <reg52.h>
#include <intrins.h>
unsigned char vol=0;
sbit VCK=P1^0; //CLOCK
sbit VDAT=P1^1; //DATA
unsigned char vol_L_level[4]={3,1,2,0};
unsigned char vol_H_level[22]={0x15,0x05,0x19,0x09,0x11,0x01,
0x1e,
0x0e,
0x16,
0x06,
0x1a,
0x0a,
0x12,
0x02,
0x1c,
0x0c,
0x14,0x04,0x18,0x08,0x00,0x00};
void vol_ctrl()
{
unsigned char dat;
unsigned char i;
unsigned char a,j;
VDAT=1;
VCK=0;
for(i=0;i<2;i++)
{
VDAT=1;
_nop_();_nop_();_nop_();_nop_();
VCK=0;
_nop_();_nop_();_nop_();_nop_();
VDAT=1;
_nop_();_nop_();_nop_();_nop_();
VCK=1;
_nop_();_nop_();_nop_();_nop_();
}
for(i=0;i<7;i++) //????7λ??????????? D2~D8
{
//tmp_bit=vol_tmp&0x01; //0x01 ?D0 D1 ???????
//VDAT=tmp_bit;
VDAT=j;
_nop_();_nop_();_nop_();_nop_();
VCK=0;
_nop_();_nop_();_nop_();_nop_();
VDAT=1;
_nop_();_nop_();_nop_();_nop_();
VCK=1;
_nop_();_nop_();_nop_();_nop_();
a=vol_H_level[dat/4];
a=a>>2;
j=a+vol_L_level[dat%4];
j=j>>1;
//vol_tmp=vol_tmp>>1;
}
for(i=0;i<2;i++)
{
VDAT=1;
_nop_();_nop_();_nop_();_nop_();
VCK=0;
_nop_();_nop_();_nop_();_nop_();
VDAT=1;
_nop_();_nop_();_nop_();_nop_();
VCK=1;
_nop_();_nop_();_nop_();_nop_();
}
VCK=1;
_nop_();_nop_();_nop_();_nop_();
VDAT=1;
_nop_();_nop_();_nop_();_nop_();
VCK=0;
}