JP165跳线帽断开、JP10连接J12(为了实现按键控制LED灯的效果)、JP5连接JP8、J21接左边
3.5.2 示例代码
下面代码都使用多文件编程模型,这里贴出每个文件的主要代码。
下面代码实现的效果是,按下按键控制LED灯。
Main.c文件:
#include #include "delay.h" #include "key.h" #include "type.h" #include "led.h" int main() { u8 key; LED=0; //关闭所有LED灯,51单片机默认输出高电平,LED默认高电平点亮 while(1) { key=Key_Scan(); if(key) { LED=~LED; //控制8盏灯 } } } Key.h文件代码: #ifndef KEY_H #define KEY_H #include #include "type.h" #include "delay.h" #include "led.h" u8 Key_Scan(void); #define KEY P1 //定义按键 sbit key1=KEY^0; sbit key2=KEY^1; sbit key3=KEY^2; sbit key4=KEY^3; sbit key5=KEY^4; sbit key6=KEY^5; sbit key7=KEY^6; sbit key8=KEY^7; #endif Key.c文件代码: #include "key.h" /* 按键扫描函数 */ u8 Key_Scan(void) { static u8 flag=0; if((KEY!=0xFF)&&(flag==0)) //判断有没有按键按下 { DelayMs(20); //消抖 flag=1; //标志按键已经被按下 if(key1==0)return 1; if(key2==0)return 2; if(key3==0)return 3; if(key4==0)return 4; if(key5==0)return 5; if(key6==0)return 6; if(key7==0)return 7; if(key8==0)return 8; } else if(KEY==0xFF) //判断按键是否全部松开 { flag=0; //清除按下标志位 } return 0; } Led.h文件代码: #ifndef LED_H #define LED_H #include #include "type.h" #include "delay.h" #define LED P0 //定义LED引脚 sbit LED1=P0^0; sbit LED2=P0^1; sbit LED3=P0^2; sbit LED4=P0^3; sbit LED5=P0^4; sbit LED6=P0^5; sbit LED7=P0^6; sbit LED8=P0^7; #endif Type.h文件代码: #ifndef TYPE_H #define TYPE_H typedef unsigned char u8; typedef unsigned short u16; typedef unsigned int u32; #endif
上一篇:学习笔记 从零开始学单片机(0) 系统结构
下一篇:学习笔记 从零开始学单片机(1) 建立实验环境
推荐阅读最新更新时间:2024-11-08 11:19
设计资源 培训 开发板 精华推荐
- ESP8266 墨水屏模块和代码
- LT1117CM-2.85 调节固定稳压器输出电压的典型应用
- DC2244A,基于 LTM8049 双通道 SEPIC 或反相 DC/DC 转换器的演示板
- DI-29 - 25W反激式直流-直流转换器
- OP484FPZ 运算放大器噪声电路模型的典型应用,用于确定总电路等效输入噪声电压
- OM13584: PTN5150A-PTN36043 USB Type-C CC逻辑评估套件
- STM32功率屏蔽,用于功耗测量的Nucleo扩展板(UM2243)
- AFS2016-EVAL,基于 AFS20 系列 SAW 滤波器的评估板
- L78L06AB 电流调节器的典型应用
- STR-NCS36510-ZB-EH-1-GEVK:Strata Enabled Zigbee® Green Power Kit