标题: 关于单片机A/D转换实现按键扫描的思路? [打印本页]

作者: qyyy8298    时间: 2020-12-30 20:07
标题: 关于单片机A/D转换实现按键扫描的思路?
请问这个程序,求大神分享一下思路

51hei图片20201230200554.png (15.47 KB, 下载次数: 79)

51hei图片20201230200554.png

51hei图片20201230200548.jpg (86.66 KB, 下载次数: 63)

51hei图片20201230200548.jpg

作者: 人人学会单片机    时间: 2020-12-31 15:06
u8 xdata ADC_Read_Data=0;
u8 xdata ADC_Write_Data=0;//0~7
void ADC_Init()
{
        P1M1|=0x03;
        P1M0&=0xfc;
        P1ASF|=0x03;
        CLK_DIV&=0xdf;
        ADC_RES=0;
}

void ADC_Read_Data_Drive()
{
        ADC_RES=0;
        ADC_CONTR=0xe8|ADC_Write_Data;
        while(1)
        {
                if(ADC_CONTR&0x10)//不等于0
                {
                        ADC_Read_Data=ADC_RES;
                        break;
                }
        }
        ADC_CONTR=0;
}
使用单片机P1.2口的ADC转换,得到ADC转换结果0~255.然后确定在某个ADC范围是某个按键。比如 你图纸的k1,对应的ADC值可以设定为0~50.那么 90~150 可以认为是K2
作者: fj51hei    时间: 2020-12-31 23:26
程序思想应没问题,就是消抖,抗干扰怎么处理,另K值没计算.不好说是否正确
作者: f556    时间: 2021-1-1 00:07
汽车方向盘按键大多采用这种单线多开关结构,思路与原理没有问题,消抖要考虑,最好加小电容硬件消拌
作者: TTQ001    时间: 2021-1-1 09:19
使用模数转换读取按键可以节省IO。 在一个模拟输入上,按键与不同的电阻器相连,方式是按下不同的按键可以导致模拟输入读取的电压值不同,从而可以检测到特定的按键。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1