📄 da.c
字号:
#define DIN1 PORTD|=BIT(PD4)
#define DIN0 PORTD&=~BIT(PD4) //NO EFFECT
#define SCLK1 PORTD|=BIT(PD6)
#define SCLK0 PORTD&=~BIT(PD6)
#define C_S1 PORTD|=BIT(PD7)
#define C_S0 PORTD&=~BIT(PD7)
//送piancha变量值后调用mafun4_20()程序就可以了
unsigned int piancma,mazhi,mazhong; // 这个用来初始化数据的最低值的
void mafun4_20(void)
{
unsigned long mmaa;
mazhi=piancha;
piancma=piancha;
mmaa=mazhi;
mmaa=394*mmaa;
mmaa=mmaa/piancma;
mazhong=100+mmaa;
if(mazhong>500) mazhong=500;
DA_Conver(mazhong);
}
void DA_Conver(unsigned int DAValue)
{
unsigned char i;
DAValue <<= 6;
C_S1; // 片选DA芯片
delay_nus(10);
SCLK0; // 在以下12个时钟周期内,每当在上升沿的
delay_nus(10); // 数据被锁存,形成DA输出。在前10个时钟
DIN0;
delay_nus(10);
C_S0;
delay_nus(20);
for(i = 0; i < 12; i++) // 内输入的是10位DA数据,后两个时钟周期
{ // 为填充字节。
delay_nus(20);
//din = (bit)(DAValue & 0x8000); //
if((DAValue&0x8000)==0) DIN0;
else DIN1;
delay_nus(20);
SCLK1;//clk = 1; //
delay_nus(20);
DAValue <<= 1; //
SCLK0;//clk = 0;
}
delay_nus(10);
C_S1;//cs = 1; // CS的上升沿和下降沿只有在clk为低的时候
delay_nus(10);
SCLK0;//clk = 0; // 才有效
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -