|
|
BACK
NEXT
2.8.2. Display Keypad
4 x 4 with LCD Character 2 x16
After doing lesson 2.8.1. you can see that how easy to scan
keypad and read data out to LED. In this lesson it's look like lesson
2.8.2. but the data will read out with LCD Character 2 x16.

Figure 2.8.3.Keypad Connection
to Microcontroller
Step
1st
Build the circuit as shown in figure 2.8.3. As you seen on figure 2.8.2
P3.0 trough P3.7 is connected to keypad 4 x 4 and LCD Character 2x16
to read keypad data, connected to P0.0 trough P0.7., P2.0 and P2.1 connected
to RS and EN each.
Step
2nd
In this step, you must tipe the assembly program to scan your keypad
data, we assume that you have already known the editor, we used MIDE-51
to edit the program. ( Download File : exp282.zip
, Download Complete Circuit File : Keypad4x4.pdf)
;the following experiment is used to scan ;keypad 4x4 and result of scan will be released ;to LCD Character row1 bit P2.4 row2 bit P2.5 row3 bit P2.6 row4 bit P2.7 col1 bit P2.0 col2 bit P2.1 col3 bit P2.2 col4 bit P2.3 ; keydata equ 70h keybounc equ 71h keyport equ P2 org 0h start: call keypad4x4 ;calling subroutine keypad4x4 Mov A,keydata ;A = keydata Cjne A,#0FFh,WrLCD; sjmp start ;LOOPING FOREVER PART 1 ; WrLCD: Mov R1,#80h ;Pick DDRAM 1st row and 1st col call write_inst Mov R1,A call write_data ;write data Sjmp start ;LOOPING FOREVER PART 2 ; Init_lcd: mov r1,#00000001b ;Display clear acall write_inst ; mov r1,#00111000b ;Function set, ;Data 8 bit,2 line font 5x7 acall write_inst ; mov r1,#00001100b ;Display on, ;cursor off,cursor blink off acall write_inst mov r1,#00000110b ;Entry mode, Set increment acall write_inst ret ; Write_inst: clr P2.0 ; RS = P2.0 = 0, write mode instruction mov P0,R1 ; D7 s/d D0 = P0 = R1 setb P2.1 ; EN = 1 = P2.1 call delay; call delay time clr P2.1 ; EN = 0 = P2.1 ret ; Write_data: setb P2.0 ; RS = P2.0 = 1, write mode data mov P0,R1 ; D7 s/d D0 = P0 = R1 setb P2.1 ; EN = 1 = P2.1 call delay; call delay time clr p2.1 ; EN = 0 = P2.1 ret ; delay: mov R0,#0 delay1:mov R2,#50 djnz R2,$ djnz R0,delay1 ret ; ;==================================== ; subroutine scan keypad 4x4 ;==================================== Keypad4x4: mov keybounc,#50 ;keybounc = 50 mov keyport,#0FFh ;keyport=P2= FF clr col1 ;col1= P3.0 = 0 Detect:jb row1,key1 ;jump to Key1 if row1=1 djnz keybounc,Detect mov keydata,#00h ;Keydata =00h ret ; key1: jb row2,key2 ;jump to key2 if row2=1 djnz keybounc,key1 mov keydata,#04h ;Keydata = 04h ret ; key2: jb row3,key3 ; idem djnz keybounc,key2 mov keydata,#08h ret ; key3: jb row4,key4 ; idem djnz keybounc,key3 mov keydata,#0Ch ret ; key4: setb col1 clr col2 jb row1,key5 djnz keybounc,key4 mov keydata,#01h ret ; key5: jb row2,key6 djnz keybounc,key5 mov keydata,#05h ret ; key6: jb row3,key7 djnz keybounc,key6 mov keydata,#09h ret ; key7: jb row4,key8 djnz keybounc,key7 mov keydata,#0Dh ret ; key8: setb col2 clr col3 jb row1,key9 djnz keybounc,key8 mov keydata,#02h ret ; key9: jb row2,keyA djnz keybounc,key9 mov keydata,#06h ret ; keyA: jb row3,keyB djnz keybounc,keyA mov keydata,#0Ah ret ; keyB: jb row4,keyC djnz keybounc,keyB mov keydata,#0Eh ret ; keyC: setb col3 clr col4 jb row1,keyD djnz keybounc,keyC mov keydata,#03h ret ; keyD: jb row2,keyE djnz keybounc,keyD mov keydata,#07h ret ; keyE: jb row3,keyF djnz keybounc,keyE mov keydata,#0Bh ret ; keyF: jb row4,Nokey djnz keybounc,keyF mov keydata,#0Fh ret Nokey:mov keydata,#0FFh ret ;================================ ;The end of Keypad 4x4 subroutine ;================================ end
Step
3rd
Safe your assembly program above, and name it with key2.asm (for example)
Compile the program that you have been save by using MIDE-51, see the
software instruction.
Step 4th
Download your hex file ( key2.hex ) into the microcontroller
by using Microcontroller ATMEL ISP software, see the instruction.After
download this hex file you'll see the action of Keypad 4 x 4 ( of course
if your cable connection and your program are corrected )
BACK
NEXT
|
|
Lesson 1:
T
o o l
1.1. Programmer
1.2. Edsim
51
1.3. MIDE-51
1.4. ATMEL
ISP
Lesson 2:
Input Output
2.1.LED
2.2.Swicht
2.3.7
Segmen
2.4.LCD
Character
2.5.ADC
2.6.DAC
2.7.Motor
Stepper
2.8.Keypad
Lesson 3:
Timer Counter
3.1.Basic
3.2.Mode
0
3.3.Mode
1
3.4.Mode
2
3.5.Mode
3
Lesson 4:
Serial Comm.
4.1.Basic
4.2.LED
4.3.Rotate
LED
4.2 ADC
4.3.LCD
Lesson 5:
Interuption
5.1.Basic
5.2.Timer
5.2.External
|