手机目前主流都是电容屏,所以可以利用软件控制电流以控制屏幕的触摸效果(屏幕工作原理自行百度),所以定时定点控制屏幕连点就很容易了,所以为了文章不至于太水,文末会给出连点的进阶玩法。
分析及要点都在图里。再说明一下,IO口高电平时断开触屏,低电平时持续触屏,点击频率由IO口高低电平转换频率及屏幕灵敏度决定。
?这是用来做别踩白块实验用的就是基础电路乘4,由于临近开学没时间买光敏电阻检测黑块位置,所以只写了程序,但连点以及四个流水点击都可以实现了,
#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define uchar unsigned char
#define unit unsigned int
uchar aa = 1, bb = 100, cc = 0;
/*********定义电机方向*********/
#define left_l CP1=0;CP2=1;CP3=1;CP4=1;CP5=0;CP6=1;CP7=1;CP8=1 //最左道
#define left_r CP1=1;CP2=0;CP3=1;CP4=1;CP5=1;CP6=0;CP7=1;CP8=1 //中左道
#define right_l CP1=1;CP2=1;CP3=0;CP4=1;CP5=1;CP6=1;CP7=0;CP8=1 //中右道
#define right_r CP1=1;CP2=1;CP3=1;CP4=0;CP5=1;CP6=1;CP7=1;CP8=0 //最右道
#define stop CP1=1;CP2=1;CP3=1;CP4=1;CP5=1;CP6=1;CP7=1;CP8=1
sbit KEY=P3^1;
sbit ZSD1=P2^4;//指示灯1
sbit ZSD2=P2^5;//指示灯2
sbit GM1=P0^0;//光敏传感器1
sbit GM2=P0^1;//光敏传感器2
sbit GM3=P0^2;//光敏传感器3
sbit GM4=P0^3;//光敏传感器4
sbit CP1=P2^0; //触屏控制1
sbit CP2=P2^1; //触屏控制2
sbit CP3=P2^2; //触屏控制3
sbit CP4=P2^3; //触屏控制4
sbit CP5=P1^0; //触屏控制1
sbit CP6=P1^1; //触屏控制2
sbit CP7=P1^2; //触屏控制3
sbit CP8=P1^3; //触屏控制4
void delay (u16 i)
{
while(i--);
}
uchar Key_in(void) //检测按键
{
if (KEY == 0) {
delay(20); //延时
if (KEY == 0) { //消抖
while (KEY == 0); //等待释放
return 1; //有键按下:1
} }
return 0; //返回0
}
void kaigua()
{
if((GM1==1)&&(GM2==0)&&(GM3==0)&&(GM4==0))
{
left_l;
delay(100);
stop;
}
else if((GM1==0)&&(GM2==1)&&(GM3==0)&&(GM4==0))
{
left_r;
delay(100);
stop;
}
else if((GM1==0)&&(GM2==0)&&(GM3==1)&&(GM4==0))
{
right_l;
delay(100);
stop;
}
else if((GM1==0)&&(GM2==0)&&(GM3==0)&&(GM4==1))
{
right_r;
delay(100);
stop;
}
}
void main()
{
ZSD1=0;
ZSD2=1;
while (!Key_in());
ZSD1=1;
ZSD2=0;
while(1)
{
kaigua();
}
}
这只是一代程序,其中的问题还要测试才知道,后期光敏到了会继续完善
- 为能正常开始游戏我设置了按键以开始程序,在准备好后按下按键才会开始跑真正的程序,在流水灯模块会有指示灯指示当前程序状态
|