点亮一个LED灯
首先找到单片机的原理图,找到LED模块。我这里是P2口是连接了LED灯,通过此原理图我们可以看到
我们只需将单片机的IO口置为低电平,就可以点亮LED灯。
因为代码比较简单,我就分别展示一下代码,一颗LED灯的亮灭,流水灯
延时函数可以通过小工具来实现,选择好系统的频率,以及定时长度和指令集
单片机延时函数为,这里我是通过上面的延时1ms的代码改的
创建文件delay.c和delay.h将这个函数放到这里面,以便于后面的使用
delay.c文件
#include "delay.h"
#include "reg52.h"
#include "intrins.h"
void Delay1ms(unsigned int time) //@11.0592MHz
{
unsigned char i, j;
unsigned int k;
for(k = 0;k < time;k++)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
delay.h文件
#ifndef __DELAY_H
#define __DELAY_H
void Delay1ms(unsigned int time); //@11.0592MHz
#endif
一颗LED灯闪烁代码,main.c
#include "reg52.h"
#include "intrins.h"
#include "delay.h"
sbit LED1 = P2^0; //位操作,将单片机寄存器的P2_0定义为LED1
#define LED_PORT P2 //将所有的LED灯所在的P2口定义为LED
void main(void)
{
while(1)
{
LED1 = 0; //点亮一颗LED灯
Delay1ms(100);
LED1 = 1; //点亮一颗LED灯
Delay1ms(100);
}
}
八个LED向左灯依次点亮,之后向右重复
void LED_Light(void)
void LED_Light(void)
{
LED_PORT = 0X01;
while(1)
{
LED_PORT = ~LED_PORT ;
for (i = 0; i < 8; i++)
{
LED_PORT = LED_PORT <<i;
Delay1ms(100);
}
LED_PORT = ~LED_PORT ;
for (i = 0; i < 8; i++)
{
LED_PORT = LED_PORT >>i;
Delay1ms(100);
}
}
}
LED灯单个循环循环左移之后循环右移,,这里的左移_crol_,右移_cror_是c51库函数,分别代表循环左移,和循环右移,参数分别是需要移动的数据以及每次移动的位数。
void LED_Waterfall(void)
{
LED_PORT = ~0x01;
while(1)
{
for (i = 0; i < 7; i++)
{
LED_PORT = _crol_(LED_PORT,1);
Delay1ms(500);
}
for (i = 0; i < 7; i++)
{
LED_PORT = _cror_(LED_PORT,1);
Delay1ms(500);
}
}
}
以上代码就是LED的基本代码介绍,其他的操作也可以根据这上面来改动
按键控制LED灯
该款单片机有四个独立按键,分别接到P31,P30,P32,P33,当按键按下时接口会呈现低电平,通过读取IO口电平数据,可以检测是否有按键按下。
按键K1控制LED灯的开关
void KEY_SCAN(void)
{
if(KEY1 == 0)
{
while(KEY1 == 0);
LED_PORT = ~LED_PORT;
}
}
按键K1和按键K2控制单个LED左右移动文章来源:https://www.toymoban.com/news/detail-481109.html
void KEY_LED_CONTROL(void)
{
unsigned char num = 0;
while(1)
{
if(KEY1 == 0)
{
Delay1ms(20);
while(KEY1 == 0);
Delay1ms(20);
LED_PORT = ~(0x01<<num);
num++;
if(num == 8) num = 0;
}
else if(KEY2 == 0)
{
Delay1ms(20);
while(KEY2 == 0);
Delay1ms(20);
if(num == 0) num = 7;
num--;
LED_PORT = ~(0x01<<num);
}
}
}
以上就是独立按键检测的基本代码,其他功能也是这个原理文章来源地址https://www.toymoban.com/news/detail-481109.html
到了这里,关于一周学完C51单片机(1)点亮LED灯以及按键控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!