登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 矩阵按键控制LED状态和实现LED显示二进制

[复制链接]
发表于 2023-1-28 22:57:10 | 显示全部楼层 |阅读模式
学习笔记
学习科目: C51单片机
学习安排: 控制led状态和显示二进制
开始时间: 2023-01-28
结束时间:
矩阵按键控制LED状态和实现LED显示二进制






一、控制LED状态

    1.要控制状态我们要实现就是在按下按键没松手之前LED灯不亮。

    2.又因为矩阵按键构造原因,会产生一定的抖动,所以我们也要通过编程去除抖动影响。原理如下图。

屏幕截图_20230128_222003.png              OIP-C.jpg

    3.通过if语句,当按下K1按键时(也就是P27==0时),Delay前20ms和后20ms,中间加入while循环。(while循环的意义在于只要不松手就一直在while循环)。


    4.P00默认值为1,LED灯一开始不亮,松开后P00取反,赋值为0,LED亮起。再按下同上赋值为1,LED熄灭。

屏幕截图_20230128_174734.png





二、实现LED显示二进制

    1.为了方便我们可以定义一个unsigned int xms,并且为了防止nop报错(找不到函数原型missing function prototype),要include一个INTRINS.H。

并把原来软件延时生成的代码中的循环搬进新建的while(xms--)中,在循环后在减。目的是方便延时,void函数不用返回值,更方便。

屏幕截图_20230128_223833.png


     2.如果在最后的if语句中直接用P0++,P0取反,在烧录程序后,LED灯是完全不亮的。因为那样P0相当于一直是1111 1111。需要再定义一个unsigned char LEDNum(都是8个字节很方便),再用LEDNum++和与P0取反,就能实现LED二进制闪烁。

屏幕截图_20230128_225632.png












好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表