键盘显示单片机实习报告Word格式文档下载.docx
- 文档编号:1510522
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:30
- 大小:210.63KB
键盘显示单片机实习报告Word格式文档下载.docx
《键盘显示单片机实习报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《键盘显示单片机实习报告Word格式文档下载.docx(30页珍藏版)》请在冰点文库上搜索。
3.元器件选择、电路调试方法与结果说明
1)元器选择:
74ls138、74ls373、74ls138、74ls04、74ls02、74ls08、数码管、2*2键盘、晶振、电阻、电容、二极管等。
2)电路调试与结果说明:
首先焊接电路,然后再接好电源,如果电源指示灯亮,其他灯不亮且芯片没有太烫的说明电路板焊接良好,且芯片连接正确。
4.软件设计说明书与流程图
1)软件设计说明书:
及格和中的软件设计:
第一步判断有无键按下,判断有键按下的依据时键盘行线电平是否由高变底了,判断出有键按下时要调用延时程序来排除键盘抖动的干扰。
第二步判断是哪个键按下,判断哪个键按下时是先置高其中一条列线再拉底另一条列线,这样当行列线电平都是底电平是则选中对应的键。
第三步,在数码管上相应的位置显示,将键盘按下键的键号放到锁存器中存放,再送如数码管中显示。
良和优的的软件设计:
先利用单片机内部的定时器来完成时钟设计,具体软件设计见流程图,然后在数码管上滚动显示时钟。
最后利用键盘来校准时钟。
2)流程图及软件源程序代码
及格的程序流程图为图1
课程设计报告
图1及格的程序流程图
及格的程序:
ORG0000H
LJMPKEY1
ORG0100H
KEY1:
ACALLKS1;
判断是否有键按下子程
CJNEA,#18H,LK1;
A与18H不相等时有键按下,跳判键子程序
ACALLLKP;
调用显示程序,延时
AJMPKEY1;
再判断
LK1:
ACALLDELAY;
可能有键按下,延迟10ms软件去抖
ACALLKS1;
调用判有无键闭合子程序
CJNEA,#18H,LK2;
经去抖动,判断确实有键闭合,跳LK2去处理
抖动引起,跳KEY1
LK2:
CLRP1.5;
先判断第一列有无键按下
SETBP1.6
MOVA,P1
JBACC.3,LINE1;
P1.3为高电平,转LONE1去处理
MOVR0,#01H;
一号键被按下,R0置1
AJMPLK3
LINE1:
JBACC.4,NEXT;
P1.4为高电平,转NEXT去处理
MOVR0,#03H;
三号被按下,R0置3
NEXT:
SETBP1.5;
第一列无键按下,判断第二列
CLRP1.6
JBACC.3,LINE2
MOVR0,#02H;
二号被按下,R0置2
LINE2:
MOVR0,#04H;
四号被按下,R0置4
LK3:
ACALLLKP
ACALLKS1
CJNEA,#18H,LK3;
判键释放否,未释放,则循环
AJMPKEY1
LKP:
MOVA,R0
MOVDPTR,#TAB
MOVCA,@A+DPTR;
根据显示数据来查表取段码
MOVDPTR,#6000H
MOVX@DPTR,A
CJNER0,#01H,J2;
R0不为1,即不是一号键按下时,转J2处理
MOVDPTR,#8000H
SJMPXS
J2:
CJNER0,#02H,J3;
R0不为2,即不是二号键按下时,转J3处理
LED2:
MOVDPTR,#0A000H
J3:
CJNER0,#03H,J4;
R0不为3,即不是三号键按下时,转J4处理
LED3:
MOVDPTR,#0C000H
J4:
CJNER0,#04H,KEY1;
R0不为4,即没有确定键按下时,转KEY1重新扫描
MOVDPTR,#0E000H
XS:
MOVX@DPTR,A;
段码送入段地址
RET
KS1:
CLRP1.5;
判断有无键按下子程序
ANLA,#18H
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H
DB82H,0F8H,80H,90H,88H,83H,0C6H
DB0A1H,86H,8EH,0FFH
DELAY:
MOVR5,#14H;
延迟10ms子程序
LOOP2:
MOVR6,#0F9H
LOOP1:
DJNZR6,LOOP1
DJNZR5,LOOP2
END
中的程序流程图为图2:
N
Y
图2中的程序流程图
中的程序:
LJMPMAIN
ORG1000H
MAIN:
MOV63H,#10H
MOV62H,#10H
MOV61H,#10H
MOV60H,#10H;
初始不显示键号
KEY:
有键闭合,跳LK1
NI:
ACALLDIR;
无键闭合,调用显示子程序后,跳KEY
AJMPKEY
ACALLDL12ms;
可能有键闭合,延迟12ms,软件去抖
CJNEA,#18H,LK2;
经去抖动,判键确实闭合,跳LK2去处理
AJMPKEY;
抖动引起,跳KEY
P1.5代表第一列,有键按下
SETBP1.6;
P1.6代表第二列,无键按下
MOVA,P1;
读行状态
JBACC.3,LONE;
第一行为高,无键闭合,跳LONE,转判第二行
MOVR5,#01H;
第一个键闭合,键号1给R5
AJMPLK3;
跳LK3
LONE:
第二行为高,无键闭合,跳NEXT,转判第二列
MOVR5,#03H;
第三个键闭合,键号3给R5
NEXT:
P1.5代表第二列,无键按下
CLRP1.6;
P1.6代表第一列,有键按下
JBACC.3,LONE1;
第一行为高,无键闭合,跳LONE1,转判第二行
MOVR5,#02H;
第二个键闭合,键号2给R5
LONE1:
MOVR5,#04H;
第四个键闭合,键号4给R5
ACALLYIDONG;
调用移动显示子程序,显示按键的键号
调用显示子程序,显示按键的键号
CJNEA,#18H,LKP;
重新开始判键
CLRP1.5
ANLA,#18H
YIDONG:
MOV60H,61H;
移动显示子程序,从左向右移动
MOV61H,62H
MOV62H,63H
MOV63H,R5
DIR:
MOVA,63H;
最左边数码管
查表
MOVDPTR,#6000H;
段控制口
MOVDPTR,#8000H;
位控制口
MOVA,62H
CJNEA,#10H,DIR1;
只按下一个键,返回,只有一个管显示
AJMPFANHUI
DIR1:
MOVA,62H;
从左第二个数码管
MOVCA,@A+DPTR
MOVDPTR,#0A000H
MOVA,61H
CJNEA,#10H,DIR2;
只按下两个键,返回,只有两个管显示
DIR2:
MOVA,61H;
从左第三个数码管
MOVDPTR,#0C000H
MOVA,60H
CJNEA,#10H,DIR3;
超过四个键按下,全部显示
AJMPFANHUI;
只按下三个键,返回,只有三个管显示
DIR3:
MOVA,60H;
从左第四个数码管
FANHUI:
RET
DL12ms:
MOVR7,#0CH;
延迟12ms子程序
DL:
MOVR6,#0FFH
DL6:
DJNZR6,DL6
DJNZR7,DL
DB0C0H,0F9H,0A4H,0B0H,99H,92H;
段码表
DB82H,0F8H,80H,90H,88H,83H
DB0C6H,0A1H,86H,8EH,0FFH
良的程序流程图
为图3:
图3良的程序流程图
良的程序:
ORG000BH
LJMPITOP
MAIN:
MOVSP,#80H
MOV71H,#00H
MOV72H,#00H
MOV73H,#00H
MOV74H,#00H
MOV60H,#00H
MOV61H,#00H
MOV50H,#00H
MOV51H,#00H
MOV30H,#00H
MOV31H,#00H
MOVR0,#00H
MOVR1,#00H
MOVTMOD,#01H;
设T0工作方式1
MOV20H,#0AH;
装入中断次数
CLRA
MOV40H,A;
时单元清零
MOV41H,A;
分单元清零
MOV42H,A;
秒单元清零
SETBET0;
允许T0申请中断
SETBEA;
CPU开中断
MOVTH0,#3CH;
给T0装入计数初值
MOVTL0,#0B0H
SETBTR0;
启动T0
HERE:
ACALLDIR;
调用显示子程序
NEXT0:
CJNER1,#00H,NEXT1;
R1不等于0转NEXT1处理
MOV74H,51H;
分的十位
MOV73H,#11H;
"
-"
MOV72H,30H;
时的个位
MOV71H,31H;
时的十位
AJMPPD
NEXT1:
CJNER1,#01H,NEXT2;
R1不等于1转NEXT2处理
MOV74H,50H;
分的个位
MOV73H,51H;
MOV72H,#11H;
MOV71H,30H;
NEXT2:
CJNER1,#02H,NEXT3;
R1不等于2转NEXT3处理
MOV74H,#11H;
MOV73H,50H;
MOV72H,51H;
MOV71H,#11H;
NEXT3:
CJNER1,#03H,NEXT4;
R1不等于3转NEXT4处理
MOV74H,61H;
秒的十位
MOV72H,50H;
MOV71H,51H;
AJMPPD
NEXT4:
MOVR1,#0FFH
MOV74H,60H;
秒的个位
MOV73H,61H;
MOV71H,50H;
PD:
CJNER0,#03H,HER
INCR1
HER:
AJMPHERE
ITOP:
重新装入初值
DJNZ20H,TURE;
一秒未到返回
重置中断次数
MOVA,#01H;
秒单元增一
INCR0
ADDA,42H
DAA;
秒单元十进制调整
秒的BCD码保存秒单元
CJNEA,#60H,TURE;
是否到60秒,未到则返回
MOV42H,#00H;
计满60秒,秒单元清零
分单元增一
ADDA,41H
分单元十进制调整
分的BCD码存回分单元
是否到60分,未到则返回
MOV41H,#00H;
计满60分,分单元清零
时单元增一
ADDA,40H
时单元十进制调整
时的BCD码存回分单元
CJNEA,#24H,TURE;
是否到24时,未到则返回
MOV40H,#00H;
计满24时,时单元清零
TURE:
RETI;
中断返回
DIR:
MOVA,42H;
秒"
的BCD码存入A
ANLA,#0FH;
屏蔽A的高四位
MOV60H,A;
秒单元的个位存入60H
MOVA,42H;
ANLA,#0F0H;
屏蔽A的低四位
SWAPA
MOV61H,A;
秒单元的十位存入61H
MOVA,41H;
分"
ANLA,#0FH;
MOV50H,A;
分单元的个位存入50H
MOV51H,A;
分单元的十位存入51H
MOVA,40H;
时"
MOV30H,A;
时单元的个位存入30H
MOV31H,A;
时单元的十位存入31H
MOVA,74H
MOVDPTR,#6000H;
段控制口,秒或分的个位在第四个数码管显示
MOVDPTR,#0E000H;
MOVA,73H
MOVCA,@A+DPTR;
段控制口,秒或分的十位在第三个数码管显示
MOVDPTR,#0C000H;
MOVA,72H
段控制口,分或时的个位在第二个数码管显示
MOVDPTR,#0A000H;
MOVA,71H
段控制口,分或时的十位在第一个数码管显示
MOVDPTR,#8000H;
TAB:
DB0A1H,86H,8EH,0FFH,0BFH
MOVR5,#14H;
优的程序流程图为图4
优的程序:
MOVR3,#0FFH
调用判断是否有键按下子程序
LJMPNEXT0;
无键闭合,调用显示程序,延时
抖动引起,跳NEXT0
S2未按下,跳LINE1处理
INCR3
LK3:
CJNER3,#00H,KAI;
R3不等于0时开中断
CLRTR0;
R3等于0,关中断
XUN:
ACALLDIR
CJNEA,#18H,XUN;
判断关中断的键是否释放
JBTR0,NEXT0
JBACC.4,NEXT;
MOVR1,#02H;
显示对应数码管分的位置
S3键按下,分单元增一
CJNEA,#60H,LK4;
计满60分,分单元清零
LJMPLK4
JBTR0,NEXT0
SETBP1.5;
MOVR1,#00H;
显示对应数码管时的位置
CJNEA,#24H,LK4;
计满24时,时单元清零
JBACC.4,TT
MOVR0,#00H;
显示对应数码管秒的位置
MOVR1,#04H
TT:
MOVR3,#0FEH
KAI:
R3不等于0时,开中断
LK4:
ACALLDIR
CJNEA,#18H,LK4;
分的十位存在第四个数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 键盘 显示 单片机 实习 报告