本帖最后由 chun1234 于 2024-7-21 14:19 编辑
学习冲哥的《STC32G单片机视频教程》 第七课 按键点灯
一、按键的原理:按键的本质就是两个引脚之间的通或者断。
如果将按键的一个引脚接地,另一个引脚通过电阻接高电平,同时接到单片机的P3.2引脚。这时按键松开,P3.2呈现高电平,按键按下,P3.2呈现低电平。
对于机械开关,触点在断开、闭合时,由于机械触点的弹性作用,会产生一连串的抖动。
可以通过软件编程处理这个抖动过程,即在按键按下时,加上一个10ms的延时,再判断按键是否真的按下,然后再执行后面的功能。
二、按键的代码实现过程:
if( KEY == 0 )
{
Delay_ms(10);
if( KEY == 0 )
{
while(KEY == 0);
执行功能
}
}
三、按键的应用:
1、按键按下LED灯亮,松开熄灭;
2、按键按下KED灯熄灭,松开点亮;
3、按键按下一次,LED状态改变一次;
4、按键按下一次,LED往左边移动一位。
//-------------------------按下点亮,松开熄灭-----------------------------------------
{
{
if( KEY1 == 0 ) //判断按键有没有按下 { delay_ms(10); if( KEY1 == 0 ) { printf("按键P32已经按下\r\n"); P60 = 0; //LED0点亮 } } else //如果没有按下 { P60 = 1; //LED0点亮 }
//--------------------------按下熄灭,松开点亮----------------------------------------
if( KEY2 == 0 ) //判断按键有没有按下 { delay_ms(10); if( KEY2 == 0 ) { printf("按键P33已经按下\r\n"); P67 = 1; //LED熄灭 } } else { P67 = 0; //LED熄灭 } //---------------------------按下一次,状态取反-------------------------------------------
if( KEY2 == 0 ) //判断按键有没有按下 { delay_ms(10); if( KEY2 == 0 ) //按键确实按下了 { while(KEY2 == 0) //如果按键一直是按下的,一直执行while {
} printf("按键P33已经按下,led取反一次\r\n"); P67 = !P67; //LED熄灭 } }
//------------------------按下一次,灯往左边移动一个单位---------------------------------------
if( KEY2 == 0 ) //判断按键有没有按下 { delay_ms(10); if( KEY2 == 0 ) //按键确实按下了 { printf("按键P33已经按下,led左移一个\r\n"); LED_Data = ( (LED_Data<<1) +1 ); //本来是直接输出P6,先计算,后输出 if( LED_Data == 0XFF ) LED_Data = 0xFE; P6 = LED_Data; while(KEY2 == 0); //如果按键一直是按下的,一直执行while {
} } }
//------------------P32按下一次,灯往右边边移动一个单位---------------------------------
P6 = LED_DataTab[num]; delay_ms(500); num++; if( num>7 ) num = 0: } } 四、数组的使用: 数组使用分为如下两部: 1、定义 ------ 类型 名称 [长度] = {数值} ; 例如:int[] array1 = new int[10]; //创建一个可以容纳10个int类型元素的数组 double[] array2 = new double[5]; //创建一个可以容纳5个double类型元素的数组 String[] array3 = new double[3]; //创建 一个可以容纳3个字符串元素的数组 2、使用 赋值:名称 [索引] = 数值 数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过下标访问其任何位置的元素。比如: int[]array = new int[]{10 , 20 , 30 , 40 , 50}; System.out.println(array[0]); System.out.println(array[1]); System.out.println(array[2]); System.out.println(array[3]); System.out.println(array[4]);
|