版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、 实验名称:键盘扫描及显示设计实验二、 实验目的 1学习按键扫描的原理及电路接法;2掌握利用8255完成按键扫描及显示。三、实验内容及步骤1. 实验内容 编写程序完成按键扫描功能,并将读到的按键值依次显示在数码管上。实验机的按键及显示模块电路如图1所示。按图2连线。图1 键盘及显示电路图2 实验连线2. 实验步骤 (1)按图1接线; (2)键入:check命令,记录分配的i/o空间; (3)利用查出的地址编写程序,然后编译链接; (4)运行程序,观察数码管显示是否正确。四、流程图开 始初始化缓冲用于存放键值初始化8255工作方式显示刷新及清屏无按键扫描小键盘按键有按键显示刷新及清屏无按键扫
2、描小键盘按键有按键依次检测1-4列,确定是第几行按键按下将按键保存到缓冲区显示刷新及清屏否按键是否弹起否是否检测完是是五、源程序;keyscan.asm;键盘扫描及数码管显示实验;*根据check配置信息修改下列符号值*ioy0 equ 9800h ;片选ioy0对应的端口始地址;*my8255_a equ ioy0+00h*4 ;8255的a口地址my8255_b equ ioy0+01h*4 ;8255的b口地址my8255_c equ ioy0+02h*4 ;8255的c口地址my8255_mode equ ioy0+03h*4 ;8255的控制寄存器地址stack1 segment s
3、tack dw 256 dup(?)stack1 endsdata segmentdtable db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71hdata ends ;键值表,0f对应的7段数码管的段位值code segment assume cs:code,ds:datastart: mov ax,datamov ds,ax mov si,3000h ;建立缓冲区,存放要显示的键值mov al,00h ;先初始化键值为0mov si,almov si+1,almov si+2,almov si+3,almov
4、di,3003h mov dx,my8255_mode ;初始化8255工作方式 mov al,81h ;方式0,a口、b口输出,c口低4位输入 out dx,albegin: call dis ;显示刷新 call clear ;清屏call ccscan ;扫描按键jnz getkey1 ;有键按下则跳置getkey1 mov ah,1 ;判断pc键盘是否有按键按下 int 16h jz begin ;无按键则跳回继续循环,有则退出quit: mov ax,4c00h ;返回到dos int 21hgetkey1:call dis ;显示刷新 call dally call dally c
5、all ccscan ;再次扫描按键jnz getkey2 ;有键按下则跳置getkey2jmp begin ;否则跳回开始继续循环getkey2:mov ch,0fehmov cl,00h ;设置当前检测的是第几列colum: mov al,ch ;选取一列,将x1x4中一个置0 mov dx,my8255_a out dx,al mov dx,my8255_c ;读y1y4,用于判断是哪一行按键闭合 in al,dxl1:test al,01h ;是否为第1行 jnz l2 ;不是则继续判断 mov al,00h ;设置第1行第1列的对应的键值jmp kcodel2:test al,02h
6、 ;是否为第2行 jnz l3 ;不是则继续判断 mov al,04h ;设置第2行第1列的对应的键值 jmp kcodel3:test al,04h ;是否为第3行 jnz l4 ;不是则继续判断 mov al,08h ;设置第3行第1列的对应的键值jmp kcodel4:test al,08h ;是否为第4行 jnz next ;不是则继续判断 mov al,0ch ;设置第4行第1列的对应的键值kcode: add al,cl ;将第1列的值加上当前列数,确定按键值call putbuf ;保存按键值push axkon:call dis ;显示刷新call clear ;清屏call
7、ccscan ;扫描按键,判断按键是否弹起jnz kon ;未弹起则继续循环等待弹起pop axnext: inc cl ;当前检测的列数递增 mov al,chtest al,08h ;检测是否扫描到第4列jz kerr ;是则跳回到开始处 rol al,1 ;没检测到第4列则准备检测下一列mov ch,aljmp columkerr: jmp beginccscan proc near ;扫描是否有按键闭合子程序 mov al,00h mov dx,my8255_a ;将4列全选通,x1x4置0out dx,al mov dx,my8255_c in al,dx ;读y1y4not al
8、and al,0fh ;取出y1y4的反值retccscan endpclear proc near ;清除数码管显示子程序 mov dx,my8255_b ;段位置0即可清除数码管显示 mov al,00h out dx,alretclear endpdis proc near ;显示键值子程序 push ax ;以缓冲区存放的键值为键值表偏移找到键值并显示mov si,3000h mov dl,0f7hmov al,dlagain: push dx mov dx,my8255_a out dx,al ;设置x1x4,选通一个数码管 mov al,si ;取出缓冲区中存放键值 mov bx,
9、offset dtableand ax,00ffhadd bx,ax mov al,bx ;将键值作为偏移和键值基地址相加得到相应的键值 mov dx,my8255_b out dx,al ;写入数码管adpcall dallyinc si ;取下一个键值 pop dx mov al,dltest al,01h ;判断是否显示完? jz out1 ;显示完,返回ror al,1 mov dl,aljmp again ;未显示完,跳回继续out1: pop ax retdis endpputbuf proc near ;保存键值子程序 mov si,dimov si,aldec dicmp di,2fffhjnz gobackmov di,3003hgoback: retputbuf endpdally proc near ;软件延时子程序 push cx mov cx,00ffhd1: mov ax,00ffhd2: dec axjnz d2loop d1po
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版工业厂房设施定期检修合同3篇
- 2025版信托资金借款合同模板与合同签订流程解读8篇
- 2025年随车吊租赁与港口货物装卸服务合同3篇
- 2025年度商业地产出售代理合同标的物市场分析报告3篇
- 2025年度绿色环保汽车制造合同3篇
- 2024著作权集体管理合同
- 2025版苗圃场租赁及苗木培育技术支持合同4篇
- 2025年度商业综合体场地租赁合同范本12篇
- 二零二五年房产赎楼风险规避合同范本3篇
- 2025年度个人反担保保证书(家庭装修)3篇
- 2025年温州市城发集团招聘笔试参考题库含答案解析
- 2025版高考物理复习知识清单
- 除数是两位数的除法练习题(84道)
- 2025年度安全检查计划
- 2024年度工作总结与计划标准版本(2篇)
- 《光伏发电工程工程量清单计价规范》
- (完整版)保证药品信息来源合法、真实、安全的管理措施、情况说明及相关证明
- 营销专员绩效考核指标
- 毕业论文-山东省农产品出口贸易的现状及对策研究
- 音乐思政课特色课程设计
- 2023年四川省乐山市中考数学试卷
评论
0/150
提交评论