Microcontrollers Programming | Assignments
Embedded Microcontroller Programming in C- Assignments
In Emertxe each one of our Assignments will ensure you apply the concept you have leant in your classroom. By solving these assignments, you will go through a systematic problem-solving approach which include requirement understanding, algorithm design, pseudocode creation, dry run and final execution. As you move from simple to more complex assignments of each module it will slowly start building your self-confidence. Here are some of the microcontroller programs for beginners!
Assignments
Description:
Implement a pattern generator on LEDs. Pattern: To glow the LEDs as if a Train is coming out of a tunnel and entering again into the tunnel, in both directions i.e. left to right and right to left alternately.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Working principle of LEDs
Objective:
To understand
- How LEDs are interfaced to the uC.
- Basic working of the PORT.
- Working of LEDs.
- Concepts of current sourcing & current sinking.
Requirement:
- There are eight LEDs on the Board, the LEDs has to glow one by one after some specific delay between them from Left to Right by default.
- Once all LEDs are ON, the LEDs should off one by one from Left to Right.
- Once all LEDs are OFF, Change the direction from Right to Left.
- Again, the LEDs has to glow one by one after some specific delay between them from Right to Left.
- Once all LEDs are ON, the LEDs should off one by one from Right to Left with the same delay used while glowing.
- Once all LEDs are OFF. Change the direction from Left to Right and repeat the process.
Inputs:
Software Control
Note:
Use program cycles to implement the above program.
Sample Execution / Output:
Description:
Embedded C program to display the particular pattern on the LEDs controlled by the switches.
Pattern: To glow the LEDs as if a Train is coming out of a tunnel and entering again into the tunnel, in both directions i.e. left to right and right to left alternately. The direction of the flow should be changed by a key press.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Working principle of LEDs
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
Objective:
To understand
- How LEDs are interfaced to the PORT.
- Basic working of the PORT.
- Working of LEDs
- Concepts of current sourcing & current sinking.
- How to interface the digital switches to the uC.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
Requirement:
- There are eight LEDs on the Board, the LEDs has to glow one by one after some specific delay between them from Left to Right by default as soon as the power supply to the board is given.
- Once all LEDs are ON, the LEDs should off one by one from Left to Right.
- Once all LEDs are OFF, Change the direction from Right to Left. changing the direction has to occur only after pressing the digital switch-1 dedicated for it.
- Again, the LEDs has to glow one by one after some specific delay between them from Right to Left.
- Once all LEDs are ON, the LEDs should off one by one from Right to Left with the same delay used while glowing.
- Once all LEDs are OFF. Change the direction from Left to Right, changing the direction has to occur only after pressing the digital switch-1 once again and repeat the process.
Inputs:
DKS-1(SW15) for direction contro
Note:
There are four Digital Keys on the Digital Key pad, use SW15 key for giving the input.
Special case: Say, LEDs are glowing from Left to Right and 4th LED is glowing at the time of pressing the Switch, from that instant the direction has to reverse / change. Meaning from 4th LED onwards, the LEDs has to turn OFF one by one in the reverse direction.
Use program cycles to implement the above program.
Abbreviation:
DKS – Digital Key Switch
Sample Execution / Output:
Description:
Write a Embedded C program to display the multiple patterns on the LEDs controlled by the switches. For every switch, dedicate a LEDs glow pattern. The pattern should change on key press.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Working principle of LEDs
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
Objective:
To understand
- How LEDs are interfaced to the uC.
- Basic working of the PORT.
- Working of LEDs
- Concepts of current sourcing & current sinking.
- How to interface the digital switches to the uC.
- Concepts of Pull-Up and Pull-down resistors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
Requirement:
- Upon giving the power supply, all 8 LEDs should be OFF.
- Now, press switch-1 on the Digital Keypad, LEDs should glow according to the pattern-1.*
- Press switch-2, LEDs should glow according to the pattern-2*
- Press switch-3, LEDs should glow according to the pattern-3*
- Press switch-4, LEDs should glow according to the pattern-4*
*pattern-1: The LEDs should glow from Left to Right and Right to left as explained in the assignment-1.
*pattern-2: The LEDs should glow from left to Right and switch off from left to right, no direction control/ direction change.
*pattern-3: The LEDs should blink alternately.
*pattern-4: The LEDs has to blink nibble wise, i.e first 4 LEDs will be ON, next 4 LEDs will be OFF, after first 4 LEDs will be OFF,
4 LEDs will be ON.
Inputs:
Digital Keypad
Note:
There are four Digital Keys on the Digital Key pad, use SW15, SW16, SW17, SW18 keys for giving the input.
Abbreviation:
DKS – Digital Key Switch
Sample Execution / Output:
Description:
Implement the time separator with Timer0, Timer1 and Timer2. The system should generate the time separator (half second blink) of the digital clock with multiple timers. Every timer should have dedicated indicator (say 1 LED per timer)
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Working principle of LEDs
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- Working of Timers
- How to configure the various timers.
- Timer Interrupt
- I/O port configuration
Objective:
To understand
- How LEDs are interfaced to the uC.
- Basic working of the PORT.
- Working of LEDs
- Concepts of current sourcing & current sinking.
- Working of Timers.
- How to calculate the delays based on the timers.
- How to write ISR and working of it.
Requirement:
On giving power supply to the board, all 3 LEDs should blink every half second in sync.Dedicate one timer for each LED.
- Timer0 to LED1
- Timer1 to LED2
- Timer2 to LED3
Inputs:
Timers
Sample Execution / Output:
Description:
Implement a LED dimmer application using Bit Banging PWM (Shown in the video). The brightness of the LED illumination should be based on the user input using the switches.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Working principle of LEDs
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- Working of Timers
- How to configure the various timers.
- Timer Interrupt
- I/O port configuration
Objective:
To understand
- How LEDs are interfaced to the uC.
- Basic working of the PORT.
- Working of LEDs
- Concepts of current sourcing & current sinking.
- How to interface the digital switches to the uC.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
Pulse width modulation related terminologies
Requirement:
- On giving power supply to the board, LED should glow with half brightness (Duty cycle = 50%).
- Out of four Digital Keys, use SW15, SW16 for increasing and decreasing the brightness of the LED.
- On pressing SW15, the brightness of LED should increase (Increase duty cycle by 10% from current value)
- On pressing SW16, the brightness of LED should decrease (decrease duty cycle by 10% from current value)
Inputs:
- DKS 1 to Increase Brightness
- DKS 2 to Decrease Brightness
- Program Cycles as Period
Note:
You need to consider the program cycles as period for this implementation.
Sample Execution / Output:
Description:
Implement the time separator with Timer 0, Timer 1 and Timer 2. The system should generate the time separator (half second blink) of the digital clock with multiple timers. Every timer should have dedicated indicator (say 1 LED per timer)
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Working principle of LEDs
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- Working of Timers
- How to configure the various timers.
- Timer Interrupt
- Generating interrupt for different time intervals
- PMW
- What is on time, off time and duty cycle
- How average value varies with duty cycle
- I/O port configuration
Objective:
To understand
- How LEDs are interfaced to the uC.
- Basic working of the PORT.
- Working of LEDs
- Concepts of current sourcing & current sinking.
- How to interface the digital switches to the uC.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- Pulse width modulation related terminologies
- How to generate timer interrupt for different time intervals
Requirement:
- On giving power supply to the board, LED should glow with half brightness (Duty cycle = 50%).
- Out of four Digital Keys, use SW15, SW16 for increasing and decreasing the brightness of the LED.
- On pressing SW15, the brightness of LED should increace (Increace duty cycle by 10% from current value)
- On pressing SW16, the brightness of LED should decreace (decreace duty cycle by 10% from current value)
Inputs:
- DKS 1 to Increase Brightness
- DKS 2 to Decrease Brightness
- Timer for Dimming
Sample Execution / Output:
Description:
The LED should dim to a fixed brightness (say 25% duty cycle). Once the user presses a switch the LED should glow at 100% duty cycle for 5 seconds and then after 5 seconds time out, the LED should dim back to 25% duty cycle.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Working principle of LEDs
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- Working of Timers
- How to configure the various timers.
- Timer Interrupt
- Generating interrupt for different time intervals
- PMW
- What is on time, off time and duty cycle
- How average value varies with duty cycle
- I/O port configuration
Objective:
To understand
- How LEDs are interfaced to the uC.
- Basic working of the PORT.
- Working of LEDs
- Concepts of current sourcing & current sinking.
- How to interface the digital switches to the uC.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- When to use polling and interrupt in timer
- Pulse width modulation related terminologies.
- How to write the ISRs
Requirement:
- On giving power supply to the board, LED should glow with half brightness (Duty cycle = 25%).
- Out of four Digital Keys, use SW15
- On pressing SW15, LED should glow with maximum brightness (Duty cycle = 100%) for 5 seconds
- After 5 seconds, again LED should glow with half brightness (Duty cycle = 25%)
- Use timer for calculating time out
Inputs:
- DKS 1 as Interrupt
- Timer for Dimming
Sample Execution / Output:
Description:
Using software PWM implement a LED dimmer application. The brightness of the LED illumination should be based on the user input tuning the potentiometer. You need to consider the program cycles as period for this implementation.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Working principle of LEDs
- PWM
- What is on time, off time and duty cycle
- How average value varies with duty cycle
- ADC
- How to configure the ADC module.
- How to read the value.
- Time required for conversion of analog value to digital
- Preceision and resolution of ADC module
- Range of analog values that ADC module converts to digital value
- I/O port configuration
Objective:
To understand
- How LEDs are interfaced to the uC.
- Basic working of the PORT.
- Working of LEDs
- Concepts of current sourcing & current sinking.
- How to interface the digital switches to the uC.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- Pulse width modulation related terminologies.
- Concept and different methods involved in analog to digital convertion
Requirement:
On giving power supply to the board, read the value of pot. Based on that value, set the duty cycleAgain read the pot value
- If it is different from previous value, update duty cycle accordingly
- If it is same do nothing
Repeat the same on regular interval or continuously
Use program cycles to generate PWM
Inputs:
- Potentiometer 1 as Knob
- Program Cycles as Period
Sample Execution / Output:
Description:
Using Timer based PWM implement a LED dimmer application. The brightness of the LED illumination should be based on the user input tuning the potentiometer. You need to use the system timer to generate the PWM.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Working principle of LEDs
- PWM
- What is on time, off time and duty cycle
- How average value varies with duty cycle
- ADC
- How to read the value.
- Time required for conversion of analog value to digital
- Preceision and resolution of ADC module
- Range of analog values that ADC module converts to digital value
- Working of Timers
- How to configure the timer.
- Timer Interrupt
- Generating interrupt for different time intervals
- I/O port configuration
Objective:
To understand
- How LEDs are interfaced to the uC.
- Basic working of the PORT.
- Working of LEDs
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- How to generate timer interrupt for different time intervals
- Pulse width modulation related terminologies
- Concept and different methods involved in analog to digital convertion
Requirement:
On giving power supply to the board, read the value of pot. Based on that value, set the duty cycle Again read the pot value
- If it is different from previous value, update duty cycle accordingly
- If it is same do nothing
Repeat the same on regular interval or continuously
Use timer for PWM
Inputs:
- Potentiometer 1 as Knob
- Timer for Dimming
Sample Execution / Output:
Description:
Implement a static clock on SSD using internal timer. The clock should display Hours and Minutes fields. The decimal point of the hours field should blink every half second. Let the clock start from 12.00.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different digits
- Value to be loaded to glow point in SSD in the hour field(i.e from the left second SSD).
- Working of Timers
- How to configure the timer.
- Timer Interrupt
- Generating interrupt for different time intervals
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- How SSD works.
- Concept of common cathode and common anode.
- Values to be loaded for displaying different digits.
- How to generate timer interrupt
Requirement:
- On giving power supply to the board, Clock should display 12.00 (Decimal point should be glowing)
- Should configure timer interrupt for every half seconds
- On each interrupt toggle/blink decimal point
- On every 2 interrupts update clock
Inputs:
Timer
Note:
- Minutes field range -> 00-59
- Hours field range -> 00-24
- On reaching 23.59 clock should reset(00.00) and start again
Sample Execution / Output:
Description:
Implement a 4 digit down counter with variable frequency. The system should count from 9999 to 0000 and then should stop. The count source would be the program cycles. The frequency of the counting would be varied using a potentiometer. If the potentiometer is tuned to max position the counting should be 10 times faster than the default. The result would be displayed on SSDs.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different digits
- What is commom cathode and common anode
- ADC
- How to read the value.
- Time required for conversion of analog value to digital
- Resolution and linearity of ADC module
- Range of analog values that ADC module converts to digital value
- Method used for conversion
- I/O port configuration
Objective:
To understand :
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resistors and Need of it.
- Working principle of the SSD
- Concept of common cathode and common anode.
- Values to be loaded for displaying different numbers in SSD
- Concept and different methods involved in analog to digital conversion
- Specifications related to ADC
Requirement:
- On giving power supply to the board, SSD should display 9999 (Four digit number. Use all 4 SSDs)
- Depending on the value of the pot, the four digit number in SSDs should start decrementing
- In case if the value of pot is changed, the speed of decrementing should vary accordingly
- This stops after reaching 0000
Inputs:
- Program Cycles as Count
- Potentiometer 1 for frequency control
Sample Execution / Output:
Description:
Implement a dynamic clock with internal timer (Hours and Minutes, 24Hrs Format). The decimal point between hours and minute field should blink every half second. The user should be able to configure the clock if required. Once the clock is in configure mode, the time fields should start blinking at the rate of 500 msecs indicating the edit mode. The user should be able to select the field using a switch. Let the minutes field blink by default in edit mode.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different digits
- What is commom cathode and common anode
- How to blink/toggle the SSD
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- Working of Timers
- How to configure the timer.
- Timer Interrupt
- Generating interrupt for different time intervals
- I/O port configuration
Objective:
To understand
- How LEDs are interfaced to the uC.
- Basic working of the PORT.
- Working of LEDs
- Concepts of current sourcing & current sinking.
- How to interface the digital switches to the uC.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- Pulse width modulation related terminologies.
- Concept and different methods involved in analog to digital convertion
Requirement:
On giving power supply to the board, Clock will be in running mode(Starts ticking from 00.00)
Running mode
- Clock ticks every second
- Decimal point blinks every half second
- System is sensitive only to Set/Edit button.
- On reaching 23.59, rolls back to 00.00 and continue ticking
Edit mode
- System will enter to edit mode on pressing Set/Edit button when it is in running mode
- Clock ticking will stop on entering edit mode
- By default minute field starts blinking every half seconds
- Increment and Decrement buttons are used to change the value of the blinking field.
- Values will not exceed the range specified for that field. It will roll back if it exceeds the range.
- Choose field button can be used to select different fields. This is indicated by blinking choosen field every half second
- On pressing choose field button, the field that will be selected is the next field which is left to the current field in selection.
- If there is no field is left on the left, then the right most field is selected.
- In order to set the clock to new time, Set/Edit button is pressed
- On pressing Set/Edit button, clock enters running mode
Note:
- Minutes field range -> 00-59
- Hours field range -> 00-24
On reaching 23.59 clock should reset(00.00) and start again
Inputs:
- DKS 1 Increment
- DKS 2 Decrement
- DKS 3 Choose Field
- DKS 4 Set / Edit Clock
- Timer
Sample Execution / Output:
Description:
Implement a Timer (Down Count). Timer should start down counting from set Time to 0. The user should be able to preset the timer value from 99 min (Max) to 1 sec (Min) with the help of switches. The preset mode should be indicated by blinking the field chosen every half second. The user will choose the field with the help of switches. The previous set value should be loaded after time expiration.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different digits
- What is commom cathode and common anode
- How to blink/toggle the SSD
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- Working of Timers
- How to configure the timer.
- Timer Interrupt
- Generating interrupt for different time intervals
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- Values to be loaded for displaying different numbers in SSD and toggling them
- Working principle of the SSD
- Concepts of common cathode and the anode.
- Concept and different methods involved in analog to digital conversion
- How to write ISR and working of it.
Requirement:
On giving power supply to the board, Timer will be in running mode(Starts down counting from 99, i.e, 99 is the default preset value)Preset mode
- System will enter this mode on pressing Start/Set button when it is in running mode
- Timer stops decrementing on entering this mode
- By default right most field starts blinking every half seconds
- Increment and Decrement buttons are used to change the value of the blinking field.
- Values will not exceed the range specified for that field. It will roll back if it exceeds the range.
- Choose field button can be used to select other field.
- In order to start timer Start/Set button is pressed
- On pressing Set/Set button, clock enters running mode
Inputs:
- MKS 1 Increment
- MKS 2 Decrement
- MKS 3 Choose Field
- MKS 4 Start / Set Timer
- Timer
Sample Execution / Output:
Description:
Implement a 4 digit key press counter. The no of times the key is pressed the system should keep a count of it. The user should be able to reset if required.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different digits
- What is common cathode and common anode
- How to blink/toggle the SSD
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- Detecting and distinguishing between long and normal press of key
- Working of Timers
- How to configure the timer.
- Timer Interrupt
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- How to detect long press of switch
- Values to be loaded for displaying different numbers in SSD and toggling them
- Working principle of the SSD
- Concepts of common cathode and the anode.
- Working of Timers.
- How to write ISR and need of it.
Requirement:
- On giving power supply to the board, counter value is 0000
- On pressing switch, counter value increments by 1
- If it is a long press, then count is reset to zero
Note:
Use timer to detect the long press
Inputs:
- DKS 1 as count input
- DKS 1 Long press to reset the count (2 secs < Press < 5 secs)
Sample Execution / Output:
Description:
Implement a temperature sensor node with SSD display (Shown in the video)..
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different digits
- What is common cathode and common anode
- How to blink/toggle the SSD
- Temperature sensor
- Its specifications like range, accuracy, calibration etc.
- Unit of the temperature read (C or F or K)
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- Specifications of a temperature sensor
- Working principle of the SSD
- Concepts of common cathode and the anode.
- Values to be loaded for displaying different numbers in SSD and toggling them.
Requirement:
On giving power supply to the board, room temperature is displayed on SSD with unit
Inputs:
LM35 Temperature Sensor
Sample Execution / Output:
Description:
Implement a left scrolling number marquee. The system should scroll the static message embedded in code in left direction.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different numbers
- What is commom cathode and common anode
- How to blink/toggle the SSD
- Circular shifting
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Specifications of a temperature sensor.
- Working principle of the SSD
- Concepts of common cathode and the anode.
- Values to be loaded for displaying different numbers in SSD and toggling them
Requirement:
- Static number message in code (10 digit number + 2 spaces)
- Use timer for calculating time out
Inputs:
- DKS 1 as Interrupt
- Timer for Dimming
Sample Execution / Output:
Description:
Implement a scrolling number marquee with direction control. The system should scroll the static message embedded in code. The user should be able to control the display scroll direction.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different numbers
- What is commom cathode and common anode
- How to blink/toggle the SSD
- Circular shifting
- Working principle of Tactile switches
- Tactile Switches – Taking care of De-bouncing
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- Working principle of the SSD
- Concepts of common cathode and the anode.
- Values to be loaded for displaying different numbers in SSD and toggling them
Requirement:
On giving power supply to the board, the static message will start scrolling from right most SSD (left rotaion) by default
Left rotation
- Message scrolls from right most SSD to left most SSD
- Happens when Left rotation key is pressed and also by default when system is powered
Right rotation
- Message scrolls from left most SSD to right most SSD
- Happens when right rotation key is pressed
Stop/Start
- Stops if scrolling or starts scrolling if not
- Now system is sensitive only to Stop/Start button. So it is not possible t change the direction
- On starting scrolling again, message scrolles in that direction in which it was scrolling before stoping
On changing the direction scrolling does not starts from beginning, the direction is reversed in the middle of the message itself
Inputs:
- Static number message in code (10 digit number + 2 spaces)
- DKS 1 to left rotation
- DKS 2 to right rotation
- DKS 3 to Stop / Start
Sample Execution / Output:
Description:
Implement a 10 digit up counter. The system should count up to 9999999999 and then should stop. The count source would be the program cycles. The result would be displayed on CLCD (Without using long data type).
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- CLCD
- Interfacing the CLCD to the uC
- configuring the CLCD
- Difference between command and data
- How to send data and issue command to it
- Checking busy flag
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Working of CLCD
- configuring the CLCD
- Difference between command and data
- How to send data and issue command to it
- Checking busy flag
- How to display characters on CLCD
Requirement:
- On giving power supply to the board, CLCD display the title (Up Counter) on the first line.
- In second line, 0000000000 (10 digit number) starts incrementing
- Increment happens at constant rate
- This stops after reaching count value of 9999999999
Inputs:
Program Cycles as Count
Sample Execution / Output:
Description:
Implement a 10 digit down counter. The system should count down from 9999999999 to 0 and then should stop. The count source would be the program cycles. The result would be displayed on CLCD (Without using long data type)
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Execution time associated with some of C statements
- CLCD
- Setting up the CLCD
- Difference between command and data
- How to send data and issue command to it
- Checking busy flag
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Working of CLCD
- How to display characters on CLCD
Requirement:
- On giving power supply to the board, CLCD display the title (Down Counter) on the first line.
- In second line, 9999999999 (10 digit number) starts decrementing
- Decrement happens at constant rate
- This stops after reaching count value of 0000000000
Inputs:
Program Cycles as Count
Sample Execution / Output:
Description:
Implement a 10 digit down counter with preset. The user should be able to preset the count value from 9999999999 (Max) to 1 (Min) with the help of switches and the counter should start down counting to 0.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Execution time associated with some of C statements
- CLCD
- Setting up the CLCD
- Difference between command and data
- How to send data and issue command to it
- Checking busy flag and why
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Time taken by uC to executes different statements written in C
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- Working of CLCD
- How to display characters on CLCD
Requirement:
On giving power supply to the board, CLCD display the title (PresetDownCount) on the first line
In second line, counter starts down counting from 9999999999(i.e, 9999999999 is the default preset value)
Running mode
- Counter decrements at constant rate
- System is sensitive only to Start/Set button.
- On reaching 0000000000, again starts decrementing from preset value last set.
Preset mode
- System will enter this mode on pressing Start/Set button when it is in running mode
- Counter stops decrementing on entering this mode
- Choose field button is used to select different digits.
- By default right most digit is selected. This is indicated by displaying cursor below that digit
- On reaching left most digit, if Choose field button is pressed again right most digit is selected
- Increment and Decrement buttons are used to change the value of the selected digit
- Values will not exceed the range specified for that digit. It will roll back if it exceeds the range.
- In order to start counter Start/Set button is pressed
Inputs:
- Program Cycles as Count
- DKS 1 Increment (roll back once max is reached)
- DKS 2 Choose Field
- DKS 3 Start / Set counter
Sample Execution / Output:
Description:
Implement a right scrolling message marquee. The system should scroll the static message embedded in code in right direction (Screen size should be 16 chars)
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- CLCD
- Configuring the CLCD
- Difference between command and data
- How to send data and issue command to it
- Checking busy flag and why
- Shifting the dispay
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Working of CLCD
- How to display characters on CLCD.
- how to shift the display
Requirement:
On giving power supply to the board, CLCD display the message and starts right scrolling the message at constant rate.
Inputs:
Static Message in code
Sample Execution / Output:
Description:
Implement a Stop Watch with 5 laps. On press of the start key the timer should start incrementing. By using the lap key the user should be able to capture the lap timing. There should be an option of 5 lap timing which can be viewed using scroll keys. By pressing the start key again the timer should stop. The previous reading would get cleared (or reset) if the user presses the lap key while the timer is not running.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- CLCD
- Setting up the CLCD
- Difference between command and data
- How to send data and issue command to it
- Checking busy flag and why
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- Working of Timers
- How to set Timer Interrupt
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Working of Timers.
- How to write ISR and working of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- Working of CLCD
- How to display characters on CLCD
Requirement:
- On press of the start key(DKS 1) the timer should start incrementing.
- By using the lap key(DKS 2) the user should be able to capture the lap timing.
- By pressing the start key again the timer should stop.
- The previous reading would get cleared (or reset) if the user presses the lap key while the timer is not running.
- To view the messages, use DKS 3 and DKS 4.
- One message at a time should be displayed on to the second line.
- When Scroll-up key is pressed, one message at a time should be scrolled up.
- Simlilarly, when scroll-down key is pressed, one message at a time should be scrolled down.
When the last message is displayed, either scroll-up or scroll-down key is pressed the roll over of the message has to happen.
Inputs:
- DKS 1 to Start / Stop
- DKS 2 Lap / Reset
- DKS 3 Scroll Up
- DKS 4 Scroll Down
- Timer
Sample Execution / Output:
Description:
Implement a dynamic scrolling number marquee with rotation control. The system should scroll the message entered by the user. There should be a provision for the user to enter the message using the digital keypad. Max length of message should be 10 characters. The user should be able to control the display rotation direction.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- CLCD
- Setting up the CLCD
- Difference between command and data
- How to send data and issue command to it
- How to check busy flag and why
- Shifting the dispay
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Working of CLCD
- How to display characters on CLCD and how to shift the display
- Concept of Bouncing and De-bouncing effects on the tactile switches.
Requirement:
- Upon power supply to the board, “Enter message” has to be displayed in the first line of the CLCD.
- Message length is limited to 16 characters.
- By default, first character to be displayed is ‘A’, to select the different characters, the user will be pressing the up key(DKS 1).
- When the user presses the up key(DKS 1), the next incremental character has to be displayed and to accept the character the user has to press DKS 5 key.
- To erase the previous character, the user will be pressing the back space ( DKS 6).
- When the user presses the up key(DKS 2), the next decremental character has to be displayed and to accept the character the user has to press DKS 5 key.
- When the complete message is entered, press DKS 3 to start rotating, by default the message should rotate left.
- To change the direction the DKS 2 will be pressed.
- To stop the rotation, the DKS 3 will be pressed again.
Inputs:
User entered number
- DKS 1 up and left rotation
- DKS 2 down and right rotation
- DKS 3 to stop and start
- DKS 4 to enter message
- DKS 5 to accept the selected character
- DKS 6 to back space
Sample Execution / Output:
Description:
Implement a temperature sensor node. The CLCD should display the current room temperature.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- CLCD
- Setting up the CLCD
- Difference between command and data
- How to send data and issue command to it
- How to check busy flag and why
- Temperature sensor
- Its speifications like range, accuracy, calibration etc
- Tactile Switches – Taking care of De-bouncing
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Interfacing the CLCD to the uC.
- Specifications of a temperature sensor
- Working of CLCD
- How to display characters on CLCD
Requirement:
On giving power supply to the board, CLCD display the title (Temp Sensor) on the first liner
In second line, room temperature is displayed with unit
Inputs:
LM35 Temperature Sensor
Sample Execution / Output:
Description:
Implement a 8 field password access to screen. The user has to enter a key press pattern to unlock the ester egg. If the user succeeds in unlocking the screen, he will be able to read the message. The password should be displayed as * while entry. On failure attempt the LED3 will blink faster for every attempt. The max attempt would be 5 time on which the LED 3 will glow constantly.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- How LED works
- CLCD
- Setting up the CLCD
- Difference between command and data
- How to check busy flag and why
- Shifting the dispay
- Temperature sensor
- Its speifications like range, accuracy, calibration etc
- Tactile Switches – Taking care of De-bouncing
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Working of led
- Working of CLCD
- How to display characters on CLCD and how to shift the display
- Concept of Bouncing and De-bouncing effects on the tactile switches.
Requirement:
On giving power supply to the board, LED blinks at slower rate and CLCD display the pattern entry screen
Pattern entry screen
- Title “Enter Pattern” is displayed on the first line and cursor will be blinking in second line
- System reads the key patteren entered with the help of switches by the user
- On every key press ‘*’ is displayed and blinking cursor is advanced to next location
- On detecteting 8 key presses, systems checks the pattern entered
- If pattern entered is correct, then message is displayed
- If wrong, displays “Wrong Pattern” and increases the blinking rate of led
- If number of attempts made so far is not equal to 5 then one more chance is given (Again pattern entry screen)
- If number of attempts made is 5, then suitable message is displayed to user and no further attempts are provided
Message display screen
- Title “Message” is displayed on the first line
- Secrete message embedded in code is displayed in second line
Inputs:
DKS 1 and DKS 2 as access keys
Sample Execution / Output:
Description:
Implement storage on key press. Save the count value on SSDs counter on press of switch. Begin the count from the value saved after reset or power ON. Use internal EEPROM.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different numbers
- What is commom cathode and common anode
- How to blink/toggle the SSD
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.How SSD is made
- Values to be loaded for displaying different numbers in SSD and toggling them
- How to use EEPROM to store data and getting back the stored data
Requirement:
- On giving power supply(Or on reset) to the board, counter starts incrementing from the value stored in the EEPROM at constant rate
- On pressing switch, count value is captured and stored in EEPROM
- While storing the captured count value counter does not stop
Inputs:
- DKS 2
- Program Cycles as Count
Sample Execution / Output:
Description:
Implement a 4 digit key press counter with persistence. The no of times the key is pressed the system should keep a count of it. The user should be able to reset if required. The count should be saved on the internal EEPROM on a key press.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different numbers
- What is commom cathode and common anode
- How to blink/toggle the SSD
- How to read/write data to EEPROM
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- Detecting and differentiating between long press and normal press of switch.
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- How SSD is made
- Values to be loaded for displaying different numbers in SSD and toggling them
- How to use EEPROM to store data and getting back the stored data
Requirement:
- On giving power supply(Or on reset) to the board, counter value last saved in the EEPROM is displayed on SSD
- Counts from that value on detecting count keypress
- On pressing save switch, count value is stored in EEPROM
- Count value will be reset on detecting the long press of count key
Inputs:
- DKS 1 as Count input
- DKS 1 Long press to reset the count
- DKS 2 to save the count
Sample Execution / Output:
Description:
Implement a 4 digit key press counter with persistence using external EEPROM. The no of times the key is pressed the system should keep a count of it. The user should be able to reset if required. The count should be saved on the External EEPROM on a key press.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different numbers
- What is commom cathode and common anode
- How to blink/toggle the SSD
- How to read/write data to EEPROM
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- Detecting and differentiating between long press and normal press of switch.
- Working of I2C protocol
- How external EEPROM is accesed through I2C
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- How SSD is made
- Values to be loaded for displaying different numbers in SSD and toggling them
- How to use EEPROM to store data and getting back the stored data
Requirement:
- On giving power supply(Or on reset) to the board, counter value last saved in the EEPROM is displayed on SSD
- Counts from that value on detecting count keypress
- On pressing save switch, count value is stored in EEPROM
- Count value will be reset on detecting the long press of count key
Inputs:
- DKS 1 as Count input
- DKS 1 Long press to reset the count
- DKS 2 to save the count
Sample Execution / Output:
Description:
Using Timer based PWM implement a LED dimmer application. The brightness of the LED illumination should be based on the user input using the switches. The brightness level should be indicated on the CLCD.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- How LED works
- PWM
- What is on time, off time and duty cycle
- How average value varies with duty cycle
- CLCD
- Setting up the CLCD
- Difference between command and data
- How to send data and issue command to it
- How to check busy flag and why
- How to generate our own character
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Working of led
- Pulse width modulation related terminologies
- Working of CLCD
- How to display characters on CLCD
- Diference between DDRAM and CGROM in CLCD
- Concept of Bouncing and De-bouncing effects on the tactile switches.
Requirement:
- On giving power supply to the board, LED glows with half brightness (50% duty cycle) and brightness level is shown in CLCD
- Brightness is increased by 10% from the current value on pressing Increment key. And new brightness level is shown in CLCD
- Brightness is decreased by 10% from the current value on pressing Decrement key. And new brightness level is shown in CLCD
- Pressing Increment key when brightness of led is 100% has no effect
- Pressing decrement key when brightness of led is 0% has no effect
Inputs:
- DKS 1 for Increment
- DKS 2 for Decrement
- Timer for dimming
Sample Execution / Output:
Description:
Implement system sleep and wake up while Interrupt on change. The SSD would print a message (say 1234) as the system is active. If the system is inactive for 10 secs then the system should go to sleep mode. The system will wake up as soon as a key press is detected. Toggle LED8 every second.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- SSDs
- What values to be loaded to display different numbers
- What is commom cathode and common anode
- How to blink/toggle the SSD
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- Working of Timers
- How to configure the timer.
- Timer Interrupt
- How to put system into sleep
- What is interrupt on change
- How to put uC to sleep mode
- How to wake up uC on interrupt
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- What is interrupt on change.
- Values to be loaded for displaying different numbers in SSD and toggling them
- How SSD is made
- Working of Timers.
- How to write ISR and need of it.
Requirement:
- On giving power supply to the board, LED glows with half brightness (50% duty cycle) and brightness level is shown in CLCD
- Brightness is increased by 10% from the current value on pressing Increment key. And new brightness level is shown in CLCD
- Brightness is decreased by 10% from the current value on pressing Decrement key. And new brightness level is shown in CLCD
- Pressing Increment key when brightness of led is 100% has no effect
- Pressing decrement key when brightness of led is 0% has no effect
Inputs:
DKS 1 as interrupt to wake.
Sample Execution / Output:
Description:
Implement a key detection feedback using UART. The pressed key should be informed on the serial application.
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- How LED works
- What is RS232, MAX232
- Synchronous and asynchronous communication
- Terminologies like simplex, half duplex and full duplex
- UART protocol
- How to send and receive data
- Setting proper Baud rate
- Details of UART frame
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- PC/Laptop with any Serial monitor application installed
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- UART working, when to use it. Limitations of UART
- Need of RS232, MAX232
Requirement:
- On giving power supply to the board, System is ready to detect the key press
- On detecting key press, depending on which key is pressed dedicated character for key is sent throug UART
- PC/Laptop which is connected to UART of board will receive character sent by uC and displays it
Inputs:
Digital Keypad
Sample Execution / Output:
Description:
Implement a message display using UART and CLCD. The message typed on the serial application should be displayed on the CLCD
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- What is RS232, MAX232
- Synchronous and asynchronous communication
- Terminologies like simplex, half duplex and full duplex
- UART protocol
- How to send and receive data
- Setting proper Baud rate
- Details of UART frame
- CLCD
- Setting up the CLCD
- Difference between command and data
- How to send data and issue command to it
- How to check busy flag and why
- PC/Laptop with any Serial monitor application installed
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resistors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- Working of CLCD
- How to display characters on CLCD
- UART working, when to use it. Limitations of UART
- Need of RS232, MAX232
Requirement:
On giving power supply to the board, system is ready to read the character received via UART. Message is entered serial monitor and the same message is displayed in CLCD
Inputs:
UART
Sample Execution / Output:
Description:
Implement a dynamic scrolling message marquee (10 Chars) with rotation control. The system should scroll the message entered by the user via UART. The user should send # to feed the message to the system, The user input should be updated on the CLCD. Once the message is feed the user has to send # indicating message completion. The message direction is controlled using the digital keypad
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- What is RS232, MAX232
- Synchronous and asynchronous communication
- Terminologies like simplex, half duplex and full duplex
- UART protocol
- How to send and receive data
- Setting proper Baud rate
- Details of UART frame
- CLCD
- Setting up the CLCD
- Difference between command and data
- How to send data and issue command to it
- How to check busy flag and why
- PC/Laptop with any Serial monior application installed
- I/O port configuration
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- Working of CLCD
- How to display characters on CLCD
- UART working, when to use it. Limitations of UART
- Need of RS232, MAX232
Requirement:
- On giving power supply to the board, system is ready to read the character received via UART
- Until ‘#’ is entered uC does not react to any character
- After detecting ‘#’, characters entered is taken as message and is displayed on CLCD (prefered max 10 chars) until ‘#’ is entered again.
- Entered message is now displayed and left scrolled by default
- When right rotation key is pressed scrolling direction changes to right
- When left rotation key is pressed scrolling direction changes to left
- Stop/Start button
- Stops if scrolling or starts scrolling if not
- Now system is sensitive only to Stop/Start button. So it is not possible to change the direction
- On starting scrolling again, message scrolles in that direction in which it was scrolling before stoping
- On changing the direction scrolling does not starts from begining, the direction is reversed in the middle of the message itself
Inputs:
User entered Message via UART
- DKS 1 to left rotation
- DKS 2 to right rotation
- DKS 3 to stop
Sample Execution / Output:
Description:
Implement a baud rate detector
Prerequisites:
Knowledge on
- I/O port configuration
- How to configure the pins as input/output
- How to configure the pins as Digital or analog
- Working principle of Tactile switches.
- Tactile Switches – Taking care of De-bouncing
- What is RS232, MAX232
- Synchronous and asynchronous communication
- Terminologies like simplex, half duplex and full duplex
- How auto-baud detection is done
- UART protocol
- How to send and receive data
- Setting proper Baud rate
- Details of UART frame
- CLCD
- Setting up the CLCD
- Difference between command and data
- How to send data and issue command to it
- How to check busy flag and why
- PC/Laptop with any Serial monior application installed
Objective:
To understand
- Basic working of the PORT.
- Concepts of current sourcing & current sinking.
- Concepts of Pull-Up and Pull-down resitors and Need of it.
- Concept of Bouncing and De-bouncing effects on the tactile switches.
- Working of CLCD
- How to display characters on CLCD
- UART working, when to use it. Limitations of UART
- Need of RS232, MAX232
- What is auto-baud and how it is done
Requirements:
On power up or reset the target should be ready to detect the current data rate being used to communicate with host
Inputs:
Serial Transmission
Sample Execution / Output: