网站首页 > 技术教程 正文
数码管原理图介绍见-《单片机学习--数码管-code关键字-数组认识》
本次新增独立按键原理图如下:
程序上,我们可以把每次扫描到的按键状态都保存起来,当一次按键状态扫描进来的时候,与前一次的状态做比较,如果发现这两次按键状态不一致,就说明按键产生动作了。当上一次的状态是未按下而现在是按下,此时按键的动作就是“按下”;当上一次的状态是按下而现在是未按下,此时按键的动作就是“弹起”。显然,每次按键动作都会包含一次“按下”和一次“弹起”,我们可以任选其一来执行程序,或者两个都用,以执行不同的程序也是可以的。下面介绍下具有上拉的准双向 IO 口:
当内部输出=0时,则反相后为高电平,三极管导通,那么单片机IO口内部输入为低电平,这时,不管外部按键KEY是否按下与否,单片机的 IO 口上内部输入到单片机内部的状态都是低电平,我们无法正常读取到按键的状态;当内部输出=1时,则反相后为低电平,三极管截止,由于上拉的存在,此时单片机IO口内部输入为高电平;当外部按键按下时将电平拉低的话,单片机IO口内部输入为低电平,即可以正常读取到按键的状态了。
从上面的分析就可以得出一个结论,这种具有上拉的准双向 IO 口,如果要正常读取外部信号的状态,必须首先得保证自己内部输出的是 1,如果内部输出 0,则无论外部信号是 1还是 0,这个引脚读进来的都是 0。
另介绍下新变量类型——bit,是51 单片机有一种特殊的变量类型。bit 型是 1 位数据,只占用 1 个位(bit)的内存,用法和标准 C 中其他的基本数据类型是一致的。它的优点就是节省内存空间,8 个bit 型变量才相当于 1 个 char 型变量所占用的空间。虽然它只有 0 和 1 两个值,但也已经可以表示很多东西了,比如:按键的按下和弹起、LED 灯的亮和灭、三极管的导通与关断等等。
我们都知道按键在操作时会产生抖动,所以介绍下使用中断来进行按键消抖。我们启用一个定时中断,每 1ms 进一次中断,扫描一次按键状态并且存储起来,连续扫描 8 次后,看看这连续 8 次的按键状态是否是一致的。8 次按键的时间大概是 8ms,这 8ms 内如果按键状态一直保持一致,那就可以确定现在按键处于稳定的阶段,而非处于抖动的阶段。
下面开始编写程式:
main主函数和一些声明定义:
初始化定时器T0函数:void timer0_init()
按键驱动函数key_driver()
按键动作函数key_action()
按键扫描函数key_scan()
定时器T0中断服务函数:void timer0() interrupt 1
完整程序:
猜你喜欢
- 2025-07-24 S7-1500PLC梯形图(LAD)基础指令——S_ODT接通延时定时器
- 2025-07-24 windows电脑如何设置定时关机?电脑设置定时关机的方法
- 2025-07-24 编写水泵定时自动轮换PLC程序(给水泵一用一备自动轮换控制plc)
- 2025-07-24 PLC定时器与计数器的配合使用,看看可以达到什么效果
- 2025-07-24 【分享】PLC定时停机实用八大招,请诸位谨慎使用!
- 2025-07-24 S7-200SAMRT定时器程序应用案例(s7_200定时器)
- 2025-07-24 简思定时器程序设计范例:自动门控制
- 2025-07-24 PLC编程100例之延时On/Off 程序(plc延时1秒的延时程序)
- 2025-07-24 如何实现Python+selenium在指定时间自动运行程序
- 2025-07-24 「PLC编程案例」基于S7-1200 PLC感应手自动冲水装置程序设计
你 发表评论:
欢迎- 最近发表
-
- S7-1500PLC梯形图(LAD)基础指令——S_ODT接通延时定时器
- windows电脑如何设置定时关机?电脑设置定时关机的方法
- 编写水泵定时自动轮换PLC程序(给水泵一用一备自动轮换控制plc)
- PLC定时器与计数器的配合使用,看看可以达到什么效果
- 【分享】PLC定时停机实用八大招,请诸位谨慎使用!
- S7-200SAMRT定时器程序应用案例(s7_200定时器)
- 简思定时器程序设计范例:自动门控制
- PLC编程100例之延时On/Off 程序(plc延时1秒的延时程序)
- 如何实现Python+selenium在指定时间自动运行程序
- 「PLC编程案例」基于S7-1200 PLC感应手自动冲水装置程序设计
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)