部分程序:
#include "reg52.h" //stc头文件
#include "Delay.h" //延时头文件
//设置按键
sbit KEY_ADD = P3^2; //加
sbit KEY_DEC = P3^3; //减
//DA
sbit SCK = P2^0;
sbit CS = P2^1;
sbit DIN = P2^2;
int ADC_num = 0;
/*=========================================
//按键扫描处理函数
=========================================*/
void KEY_Scan( void )
{
if( KEY_ADD == 0 ) // 按键按下
{
Delay_ms(1); //延时消抖
while( !KEY_ADD ); //松手检测
ADC_num = ADC_num + 102;
if( ADC_num >= 512 )
{
ADC_num = 512;
}
}
if( KEY_DEC == 0 ) // 按键按下
{
Delay_ms(1); //延时消抖
while( !KEY_DEC ); //松手检测
ADC_num = ADC_num - 102;
if( ADC_num <= 0 )
{
ADC_num = 0;
}
}
}
/*=========================================
//DA
=========================================*/
void TCL5615_DAC(unsigned int Data)
{
unsigned char i;
Data <<= 6; //移除高6位,int型数据有16位,该DA是10位
SCK = 0; //在片选有效前,时钟信号要为低
CS = 0;; //片选有效
for(i=0;i<12;i++) //每次转换需要10个时钟下降沿
{
if(Data&0x8000) //取最高位数据,模拟串行数据
{
DIN = 1;
SCK = 0;
SCK = 1;
}
else
{
纷传文章借鉴与此