实验6
端口按键判断技术(按键显示数字)
此部份由8个轻触按键组成, 一端接地, 一端由JP48引出,
当按下按键时, 相应端口为低电平。
相关原理图:

程序运行照片:

接线方法:
1、按键接到P3口。用一条8PIN数据排线,把按键部份的JP48,接到CPU部份的P3口JP53.
2、接8位数码管的数据线。将数码管部份的数据口
JP5接到CPU部份的P0口JP51.
3、接8位数码管的显示位线。将数码管部份的显示位口
JP8接到CPU部份的P2口JP52.
任务:键盘显示数字, 通过按键盘上的K02,K03,K04,K05四个按键,
实现数码管显示0,1,2,3
汇编语言参考程序:
org 0000h ;(1)
ljmp start ;(2)
org 0080h ;(3)
start: mov p2,#0ffh ;(4)
CLR P2.6 ;选中最右边的七段码。;(5)
mov p3,#0ffh ;初始化,P3口置高;(6)
l1: jnb p3.2,l2 ;(7)
jnb p3.3,l3 ; ;(8)
jnb p3.4,l4 ; ;(9)
jnb p3.5,l5 ;检测按键;(10)
ljmp l1 ;循环检测;(11)
l2: mov p0,#28H ;显示'0';(12)
ljmp l1;(13)
l3: mov p0,#7EH ;显示'1';(14)
ljmp l1;(15)
l4: mov p0,#0A2H ;显示'2';(16)
ljmp l1;(17)
l5: mov p0,#62H ;显示'3';(18)
ljmp l1;(19)
end;(20)
c语言参考程序:
#include<reg51.h> //头文件
#define uchar unsigned char //宏定义,为方便编程
#define uint unsigned int
#define DIGI P0 //宏定义,将P1口定义为数码管
#define SELECT P2 //宏定义,将P2定义为数码管选择口
#define KEY P3 //宏定义,将P3口定义为按键端口
uchar
digivalue[]={0x28,0x7e,0x0a2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};
//显示的数字数组,依次为0,1,..,9
char code SST516[3] _at_ 0x003b; //仿真器入口
main() //主函数
{
SELECT=0xbf; //选择第7个数码管
while(1)
{
switch (KEY) //判断键值
{
case 0xfb: DIGI=digivalue[0];
//若KO2按下,数码管显示0
break; //跳出循环
case 0xf7: DIGI=digivalue[1];
//若KO3按下,数码管显示1
break;
case 0xef: DIGI=digivalue[2];
//若KO4按下,数码管显示2
break;
case 0xdf: DIGI=digivalue[3];
//若KO5按下,数码管显示3
break;
default : DIGI=0xff; //若没有键按下,数码管不显示
break;
}
}
}
|