Arduino/C3/Assembly-programming-through-Arduino/English-timed
From Script | Spoken-Tutorial
Revision as of 11:30, 26 October 2018 by Sandhya.np14 (Talk | contribs)
Time | Narration |
00:01 | Welcome to the spoken tutorial on Assembly programming through Arduino. |
00:07 | In this tutorial, we will learn to: interface a seven-segment Display to Arduino board, |
00:15 | write an assembly program to display a digit on seven-segment display and |
00:21 | display a digit on the seven segment display using 7447 IC. |
00:28 | To follow this tutorial, you should have basic knowledge of electronics and Assembly language'. |
00:36 | Refer to the Additional reading material link of this tutorial to know more about: |
00:42 | Arduino - Assembly code reference and Arduino ATmega328 Pin mapping. |
00:50 | To record this tutorial, I am using: Arduino UNO Board, |
00:56 | and Ubuntu Linux operating system version 14.04. |
01:02 | We also require some external devices such as:
Breadboard, |
01:09 | Arduino UNO Board, |
01:12 | Common Anode Seven-Segment Display,
220 ohm Resistor, |
01:18 | Decoder 7447 IC
and Jumper Wires. |
01:25 | In this experiment, we will use the common anode seven segment display. |
01:31 | Please refer to the basic level tutorial of this series to know more about seven segment display. |
01:38 | Let us see the connection circuit details. |
01:46 | The Dot pin of the Seven Segment Display is connected to the pin 13 of Arduino. |
01:53 | Any one of the COM pins is connected to the +5 Volts through a 220 ohm resistor. |
02:00 | Refer the pin mapping for Arduino and microcontroller. |
02:05 | This is the live setup of the connection. |
02:09 | Now, we will write an assembly program to turn on the Dot LED on the seven segment display. |
02:17 | We need to install an assembler AVRA and AVRDUDE. |
02:23 | AVRA is an assembler that will generate a hex file. |
02:28 | AVRDUDE is used to upload any hex file to the Arduino board. |
02:34 | Open the terminal by pressing Ctrl + Alt + T keys together. |
02:39 | To install avra and avrdude, type: sudo space apt hyphen get space install space avra space avrdude. |
02:55 | Enter the administrative password if prompted and press Enter. |
03:01 | We can see the installation process has begun. |
03:05 | Press 'Y' wherever there is a prompt during the installation to confirm the configuration. |
03:11 | Installation will take some time to complete depending upon the internet speed. |
03:17 | We can see that the installation has been completed successfully.
Let us clear the screen. |
03:25 | Now, let us connect the Arduino board to the computer. |
03:29 | To check the port number of Arduino, I'll type: ls space forward slash dev forward slash ttyACM asterisk. |
03:41 | We can see the output as forward slash dev forward slash ttyACM0. |
03:49 | Here, ttyACM0 represents the port number of Arduino. |
03:55 | You may get a different port number. Make a note of your port number. |
04:00 | Download m328Pdef.inc file from the Code files link of this tutorial. |
04:08 | We need to include this library file in the first line of the source code. |
04:13 | This allows the user to use Register and Bit name when writing assembly programs. |
04:20 | Let us write an assembly program and upload it to the microcontroller. |
04:25 | Open any text editor and type the following. |
04:29 | Semicolon represents comment statements. |
04:33 | These statements are ignored by the assembler and are not executed. |
04:38 | This line tells the assembler to include the m328Pdef.inc file. |
04:45 | We had downloaded this file earlier and in my computer this is the path. |
04:51 | Note that we have to specify the entire file path. |
04:55 | ldi stands for "load immediate" . |
04:59 | This sets pin PB5, that is digital pin 13, as output. |
05:05 | It tells the assembler to take a working register r16 and load a binary number into it. |
05:12 | This line tells the compiler to copy the contents of the register r16 into the DDRB register. |
05:20 | This sets all the pins to 0 volts except pin PB5 i.e digital pin 13 which is set to 5 volts. |
05:30 | This line copies the same binary number from our storage register r17 to PortB. |
05:38 | Relative jump statement executes the program in an infinite loop. |
05:44 | The program has to just keep running in order for the LED to remain ON. |
05:50 | Save the code as dot hyphen led.asm file in the home slash spoken slash Assembly folder. |
05:59 | This code is available in the Code files link of this tutorial as well. |
06:04 | You can download and use it. |
06:07 | Switch to the terminal. |
06:10 | Go to the folder where dot hyphen led.asm file is saved. |
06:16 | Type: avra space dot hyphen led.asm and press Enter. |
06:24 | This will assemble the code and create a file dot hyphen led.hex. |
06:30 | Let us see the dot hyphen led.hex file that is generated in the same folder. |
06:37 | Next, we need to upload the code to Arduino. |
06:41 | Switch back to the terminal. |
06:44 | For this, type: avrdude space hyphen p space atmega328p space hyphen c arduino space hyphen b space 115200 space hyphen capital P space forward slash dev forward slash ttyACM0 space hyphen capital U space flash colon w colon dot hyphen led dot hex. |
07:16 | Here ttyACM0 represents the port number of Arduino. |
07:22 | dot hyphen led.hex is the file that is generated.
And press Enter. |
07:30 | Now, you can see that the Dot LED in the seven segment is glowing. |
07:36 | Pause the tutorial and do the below assignment.
Modify the same code to turn off the Dot LED. |
07:44 | Next, we will display the digit 2 on the seven segment display. |
07:49 | To display '2', a,b,d,e,g segments should be high and the other LEDS should be low. |
07:58 | Connect Pins a, b, c, d, e, f and g of the seven-segment display to pins 2, 3, 4, 5, 6, 7 and 8 of Arduino. |
08:10 | The two common pins are connected to positive 5 Volts through resistors. |
08:17 | Let us see the live connection setup. |
08:21 | Let us see the source code for this program. |
08:24 | Open any text editor and type the following code. |
08:28 | As seen earlier, we should first configure the pins as output first. |
08:34 | Then make it as high or low according to our requirement. |
08:39 | These two lines make the bits 2 to 7 on PORT D as output. |
08:45 | These two lines make bit 0 on PORT B as output. |
08:50 | These bits correspond to the digital pins 2 to 8 on Arduino. |
08:56 | Here, we are making the pins as high or low corresponding to whatever number we want to display. |
09:04 | In our case, it is digit two. |
09:07 | Here, we are writing 0100100 to digital pins 2 to 8 of Arduino. |
09:16 | This will make all the segments of SSD low, except c and g. |
09:22 | Let us save this as two.asm file. |
09:27 | Switch back to the terminal.
Let us clear the screen. |
09:33 | Type: avra space two.asm and press Enter. |
09:39 | To upload, press the up arrow to get the previous command. |
09:44 | Now, change the filename as shown and press Enter. |
09:50 | Now, you can see that the digit 2 in the seven segment is glowing. |
09:56 | Pause the tutorial and do the below assignment. Modify the above code to display any other digit from 0 to 9. |
10:06 | Next, we will use a Decoder to display the number 5 on the Seven Segment Display. |
10:12 | We are using 7447 IC. |
10:16 | The a complement to f complement pins of the decoder connect to the a to f pins of Seven Segment Display. |
10:25 | Vcc and the Ground pins of the decoder are connected to positive 5 Volts and the Ground pins of Arduino. |
10:33 | Connect the A, B,C,D pins of the Decoder to pins 2,3,4,5 of Arduino. |
10:40 | Note that this decoder is compatible only with common anode seven segment display. |
10:47 | Let us see the live connection setup. |
10:51 | The input pins of the decoder are A,B,C and D. |
10:56 | A being the lowest significant bit (LSB) and D being the most significant bit (MSB). |
11:02 | For example, the number 5 is visible on the display when the A,B,C and D inputs are as shown here. |
11:10 | Let us see the source code for this program. |
11:13 | Open any text editor and type the following code. |
11:17 | The first two lines make the bits 2 to 5 on PORT D as output. |
11:23 | This means we are making digital pins 2 to 5 in Arduino as output pins. |
11:29 | 2 to 5 pins in the Arduino are connected to A, B, C, D pins of decoder. |
11:36 | The next two lines are giving input of 0101 to decoder inputs. |
11:43 | This will then be decoded as 5 in the seven segment display. |
11:48 | Save it as decoder.asm file. |
11:52 | Switch back to the terminal. |
11:55 | Type: avra space decoder.asm and press Enter. |
12:02 | To upload, press the up arrow to get the previous command. |
12:07 | Now, change the filename as shown and press Enter. |
12:13 | Now we can see that the digit five in the seven segment is glowing. |
12:19 | This brings us to the end of this tutorial. Let us summarize. |
12:24 | In this tutorial, we learnt to: interface a Seven-segment Display to Arduino board, |
12:31 | write an assembly program to display a digit on seven-segment display |
12:36 | and display a digit on the seven segment display using 7447 IC. |
12:42 | The video at the following link summarizes the Spoken Tutorial project.
Please download and watch it. |
12:50 | The Spoken Tutorial Project team: conducts workshops and gives certificates.
For more details, please write to us. |
12:58 | Please post your timed queries in this forum. |
13:02 | Spoken Tutorial project is funded by NMEICT, MHRD, Government of India.
More information on this mission is available at this link. |
13:12 | This tutorial has been contributed by FOSSEE and Spoken Tutorial Project, IIT Bombay.
This is Priya from IIT Bombay, signing off. Thanks for joining. |