人们使用计算机就是通过输入输出设配来获取或者处理信息。
按键是重要的输入设配,也是最简单的输入设配。其实单片机的学习没有那么的难。
我是跟随《手把手教你学51单片机》来学习的。
金沙滩的开发板和咱们的板子有比较大的区别,用咱们的板子不好实现多个小灯的点亮,
因为咱们板子的P2.0 P2.1 P2.1口被矩阵按键和38译码器所占用,目前我还无法达到自己的目的。
今天就先完成通过按下key4键来实现数码管数字加一。
通过按键来控制单片机,其实就是通过改变I/O输入的高低电平来实现的。
矩阵按键是通过上拉电阻来实现的。
当keyout接低电平,k4按下时,keyin4被拉低,如此就可以实现按键的识别。
但是单片机内部P2口中也有上拉电阻
如果单片机输出低电平的话经过非门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]
有一点有的时候数码管的数字不是按一下加一个而是按一下加了好几个,这是怎么回事呢;
原来是在按按键的时候不会一下安到位或者是一下弹起,所以产生杂波对单片机产生影响。
就要进行消抖。
时候不早啦,明天继续学。
|