登录  | 立即注册

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

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 按键

[复制链接]
发表于 2017-2-6 01:01:45 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 按键
学习安排: 学习按键的工作方式,制作一个按键计数器。
开始时间: 2017-02-05
结束时间: 2017-02-05
人们使用计算机就是通过输入输出设配来获取或者处理信息。

按键是重要的输入设配,也是最简单的输入设配。其实单片机的学习没有那么的难。

我是跟随《手把手教你学51单片机》来学习的。

金沙滩的开发板和咱们的板子有比较大的区别,用咱们的板子不好实现多个小灯的点亮,

因为咱们板子的P2.0 P2.1 P2.1口被矩阵按键和38译码器所占用,目前我还无法达到自己的目的。

今天就先完成通过按下key4键来实现数码管数字加一。

通过按键来控制单片机,其实就是通过改变I/O输入的高低电平来实现的。

矩阵按键是通过上拉电阻来实现的。

图片3.png

当keyout接低电平,k4按下时,keyin4被拉低,如此就可以实现按键的识别。

但是单片机内部P2口中也有上拉电阻

图片2.png

如果单片机输出低电平的话经过非门NPN型三极管就会被导通结果内部输入就会被拉低

按键无论怎么地按单片机也不会有反应,所以单片机应该输出高电平。



软件部分

[mw_shl_code=applescript,true]

#include <STC12C5A60S2.H>



sbit ADDR0 = P2^0;

sbit ADDR1 = P2^1;

sbit ADDR2 = P2^2;

sbit KEY4 = P2^3;

sbit KEYOUT4 = P2^7;

sbit ENLED = P1^1;

unsigned char LedBuff[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};



void main ()

{

unsigned char cnt = 0;

bit i = 0;

       


KEYOUT4 = 0;

ADDR0 = 1;

ADDR1 = 0;

ADDR2 = 1;

ENLED = 0;

       


while(1)

{

if (KEY4 != i)

{

if(i == 0)

{

P0 = LedBuff[cnt];

cnt++;

if(cnt >=10)

{

cnt = 0;

}

                               


}

i = KEY4;

}

}

}[/mw_shl_code]


有一点有的时候数码管的数字不是按一下加一个而是按一下加了好几个,这是怎么回事呢;

原来是在按按键的时候不会一下安到位或者是一下弹起,所以产生杂波对单片机产生影响。

就要进行消抖。

时候不早啦,明天继续学。


人生无根蒂,生如陌上尘。
 楼主| 发表于 2017-2-6 01:08:28 | 显示全部楼层
[mw_shl_code=applescript,true]#include <STC12C5A60S2.H>

sbit ADDR0 = P2^0;
sbit ADDR1 = P2^1;
sbit ADDR2 = P2^2;
sbit KEY4 = P2^3;
sbit KEYOUT4 = P2^7;
sbit ENLED = P1^1;
unsigned char LedBuff[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void main ()
{
        unsigned char cnt = 0;
        bit i = 0;
       
        KEYOUT4 = 0;
        ADDR0 = 1;
        ADDR1 = 0;
        ADDR2 = 1;
        ENLED = 0;
       
        while(1)
        {
                if (KEY4 != i)
                {
                        if(i == 0)
                        {
                                P0 = LedBuff[cnt];
                        cnt++;
                                if(cnt >=10)
                                {
                                        cnt = 0;
                                }
                               
                        }
                        i = KEY4;
                }
        }
}[/mw_shl_code]
人生无根蒂,生如陌上尘。
 楼主| 发表于 2017-2-6 01:09:40 | 显示全部楼层
PC端的代码乱啦。
人生无根蒂,生如陌上尘。
 楼主| 发表于 2017-2-6 01:11:07 | 显示全部楼层

011106ph5377inphhzci38.jpg
011107usfkp6fm6x6plvnj.jpg
人生无根蒂,生如陌上尘。
发表于 2017-2-6 18:13:15 | 显示全部楼层
骆海洋 发表于 2017-2-6 01:09
PC端的代码乱啦。

注意正确选择代码的种类。
该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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