PIC Microcontroller 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]

PIC Projects
   Precision Digital Altimeter
   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 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
 

dot matrix LCD
 

PIC Projects   [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.
 
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 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.
 

Last updated: 17.04.2006

[Toc] [Top]

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