新闻中心

EEPW首页>嵌入式系统>设计应用> AVR单片机PCF8591AD-DA实验

AVR单片机PCF8591AD-DA实验

作者: 时间:2016-11-30 来源:网络 收藏

//-----------------------------------------------------------
void key1() //模拟量输出按键
{
static uchar i,j;
if(k1==0)
{
if(i==0)
{
j++;
if(j>3)
{
if(k1==0)
{
i=1;j=0;
output_val=output_val+10;
}
}
}
}
else
{
i=0;
j=0;
}
}
//---------------------------------------------------
void key2() //模拟量输出通道选择
{
static uchar i,j;
if(k2==0)
{
if(i==0)
{
j++;
if(j>3)
{
if(k2==0)
{
i=1;j=0;
channel++;
if(channel>3)channel=0;
}
}
}
}
else
{
i=0;
j=0;
}
}
//---------------------------------------
void key3()
{
static uchar i,j;
if(k3==0)
{
if(i==0)
{
j++;
if(j>3)
{
if(k3==0)
{
i=1;j=0;
mode=1; //输入模式
}
}
}
}
else
{
i=0;
j=0;
}
}
//---------------------------------
void key4()
{
static uchar i,j;
if(k4==0)
{
if(i==0)
{
j++;
if(j>3)
{
if(k4==0)
{
i=1;j=0;
mode=2; //输出模式
}
}
}
}
else
{
i=0;
j=0;
}
}
//-----------------------------------------------------
void show_in()
{
displaychar(0,0,st1); // 第一行显示输入状态字符串
displayonechar(14,1,channel+48); //通道号选择
}
//--------------------------------------------------
void show_out()
{
displaychar(0,0,st2); //第一行显示输出状态字符串
displayonechar(14,1, );
}
//---------------------------------------------------
void show_value(uchar k) //显示数值
{
displayonechar(7,1,((k/100)+48));
displayonechar(8,1,((k%100/10)+48));
displayonechar(9,1,((k%10)+48));
}
//-----------------------------------
void main()
{
uchar temp; //显示模拟量值
port_init();
init1602();
ADC_write(0);
delay(1000);
while(1)
{
if(mode==1)
{
temp=ADC_read(channel); //从通道channel读取模拟量值给变量temp
delay(3);
show_in(); //显示输入状态字符串
show_value(temp);
key2(); //模拟输入通道按键
delay(3);
}
if(mode==2)
{
ADC_write(output_val); //模拟量输出值
show_out(); //显示模拟量输出状态字符串
show_value(output_val);
key1(); //模拟输出值按键
delay(3);
}
key3(); //输入模式
key4(); //输出模式
}
}

上一页 1 2 下一页

关键词:AVR单片机PCF8591AD-D

评论


相关推荐

技术专区

关闭