1、电路由16 个按键组成,用P1 口扩展44 行列式键盘。 J20 是键盘连接端,连接到P1 口。J21 是行列键盘、独立键盘选择端,当J21 的短路片连接2-3 脚时,构成44 行列式键盘;当J21 的短路片连接2-1 脚时,可形成34 行列式键盘,4 个独立式 按键S4、S8、S12、S16,这4 个独立按键分别连接P1.4P1.7;其他12 个键3 PW15 是电源端。 四编程思路 1采用反转法识别按键的闭合。 2.采用动态显示将键值显示出来。 五算法流程图 六资源分配 1.用P1口进行查找按键 2.用R3做键值指针 3.用R1做动态显示为选码指针。 4.R5为延时指针。 七程序设计 KP
2、IN: 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 CLR
3、P2.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,
4、7FH,6FH,5FH DB 79H,33H,7CH,3BH,1BH END 八调试出现的问题及解决 问题1:程序正常运行,但按键显示出现乱码 解决:动态显示笔形码错误,并改正。 问题2:发现有些按键按下时不出现键值 解决:发现按键坏了,换机器再实验,并且成功。 总结:与硬件想结合的实验要有足够的耐心,并且不仅要懂得如何编程,还要有足够多的电路知识,这样才能够保证实验成功。 篇二:单片机实验报告 姓名 学号 单片机实验报告 四 时间 周一11-13 地点 计708 指导老师:实验题目C51单片机片上资源开发实验 一 实验目的与要求 ? ? 学习单片机片上资源开发技术 研究用片上资源实现自动控制
5、的方案 二:实验环境 在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端口和按键都不是很清楚,最后通过对课本
6、知识的学习,还有上机实验对此基本了解。通过这次试验,实现了对课本知识的时间,更加了解单片机结构以及组成原理。对于更加深入的学习单片机有很大好处。 六附录 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.6P2.4=000的地址均可 ORG 0000H ;仿真调试时,用户程序起始地址8000H LJMP 0030H ORG 0030H START: ;初
7、始化 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 M
8、OV 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
9、;返回 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:
10、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 ; 篇
11、三:单片机 矩阵键盘实验 实验报告 实验五 矩阵键盘实验 一、实验内容 1、编写程序,做到在键盘上每按一个数字键(0F)用发光二极管将该代码显示出来。按其它键退出。 2、加法设计计算器,实验板上有12个按键,编写程序,实现一位整数加法运算功能。可定义“A”键为“+”键,“B”键为“=”键。 二、实验目的 1、 学习独立式按键的查询识别方法。 2、 非编码矩阵键盘的行反转法识别方法。 三、实验说明 1、MCS51系列单片机的P0P3口作为输入端口使用时必须先向端口写入“1”。 2、用查询方式检测按键时,要加入延时(通常采用软件延时1020mS)以消除抖动。 3、识别键的闭合,通常采用行扫描法和行
12、反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。 行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。这样,当一个键被接下时,必定可以读得一对唯一的行
13、线值和列线值。 由于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个键的反转码建一个表,通过查表就可知道是哪个键被按下了。 四、接线方法 键盘连接成44的矩阵形式,占用单片机P1口的8根线,行信号是P1.0-1.3,列信号是P1.4-1.7。 五、实验电路 参考学习板说明书P14。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1