Electronic Projects

For Non-Commercial Use Only

I would appreciate to be credited within your project, if you use any of the source code below. If you have an interesting project going on, I'll be glad about feedback.

The software below comes with no guarantee or warranty except for my good intentions. Further the use of this code implies that the user has a fundamental understanding of electronics and its risks. I'm not responsible for any harm or damage, caused by inproper use of any of the code below.
Any commercial use of parts or all of this code requires the permission of the author.

"Design and test of electronic circuits are 1% inspiration and 99% perspiration."

(Freely derived from Thomas Alva Edison's famous phrase: "Genius is 1% inspiration and 99% perspiration.")
 

Table of Contents [Toc]

FPGA/ASIC Projects
   Mandelbrot/Julia Fractals on Xilinx FPGA
   Dhrystone Benchmark on PowerPC 440 CPU
   Whetstone Benchmark on PowerPC 440 CPU
   Real-Time MIMO-OFDM Testbed

PIC Microcontroller Projects
   Altimeter Project
      Precision Digital Altimeter
   Keyboard Projects
      AT Keyboard Interface V1.xx
      AT Keyboard Interface V2.xx
      AT Keyboard Interface V3.xx
      AT Keyboard Box V2.xx
      AT Keyboard Interface with Morse Code Support V1.xx
      AT Keyboard Interface with Morse Code Support V2.xx

PIC Microcontroller Test Routines
   RS232 Test Programs
      Simple RS232 Interface
      RS232 Communication Test Routine with LCD (1)
      RS232 Communication Test Routine with LCD (2)
      Dual RS232 Communication Routine with LCD
      RS232 Scope V1.02 Test Interface
   LCD Test Programs
      LCDx Test Routine
      Binary to Decimal Test Routine
      Debugging Routine / Bitstream Visualization
   AT Keyboard Test Programs
      AT Keyboard Scan Code Debug Routine
      Numeric Foil-Keypad Calibration Routine
   ADC Test Programs
      NSC ADC12130 Test Interface
   DCF77 Test Programs
      DCF77 Test Interface
   Arithmetic Test Programs
      Test Routine for 16-bit Macro Libary
 

FPGA/ASIC Projects   [Toc] [Top] 

Mandelbrot/Julia Fractals on Xilinx FPGA   [Toc] [Top]
Mandelbrot/Julia Fractals on Xilinx FPGA Floating-point performance assessment of PowerPC 440 RISC CPU
This project shows the implementation of a fractal kernel on the Xilinx ML507 Virtex-5 FPGA prototyping board, including visualization on a TFT display. One of the main objectives of this project was the characterization of the embedded PowerPC 440 compute performance with absent/present single-/double-precision floating-point unit.

Dhrystone Benchmark on PowerPC 440 CPU   [Toc] [Top]
Performance assessment of embedded PowerPC 440 RISC CPU using the Dhrystone 2.1 benchmark
This project seeks to verify the numerous Dhrystone performance numbers of the IBM PowerPC 440 RISC CPU claimed by various press releases and data sheets, as those numbers are almost always listed without any compiler specifics.

Whetstone Benchmark on PowerPC 440 CPU   [Toc] [Top]
Performance assessment of embedded PowerPC 440 RISC CPU using the Whetstone 1.2 benchmark
This project seeks to assess the Whetstone performance of the IBM PowerPC 440 RISC CPU with present and absent double-precision floating-point unit (FPU) running as CPU coprocessor.

Real-Time MIMO-OFDM Testbed   [Toc] [Top]
Real-time MIMO-OFDM testbed
My Ph.D. study in the field of fourth-generation MIMO wireless communication
It was a mixed FPGA/ASIC project with embedded real-time signal processing. My research focus was on VLSI circuits for MIMO preprocessing, with emphasis on QR decomposition-based architectures. The depicted testbed terminal could act either as access point or station, and performed all PHY and MAC layer tasks associated with 4x4 wireless MIMO communication. Additional Ethernet connectivity allowed to establish a wireless network of multiple testbeds and to demonstrate live video streaming across our prototyping system.

Other projects such as a low-cost inertial navigation system (INS), a hybrid stack-register processor, or a mail-collecting robot can be found here.

 

PIC Microcontroller Projects   [Toc] [Top] 

dot matrix LCD
 

Altimeter Project   [Toc] [Top]

Precision Digital Altimeter   [Toc] [Top]
MPXS4100 absolute pressure sensor, PIC16F84 and wireless transmitter & receiver
Altimeter for my radio controlled modelplanes, but can also be used for hiking, climbing, mountaineering and other outdoor activities. Has an excellent resolution of 1 meter and a range of 4100 meters. I still work on it.
 

Keyboard Projects   [Toc] [Top]

PIC and AT keyboard (PS/2)   PIC and AT keyboard (PS/2)

AT Keyboard Interface V1.04   [Toc] [Top]
AT keyboard interface with RS232 link using PIC16F84
AT keyboard to RS232 interface for the personal computer or RS232 compatible devices. This routine converts AT keyboard scan patterns to ASCII characters and sends them afterwards to the target device by using the RS232 transmission protocol. Support of english (QWERTY) and modified swiss-german (QWERTZ) 'codepages'. There is no visual interface at the terminal like a LCD display. Unidirectional data flow: keyboard to RS232 target device.
 
AT Keyboard Interface V2.04   [Toc] [Top]
RS232 terminal with LCD display using PIC16F84
AT keyboard to RS232 interface for the personal computer or RS232 compatible devices. This routine converts AT keyboard scan patterns to ASCII characters and transmits them afterwards to the target device by using the RS232 transmission protocol. Support of english (QWERTY) and modified swiss-german (QWERTZ) 'codepages'. This implementation features a LCD display as visual interface, but only for transmitted characters typed on the local keyboard (unidirectional data flow). RS232 data transmission is carried out using a software routine. No reception of characters sent from RS232 target device, because no RS232 modules with preemptive data reception available yet.
 
AT Keyboard Interface V3.05   [Toc] [Top]
Fully operating RS232 terminal with LCD display using PIC 16C74A
AT keyboard to RS232 interface for the personal computer or RS232 compatible devices. This routine converts AT keyboard scan patterns to ASCII characters and transmits them afterwards to the target device by using the RS232 transmission protocol. Support of english (QWERTY) and modified swiss-german (QWERTZ) 'codepages'. This microcontroller application features a dot matrix LCD display, and makes best use of the microcontroller-internal USART, i.e. completely hardware-based RS232 data transmission and reception. Reception of external serial data is done using an interrupt-based acquisition scheme. Visualization of received data on the first line, user-entered data on the second line of the dot matrix LCD display. This application is best used with a 2 line by 20 or 40 characters LCD display.
 
AT Keyboard Box V2.05   [Toc] [Top]
Fully operating RS232 terminal with LCD display and numeric foil-keypad using PIC16F77
AT keyboard to RS232 interface with completely bi-directional communication capabilities. Multiple input devices are attached, such as an AT keyboard and a small numeric foil-keypad. The application features a dot matrix LCD display to visualize the data received from the RS232 client on the first line, and the characters typed on the locally attached keyboard on the second line. There is also a piezo-beeper for acoustic feedback. This program converts AT keyboard scan patterns to ASCII characters and transmits them afterwards to the target device by using the RS232 transmission protocol. RS232 communication is carried out by the microcontroller-internal USART, i.e. completely hardware-based RS232 data transmission and reception.
Dynamic configuration
of RS232 baud rate setting at start-up (user-customization with 1200 baud - 115200 baud), with 12 seconds inactivity time-out. In case the time-out applies, the user-customization process terminates with the current setting. Default setting after power-up is 9600 baud.
Support of english (QWERTY) and modified swiss-german (QWERTZ) 'codepages'. This application is best used with a 2 line by 20 or 40 characters LCD display.
 
AT Keyboard Interface with Morse Code Support V1.02   [Toc] [Top]
AT keyboard interface with RS232 link and Morse code PWM output using PIC16F84
Technical data as AT Keyboard Interface V1.03 above. Additional pulse-width modulated (PWM) Morse code output. Further parameterizable acoustic Morse code feedback through Piezo beeper.
 
AT Keyboard Interface with Morse Code Support V2.02   [Toc] [Top]
AT keyboard interface with LCD display, RS232 link and Morse code PWM output using PIC16F84
Technical data basically as AT Keyboard Interface V2.03 above (except direct Ctrl-Hex and Alt-Dec entry). Additional pulse-width modulated (PWM) Morse code output. Further parameterizable acoustic Morse code feedback through Piezo beeper.

 

PIC Microcontroller Test Routines   [Toc] [Top]

RS232 Test Programs   [Toc] [Top]

Simple RS232 Interface   [Toc] [Top]
Shows briefly the use of the various RS232 modules (m_rs048, m_rs096, m_rs192). It is more or less the same as the RS232 Communication Test Routine (1), without LCD display. The controller sends approximately every 10 seconds a stand-by statement to the terminal screen and echoes to every character the device gets. RS232 reception is based on PortB0 interrupt.
 
RS232 Communication Test Routine with LCD (1)   [Toc] [Top]
Fully software controlled reception & transmission on interrupt featured PICs
Complete RS232 communication routine for PIC16F84, which allows to display sent characters from the PC on a dot matrix LCD Display and send an acknowledge back to the PC. RS232 reception is based on PortB0 interrupt.
Shows the implementation and function of the modules m_rs232.asm, m_wait.asm, m_lcd.asm and m_lcdv08.asm on the PIC16F84.
 
RS232 Communication Test Routine with LCD (2)   [Toc] [Top]
Fully hardware controlled reception & transmission on PIC16F77 (PIC16C74A)
Complete RS232 communication routine using hardware USART of PIC16F7x, which allows to display sent characters from the PC on a dot matrix LCD Display and sends an acknowledge back to the PC.
Shows the implementation and function of the modules m_wait.asm, m_lcd.asm and m_lcdv08.asm on the PIC16F77 (PIC16C74A).
 
Dual RS232 Communication Routine with LCD   [Toc] [Top]
Dual RS232 reception & transmission on PIC16F77
Microcontroller terminal featuring two independent RS232 interfaces: One RS232 link uses the hardware USART and interrupts, the other one is software-based using only interrupts on PortB0. Display of received ASCII characters and corresponding decimal values on LCD. ASCII values entered on one terminal window are transmitted by RS232 to the controller, displayed on the LCD, and further transmitted to the other terminal window.
Shows the simultaneous use of both hardware- and software-based RS232 communication on the PIC16F77.
 
RS232 Scope V1.02 Test Interface   [Toc] [Top]
This is the test routine for the serial 16 bit data capture from an Excel 97 worksheet.
It shows the implementation of a 16 bit table read in both directions (top-down and bottom-up) to save space. The Excel worksheet visualizes the received data using graphs.
This test program implements one building block of the digital altimeter.
 

LCD Test Programs   [Toc] [Top]

dot matrix LCD

LCDx Test Routine   [Toc] [Top]
Demonstrates the implementation of self-defined characters on a dot matrix LCD display with the module m_lcdx.asm.
 
Binary to Decimal Test Routine   [Toc] [Top]
A counter from 0 to 65'535 on a dot matrix LCD display demonstrates the function of the m_lcdv16.asm module on the PIC16C84.
 
Debugging Routine / Bitstream Visualization   [Toc] [Top]
Demonstrates the 16 bit binary debugging routine with the module m_lcdb16.asm. Requires a dot matrix LCD display.
I've written it to debug the SSP (Synchronous Serial Port) interface to the NSC ADC12130 for my altimeter.
 

AT Keyboard Test Programs   [Toc] [Top]

AT Keyboard Scan Code Debug Routine   [Toc] [Top]
RS232 based scan pattern debug routine for PIC16F84
AT keyboard test routine to visualize and verify scan patterns sent by the keyboard. The scan patterns are fetched by the controller and afterwards sent to the RS232 target device, in this case the PC and an Excel 97 worksheet programmed with Visual Basic to visualize the scan patterns.
 
Numeric Foil-Keypad Calibration Routine   [Toc] [Top]
RS232 based debug and calibration routine for PIC16F77
AT keyboard test routine to visualize and verify the analog values acquired by the PIC microcontroller to convert the numeric foil-keypad entries to decimal values. The setup is basically the same as the AT Keyboard Box V2.05 above.
 

ADC Test Programs   [Toc] [Top]

NSC ADC12130 Test Interface   [Toc] [Top]
Serial interface to 12 bit A/D Converter
Shows the implementation of the synchronous serial connection to the A/D Converter. Auto-Calibration, Auto-Zero and Status Read are made as initial procedures, afterwards the unsigned 12 bit data will be fetched and displayed on the LCD display in binary format.
 

DCF77 Test Programs   [Toc] [Top]

DCF77 Test Interface   [Toc] [Top]
Software-based PWM decoding on PIC16F84 of DCF77 time information
Incorporates standard DCF77 RF to PWM decoder unit based on Temic 4224. Visualization and translation of DCF77 data is done using an Excel 97 work sheet with the ability to acquire and log RS232 data.
 

Arithmetic Test Programs   [Toc] [Top]

Test Routine for 16-bit Macro Libary   [Toc] [Top]
Functional Verification of Macro Library using Microchip MPSIM Simulator
Seeks to verify the arithmetics of the 16-bit macro library m_16bit.asm, i.e., CLR16, MOV16, NEG16, ADD16, SUB16, CMP16, LSR16, LSL16, INC16, and DEC16 operations and the corresponding immediate operations, if applicable. For CMP16 and SUB16 operations, special attention was put on the correct handling of the important status bits, i.e., zero and carry flags.
 

 

Last updated: 2012/12/30

[Toc] [Top]
 

If you see only this page in your browser window,
click here
to get the entire site.