实例一
独立按键,要求按下一个按键,显示一个 LED 灯。
电路
其中 P0 由于工作在 I/O 方式时,其内部是漏极开路状态,因此,需要外接上拉电阻,其值大约为 10kΩ 。
对于 LED 而言,这里采用的是高电平驱动(听说很常用,也有低电平驱动的)。为了限制电流,一般需要外接一个 100~200 Ω 的限流电阻。
代码
#include<reg51.h>
void main(){
char key;
P2 = 0X00;
while(1){
key = ~P0 & 0X0F;
if(key!=0X00){
P2 = key;
}
}
}
注意,在仿真的时候,记得要先要在 proteus 点击暂停,来 stop running,之后再在 Keil 停止仿真即可结束仿真,否则无法关闭或卡死。
实例二
流水灯。要求按下 K1 时,流水灯自上往下开启。按下 K2 时,流水灯停止。按下 K3 时,流水灯至上往下;按 K4 则流水灯自下往上显示。
电路
同上
程序
#include<reg51.h>
unsigned char code led[] = {
0x01,0x02,0x04,0x08};
void delay(unsigned char time){
unsigned char tmp = 125;
for(;time>0;time--)
for(;tmp>0;tmp--);
}
void main(){
bit run=0,flag=0;
unsigned char i = 0;
P2 = 0X00;
while(1){
switch(~P0&0x0f){
case 0x01:run=1;break;
case 0x02:run=0;flag=0;