一周学完C51单片机(1)点亮LED灯以及按键控制

这篇具有很好参考价值的文章主要介绍了一周学完C51单片机(1)点亮LED灯以及按键控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

点亮一个LED灯

首先找到单片机的原理图,找到LED模块。我这里是P2口是连接了LED灯,通过此原理图我们可以看到
我们只需将单片机的IO口置为低电平,就可以点亮LED灯。
因为代码比较简单,我就分别展示一下代码,一颗LED灯的亮灭,流水灯
一周学完C51单片机(1)点亮LED灯以及按键控制
延时函数可以通过小工具来实现,选择好系统的频率,以及定时长度和指令集
一周学完C51单片机(1)点亮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口电平数据,可以检测是否有按键按下。
一周学完C51单片机(1)点亮LED灯以及按键控制
按键K1控制LED灯的开关

void KEY_SCAN(void)
{
	 if(KEY1 == 0)
	 {
	 	while(KEY1 == 0);
		 LED_PORT = ~LED_PORT;
	 }
}

按键K1和按键K2控制单个LED左右移动

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初识C51单片机(详解)

    前言: 单片机是一种我们常见的开发板,我们经常会在一些项目中使用到它。而今天我们要介绍的是C51单片机,下面来介绍一下今天的”主角“:STC89C52RC40I-LQFP44单片机(后面将用到它做一些项目)。 1.了解命名规则一张图搞定: 2.学会看单片机电路原理图 只是一些初中的电

    2024年02月10日
    浏览(65)
  • 51单片机(二)成功点亮LED

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2023年04月25日
    浏览(47)
  • C51单片机实验——中断实验

    实验环境:普中实验系统;Keil μVision 4软件; 实验目的: (1)掌握单片机中断原理和中断响应过程。 (2)设计自己的中断程序具体实验内容,并通过程序设计控制实验箱上的2个按键,实现对应的中断内容。 硬件连线: 按键k3连接P3.2口 按键k4连接P3.3口 LED灯连接P2口 实验主

    2024年02月05日
    浏览(71)
  • C51单片机实现呼吸灯

         呼吸灯的效果是灯的亮度由暗缓慢变亮再缓慢变暗。      实现思路是改变小灯亮与暗在单位周期的占空比。如下图 具体代码如下:

    2024年02月11日
    浏览(53)
  • 如何使用单片机点亮LED灯,并使用按键控制[51单片机]

    首先先看一下我的板子,如果我们板子不相同,可能操作也不太相同 我们就不讲底层原理了,直接看,我们可以看到板子上有 8个LED灯   那这个8个LED用什么来控制呢,我们先看底层的线路图,所有的LEDD都连接到了P2带后缀的接口上, 那么只需要操作这几个接口的高低电频,

    2024年02月05日
    浏览(46)
  • 【C51】10-基础51单片机的小车项目(51完结)

    10.1小车的安装 10.2电机模块的开发(L9110S) 接通 VCC , GND 模块电源指示灯亮, 以下资料来源官方,但是不对,根据下节课实际调试 IA1 输入高电平, IA1 输入低电平,【 OA1 OB1 】电机正转; IA1 输入低电平, IA1 输入高电平,【 OA1 OB1 】电机反转; IA2 输入高电平, IA2 输入低

    2024年02月08日
    浏览(55)
  • 【51单片机】点亮第一个LED灯

    橙色 GPIO 概念 GPIO(general purpose intput output) 是通用输入输出端口的简称, 可以通过软件来控制其输入和输出。 51 单片机芯片的 GPIO 引脚与外部设备连接起来, 从而实现与外部通讯、 控制以及数据采集的功能。 不过 GPIO 最简单的应用还属点亮 LED 灯了, 只需通过软件控制

    2024年01月25日
    浏览(45)
  • 单片机C51计时器秒表

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 单片机C51(或称8051)计时器秒表的实现原理如下: 原理解释: C51微控制器通常包括多个计时器/计数器,可

    2024年02月03日
    浏览(52)
  • 第二十二天 c51单片机

    136.语音识别切换小车循迹跟随避障且Oled显示状态

    2024年02月08日
    浏览(48)
  • 定时红绿灯(C51单片机)

    一.项目题目:利用中断处理制作的定时LED红绿灯系统 二.项目器件: 红色LED灯 绿色LED灯 黄色LED灯 100R电阻 电源 电容器 C51单片机 接地线 三.项目原理图 四.项目实现功能: 使用定时器/计数器T1工作方式1,采用中断方式控制P1口6个单片机串口,实现类似交通红绿灯功能

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包