1、SJMP DIRDIR1: MOV DPTR,#TABLE2DIR: MOV R0,#00HMOV R1,#01HNEXT: MOV A,R0MOVC A,A+DPTRMOV P0,AMOV A,R1MOV P2,ALCALL DAYINC R0RL AMOV R1,ACJNE R1,#0DFH,NEXTSJMP STARTDAY: MOV R6,#4D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETTABLE1: DB 06H,5BH,4FH,66H,6DHTABLE2: DB 78H,79H,38H,38H,3FHEND7 C语言源程序#include unsign
2、ed char code table1=0x06,0x5b,0x4f,0x66,0x6d;unsigned char code table2=0x78,0x79,0x38,0x38,0x3f;unsigned char i;unsigned char a,b;unsigned char temp;void main(void)while(1)temp=0xfe;for(i=0;i5;i+)if(P1_7=1)P0=table1i;elseP0=table2i;P2=temp;a=temp(7-i);temp=a|b;for(a=4;a0;a-)for(b=248;bb-); 14 44矩阵式键
3、盘识别技术 如图4.14.2所示,用AT89S51的并行口P1接44矩阵键盘,以P1.0P1.3作输入线,以P1.4P1.7作输出线;在数码管上显示每个按键的“0F”序号。对应的按键的序号排列如图4.14.1所示 图4.14.1 2 硬件电路原理图 图4.14.2 (1 把“单片机系统“区域中的P3.0P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1C4R1R4端口上;(2 把“单片机系统”区域中的P0.0/AD0P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个ah端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,P0.7/AD7对应着h。
4、(1 44矩阵键盘识别处理 (2 每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。图4.14.3 KEYBUF EQU 30H MOV KEYBUF,#2W
5、AIT:MOV P3,#0FFHCLR P3.4MOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY1LCALL DELY10MSCJNE A,#0EH,NK1MOV KEYBUF,#0LJMP DK1NK1: CJNE A,#0DH,NK2MOV KEYBUF,#1NK2: CJNE A,#0BH,NK3MOV KEYBUF,#2NK3: CJNE A,#07H,NK4MOV KEYBUF,#3NK4: NOPDK1:MOV A,KEYBUFMOV DPTR,#TABLEDK1A: MOV A,P3JNZ DK1ANOKEY1:CLR P3.5JZ NOKEY2CJNE
6、A,#0EH,NK5MOV KEYBUF,#4LJMP DK2NK5: CJNE A,#0DH,NK6MOV KEYBUF,#5NK6: CJNE A,#0BH,NK7MOV KEYBUF,#6NK7: CJNE A,#07H,NK8MOV KEYBUF,#7NK8:DK2:DK2A:JNZ DK2ANOKEY2:CLR P3.6JZ NOKEY3CJNE A,#0EH,NK9MOV KEYBUF,#8LJMP DK3NK9: CJNE A,#0DH,NK10MOV KEYBUF,#9NK10: CJNE A,#0BH,NK11MOV KEYBUF,#10NK11: CJNE A,#07H,N
7、K12MOV KEYBUF,#11NK12:DK3:DK3A:JNZ DK3ANOKEY3:CLR P3.7JZ NOKEY4CJNE A,#0EH,NK13MOV KEYBUF,#12LJMP DK4NK13: CJNE A,#0DH,NK14MOV KEYBUF,#13NK14: CJNE A,#0BH,NK15MOV KEYBUF,#14NK15: CJNE A,#07H,NK16MOV KEYBUF,#15NK16:DK4:DK4A:JNZ DK4ANOKEY4:LJMP WAITDELY10MS:MOV R6,#10TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,
8、7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71Hunsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsigned char key;unsigned char i,j;P3=0xff;P3_4=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;ii-)for(j=200;jj-);switch(temp)case 0x0e:key=7;break;case 0x0d:key=8;case 0x0b:key=9;case 0x07:key=10;P1_0=P1_0;P0=tablekey;while(temp!P3_5=0;temp
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1