键控数字电位器X9013程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/**************************************************************/
sbit inc=P1^0;//管脚分配
sbit UD=P1^1;//
sbit cs=P1^2;//
/****************************************************************/
{key=kbscan();
if(key!=0)
{
while((P1&0xf0)!=0xf0); //等等键释放
if(key==0x11)
{ x=2;
x9312UP(x);
}
if(key==0x21)
{x=4;
x9312down(x);
}
}
}
}
/*****************键扫描子程序**********************************/
//键消抖的延时函数
void delayx(void)
{
uchar i;
for(i=0;i<200;i++);
}
// kbscan(void)键扫描函数(P3口扫描)
uchar kbscan(void)
{
uchar sccode,recode;
P3=0xf0;/*发全"0"行扫描码,列线输入*/
if((P3&0xf0)!=0xf0)/*若有键按下*/
void delay_us(unsigned char t)//us yanshi
{
for(;t>0;t--);
}
void ddelay(uint t)//ms yanshi
{
for(;t>0;t--);
}
void x9312UP(unsigned char x)//向上滑动
{
uchar y;
cs=0;
}
void save()
{
inc=1;
delay_us(10);
cs=0;
delay_us(10);
cs=1;
delay_us(400);
}
uchar kbscan(void);
uchar key_num(uchar key);//键码转换
void main()
{ uchar x,key;
while(1)
delay_us(1);
UD=1;
delay_us(1);
for(y=x;y>0;y--)
{inc=1;
delay_us(1);
inc=0;
delay_us(1);
}
cs=1;
delay_us(1);
inc=1;
delay_us(1);
cs=1;
ddelay(10);
save();
}
void x9312down(unsigned char x)//向下滑动
{
uchar y;
cs=0;
delay_us(1);
UD=0;
delay_us(1);
for(y=x;y>0;y--)
{inc=1;
delay_us(1);
inc=0;
delay_us(1);
}
cs=1;
delay_us(1);
inc=1;
delay_us(1);
cs=1;
ddelay(10);
save();
return((~sccode)+(~recode)); /*返回特征字节码*/
}Baidu Nhomakorabea
else sccode=(sccode<<1)|0x01;/*行扫描码左移一位*/
}
}
}
return(0);/*无键按下,返回值为0*/
}
#include <reg52.h>
#include<intrins.h>
#include <absacc.h>
#include<math.h>
#include <STDLIB.H>
#define uchar unsigned char
#define uint unsigned int
void save(); //
{
delayx();/*延时去抖动*/
if((P3&0xf0)!=0xf0)
{
sccode=0xfe;/*逐行扫描初值*/
while((sccode&0x10)!=0)
{
P3=sccode;/*输出行扫描码*/
if((P3&0xf0)!=0xf0)/*本行有键按下*/
{
recode=(P3&0xf0|0x0f);
相关文档
最新文档