您的位置 首页 电源

单片机小白学步(21) IO口:根本的LED和按键操作

本篇我们先介绍最基础的几个IO口操作。学完本篇,大家要能自己独立完成下面几个实验。1、点亮LED2、一个按键控制LED,按下灯亮,释放灯灭3…

本篇咱们先介绍最根底的几个IO口操作。学完本篇,咱们要能自己独立完结下面几个试验。

1、点亮LED

2、一个按键操控LED,按下灯亮,开释灯灭

3、两个按键操控一个LED,一个键开灯,一个键关灯

试验一

点亮LED的比如前面入门篇现已讲过了,程序写起来很简略,Keil编写程序并编译生成HEX文件,烧写进单片机的进程,也做了完好详细的介绍。

点亮LED利用了IO口输出操作。简略温习一下,最中心的两句代码是:

sbit LED = P1^0;

LED = 0;

榜首句界说LED为sbit型变量,对应了P1.0口的凹凸电平,详细应该写哪个IO口,和实践电路有关。第二句设置LED对应的P1.0管脚输出低电平,然后点亮LED。

试验二:按键开关

讲第二个试验前,先简略介绍下常用的按键开关。下图便是最常见的按键开关,有四个引脚,图中的1、2连在一起,3、4衔接在一起。按下按键时,四个引脚就悉数导通了。

试验二:建立电路

依据前面讲的IO口原理,我把按键开关一端接在P2.0端口了,另一端接到GND。由于P2.0有内部上拉电阻,我就不必自己外接了。最小体系和LED仍是之前的电路不变,如下图所示。

试验二:程序完结

程序首要界说了LED和KEY,别离一共发光二极管和按键开关。假如你用的是制品开发板,或许电路和我的不一样,就界说你的电路中对应的管脚。开发板能够从电路图检查独立按键地点的管脚。

主函数刚开始时,设置KEY输出高电平,由于后边要读取KEY地点端口的电平。在程序的主循环中,读取KEY的值,这儿咱们直接把KEY作为一个一位变量去判别就能够了,它有值0和1。假如KEY为1,即KEY==1,阐明按键没有按下,设置LED=1即平息。留意这儿运用两个等号一共比较而不能用一个等号,那样就成赋值了。在else中,设置LED=0即点亮。所以就能完结咱们需求的作用了。

#include

sbit LED = P1^0;

sbit KEY = P2^0;

void main()

{

KEY = 1;

while(1) {

if(KEY == 1) {

LED = 1;

} else {

LED = 0;

}

}

}

这是我按下按键,灯亮时的景象。

试验二:程序剖析

留意这儿咱们读取按键和开关LED的代码应该放在主循环晒干,也便是不断的读取按键状况并开关灯。假如放在主循环前面,主函数写成下面这样,是不能作业的。由于单片机碑文速度很快,放在循环前面只会读取按键碑文一次,碑文完了进入while(1)主循环,单片机就不会再读取按键的状况,这时无论如何按键,它都不会帮你开关LED了。

void main()

{

KEY = 1;

if(KEY == 1) {

LED = 1;

} else {

LED = 0;

}

}

程序简化

还要说的是,这个程序还能进一步简化。由于KEY是一个变量,在C语言中变量有真假值,非零为真,零为假。所以主循环中能够这样写(其他部分相同):

if(KEY) {

LED = 1;

} else {

LED = 0;

}

可是还能够持续简化。由于LED和KEY都是变量,能够考虑直接用KEY给LED赋值,写成下面这样就行了。

LED = KEY;

取反操作的使用

假如要完结按下按键灯灭,开释按键灯亮这样恰好相反的作用,做个很小的修正就能够了,如下所示。感叹号是逻辑取反的意思,假如是0就会变成1,假如对错0就变成0。

LED = !KEY;

试验三

试验三我只提供首要代码片段,详细的剖析了解,实践电路建立和试验,交给咱们自己完结。

sbit KEY_ON = P2^0;

sbit KEY_OFF = P2^1;

while(1) {

if(KEY_ON == 0)

LED = 0;

if(KEY_OFF == 0)

LED = 1;

}

再次着重,假如想学好单片机,咱们一定要自己独立做完这三个试验,切身体会单片机的作业进程,进步着手才能。假如做试验的进程中感觉很奇特,感受到着手的两头,就更简单学好单片机。假如你觉得这仅仅不想做的使命,或许你对单片机并没有什么爱好,那样的话想学好单片机就有些困难了。由于学习历来都应该是自动的工作。

下一篇会持续讲IO口相关的试验。

=======================================================

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/265862.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部