单片机stc12系列用一个io口连接16个按键c语言程序怎么写?

单片机stc12系列用一个io口连接16个按键c语言程序怎么写?,第1张

用AD转,16个电阻串联在一起,每个节点引出线与按穗键键相连,按键另一端为公共端与P1^n相连。然后AD口采集到的电压也不同,就能判别按的是哪个按键,因此只要写AD采样程序就可以了

这是STC12C2052AD的例子

/**********************************************************

AD转换

**********************************************************/

void InitADC()

{

P1=0xff

ADC_CONTR|=0x80

delayNOP(200)

P1M0=0x01//这两个寄存器用来设置 P1口四种状态,每一位对应一个P1引迟清脚 ,按状态组合 *** 码族前作

P1M1=0x01//设置P1.0为开漏状态

delayNOP(200)

}

uint ADC()

{

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)

return ADC_DATA //返回 A/D 10 位转换结果

}

void ADC_to_key()//ADC数据转换按键信号

{

V=ADC()

。。。

。。。

。。。你自己完成咯

}

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

void delay_ms(uint)

sbit led0=P0^0

sbit led1=P0^1

sbit key1=P3^2

sbit key2=P3^3

void main()

{

   uchar i=0

   uchar j=0

    while(1)

    {

       if(key1==0)//按键1

       {

        delay_ms(10)

 铅岩       if(key1==0)

        {

            i++

            i=i%2

            switch(i)

            {

                 case 0: led0=1 break//关小灯

                 case 1: led0=0 break//开小灯

                 default:  break

            }

        }

        while(!key1)

        }

        

        if(key2==0)//按键2

       {

        delay_ms(10)

        if(key2==0)

        {

            j++

            j=j%2

          差激粗  switch(j)

            {

                 case 0: led1=1 break//关小灯

                 case 1: led1=0 break//开小灯

                 default:  break

            }

        }

        while(!key2)

        }

    虚镇}

}

void delay_ms(uint z)  //延时子程序

{  

uint x,y

for(x=zx>0x--)

for(y=110y>0y--)

}


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

原文地址: https://outofmemory.cn/yw/12501261.html

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

发表评论

登录后才能评论

评论列表(0条)

保存