A PC keyboard is an old and trusted human machine interface. Most peoples are familiar with it. When a text entry is required it is the best method. If we can interface the PC keyboard with an AVR MCU we can create a whole lot of interesting applications! This tutorial will focus on our easy to use PS2 keyboard library for AVR MCU.
The PS2 Keyboard Library for AVR
The PS2 Keyboard library for AVR has only two functions one for initializing the library and one for reading a ASCII character from the queue. The keyboard library automatically translates the scan codes to ASCII characters and buffers them in a FIFO queue. That means even if the CPU is busy doing something else and a character arrives from it, it will be automatically buffered in a queue. After that the CPU can read the characters anytime when it is free.
void InitPS2()
Function to initialize the PS2 keyboard library. Internally it initialize the ps2 system and sets up the INT0 isr for handling PS data traffic.
Arguments:
NONE
Return Value:
NONE
char ReadFromKbdQ(uint8_t wait)
Function to read a character from the keyboard buffer. The wait parameter can be 0 or non zero. When wait is non zero the the function will wait if the queue is empty until any character is available in the queue. If wait is 0 then the function returns immediately if the queue is empty returning a 0. If their are some characters pending the the buffer it they will be returned one by one (for each call) in a FIFO(first in first our basis) basis.
Argument:
0: If you want to wait till any key is pressed.
non-zero : if you do not want to wait if the buffer is empty.
Return Value:
The ASCII character read from buffer. 0 if the buffer is empty and wait parameter is 0.
Example Usage
The following example shows you how to display string entered using it to LCD display module. The example uses our popular LCD library for AVRs to control the LCD Module. Please see the related tutorial for more detail on LCD interfacing.
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "lib/kb/ps2.h"
#include "lib/lcd/lcd.h"
void Wait();
int main(void)
For more detail: PS2 Keyboard Interface with AVR MCU using ATmega8 microcontroller