|
手把手教你使用PIC单片机实现按钮控制(C语言版)——站长原创,如需引用请注明出处
从本期开始,我们将各方面着手,结合实例,如:按键、继电器、蜂鸣器、数码管、串口通信、液晶屏、红外线、步进电机、IIC通信等原理及使用方法,一步一步地伴您走向单片机大门。在前一期中,我们已对发光二极管的使用进行了学习,如怎么编写流水灯程序,相信大家都已经有了一个感性的认识。在这一期中,我们首先将一起来学习一下单片机应用电路中键盘、蜂鸣器和继电器的工作原理及使用方法,这也是单片机开发中,最为常用的。
按键是单片机系统中常用的信息输入部件,同时也是人机对话中不可缺少的输入设备,其外形如图1所示。在和单片机构成系统的时候,按键通常有两种接法,一种叫做独立式按键,另外一种叫做行列式或者是扫描式按键,我们在这里只学习独立式的按键电路。在这个实验里,我们需要用RB0、RB1、RB2、RB3、RB4来控制数码管的亮和灭。 |
 图1、某种按键外形 |

这是我们最新研制的增强型PIC实验板,功能更强大,性能更稳定,板上的资源非常丰富,足矣使你从PIC单片机入门转为PIC单片机高手。
首先,我们先来学习一下键盘的使用方法。单片机对键盘信息的读取可以分为静态扫描法和动态扫描法,动态的稍微复杂一些,故在此我们介绍一下静态扫描法,看看单片机是如何获得按钮的状态信息,然后再作出相应的控制。

如图所示,在我们的增强型PIC实验板上,共有6个按键,第一个是用来做系统复位使用——“K1”,其余5个按键是供用户使用的,从原理图上可以看到,它们分别接在单片机的RB0、RB1、RB2、RB3、RB4口上。我们在前一期中曾经讲到点亮一个发光管的实例,那时程序执行的效果是:实验板上电后,马上点亮发光管。而现在,我们如果想要通过按键来控制数码管的点亮,如:按下第一个接RB0口的那个“K2”按钮,板上所有数码管显示数字“0”,按K3按键显示数字“1”,按K4按键显示数字“2”......,按K6按键显示数字“4”,那该怎么办呢?其实想做到这一点是非常容易的,使数码管显示数字的程序我们已在前面讲过了,那么我们现在要做的就是当读取按键状态为按下时,执行相应的数码管显示语句即可,以下是此功能的程序代码。

“TRISC=0x00; TRISA=0x00”语句的作用是,设置单片机RA口和RC口为输出状态,因为我们用RC口来控制数码管的字形,用RA口来片选数码管点亮作显示。
TRISB=0xFF; 语句的作用是,设置RB口为输入状态,因为我们的增强型PIC实验板上的按键都接在RB口上。
PORTA=0x00; 语句的作用是打开板上所有位的数码管来作显示。
OPTION=0x7F; 语句的作用是开启RB口的内部上拉。细心的用户已经从上面的原理图中发现我们实验板的硬件结构,RB1——RB4这四个按键使用内部上拉。
while(1)死循环体内的语句为判断按键及数码管显示的程序代码。
分别用if 语句来对实验板上的K2——K6按键来进行判断,按下相应的键,则由数码管显示相应的数字,我们已在程序首部定义了display_numb[10]这个数组,即要显示的数字“0--9”的字形码,在此,我们只要将其赋给RC口即可。
最后,通过“ICD2 PIC仿真烧写器”执行仿真或烧写操作即可。当程序执行仿真或将文件烧入单片机芯片插在增强型PIC实验板上运行时,你会发现,当你按下板上RB0——RB4那几个按键,即可通过数码管显示相应有尽有数值了。呵呵,有点意思吧:)以下是程序运行时的效果图。

这是一个最简单的,用按键控制数码管的实例,当然,你也可以去控制其它的东西,只要在while(1)循环体内填写相应的程序代码就可以了,如控制液晶屏、蜂鸣器或继电器等等。
当你看到这里,相信你对按键的使用已有了一定的了解了吧。说到单片机,它在很多方面的应用就是用来做控制的,当然控制方式有多种,如通过可控硅,继电器等等。就我个人认为,作为初学者来说,还是用继电器来的好,也比较安全。那接下来,我们就来介绍一下继电器的原理及使用方法。
|