单片机按键实验报告
2023年8月22日发(作者:热门作文十篇)
syb创业计划书完整版-
精品学习资料范文
单片机按键实验报告
篇一:单片机按键扫描实验报告
键盘扫描
一.实验目的
(1)掌握矩阵键盘接口电路和键盘扫描编程方法。
(2)掌握按键值处理与显示电路设计。
二.实验任务
(1)设计4*4键盘,编写各个键的特征码和对应的键值(0~F);
(2)编程扫描按键,将按键对应的数字值使用数码管显示出来。
三.实验电路及连线方法
1.采用动态显示
连线方法:电路由2 片74LS573,1 个六字一体的共阴数码管组成。由U15 输出段选码,U16 做位选码,与单片机的采用I/O 口连接方式,短路片J22 连接P2.0,J23 连接P2.3,做输出信号锁存。
(实际电路连接是d7-d6-d5-d4-d3-d2-d1-d0?h-c-d-e-g-b-a-f)。PW12 是电源端。
2.键盘电路
连线方法:电路由16 个按键组成,用P1 口扩展4×4 行列式键盘。
J20 是键盘连接端,连接到P1 口。J21 是行列键盘、独立键盘选择端,当J21 的短路片连接2-3
脚时,构成4×4 行列式键盘;当J21 的短路片连接2-1 脚时,精品学习资料范文
可形成3×4 行列式键盘,4 个独立式
按键S4、S8、S12、S16,这4 个独立按键分别连接P1.4~P1.7;其他12 个键3×4 行列式键盘。
PW15 是电源端。
四.编程思路
1.采用反转法识别按键的闭合。
2.采用动态显示将键值显示出来。
五.算法流程图
六.资源分配
1.用P1口进行查按键
2.用R3做键值指针
3.用R1做动态显示为选码指针。
4.R5为延时指针。
七.程序设计
KPIN:
ORG MOV MOV ANL MOV 0000H P1,#0F0H A,P1 A,#0F0H B,A
MOVP1,#0FH
MOVA,P1
ANLA,#0FH
ORLA,B
CJNE A,#0FFH,KPIN1
AJMP EXIT 精品学习资料范文
KPIN1: MOVB,A
MOVDPTR,#TABKP
MOVR3,#0
KPIN2: MOVA,R3
MOVC A,@A+DPTR
CJNE A,B,KPIN3
MOVA,R3
LOOP: MOVR1,#0FEH;键盘动态显示
LOOP1: MOVA,R3
ANLA,#0FH
MOV DPTR,#TAB
MOVC A,@A+DPTR
CLRP2.0
CLRP2.1
MOVP0,A
SETB P2.0
NOP
CLRP2.0
LOOP2: MOVA,R1;位选码
MOVP0,A
SETB P2.1
MOVR5,#250 精品学习资料范文
LOOP3: DJNZ R5,LOOP3
CLRP2.1
SJMP LOOP
KPIN3: INCR3
CJNE A,#0FFH,KPIN2
EXIT: RET
TABKP: DB0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH
DB 0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,67H,0FFH
TAB: DB77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FH
DB 79H,33H,7CH,3BH,1BH
END
八.调试出现的问题及解决
问题1:程序正常运行,但按键显示出现乱码
解决:动态显示笔形码错误,并改正。
问题2:发现有些按键按下时不出现键值
解决:发现按键坏了,换机器再实验,并且成功。
总结:与硬件想结合的实验要有足够的耐心,并且不仅要懂得如何编程,还要有足够多的电路知识,这样才能够保证实验成功。
篇二:单片机实验报告
姓名 学号 单片机实验报告 四 时间 周一11-13 地点 计708
指导老师:实验题目C51单片机片上资源开发实验
一. 实验目的与要求 精品学习资料范文
?
? 学习单片机片上资源开发技术 研究用片上资源实现自动控制的方案
二:实验环境
在Keil uVision2下实验。
三.实验内容
1. 用51单片机I/O端口和扩展口控制LED和按键
①按键扫描子程序,每50ms检查按键状态。
②LED输出子程序
③按1次键,377扩展输出口驱动LED灯(位输出“1”点亮相应位灯)显示内容改变1次(0x00-0x01-0x02-0x04-0x08-0x10-0x20-0x40-0x80-0xff循环),初始状态显示0x00。
四.系统实施
①按键扫描子程序,每50ms检查按键状态。
②LED输出子程序
五、 体会
这个实验对我初学单片机的我有点难度,因为最初接触这个实验时,对于单片机的I/O端口和按键都不是很清楚,最后通过对课本知识的学习,还有上机实验对此基本了解。通过这次试验,实现了对课本知识的时间,更加了解单片机结构以及组成原理。对于更加深入的学习单片机有很大好处。 精品学习资料范文
六.附录
1.用51单片机I/O端口和扩展口控制LED和按键
DISPLAY_NUM EQUR0 ;显示内容的表索引
KEY_DOWN BIT PSW.5 ;模式键按下标志位(PSW的F0)
KEY_DEMO BIT P1.0
ADDR_377 EQU 0FFFH ;按键输入引脚 ;377的地址,P2.6~P2.4=000的地址均可
ORG 0000H ;仿真调试时,用户程序起始地址8000H
LJMP 0030H
ORG 0030H
START:
;初始化
MOV SP, #30H
MOV DISPLAY_NUM, #0 ;LED显示内容初始为0
;通过377口将LED显示为R0为索引的表容ACALL LED_DISPLAY
LED_KEY_LOOP:
ACALL DELAY50MS ;延时50ms
ACALL KEY_SCAN ;检查按键,若按下,DISPLAY_NUM+1
SJMP
;输出(KEY0_ENTR+DISPLAY_NUM)的内容给377
LED_DISPLAY:
MOV A, #0AH 精品学习资料范文
CLR C ;C标志位清0 LED_KEY_LOOP;返回主程序循环
SUBB A, DISPLAY_NUM ;判断是否超出状态
JNZ
MOV
DISP:
MOV DPTR, #KEY0_ENTR
MOV A, DISPLAY_NUM
MOVC
MOV DPTR, #ADDR_377 A, @A+DPTR; 取得(KEY0_ENTR+DISPLAY_NUM)的内容 DISP DISPLAY_NUM, #0 ;是,清零
MOVX @DPTR,A;输出到377
RET
KEY_SCAN: ;按键扫描程序
JNB KEY_DEMO, KEY_SCAN1 ;键是否按下? 是(KEY_DEMO=0),要检测按键是否有效;
KEY_SCAN0:
CLR KEY_DOWN;否(KEY_DEMO=1) ,清除标志位SJMP
KEY_SCAN_EXIT ;返回
KEY_SCAN1:
JB KEY_DOWN, KEY_SCAN_EXIT ;是,检测标志位,确认是否为有效按键
;(KEY_DOWN=1),标志位没有发生0- 1(松开- 按下)状态变化为精品学习资料范文
无效按键,返回CLR KEY_DOWN ;按键有效(即KEY_DEMO=0,
KEY_DOWN=0), ;置位按键标志位
INC DISPLAY_NUM ;并把显示内容加1
ACALL LED_DISPLAY
KEY_SCAN_EXIT:
RET
;延时子程序 延时50ms,使用了R5,R6,R7
DELAY50MS:
MOV R7,#04H
DELAY0:
MOV R6,#81H
DELAY1:
MOV R5,#7EH
DELAY2:
DJNZ
DJNZR5,DELAY2 R6,DELAY1
DJNZ
RET R7,DELAY0
;指示灯编码
KEY0_ENTR:
DB 00H ;显示 00000000 DB 01H ;显示 00000001 DB
DB 精品学习资料范文
DB
DB
DB
DB
DB
DB
END 显示 00000010 显示 00000100 显示 00001000 显示
00010000 显示 00100000 显示 01000000 显示 10000000 显示
11111111 02H ; 04H ; 08H ; 10H ; 20H ; 40H ; 80H ; 0FFH ;
篇三:单片机 矩阵键盘实验 实验报告
实验五 矩阵键盘实验
一、实验内容
1、编写程序,做到在键盘上每按一个数字键(0-F)用发光二极管将该代码显示出来。按其它键退出。
2、加法设计计算器,实验板上有12个按键,编写程序,实现一位整数加法运算功能。可定义“A”键为“+”键,“B”键为“=”键。
二、实验目的
1、 学习独立式按键的查询识别方法。 2、 非编码矩阵键盘的行反转法识别方法。
三、实验说明
1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向精品学习资料范文
端口写入“1”。
2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。 3、识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。
行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。
由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。
行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0xBF写入P1口,精品学习资料范文
使P1.6为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。
四、接线方法
键盘连接成4×4的矩阵形式,占用单片机P1口的8根线,行信号是P1.0-1.3,列信号是P1.4-1.7。
五、实验电路
参考学习板说明书P14。