Andrew Sperry's profile

Micro-Controller Programming In C

Project 1: Blinking LED
Spring 2016
Project one uses polling methods, driven by an external 8 MHz oscillation crystal, to blink an LED while the push-button is actively pressed. Power is provided by a standard 9V battery connected to a 5V regulator. The ATMEGA32-16PU micro-controller is programmed using Atmel's ICE ISE programmer using C code.
Project 2: Digital Clock
Project two focuses on the use of a 16x2 LCD and 16-Button Keypad. This digital clock & calender combination uses interrupt driven methods to ensure accurate time processing. The 9V battery power supply was switched out for a constant USB power source. The clock operates at one-hundredth of a second. The calender updates accordingly as the clock rolls over to a new day, and also accounts for the day differences during a leap-year. LCD and Keypad drivers were also developed according to specification & datasheet requirements.
 
Project 3: Music-Note Player
Project three adds a speaker to implement a music-note player. Using a wavelength's period, wait-duration is calculated to pulse the signal at different speeds, producing a particular frequency. Pulse-width modulation is used to adjust the sound's volume. The keypad can cycle through multiple songs as well as change the songs tempo and volume. The player produces the standardized notes ranging from C-1 <-> B9. The player also calculates the duration of a beat given the BPM setting which allows for varied note duration (whole, half, quater, etc). 
 
Songs are a custom typedef consisting of an array of notes & duration pairs. 
Project 4: Volt Meter
Project four consisted of using the ATMEGA32 analog-to-digital converter feature offered on the micro-controller's DDRA pins. Hardware and drivers were reconfigured to free up the DDRA pin-set. I also re-soldered the LCD pins since they were an eye-sore. :) The program uses interrupt methods to control 2 dynamic intervals; one for LCD refresh rate and the other for probe-read rate. The LCD tracks the current reading, average reading, max reading, and min reading. The Keypad offers a stop/reset and start button. The clear LED provides a physical re-assurance of the probes state and rate. A multi-position probe test circuit was also developed to easily test 0V, 1V, 2V, 3V, 4V, and 5V as shown in the schematic.
Project 5: Mimic Mania Memory Game
Project five consists of operating the LCD, keypad, speaker, and game controls concurrently. The board's hardware was reconfigured to make room for a more permanent / flexable USB power supply and interactive push-buttons / LEDs used for the game's interaction. The game features four speeds controlled by a beats per minute (bpm) tempo. There is a 100 level max, after which a special victory song is played instead of the more common triple beep failure indicator. The game also uses the microcontroller's EEPROM to store the highscore and a random seed to prevent data loss and repeat sequences after power off.
Micro-Controller Programming In C
Published:

Micro-Controller Programming In C

Developing simple hardware devices controlled by the ATMEGA32-16PU microcontroller.

Published:

Creative Fields