第6步手柄主程序
前面介绍了坦克一端的程序原理这一回我们来看看手柄程序是怎么实现的,要实现手柄一端的程序我们还得回顾一下手柄一端的硬件原理图,如图7-1。
根据原理图我们可以看出当按键没有被按下是,单片机对应的IO引脚为高电平,当有按键按下时候,单片机对应的IO引脚为低电平,根据这一原理,我们的程序可以不断去读取IO引脚的状态来判断是哪个按键被按下了,请看下面代码。
int KeyScan(void) { if(P00 = 0) { /*Key 0被按下*/ return 0; }else if(P01 == 0){ /*Key 1被按下*/ return 1; }else if(P04 == 0){ /*Key 4被按下*/ return 4; }else if(P05 == 0){ /*Key 5被按下*/ return 5; }else{ /*没有按键按下*/ return -1; } }
上面是一段按键扫描程序,这段程序会返回被按下按键的编号,最后根据按键的编号发送对应的控制命令。系统程序运行起来后我们只要不断的调用这个按键扫描函数,就可以不断的读取用户输入,发送控制命令,如下所示:
int main(void) { int key = -1; /*初始化硬件*/ /*初始化数据传输模块*/ while(1){ //不停的读取用户输入,不停的循环 key = KeyScan(); /*如果没有按下,结束这次扫描,进入下一次*/ if(key == -1) { continue; } /*根据用户点击的按键,发送不同命令*/ if(key == 0) { Send("前进命令"); } else if(key == 1) { Send("后退的命令"); } /*... ...*/ else if(key == 5){ Send("其它的命令"); } } }
至此程序部分的基本原理已经介绍完毕了,有了这些程序我们已经可以控制我们的坦克完成预计的功能了,如果后面再需要其他功能我们会在这个程序上进行扩展,另外这里给出的只是框架性的内容,为了不影响对整体程序功能的理解,我们略去了部分技术细节。
有些朋友可能对单片机编程或者对一些芯片、模块的使用不太熟悉,这些涉及到具体细节的问题我们可以另外进行讨论,这里还是以原理为主。
软件部分的“解密”基本完成了。
猜你会喜欢
WIFI小车
我制作的用WIFI控制的小车,原理很简单...
牛人自制的极光雾状LED灯
这是DIY牛人制作的一款极光9x18的L...
世界上最小的DS18B20温度计
DS18B20不少朋友都用过吧,不过似乎...
简单实用的稳压直流稳压电源(用89C51做)
直流稳压电源采用了89C51,配合D/A...
数码管显示STC89C54RD+DB18B20测温板
主要元件用到了单片机STC89C54RD...
评 论
选择昵称后请轻按空格键
请勿进行人身攻击,谩骂以及任何违法国家相关法律法规的言论。