【单片机】编码键盘实验

实 验 报 告

                                            

专业___软件学院___  班级__4__  学号__123012005158__  

实验日期:     2007    11    12       报告退发 (订正 重做)             

课程       单片机程序设计         实验名称      编码键盘实验             

一、实验目的

掌握编码键盘的原理和使用方法

 

二、实验环境

    PC,51,KC

 

三、实验内容、步骤和结果分析

  编写键盘扫描程序,按下KEY1的时候LED显示1, 按下KEY2的时候LED显示2,……….

程序如下:

       org 0000h

       ajmp main

       org 0013h

       ajmp intr1

main:      mov a,#0ffh

       mov p1,a

       mov ie,#84h

       setb it1

       setb tr0        

        setb et0        

        setb ea

       mov p0,#00h

       mov p1,#0ffh

       ;mov p1,#0fh

       sjmp $

 

intr1:       mov p1,#0fh

       mov a,p1 ;取出p1

       anl a,#0fh       ;屏蔽高四位

       jnb acc.0,k0    ;判断p1.0~p1.4中哪个键被按下

       jnb acc.1,k1

       jnb acc.2,k2

       jnb acc.3,k3

 

 

 

exit: ;setb ea

       reti

k0:   ;ajmp KEY0

       mov r3,#00h   ;0按下

       ajmp setrow    ;跳转到计算行号

k1:   mov r3,#01h   ;1

       ajmp setrow

k2:   mov r3,#02h   ;2

       ajmp setrow

k3:   mov r3,#03h   ;3

       ajmp setrow

 

setrow:   mov p1,# 0f 0h ;p1重新复制

       mov a,p1

       anl a,# 0f 0h     ;屏蔽低4

       jnb acc.4,row0       ;计算行号

       jnb acc.5,row1

       jnb acc.6,row2

       jnb acc.7,row3

      

row0:      mov r4,#00h   ;0

       ajmp getr

row1:      mov r4,#01h   ;1

       ajmp getr

row2:      mov r4,#02h

       ajmp getr

row3:      mov r4,#03h

       ajmp getr

 

getr: mov a,#00h    ;计算键值

       mov a,r4

       rl a          ;4倍数计算

       rl a

       add a,r3   ;4*R4+R3

       mov r5,a

       cjne r5,#00h,key1;判断键值

       mov a,#02h    ;0,显示,下同

         mov p2,a

       mov a,#3fh

       mov p0,a

       ajmp exit

key1:      cjne r5,#01h,key2

       mov a,#02h

         mov p2,a

       mov a,#06h

       mov p0,a

       ajmp exit

key2:      cjne r5,#02h,key3

       mov a,#02h

         mov p2,a

       mov a,#5bh

       mov p0,a

       ajmp exit       

key3:      cjne r5,#03h,key4

       mov a,#02h

         mov p2,a

       mov a,#4fh

       mov p0,a

       ajmp exit

key4:      cjne r5,#04h,key5

       mov a,#02h

         mov p2,a

       mov a,#66h

       mov p0,a

       ajmp exit

key5:      cjne r5,#05h,key6

       mov a,#02h

         mov p2,a

       mov a,#6dh

       mov p0,a

       ajmp exit

key6:      cjne r5,#06h,key7

       mov a,#02h

         mov p2,a

       mov a,#7dh

       mov p0,a

       ajmp exit

key7:      cjne r5,#07h,key8

       mov a,#02h

         mov p2,a

       mov a,#07h

       mov p0,a

       ajmp exit

key8:      cjne r5,#08h,key9

       mov a,#02h

         mov p2,a

       mov a,#7fh

       mov p0,a

       ajmp exit

key9:      cjne r5,#09h,key10

       mov a,#02h

         mov p2,a

       mov a,#6fh

       mov p0,a

       ajmp exit

key10:     cjne r5,#0ah,key11

       mov a,#02h

         mov p2,a

       mov a,#77h

       mov p0,a

       ajmp exit

key11:     cjne r5,#0bh,key12

       mov a,#02h

         mov p2,a

       mov a,#7ch

       mov p0,a

       ajmp exit

key12:     cjne r5,#0ch,key13

       mov a,#02h

         mov p2,a

       mov a,#39h

       mov p0,a

       ajmp exit

key13:     cjne r5,#0dh,key14

       mov a,#02h

         mov p2,a

       mov a,#5eh

       mov p0,a

       ajmp exit

key14:     cjne r5,#0eh,key15

       mov a,#02h

         mov p2,a

       mov a,#79h

       mov p0,a

       ajmp exit

key15:    

       mov a,#02h

         mov p2,a

       mov a,#71h

       mov p0,a

       ajmp exit

       end

 

    实验成功,能在51板上通过按键让电子数码管进行显示相应的数字

四、讨论

本次实验主要了解了在51板上的工作原理,在对其电路图进行了一定的了解之后使程序编写显得比较明了.起先实现了每一列可以按键,但是不懂如何进行移位来判断,这个问题思考了很久,后来通过对p0端口赋不同的值,取出各自的数字并进行计算才得以实现.

本实验完成,了解了键盘的外部中断的工作原理.

 

 

 

 

 

你可能感兴趣的:(【单片机】编码键盘实验)