如何进行单片机键盘电路的设计?
其实比较好写的..
行是,P3.0-P3.3,例是,P3.4-P3.7,最后得到的键值存在,KEYS中数为,0-15,
有什么问题可以再问...
START:
MOV P1,#00H
MOV P2,#0FH
CLR KEYCARD
LOOP:
ACALL KEY_CHECK
JNB KEYCARD,LOOP 为0从重新扫描
ACALL KEY_MARK 为1有按键,调用KEY_MARK
AJMP LOOP
KEY_CHECK: 键盘扫描
MOV P3,#0FH
MOV A,P3
ANL A,#0FH
CJNE A,#0FH,KEY_C1
CLR KEYCARD
RET
KEY_C1:
ACALL DELAY 有键接下,消抖
SETB KEYCARD
RET
KEY_MARK:
MOV A,#0EFH 第一例,行扫描,
KEY_M1: 键值扫描
MOV P3,A
MOV KEYS,A
MOV A,P3
ANL A,#0FH 取与
CJNE A,#0FH,KEY_M2 在第一例则跳,KEY_M2
MOV A,KEYS 并非在第一例刚移位
SETB C
RLC A
JC KEY_M1 C=1,重新扫描..
CLR KEYCARD 扫完一圈后,完成..
RET
KEY_M2: 键值计算
MOV R0,#KEYS 将KEYS的地址装入R0
XCH A,@R0 交换KEYS,A
XCHD A,@R0 交换低4位..
MOV KEYS,A
MOV R0,#0
LCALL KEY_ZHI
KEY_MX: 等待按键释放
MOV A,P3
ANL A,#0FH
CJNE A,#0FH,KEY_MX
CLR KEYCARD
RET
KEY_ZHI:
MOV A,R0
INC R0
MOV DPTR,#KEY_VALUE
MOVC A,@A+DPTR
CJNE A,KEYS,KEY_ZHI 查找键值.
DEC R0
MOV KEYS,R0
MOV P1,KEYS KEYS中的数为:0-15
RET
DELAY:
MOV R7,#20 延时大约2ms
D1: MOV R6,#50
DJNZ R6,$
DJNZ R7,D1
RET
KEY_VALUE: DB 0EEH,0DEH,0BEH,07EH,0EDH,0DDH,0BDH,07DH,0EBH,0DBH,0BBH,07BH,07EH,07DH,077H
END
键盘系统设计
首先,确定键盘编码方案:采用编码键盘或非编码键盘。随后,确定键盘工作方式:采用中断或查询方式输入键操作信息。然后,设计硬件电路。非编码键盘系统中,键闭合和键释放的信息的获取,键抖动的消除,键值查找及一些保护措施的实施等任务,均由软件来完成。
用PA口的8条线,输出数码管的段选
用PC口的6条线,输出数码管的位选
用PC口的2条线,作为键盘输入
用PB口的8条线,作为键盘输入。
正好都能用上。
8255的初始化,控制字要写对,才行。
宜选用共阳的数码管,电路中,还要有位驱动、段限流的部分。
键盘应接地,口线要接上拉电阻。
1、掌握基本数字电路的一般设计方法,了解电子设备的研发思路。
2、认识基本电路的原理并对其安装及调试。
3、通过课程设计提高解决实际问题的能力。
4、提高团队意识和自学能力。
数字电路中有优先编码器74LS147,要接键盘应该用输入芯片,而那个CD4017是十进制的计数/译码器,是输出的,不能用。
74LS147的用法如下图:可以接9个键盘,分别是数字1~9,不用0键,9个键都不按时输出就是0,这种芯片输出的是BCD码的反码,输出端DCBA需要加4个非门反相才行。图中的1~9的输入端接9个按键,按键另一端接地。
附件是74LS147的技术资料,详细说明可阅读资料。