单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

这篇具有很好参考价值的文章主要介绍了单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.独立按键控制LED灯亮灭

2.独立按键控制LED灯状态

3.独立按键控制LED灯显示二进制

4.独立按键控制LED灯位移

5.附录


1.独立按键控制LED灯亮灭

独立按键控制LED灯状态,在独立按键按下时,LED灯点亮,松手后LED灯熄灭。独立按键按下为0,松开为1,在STC89C52RC芯片上,P2为LED灯IO口,P2_0表示第一个LED灯,其他LED灯以此类推,可以通过查看芯片原理图知道。

单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

 单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

#include <REGX52.H>

void main()
{
	while(1)
	{
		if(P3_1==0)
		{
			P2_0=0;
		}
		else
		{
			P2_0=1;
		}
	}
}

2.独立按键控制LED灯状态

        机械式按钮按下或释放时,由于机械弹性作用的影响,总是伴随有一定时间的触点机械抖动,之后触点才稳定下来。在抖动期间,触点的连接状态、导电特性不稳定,接口信号的电平也不稳定,其抖动过程如图 所示,图中 t1和 t3 为抖动时间,其时长与按钮开关的机械特性有关,一般20ms;t2为按键闭合的稳定期,其时间由使用者按键的动作确定,一般为几百毫秒以上, t0和t1为按键释放期。
        与处理速度为微秒级的单片机相比而言,这种机械抖动是不可忽略的。如果在触点抖动期间进行按键的通断状态检测,那么可能会导致判断出错,即按键一次操作(按下或释放)被错误地认为是多次操作,从而使单片机产生错误的动作,这是不允许出现的。因此,为了避免按键触点机械抖动所导致的检测误判,必须采取相应的去抖动措施。消除按键抖动可以采用硬件方法,如在按键电路中增加 RS 触发器电路或 RC 积分电路进行消抖;也可采用软件方法,在按键扫描程序中增加相应的代码进行消抖。前者需要增加电路成本,且设备体积也随之增大;后者仅占用少量的 CPU 时间,单片机应用系统多采用软件方法消抖。
软件实现键信号去抖动处理的基本思想是:延时法,即当 CPU 检测到有按键按下时,执行一个20ms左右(时长可按键类型适当调整)的延时程序后再进行按键检测,如果检测到按键仍处于被按下状态,则确认按键被按下;反之,则认为是机械抖动引起的状态变化。对按键释放识别也是采用相同的办法处理。需要注意的是,如果单片机软件系统采用按键定时扫描方式,且扫描周期比软件去抖动的延时时间短,则需要对去抖动的延时程序做特殊的处理,否则可能会引起键盘误读错误。

单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

#include <REGX52.H>
void Delay(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
	while(xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
	}
	void main()
	{
		while(1)
		{
			if(P3_1==0)
			{
				Delay(20);
				while(P3_1==0);
				Delay(20);
				P2_0=~P2_0;
			}
		}
	}

3.独立按键控制LED灯显示二进制

       unsigned char 表示0~255的八位二进制数,与LED灯IO口位数正好相同。

#include <REGX52.H>
void Delay(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
	while(xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
	}
	void main()
	{
		unsigned char LEDNum=0;
		while(1)
		{
			if(P3_1==0)
			{
				Delay(20);
				while(P3_1==0);
				Delay(20);
				LEDNum++;
				P2=~LEDNum;
			}
		}
	}

4.独立按键控制LED灯位移

        通过独立按键控制LED灯向左或者向右位移

#include <REGX52.H>
unsigned char LEDNum;
void Delay(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
	while(xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
	}
void main()
{	
	P2=~(0x01);
	while(1)
	{
		if(P3_1==0)
		{
			Delay(20);
			while(P3_1==0);
			Delay(20);
			LEDNum++;
			if(LEDNum>=8)
				LEDNum=0;
			P2=~(0x01<<LEDNum);
		}
		if(P3_0==0)
		{
			Delay(20);
			while(P3_0==0);
			Delay(20);
			if(LEDNum==0)
			{
				LEDNum=7;
			}
			else
			{
				LEDNum--;
			}
			P2=~(0x01<<LEDNum);
		}
	}
}

5.附录

单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

 <<位运算,0x01<<a 表示将1按位向左移动a位

例如:0000 0001<<1表示0000 0010

~是取反运算符~(0x01)表示1111 1110文章来源地址https://www.toymoban.com/news/detail-429109.html

到了这里,关于单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【STC89C52】学习51单片机的必备电子电路知识基础

    电子电路是学习51单片机的基础, 如果能把以下几个模块弄清楚学习51单片机就不成问题啦。 目录 1.电平 2.单片机IO口 3.电阻 4.电容  5.电路原理图 ​编辑 6.单片机最小系统结构  7.单片机工作的基本时序 单片机是一种数字集成芯片,数字电路中只有高电平和低电平。 单片

    2023年04月26日
    浏览(27)
  • 初学51单片机(STC89C52)一个倒计时显示器和大家分享

      想要实现倒计时显示器,首先得确定从哪个时间开始倒计时,这就需要写出一个计数的程序来,通过按键来控制需要的数,从而开始倒计时。我的开发板上用的Key2,Key3,Key4,Key5这四个键,分别对应着加1,减1,乘2,开始计时四个功能。   通过加一,减一,乘2三个操作,

    2024年02月10日
    浏览(20)
  • 免费开源51单片机个人课程设计--基于stc89c52及红外遥控的测温智能电风扇

    51单片机个人课程设计–基于stc89c52及红外遥控的测温智能电风扇 个人学校的课程设计-智能电风扇,包含proteus原理图与源代码。 代码部分由我个人写的也有普中实验中的代码块。 3.1 硬件设计 主要器件: 单片机 AT89C52 红外接收 HS0038 LCD1602 温度测量 DS18B20 驱动集成芯片 L298

    2023年04月10日
    浏览(27)
  • C51单片机的电子时钟(数码管显示+独立按键模块修改及暂停时间)

    IMG_1120 通过查看这三个原理图我们可以得知控制K1、K2、K3及K4是通过P31、P30、P32及P33来实现的,控制8个数码管是P22、P23及P24来实现, 控制发光二极管则由P00-P07来实现。 代码分为三部分分别为main.c、key.h、key.c scankey()函数的主要代码,通过软件入手提高系统的可靠性,防止外

    2024年02月05日
    浏览(27)
  • 89C52RC普中单片机

    资料下载 普中科技--各型号产品资料下载链接 - STM8单片机 - 普中开源电子分享网 - Powered by Discuz! (prechin.net) 2023-06-28  1.开发板    2.软件 keil,stc-isp。 1.点亮led 89C52RC芯片LED模块是P2口。       2.led1一秒闪烁  3.LED流水灯  4.独立按键控制led亮灭(按下key1亮,松手灭) 5.独立按键

    2024年02月11日
    浏览(21)
  • 什么是STC89C52单片机

    STC89C52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写10000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构[1],芯片内集成了通用8位中央处理器和ISP Flash存储单元,功

    2024年02月13日
    浏览(15)
  • 【mcuclub】STC89C52单片机最小系统讲解

        3.1、主芯片 STC89C52是STC公司生产的一种低功耗、高性能8位微控制器 器件参数: 1、增强型8051单片机,指令代码完全兼容传统8051 2、工作电压:5.5V~3.3V 3、工作频率范围:0~40MHz,实际工作频率可达48MHz 4、用户应用程序空间为8K字节(程序空间) 5、片上集成512 字节RAM(

    2024年02月03日
    浏览(44)
  • STC89C52单片机LCD1602显示屏介绍与代码演示

    LCD1602显示屏介绍 引脚介绍 内部结构框图  存储器  DDRAM储存器地址  CGRAM与 CGROM的地址 时序介绍 LCD1602快捷指令  LCD1602指令操作流程: 字符、字符串的显示  各种进制的数字显示 在LCD1602上显示十进制数字 在LCD1602上显示十六进制数字 在LCD1602上显示二进制数字 LCD1602(Liq

    2024年02月08日
    浏览(21)
  • 单片机STC89C52倒计时、数码管和蜂鸣器控制

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 单片机选用STC89C52,实现倒计时60秒,控制两个数码管分别显示时间的十位和个位;当计时完毕时,显示\\\"-”,

    2024年02月04日
    浏览(17)
  • 51单片机(At89C51)组成,引脚介绍

    一,单片机的发展史 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/0口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路

    2023年04月13日
    浏览(22)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包