‘壹’ 51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示
1、首先,要把代码写好,点亮数码管。
‘贰’ 51单片机如何把矩阵键盘控制数码管和独立键盘控制蜂鸣器共同实现
我们先了解矩阵键盘的工作原理,掌握编码方法并能够编写出扫描程序,使用矩阵键盘控制数码管输出矩阵键值。
显示内容
在显示备橘祥模块的八位 LED 数码的个位显示当前使用矩阵键盘所按下的值。
键阵键盘多用于键伍李数目较多的时候。这样可以更多的节省IO口的占用量,
对于矩阵键盘常用的扫描方法为线反转查询法。具体的思路是:首先使行作为输入,使用单片机内部仿搏电阻上拉为高电平,列输出低电平,读行的状态。如果行有一个IO口是低,说明有键按下,进行下一步,否则退出扫描。如果有键按下,置列为输入,行输出低电平,读列的状态。最后根据
行列的状态查表就可以知道是那个按键按下。
‘叁’ 51单片机如何用一个按键控制一段程序的运行与停止
1、创建项目文件。
6、当按下一个按键时,关闭灯,整个程序运行,再按一次,程序停止。
‘肆’ 51单片机怎样用键盘控制输出频率和占空比可调的方波
如果占空比可以控制、调整,就不能称之为方波,就是矩形波形,属于PWM波形。
用两个变量控制PWM的参数,一个控制周期长度,一个控制脉冲宽度。
用两个按键控制“周期长度”变量的+、-;
用两个按键控制“脉冲宽度”变量的+、-;
即可。
‘伍’ 单片机按键有几种方式_单片机按键连接方法
单片机按键连接方法总结(五种按键扩展方案详细介绍)
单片机在各种领域运用相当广泛,而作为人机交流的按键设计也有很多种。不同的设计方法,有着不同的优缺点。而又由于单片机I/O资源有限,如何用最少的I/O口扩展更多的按键是我所研究的问题。接下来我给大家展示几种自己觉得比较好的按键扩展方案,大家可以在以后的单片机电路设计中灵活运用。
1)、第一种是最为常见的,也就是一个I/O口对应一个按钮开关。
这种方案是一对一的,一个I/O口对应一个按键。这里P00到P04,都外接了一个上拉电阻,在没有开关按下的时候,是高电平,一旦有按键按下,就被拉成低电平。这种方案优点是电路简单可靠,程序设计也很简单。缺点是占用I/O资源多。如果单片机资源够多,不紧缺,推荐使用这种方案携启。
2)、第二种方案也比较常见,但是比第一种的资源利用率要高,硬件电路也不复杂。
这是一种矩阵式键盘,用8个I/O控制了16个按钮开关,优点显而易见。当然这种电路的程序设计相对也还是很简单的。由P00到P03循环输出低电平,然后检测P04到P07的状态。比方说这里P00到P03口输出1000,然后检测P04到P07,如果P04为1则说明按下的键为s1,如果P05为1则说明按下的是s2等等。为了电路的可靠,也可以和第一种方案一样加上上拉电阻。
3)、第三种是我自己搞的一种方案,可以使用4个I/O控制8个按键,电路多了一些二极管,稍微复杂了一点。
这个电路的原理很简单,就是利用二极管的单向导电性。也是和上面的方案一样,程序需要采用轮训的方法。比方说,先置P00到P03都为低电平,然后把P00置为高电平,接着查询P02和P03的状态,如果P02为高则说明按下的是s5,若P03为高则说明按下的是s6,然后再让P00为低,P01为高,同样检测P02和P03的状态。接下来分别让P02和P03为高,其他为低,分别检测P00和P01的状态,然后再做判断。这种方案的程序其实也不难。
4)这是我在一本书上看到的,感觉设计的非常巧妙,同样它也用到了二极管,不过比我的上一种方案的I/O利用率更高,他用4个I/O口控制了12个按盯正键。我相信你了解了之后也会惊奇的。
首先好好品味一下这个方案吧,想想怎么来识别按键呢!
首先,我们让P00到P03全输出高电平。如果这个时候从P00到P03的任意一个端口检测到低电平,很容易知道是按下了那个键,肯定是s13到s16的其中一个。如果没有检测到信号,就进行下一次的检测,让P01到P03为高电平,P00为低电平,然后检测P01到P03的状态。如凯隐悔果P01为低,则按下的是s1,;P02为低,则按下的是s2;P03为低,则按下的是s3。
然后再让P00,P02,P03为高电平,P01为低电平。同理用上面的方法可以检测出按下的那个按键。(部分程序源代码会在后面贴出来,阅读代码可以更好理解电路)
5)、接下来这种方案则更为强大。不过需要用到一个A/D转换器(有的单片机集成有A/D转换器,则更为方便)。如果A/D转化器的分辨率为n位,理论上是可以扩展2^n(2的n次方)个按键。
这是一种接AD转化器的方案,有两种:第一种是并联式;第二种是串联式。在功能上也有些不同。第一种的话各个电阻值各不相同,当按下不同按键时,进入AD的模拟量是不一样的,通过AD转换,就可以得到按下的是哪个按键。方式一还可以同时识别多个按键,即可以设置组合键,只要电阻取得合适。
方式二各个电阻可以取一样的,方便计算,但是不能有组合按键。因为当按下上面的按键后,下面所有按键都会被短路。(在实际运用中,还需要接地,这里没有画出) 。前面说理论上可以扩展2^n个按键,这只是理论,因为这里电阻的精度有限,所以实际是不可能的,两个模拟量之间要有足够大的差值,程序才可能准确的分辨。
上面就是我介绍的五种按键扩展方案,后面几种比较另类,不过也有他们的优点。以上电路我都仿真过,可以实现。
附方案4键盘扫描源代码:
sbit line_1=P0.1;
sbit line_2=P0.2;
sbit line_3=P0.3;
sbit line_4=P0.4
char key=0;
void key_scan()
{
line_1=line_2=line_3=line_4=1;
if(~(line_1&&line_2&&line_3&&line_4)) {
if(line_1==0) {key=13;return;} if(line_2==0) {key=14; return;} if(line_3==0) {key=15;return;} if(line_4==0) {key=16; return;} }
line_2=line_3=line_4=1;
line_1=0;
if(~(line_2&&line_3&&line_4)) {
delay();
if(line_2==0) {key=1;return;} if(line_3==0) {key=2;return;} if(line_4==0) {key=3;return;} }
line_1=line_3=line_4=1;
line_2=0;
if(~(line_1&&line_3&&line_4)) {
delay();
if(line_3==0) {key=5;return;} if(line_4==0) {key=6;return;} }
line_1=line_2=line_4=1;
line_3=0;
if(~(line_2&&line_1&&line_4)) {
delay();
if(line_4==0) {key=9;return;} }
line_4=0;
line_1=line_2=line_3=1;
if(~(line_2&&line_3&&line_1)) {
delay();
if(line_1==0) {key=10;return;} if(line_2==0) {key=11;return;} if(line_3==0) {key=12;return;} }
line_3=0;
line_1=line_2=line_4=1;
if(~(line_2&&line_3&&line_4)) {
delay();
if(line_1==0) {key=7;return; } if(line_2==0) {key=8;return; } }
line_2=0;
line_1=line_3=line_4=1;
if(~(line_2&&line_3&&line_4)) {
delay();
if(line_1==0) {key=4;return; } }
return;
}
‘陆’ 80C51单片机怎么用按键选择两个不同的程序
如果要使用按键选择两个不同的程序,可以采用如下方法:
1、在80C51单片机的程序中定义两个不同的子程序,分别处理两个不同的功能。
2、在80C51单片机的程序中定义一个循环,用于监听按键的输入。
3、在循环中,通过读取按键的状态来判断用户按下了哪个按键。
4、如果用户按下了第一个按键,就调用第一个子程序;如果用户按下了第二个按键,就调用第二个子程序。
5、在子程序中实现具体的功能代码。
以上就是使用按键选择两个不同的程序的基本流程。
‘柒’ 51单片机最小系统如何外接键盘
标准键盘有四条线,你把数据线和时钟线接单片机,就可以接收到键盘的数据了,但你要先知道标准键盘的数据协议,再些接收代码,把数据显示在LCD上。
‘捌’ 51单片机怎么用三个按键控制分别为时钟,秒表,倒计时
假如三个按键分别为k1,k2,k3。
用k1选择3个功能,按一下切换一个功能。
在时钟状态下,用k2选择调节位,用于调时,分别选小时的十位,个位,分的十位,个位,开始计时这5个状态。k3调节位加一,只能按加一调节了。
在秒表状态下,k2为计时和停止切换。k3为清0。
在倒计时状态下,k2和k3作用与秒表相同。倒计时初始值只好固定的。
‘玖’ 51单片机键盘输入
用不着数组。
只要增加一个数字vlaue,再让 key 从keyscan()函数中,得到0~9,
最后如下计算到vlaue中: vlaue = vlaue * 10 + key;
以后,每得到一个按键数值(0~9),都执行一遍上面的算式,即可。