Interfacing PC keyboard to AVR microcontroller

Posted on Feb 5, 2014

In many situations you need some kind of human interface to your microcontroller project. In this example is interfacing AVR microcontroller to standard PC AT keyboard described. According to keyboard timing diagram in bellow picture the keyboard transfers data to host AVR microcontroller. The protocol is: one start bit (always 0), eight data bits

Interfacing PC keyboard to AVR microcontroller
Click here to download the full size of the above Circuit.

, one odd parity bit and one stop bit (always 1). The data is validated during the low period of clock pulse. Clock signal is generated by keyboard and pulses are about 30-50us low and high. The keyboard has a scan code associated with each key. When key is presse a‚ the code is transmitted. If key is is hol down for a while the code is transmitted repeatedly (about 10 times per s). After key is released the brake code is transmitted ($F0). Usually all keys have 8 bit length codes except some keys like Home, Insert and Delay have an extended codes from two to five bytes. The first bytes is always $E0. This is also true for the a‚ breaka‚ sequence e. g. E0 F0 xx The code in example is a simple keyboard to RS232 interface. Scanned codes are translated to ASCII characters and transmitted by UART. The code included in example can be adapted to any AVR microcontroller with SRAM. Algorithm is working in that way: Keyboard actions are handled by INT0 interrupt. The algorithm is quite simple: Store the value of the data line at the leading edge of the of the clock pulse. Clock line is connected to one of interrupt pins (INT0 or INT1). The interrupt wil be executed every clock cycle. And data will be stored at the faling edge. After bits are received the data is decoded by decode function and characters are stored in a buffer. Other special keys (arrows, pagination keys, etc. ) are ignored. We aim to transmit more information by...

Leave Comment

characters left:

New Circuits



Popular Circuits

Optimized 6/9 element VHF Yagi Antenna
AF counter circuits
Beeper Using 1C 555
Review of Arduino DAC solutions
High Voltage Electrolytic Capacitor Reformer
LED Flasher
Class AB output circuit diode coupling
Breaker control signal circuit of the electromagnetic actuator