Learn how a seven-segment display can be used. In this lab, you will be writing a program that will keep a count, and then output that count to a seven-segment display.
- AVR Studio4
- AT90USB1286 Trainer
- LED seven-segment display
A seven-segment display is used to display numbers from zero to nine in an easy-to-read decimal format so that the majority of people do not need to know binary. It is made of seven
LEDs, each labeled with an alphabetic letter, like A, B, C, etc. The LEDs are arranged as is shown below:
In order to display a one, for ex, you would set the B and C pins high, since that would light up the B and C LEDs.
Since BCD only goes from zero to nine, it is perfectly adapted to being used to display decimal digits. This also means one digit can fit into four bits, allowing two digits to be “packed” into one byte. In the second part of this lab, you will use this fact to count from 0-99 as opposed to only counting from zero to nine.
1. Start up AVR Studio, and begin a new project named lastname_lab5. The debug platform and microcontroller are still the same, the AVR Simulator and AT90USB1286.
2. Read the datasheet for the seven-segment display, located here:
The data lines for the microcontroller are on port A.
3. Using what you have learned from the data sheet, figure out which lines need to be high for each number to be displayed, and construct a table in your lab notebook.
4. Use the table you've created to prepare a program that will count up from zero to nine, and display that number to the rightmost seven-segment display.
5. Now, extend what you’ve learned to implement a packed BCD counter that counts from zero to 99. The two seven-segment displays use the same data lines, but the left one is toggled by a transistor that is connected to pin D7, so by sending a low on pin D7, the rightmost display is active, and if pin D7 is high, then the leftmost display is active.
Hint: Use the list of AVR assembly instructions located below to check out possible instructions to use in order to make the packed BCD display work:
prepare a program that find outs (PORTA + 4) * PORTB and sends out the result through PORTC and PORTD. Consider all the values unsigned. Trace (single step) through your program using AVR Studio4.
prepare a program to find out the result of (PORTA + PORTB)/2 and sends out the result through PORTC. Consider all the values unsigned. Trace through your program using AVR
prepare a program that find outs (PORTA + 4) * PORTB and sends out the result through PORTC and PORTD. Consider all the values signed. Trace through your program using AVR Studio4.In your report,
1. Identify the most important lessons of this lab exercise.
2. Report any activity that gave you difficulty.
3. Formulate and document a plan for improving your understanding of
a) Packed and unpacked BCD
b) AVR unsigned arithmetic instructions
c) AVR signed arithmetic instructions
4. Answer the following problems.
a) Find the value in R0 and R1 after the following code.
LDI R16, 10
LDI R17, 20
LDI R18, 30
MUL R16, R17
ADD R0, R18
R0 = in hex
R1 = in hex
b) Find the value in R0 and R1 after the following code.
LDI R19, 19
SUBI R19, 10
LDI R30, 30
MUL R30, R19
R0 = in hex
R1 = in hex