2 回答
TA贡献1845条经验 获得超8个赞
用ad转,16个电阻串联在一起,每个节点引出线与按键相连,按键另一端为公共端与p1^n相连。然后ad口采集到的电压也不同,就能判别按的是哪个按键,因此只要写ad采样程序就可以了
这是stc12c2052ad的例子
/**********************************************************ad转换**********************************************************/
voidinitadc()
{p1=0xff;
adc_contr|=0x80;
delaynop(200);
p1m0=0x01;//这两个寄存器用来设置p1口四种状态,每一位对应一个p1引脚,按状态组合操作
p1m1=0x01;//设置p1.0为开漏状态
delaynop(200);
}
uintadc()
{
adc_data=0;//清除结果adc_contr=0x60;//转换速度设置0x60最快速度adc_contr=0xe0;//1110,0000清adc_flag,adc_start位和低3位
adc_contr=0xe0;
delaynop(200);//使输入电压达到稳定
adc_contr=0xe8;//1110,1000令adcs=1,启动a/d转换,
while(1)//等待a/d转换结束
{
if(adc_contr&0x10)//0001,0000测试a/d转换结束否
{break;}
}
adc_contr=0xe0;//1110,0111清adc_flag位,关闭a/d转换,
delaynop(400);returnadc_data;//返回a/d10位转换结果
}
voidadc_to_key()//adc数据转换按键信号
{
v=adc();
。。。
。。。
。。。你自己完成咯}
TA贡献1859条经验 获得超6个赞
1、在main()函数中return 可以退出当前进程,如果当前程序只有一个进程则退出整个应用程序,有多个进程则其他进程不受影响。其他函数中return可以退出当前函数。
2、程序中任何地方执行exit()可以退出当前进程,如果当前程序只有一个进程则退出整个应用程序,若有多个进程则其他进程不受影响。
添加回答
举报