📄 jianpan.c
字号:
#include<reg51.h>
unsigned char data keyword;
void delay(void); //消键抖动延时函数
unsigned char keyscan(void); //键扫描函数
unsigned char keyin(void); //键输入函数
unsigned char data keyword; //存放键输入字
sbit p3_5=P3^5;
void delay_nus(unsigned int nus) ; 延时子程序
{
unsigned int i;
for(i=nus;i>0;i--);
}
void data_1(void) ;脉冲1
{
p3_5=0;
delay_nus(93);
p3_5=1;
delay_nus(280);
}
void data_0(void) ;脉冲0
{
p3_5=0;
delay_nus(93);
p3_5=1;
delay_nus(93);
}
void header(void) ;引导码
{
p3_5=0;
delay_nus(750);
p3_5=1;
delay_nus(750);
data_1();
data_1();
data_1();
data_1();
data_0();
data_0();
data_0();
data_0();
data_1();
data_1();
data_1();
data_1();
data_0();
data_0();
data_0();
data_0();
}
main()
{
p3.5=0 ;
keyword=keyin();
switch (keyword)
{
case 0x11:header(); //前进
data_O();
data_O();
data_O();
data_1();
data_O();
data_O();
data_O();
data_1();
data_1();
data_1();
data_1();
date_0();
data_1();
data_1();
data_1();
date_0();
break;
case 0x12: header(); //后退
data_O();
data_O();
data_O();
data_1();
data_O();
data_O();
data_1();
date_0();
data_1();
data_1();
data_1();
date_0();
data_1();
data_1();
date_0();
data_1();
break;
case 0x14: header(); //左转
data_O();
data_O();
data_O();
data_1();
data_O();
data_1();
date_0();
date_0();
data_1();
data_1();
data_1();
date_0();
data_1();
date_0();
data_1();
data_1();
break;
case 0x18: header(); //右转
data_O();
data_O();
data_O();
data_1();
data_1();
date_0();
date_0();
date_0();
data_1();
data_1();
data_1();
date_0();
date_0();
data_1();
data_1();
data_1();
break;
case 0x21:header(); //转盘左转
data_O();
data_O();
data_1();
date_0();
data_O();
data_O();
data_O();
data_1();
data_1();
data_1();
date_0();
data_1();
data_1();
data_1();
data_1();
date_0();
break;
case 0x22:header(); //转盘右转
data_O();
data_O();
data_1();
date_0();
data_O();
data_O();
data_1();
date_0();
data_1();
data_1();
date_0();
data_1();
data_1();
data_1();
date_0();
data_1();
break;
case 0x24:header(); //下降
data_O();
data_O();
data_1();
date_0();
data_O();
data_1();
date_0();
date_0();
data_1();
data_1();
date_0();
data_1();
data_1();
date_0();
data_1();
data_1();
break;
case 0x28:header(); //上升
data_O();
data_O();
data_1();
date_0();
data_1();
date_0();
date_0();
date_0();
data_1();
data_1();
date_0();
data_1();
date_0();
data_1();
data_1();
data_1();
break;
case 0x41:header(); //开始
data_O();
data_1();
data_O();
date_0();
data_O();
data_O();
data_O();
data_1();
data_1();
date_0();
data_1();
data_1();
data_1();
data_1();
data_1();
date_0();
break;
case 0x42:header(); //停止
data_O();
data_1();
data_O();
date_0();
data_O();
data_O();
data_1();
date_0();
data_1();
date_0();
data_1();
data_1();
data_1();
data_1();
date_0();
data_1();
break;
case 0x44:header();
data_O();
data_1();
data_O();
date_0();
data_O();
data_1();
date_0();
date_0();
data_1();
date_0();
data_1();
data_1();
data_1();
date_0();
data_1();
data_1();
break;
case 0x48:header();
data_O();
data_1();
data_O();
date_0();
data_1();
date_0();
date_0();
date_0();
data_1();
date_0();
data_1();
data_1();
date_0();
data_1();
data_1();
data_1();
break;
default: break;
}
}
//键消抖动延时函数
void delay(void)
{
unsigned int i;
for(i=2000;i>0;i--);
}
//keyscan(void)键扫描函数
//p1.0-p1.2行线输入p2.0-p2.7列线输入
unsigned char keyscan(void)
{
unsigned char c,d;
do
{
for (c=1;c<=0x08;c<<=1)
{
P2=c; //发出列信号,使某一列输出为高电平
d=P1&0x07; // 读行输入
if (d!=0) return(d);
}
}
while(d==0); //无按键按下,继续键扫描
}
unsigned char keyin(void) //键输入函数
{
unsigned char t;
do
{
t=keyscan(); //第一次键扫描
delay(); //延时,消除键抖动
}
while (t!=keyscan()); //第二次键扫描,如果两次扫描的结果不一样则重新键扫描
return(t);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -