PS2 Keyboard Interface with AVR MCU using ATmega8 microcontroller

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.
Return Value:

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.
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

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top