STC单片机 ADC按键 求助!!

STC单片机 ADC按键 求助!!,第1张

取那么多、那么长时间的平均值干什么?

连续取 20 次,其中有10 次,按的是这个键,有10 次,按的是那个键,

平均一下,判定结果:是按下了一个根本就没有按的键。

========

#include<reg52.h>键蔽

#include<intrins.h>

unsigned char code k_AD[] = {

10, 40, 70, 100, 130, 160, 190, 210, 230}//九个按基兆键所对应的ADC值

unsigned char code duan[] = { //共阳段码

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}

//--------------------------------------------

void delay(int x)

{

int i

while(x--) for(i = 115i >0i--)

}

//--------------------------------------------

unsigned char keyscan()

{

unsigned char k1, k2

k1 = GetADCResult(0)//读出

if(k1 <238) { //按下了

delay(20)//延时

k2 = GetADCResult(0) //再次读出

if((k1 >(k2 - 5) &&(k1 <(k2 + 5)) { //两者相差无几

k1 /= 2 k2 /= 2 k1 += k2//两次的平均值

for(k2 = 0k2 <9k2++) //稿锋州在表格中查找9次

if(k1 >(k_AD[k2]) - 5) &&(k1 <(k_AD[k2]) + 5)) //找到了

return(k2) //就返回键值

}

}

return(255) //没有按键

}

//--------------------------------------------

void main()

{

unsigned char key

while(1) {

key = keyscan()

if(key != 255) P0 = duan[key]//显示键值

}

}

//--------------------------------------------

本程序未经验证,仅供参考。

震旦adc366可通过以下步骤进行扫描:

1、在桌面新建一个文件夹,用鼠标右击新建的文件夹,点击“属性”,点击“共享”;

2、点击下拉选项,选择“Everyone”,点击“添加”,将 “Everyone”的权限级别设置为“读取/写入”,点击“共享”;

3、点击“完成”,点击“高级共享”,将“共享此文件夹”选项勾起,点击“权限”,勾选“完全控制”,点击“添加”;

4、点击“高级”,点击“立即查找”,将“Administrators”选中,点击“确定”,“Administrators”的权限均选择为“完全控制”,再点击“确定”;

5、在地址栏中输入MFP的IP地址,点击“目的地注册”,点击“新注册”,选择“SMB”,点击“确定”;

6、填写注册信息,点击“确认”,进行升竖计算机网络设置;

7、将原稿放在盖板里,电脑上打开Word文档,依次点击插入,图片,来自扫描仪或照相机改笑裤,自定义插入即可,另外其他标配带网络功能机器核简在面板上点击扫描按钮即可。

百倍用心,10分满意

看输脊启闭入,如果同一个按键被以诸如0.5秒这样的间隔不断发出来就可以认为是长按了

更复杂的方法:键盘按下发出来一个scan

code,抬起来的时樱裂候还会发出另外一个值.当然这样弄起旁扮来

非常底层,非常复杂


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8238423.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存