all files

Dependencies:   mbed

Committer:
Ajay_Marampally
Date:
Sun Oct 28 18:20:46 2018 +0000
Revision:
0:d44967a3251e
all files

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ajay_Marampally 0:d44967a3251e 1 lab 1
Ajay_Marampally 0:d44967a3251e 2
Ajay_Marampally 0:d44967a3251e 3 EMBEDDED SYSTEM DESIGN LAB 1-12
Ajay_Marampally 0:d44967a3251e 4 EXPERIMENT 1
Ajay_Marampally 0:d44967a3251e 5
Ajay_Marampally 0:d44967a3251e 6
Ajay_Marampally 0:d44967a3251e 7
Ajay_Marampally 0:d44967a3251e 8 AIM:
Ajay_Marampally 0:d44967a3251e 9 To perform the Following Using mbed LPC11U24
Ajay_Marampally 0:d44967a3251e 10 • To Glow an Internal LED
Ajay_Marampally 0:d44967a3251e 11 • To Glow an External LED connected to an IO pin
Ajay_Marampally 0:d44967a3251e 12 • To Glow the Internal LED’s in a sequential Order
Ajay_Marampally 0:d44967a3251e 13 • Using Switch to Change the Order of Sequential Glowing Of Internal LED’s
Ajay_Marampally 0:d44967a3251e 14 General information:
Ajay_Marampally 0:d44967a3251e 15 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 16
Ajay_Marampally 0:d44967a3251e 17 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 18 • NXP LPC11U24 MCU
Ajay_Marampally 0:d44967a3251e 19 o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 20 o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 21 o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 22 • Prototyping form-factor
Ajay_Marampally 0:d44967a3251e 23 o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 24 o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 25 o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 26 • mbed.org Developer Website
Ajay_Marampally 0:d44967a3251e 27 o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 28 o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 29 o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 30
Ajay_Marampally 0:d44967a3251e 31
Ajay_Marampally 0:d44967a3251e 32 API Used:
Ajay_Marampally 0:d44967a3251e 33
Ajay_Marampally 0:d44967a3251e 34 Syntax used for digital output:
Ajay_Marampally 0:d44967a3251e 35 DigitalOut (PinName pin)
Ajay_Marampally 0:d44967a3251e 36
Ajay_Marampally 0:d44967a3251e 37 For LED blinking we’ve used:
Ajay_Marampally 0:d44967a3251e 38 DigitalOut variable(LEDn); where n= 1,2,3,4
Ajay_Marampally 0:d44967a3251e 39
Ajay_Marampally 0:d44967a3251e 40 For delay:
Ajay_Marampally 0:d44967a3251e 41 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 42
Ajay_Marampally 0:d44967a3251e 43
Ajay_Marampally 0:d44967a3251e 44
Ajay_Marampally 0:d44967a3251e 45 code:
Ajay_Marampally 0:d44967a3251e 46 1.BLINK AN LED
Ajay_Marampally 0:d44967a3251e 47 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 48 DigitalOut myled(LED1);
Ajay_Marampally 0:d44967a3251e 49 int main() {
Ajay_Marampally 0:d44967a3251e 50 while(1) {
Ajay_Marampally 0:d44967a3251e 51 myled = 1;
Ajay_Marampally 0:d44967a3251e 52 wait(0.2);
Ajay_Marampally 0:d44967a3251e 53 myled = 0;
Ajay_Marampally 0:d44967a3251e 54 wait(0.2);
Ajay_Marampally 0:d44967a3251e 55 }
Ajay_Marampally 0:d44967a3251e 56 }
Ajay_Marampally 0:d44967a3251e 57
Ajay_Marampally 0:d44967a3251e 58
Ajay_Marampally 0:d44967a3251e 59
Ajay_Marampally 0:d44967a3251e 60 Output:
Ajay_Marampally 0:d44967a3251e 61
Ajay_Marampally 0:d44967a3251e 62
Ajay_Marampally 0:d44967a3251e 63
Ajay_Marampally 0:d44967a3251e 64 2.BLINK 4 LEDS
Ajay_Marampally 0:d44967a3251e 65 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 66 DigitalOut myled1(LED1);
Ajay_Marampally 0:d44967a3251e 67 DigitalOut myled2(LED2);
Ajay_Marampally 0:d44967a3251e 68 DigitalOut myled3(LED3);
Ajay_Marampally 0:d44967a3251e 69 DigitalOut myled4(LED4);
Ajay_Marampally 0:d44967a3251e 70
Ajay_Marampally 0:d44967a3251e 71 int main() {
Ajay_Marampally 0:d44967a3251e 72 while(1) {
Ajay_Marampally 0:d44967a3251e 73 myled1= 1;
Ajay_Marampally 0:d44967a3251e 74 wait(0.2);
Ajay_Marampally 0:d44967a3251e 75 myled1 = 0;
Ajay_Marampally 0:d44967a3251e 76 myled2 = 1;
Ajay_Marampally 0:d44967a3251e 77 wait(0.2);
Ajay_Marampally 0:d44967a3251e 78 myled2= 0;
Ajay_Marampally 0:d44967a3251e 79 myled3 = 1;
Ajay_Marampally 0:d44967a3251e 80 wait(0.2);
Ajay_Marampally 0:d44967a3251e 81 myled3= 0;
Ajay_Marampally 0:d44967a3251e 82 myled4 = 1;
Ajay_Marampally 0:d44967a3251e 83 wait(0.2);
Ajay_Marampally 0:d44967a3251e 84 myled4= 0;
Ajay_Marampally 0:d44967a3251e 85 wait(0.2);
Ajay_Marampally 0:d44967a3251e 86 }
Ajay_Marampally 0:d44967a3251e 87 }
Ajay_Marampally 0:d44967a3251e 88
Ajay_Marampally 0:d44967a3251e 89
Ajay_Marampally 0:d44967a3251e 90
Ajay_Marampally 0:d44967a3251e 91
Ajay_Marampally 0:d44967a3251e 92 3.EXTERNAL LEDS BLINKING
Ajay_Marampally 0:d44967a3251e 93 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 94 DigitalOut myled(p23);
Ajay_Marampally 0:d44967a3251e 95 int main() {
Ajay_Marampally 0:d44967a3251e 96 while(1) {
Ajay_Marampally 0:d44967a3251e 97 myled = 1;
Ajay_Marampally 0:d44967a3251e 98 wait(0.2);
Ajay_Marampally 0:d44967a3251e 99 myled = 0;
Ajay_Marampally 0:d44967a3251e 100 wait(0.2);
Ajay_Marampally 0:d44967a3251e 101 }
Ajay_Marampally 0:d44967a3251e 102 }
Ajay_Marampally 0:d44967a3251e 103
Ajay_Marampally 0:d44967a3251e 104
Ajay_Marampally 0:d44967a3251e 105
Ajay_Marampally 0:d44967a3251e 106
Ajay_Marampally 0:d44967a3251e 107 4.SWITCHING
Ajay_Marampally 0:d44967a3251e 108 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 109 DigitalOut myled(LED1);
Ajay_Marampally 0:d44967a3251e 110 DigitalIn Switch(p23);
Ajay_Marampally 0:d44967a3251e 111 int main() {
Ajay_Marampally 0:d44967a3251e 112 while(1) {
Ajay_Marampally 0:d44967a3251e 113 if(Switch==1)
Ajay_Marampally 0:d44967a3251e 114 myled = 1;
Ajay_Marampally 0:d44967a3251e 115 else
Ajay_Marampally 0:d44967a3251e 116 myled=0;
Ajay_Marampally 0:d44967a3251e 117 }
Ajay_Marampally 0:d44967a3251e 118 }
Ajay_Marampally 0:d44967a3251e 119
Ajay_Marampally 0:d44967a3251e 120
Ajay_Marampally 0:d44967a3251e 121 Experiment-2
Ajay_Marampally 0:d44967a3251e 122
Ajay_Marampally 0:d44967a3251e 123
Ajay_Marampally 0:d44967a3251e 124
Ajay_Marampally 0:d44967a3251e 125 AIM:
Ajay_Marampally 0:d44967a3251e 126 To write C++ Source Code to understand the digital port access
Ajay_Marampally 0:d44967a3251e 127 1. Program mbed Board to light two-two LED’s at a time using BusOut function.
Ajay_Marampally 0:d44967a3251e 128 2. Display hexadecimal Coding pattern from 0 to 15 by blinking the on-board LED’s using BusOut function.
Ajay_Marampally 0:d44967a3251e 129 3. Read the Multiple Switches values and display the status of switches in Multiple LED’s .If the first two switches are on display 0x55 and if second two switches are on then display 0xAA. Use 4 switches, 8 LED’s.
Ajay_Marampally 0:d44967a3251e 130 4. Connect a 7 Segment Display to the mbed Board and write a code to display count from 0 to 9.
Ajay_Marampally 0:d44967a3251e 131
Ajay_Marampally 0:d44967a3251e 132 General information:
Ajay_Marampally 0:d44967a3251e 133 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 134
Ajay_Marampally 0:d44967a3251e 135
Ajay_Marampally 0:d44967a3251e 136 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 137 • NXP LPC11U24 MCU
Ajay_Marampally 0:d44967a3251e 138 o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 139 o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 140 o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 141 • Prototyping form-factor
Ajay_Marampally 0:d44967a3251e 142 o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 143 o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 144 o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 145 • mbed.org Developer Website
Ajay_Marampally 0:d44967a3251e 146 o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 147 o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 148 o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 149
Ajay_Marampally 0:d44967a3251e 150
Ajay_Marampally 0:d44967a3251e 151 API Used:
Ajay_Marampally 0:d44967a3251e 152
Ajay_Marampally 0:d44967a3251e 153 Syntax used for digital output:
Ajay_Marampally 0:d44967a3251e 154 BusOut (PinName pin)
Ajay_Marampally 0:d44967a3251e 155
Ajay_Marampally 0:d44967a3251e 156 BusOut variable(LEDn); where n= 1,2,3,4
Ajay_Marampally 0:d44967a3251e 157
Ajay_Marampally 0:d44967a3251e 158 For delay:
Ajay_Marampally 0:d44967a3251e 159 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 160
Ajay_Marampally 0:d44967a3251e 161 1.Program mbed Board to light two-two LED’s at a time using BusOut function
Ajay_Marampally 0:d44967a3251e 162 CODE:
Ajay_Marampally 0:d44967a3251e 163 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 164 BusOut leds1(LED1,LED2);
Ajay_Marampally 0:d44967a3251e 165 BusOut leds2(LED3,LED4);
Ajay_Marampally 0:d44967a3251e 166 int main() {
Ajay_Marampally 0:d44967a3251e 167 while(1) {
Ajay_Marampally 0:d44967a3251e 168 leds1 = 0xFF;
Ajay_Marampally 0:d44967a3251e 169 wait(0.2);
Ajay_Marampally 0:d44967a3251e 170 leds1 = 0;
Ajay_Marampally 0:d44967a3251e 171 wait(0.2);
Ajay_Marampally 0:d44967a3251e 172 leds2 = 0xFF;
Ajay_Marampally 0:d44967a3251e 173 wait(0.2);
Ajay_Marampally 0:d44967a3251e 174 leds2 = 0;
Ajay_Marampally 0:d44967a3251e 175 wait(0.2)
Ajay_Marampally 0:d44967a3251e 176 }
Ajay_Marampally 0:d44967a3251e 177 }
Ajay_Marampally 0:d44967a3251e 178
Ajay_Marampally 0:d44967a3251e 179
Ajay_Marampally 0:d44967a3251e 180 2.Display hexadecimal Coding pattern from 0 to 15 by blinking the on-board LED’s using BusOut function.
Ajay_Marampally 0:d44967a3251e 181 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 182 BusOut leds(LED1,LED2,LED3,LED4);
Ajay_Marampally 0:d44967a3251e 183 int main() {
Ajay_Marampally 0:d44967a3251e 184 while(1) {
Ajay_Marampally 0:d44967a3251e 185 int i;
Ajay_Marampally 0:d44967a3251e 186 for (i=0;i<15;i++)
Ajay_Marampally 0:d44967a3251e 187 {
Ajay_Marampally 0:d44967a3251e 188 leds=i;
Ajay_Marampally 0:d44967a3251e 189 wait(0.5);
Ajay_Marampally 0:d44967a3251e 190 }
Ajay_Marampally 0:d44967a3251e 191 }
Ajay_Marampally 0:d44967a3251e 192 }
Ajay_Marampally 0:d44967a3251e 193
Ajay_Marampally 0:d44967a3251e 194
Ajay_Marampally 0:d44967a3251e 195 3.Read the Multiple Switches values and display the status of switches in Multiple LED’s .If the first two switches are on display 0x55 and if second two switches are on then display 0xAA. Use 4 switches, 8 LED’s.
Ajay_Marampally 0:d44967a3251e 196 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 197 BusIn switches1(p22,p23);
Ajay_Marampally 0:d44967a3251e 198 BusIn switches2(p24,p25);
Ajay_Marampally 0:d44967a3251e 199 BusOut leds(LED1,LED2,LED3,LED4);
Ajay_Marampally 0:d44967a3251e 200 int main() {
Ajay_Marampally 0:d44967a3251e 201 while(1) {
Ajay_Marampally 0:d44967a3251e 202 if(switches1==0x03)
Ajay_Marampally 0:d44967a3251e 203 leds=0x55;
Ajay_Marampally 0:d44967a3251e 204 else if(switches2==0x03)
Ajay_Marampally 0:d44967a3251e 205 leds=0xAA;
Ajay_Marampally 0:d44967a3251e 206 }
Ajay_Marampally 0:d44967a3251e 207 }
Ajay_Marampally 0:d44967a3251e 208
Ajay_Marampally 0:d44967a3251e 209
Ajay_Marampally 0:d44967a3251e 210
Ajay_Marampally 0:d44967a3251e 211 4.Connect a 7 Segment Display to the mbed Board and write a code to display count from 0 to 9.
Ajay_Marampally 0:d44967a3251e 212 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 213 BusOut leds(LED1,LED2,LED3,LED4,p23,p24,p25);
Ajay_Marampally 0:d44967a3251e 214 int main() {
Ajay_Marampally 0:d44967a3251e 215 while(1) {
Ajay_Marampally 0:d44967a3251e 216 leds=0x7E;
Ajay_Marampally 0:d44967a3251e 217 wait(0.5);
Ajay_Marampally 0:d44967a3251e 218 leds=0x06;
Ajay_Marampally 0:d44967a3251e 219 wait(0.5);
Ajay_Marampally 0:d44967a3251e 220 leds=0x4d;
Ajay_Marampally 0:d44967a3251e 221 wait(0.5);
Ajay_Marampally 0:d44967a3251e 222 leds=0x79;
Ajay_Marampally 0:d44967a3251e 223 wait(0.5);
Ajay_Marampally 0:d44967a3251e 224 leds=0x33;
Ajay_Marampally 0:d44967a3251e 225 wait(0.5);
Ajay_Marampally 0:d44967a3251e 226 leds=0x5B;
Ajay_Marampally 0:d44967a3251e 227 wait(0.5);
Ajay_Marampally 0:d44967a3251e 228 leds=0x5F;
Ajay_Marampally 0:d44967a3251e 229 wait(0.5);
Ajay_Marampally 0:d44967a3251e 230 leds=0x70;
Ajay_Marampally 0:d44967a3251e 231 wait(0.5);
Ajay_Marampally 0:d44967a3251e 232 leds=0x7F;
Ajay_Marampally 0:d44967a3251e 233 wait(0.5);
Ajay_Marampally 0:d44967a3251e 234 leds=0x7B;
Ajay_Marampally 0:d44967a3251e 235 wait(0.5);
Ajay_Marampally 0:d44967a3251e 236 }
Ajay_Marampally 0:d44967a3251e 237 }
Ajay_Marampally 0:d44967a3251e 238
Ajay_Marampally 0:d44967a3251e 239
Ajay_Marampally 0:d44967a3251e 240
Ajay_Marampally 0:d44967a3251e 241
Ajay_Marampally 0:d44967a3251e 242 Verification:
Ajay_Marampally 0:d44967a3251e 243
Ajay_Marampally 0:d44967a3251e 244
Ajay_Marampally 0:d44967a3251e 245
Ajay_Marampally 0:d44967a3251e 246
Ajay_Marampally 0:d44967a3251e 247
Ajay_Marampally 0:d44967a3251e 248
Ajay_Marampally 0:d44967a3251e 249 EXPERIMENT-3
Ajay_Marampally 0:d44967a3251e 250
Ajay_Marampally 0:d44967a3251e 251
Ajay_Marampally 0:d44967a3251e 252
Ajay_Marampally 0:d44967a3251e 253
Ajay_Marampally 0:d44967a3251e 254 AIM:
Ajay_Marampally 0:d44967a3251e 255 To perform the Following Using mbed LPC11U24
Ajay_Marampally 0:d44967a3251e 256 1.Write a serial program to dispay a message to pc.
Ajay_Marampally 0:d44967a3251e 257 2. Write a program to dispay the corresponding character you type in serial window.
Ajay_Marampally 0:d44967a3251e 258 3.Monitor the status of a switch connected to pin5, if high write “hello” to the pc and blink led1 otherwise write “sorry” to the pc and led1 is off.
Ajay_Marampally 0:d44967a3251e 259 4. Write a serial program to use the ‘Y’ and ‘N’ keys from pc to make leds on the mbed board to display ‘A’ and ‘5’.
Ajay_Marampally 0:d44967a3251e 260
Ajay_Marampally 0:d44967a3251e 261 General information:
Ajay_Marampally 0:d44967a3251e 262 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 263
Ajay_Marampally 0:d44967a3251e 264 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 265 • NXP LPC11U24 MCU
Ajay_Marampally 0:d44967a3251e 266 o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 267 o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 268 o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 269 • Prototyping form-factor
Ajay_Marampally 0:d44967a3251e 270 o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 271 o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 272 o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 273 • mbed.org Developer Website
Ajay_Marampally 0:d44967a3251e 274 o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 275 o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 276 o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 277
Ajay_Marampally 0:d44967a3251e 278
Ajay_Marampally 0:d44967a3251e 279
Ajay_Marampally 0:d44967a3251e 280
Ajay_Marampally 0:d44967a3251e 281 API Used:
Ajay_Marampally 0:d44967a3251e 282
Ajay_Marampally 0:d44967a3251e 283 Syntax used for serial communication:
Ajay_Marampally 0:d44967a3251e 284
Ajay_Marampally 0:d44967a3251e 285 serial variable(USBTX,USBRX);
Ajay_Marampally 0:d44967a3251e 286
Ajay_Marampally 0:d44967a3251e 287 For printing:
Ajay_Marampally 0:d44967a3251e 288 pc.printf("sale please");
Ajay_Marampally 0:d44967a3251e 289
Ajay_Marampally 0:d44967a3251e 290
Ajay_Marampally 0:d44967a3251e 291
Ajay_Marampally 0:d44967a3251e 292 1.write a serial program to dispay a message to pc.
Ajay_Marampally 0:d44967a3251e 293 Code:
Ajay_Marampally 0:d44967a3251e 294 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 295 Serial pc(USBTX,USBRX);
Ajay_Marampally 0:d44967a3251e 296
Ajay_Marampally 0:d44967a3251e 297 int main()
Ajay_Marampally 0:d44967a3251e 298 {
Ajay_Marampally 0:d44967a3251e 299 pc.printf("sale please");
Ajay_Marampally 0:d44967a3251e 300 while(1)
Ajay_Marampally 0:d44967a3251e 301 {
Ajay_Marampally 0:d44967a3251e 302 pc.putc(pc.getc());
Ajay_Marampally 0:d44967a3251e 303 // pc.printf("sale please");
Ajay_Marampally 0:d44967a3251e 304 }
Ajay_Marampally 0:d44967a3251e 305
Ajay_Marampally 0:d44967a3251e 306 }
Ajay_Marampally 0:d44967a3251e 307
Ajay_Marampally 0:d44967a3251e 308
Ajay_Marampally 0:d44967a3251e 309
Ajay_Marampally 0:d44967a3251e 310
Ajay_Marampally 0:d44967a3251e 311 2. write a program to dispay the corresponding character you type in serial window.
Ajay_Marampally 0:d44967a3251e 312 Code:
Ajay_Marampally 0:d44967a3251e 313 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 314 Serial pc(USBTX,USBRX);
Ajay_Marampally 0:d44967a3251e 315
Ajay_Marampally 0:d44967a3251e 316 int main()
Ajay_Marampally 0:d44967a3251e 317 {
Ajay_Marampally 0:d44967a3251e 318 pc.printf("sale please");
Ajay_Marampally 0:d44967a3251e 319 while(1)
Ajay_Marampally 0:d44967a3251e 320 {
Ajay_Marampally 0:d44967a3251e 321 pc.putc(pc.getc());
Ajay_Marampally 0:d44967a3251e 322 // pc.printf("sale please");
Ajay_Marampally 0:d44967a3251e 323 }
Ajay_Marampally 0:d44967a3251e 324
Ajay_Marampally 0:d44967a3251e 325 }
Ajay_Marampally 0:d44967a3251e 326
Ajay_Marampally 0:d44967a3251e 327
Ajay_Marampally 0:d44967a3251e 328
Ajay_Marampally 0:d44967a3251e 329 3.Monitor the status of a switch connected to pin5, if high write “hello” to the pc and blink led1 otherwise write “sorry” to the pc and led1 is off.
Ajay_Marampally 0:d44967a3251e 330 Code:
Ajay_Marampally 0:d44967a3251e 331
Ajay_Marampally 0:d44967a3251e 332 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 333 Serial pc(USBTX,USBRX);
Ajay_Marampally 0:d44967a3251e 334 DigitalOut led(LED1);
Ajay_Marampally 0:d44967a3251e 335 DigitalIn sw(p5);
Ajay_Marampally 0:d44967a3251e 336 int main()
Ajay_Marampally 0:d44967a3251e 337 {
Ajay_Marampally 0:d44967a3251e 338 while(1)
Ajay_Marampally 0:d44967a3251e 339 {
Ajay_Marampally 0:d44967a3251e 340 if(sw==1)
Ajay_Marampally 0:d44967a3251e 341 {
Ajay_Marampally 0:d44967a3251e 342 led=1;
Ajay_Marampally 0:d44967a3251e 343 wait(0.5);
Ajay_Marampally 0:d44967a3251e 344 led=0;
Ajay_Marampally 0:d44967a3251e 345
Ajay_Marampally 0:d44967a3251e 346 pc.printf("Hello");
Ajay_Marampally 0:d44967a3251e 347 }
Ajay_Marampally 0:d44967a3251e 348 else{
Ajay_Marampally 0:d44967a3251e 349 led=0;
Ajay_Marampally 0:d44967a3251e 350
Ajay_Marampally 0:d44967a3251e 351 pc.printf("sorry");
Ajay_Marampally 0:d44967a3251e 352 }
Ajay_Marampally 0:d44967a3251e 353
Ajay_Marampally 0:d44967a3251e 354 }
Ajay_Marampally 0:d44967a3251e 355
Ajay_Marampally 0:d44967a3251e 356 }
Ajay_Marampally 0:d44967a3251e 357
Ajay_Marampally 0:d44967a3251e 358
Ajay_Marampally 0:d44967a3251e 359
Ajay_Marampally 0:d44967a3251e 360
Ajay_Marampally 0:d44967a3251e 361
Ajay_Marampally 0:d44967a3251e 362
Ajay_Marampally 0:d44967a3251e 363
Ajay_Marampally 0:d44967a3251e 364 4. Write a serial program to use the ‘Y’ and ‘N’ keys from pc to make leds on the mbed board to display ‘A’ and ‘5’.
Ajay_Marampally 0:d44967a3251e 365
Ajay_Marampally 0:d44967a3251e 366 Code :
Ajay_Marampally 0:d44967a3251e 367 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 368
Ajay_Marampally 0:d44967a3251e 369 Serial pc(USBTX, USBRX);
Ajay_Marampally 0:d44967a3251e 370 BusOut myled(LED1, LED2, LED3, LED4);
Ajay_Marampally 0:d44967a3251e 371
Ajay_Marampally 0:d44967a3251e 372 int main() {
Ajay_Marampally 0:d44967a3251e 373 while(1){
Ajay_Marampally 0:d44967a3251e 374 if(pc.getc()=='Y')
Ajay_Marampally 0:d44967a3251e 375 {
Ajay_Marampally 0:d44967a3251e 376
Ajay_Marampally 0:d44967a3251e 377 myled = 0x0A;
Ajay_Marampally 0:d44967a3251e 378
Ajay_Marampally 0:d44967a3251e 379 }
Ajay_Marampally 0:d44967a3251e 380 else if(pc.getc()=='N')
Ajay_Marampally 0:d44967a3251e 381 {
Ajay_Marampally 0:d44967a3251e 382
Ajay_Marampally 0:d44967a3251e 383 myled = 0x05;
Ajay_Marampally 0:d44967a3251e 384
Ajay_Marampally 0:d44967a3251e 385 }
Ajay_Marampally 0:d44967a3251e 386 else
Ajay_Marampally 0:d44967a3251e 387 {
Ajay_Marampally 0:d44967a3251e 388 myled=0;
Ajay_Marampally 0:d44967a3251e 389 }
Ajay_Marampally 0:d44967a3251e 390 }
Ajay_Marampally 0:d44967a3251e 391 }
Ajay_Marampally 0:d44967a3251e 392
Ajay_Marampally 0:d44967a3251e 393
Ajay_Marampally 0:d44967a3251e 394 When ‘N’ is pressed:
Ajay_Marampally 0:d44967a3251e 395
Ajay_Marampally 0:d44967a3251e 396 When ‘Y’ is pressed:
Ajay_Marampally 0:d44967a3251e 397
Ajay_Marampally 0:d44967a3251e 398 Verification:
Ajay_Marampally 0:d44967a3251e 399
Ajay_Marampally 0:d44967a3251e 400
Ajay_Marampally 0:d44967a3251e 401
Ajay_Marampally 0:d44967a3251e 402
Ajay_Marampally 0:d44967a3251e 403
Ajay_Marampally 0:d44967a3251e 404
Ajay_Marampally 0:d44967a3251e 405
Ajay_Marampally 0:d44967a3251e 406
Ajay_Marampally 0:d44967a3251e 407
Ajay_Marampally 0:d44967a3251e 408
Ajay_Marampally 0:d44967a3251e 409
Ajay_Marampally 0:d44967a3251e 410
Ajay_Marampally 0:d44967a3251e 411
Ajay_Marampally 0:d44967a3251e 412
Ajay_Marampally 0:d44967a3251e 413
Ajay_Marampally 0:d44967a3251e 414
Ajay_Marampally 0:d44967a3251e 415
Ajay_Marampally 0:d44967a3251e 416
Ajay_Marampally 0:d44967a3251e 417
Ajay_Marampally 0:d44967a3251e 418 EXPERIMENT-4
Ajay_Marampally 0:d44967a3251e 419
Ajay_Marampally 0:d44967a3251e 420
Ajay_Marampally 0:d44967a3251e 421
Ajay_Marampally 0:d44967a3251e 422
Ajay_Marampally 0:d44967a3251e 423 Aim:
Ajay_Marampally 0:d44967a3251e 424 To perform the Following Using mbed LPC11U24
Ajay_Marampally 0:d44967a3251e 425 1.attach a potentiometer to mbedpin 20.
Ajay_Marampally 0:d44967a3251e 426 Start a new mbed project and enter the code below.this code will continuously display the analog input value when used with a host pc terminal application.
Ajay_Marampally 0:d44967a3251e 427 2.using the 4 onboard mbed leds,write a program that will use potentiometer input on pin20 to continuously control how many leds are on.use the following chart to define the led
Ajay_Marampally 0:d44967a3251e 428 Control:
Ajay_Marampally 0:d44967a3251e 429 LED1 LED2 LED3 LED4
Ajay_Marampally 0:d44967a3251e 430 X<=0.2 0 0 0 0
Ajay_Marampally 0:d44967a3251e 431 0.2<X<=0.4 1 0 0 0
Ajay_Marampally 0:d44967a3251e 432 0.4<X<=0.6 1 1 0 0
Ajay_Marampally 0:d44967a3251e 433 0.6<X<=0.8 1 1 1 0
Ajay_Marampally 0:d44967a3251e 434 0.8<X<=1 1 1 1 1
Ajay_Marampally 0:d44967a3251e 435
Ajay_Marampally 0:d44967a3251e 436 3. . Design, build and program a simple embedded system using an LM35 sensor, which displays temperature on the computer screen. This device has an output of 10 mV/C, with operating temperature from 55C to 150C
Ajay_Marampally 0:d44967a3251e 437
Ajay_Marampally 0:d44967a3251e 438
Ajay_Marampally 0:d44967a3251e 439
Ajay_Marampally 0:d44967a3251e 440
Ajay_Marampally 0:d44967a3251e 441
Ajay_Marampally 0:d44967a3251e 442
Ajay_Marampally 0:d44967a3251e 443
Ajay_Marampally 0:d44967a3251e 444 General information:
Ajay_Marampally 0:d44967a3251e 445 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 446
Ajay_Marampally 0:d44967a3251e 447 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 448 • NXP LPC11U24 MCU
Ajay_Marampally 0:d44967a3251e 449 o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 450 o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 451 o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 452 • Prototyping form-factor
Ajay_Marampally 0:d44967a3251e 453 o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 454 o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 455 o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 456 • mbed.org Developer Website
Ajay_Marampally 0:d44967a3251e 457 o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 458 o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 459 o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 460
Ajay_Marampally 0:d44967a3251e 461 API Used:
Ajay_Marampally 0:d44967a3251e 462
Ajay_Marampally 0:d44967a3251e 463 Syntax used for analog input:
Ajay_Marampally 0:d44967a3251e 464
Ajay_Marampally 0:d44967a3251e 465 AnalogIn variable(pin);
Ajay_Marampally 0:d44967a3251e 466
Ajay_Marampally 0:d44967a3251e 467
Ajay_Marampally 0:d44967a3251e 468
Ajay_Marampally 0:d44967a3251e 469 Code:
Ajay_Marampally 0:d44967a3251e 470 1.
Ajay_Marampally 0:d44967a3251e 471 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 472 Serial pc(USBTX ,USBRX);
Ajay_Marampally 0:d44967a3251e 473 AnalogIn A(p20);
Ajay_Marampally 0:d44967a3251e 474 float Ain=A;
Ajay_Marampally 0:d44967a3251e 475 int main()
Ajay_Marampally 0:d44967a3251e 476 {
Ajay_Marampally 0:d44967a3251e 477 while(1)
Ajay_Marampally 0:d44967a3251e 478 {
Ajay_Marampally 0:d44967a3251e 479 pc.printf("%f the value is ",Ain*3.3);
Ajay_Marampally 0:d44967a3251e 480 wait(0.5);
Ajay_Marampally 0:d44967a3251e 481 }
Ajay_Marampally 0:d44967a3251e 482 }
Ajay_Marampally 0:d44967a3251e 483
Ajay_Marampally 0:d44967a3251e 484
Ajay_Marampally 0:d44967a3251e 485
Ajay_Marampally 0:d44967a3251e 486 2.
Ajay_Marampally 0:d44967a3251e 487 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 488 AnalogIn A(p20);
Ajay_Marampally 0:d44967a3251e 489 BusOut leds (LED1,LED2,LED3,LED4);
Ajay_Marampally 0:d44967a3251e 490 int main()
Ajay_Marampally 0:d44967a3251e 491 {
Ajay_Marampally 0:d44967a3251e 492 while(1)
Ajay_Marampally 0:d44967a3251e 493 {
Ajay_Marampally 0:d44967a3251e 494 float Ain=A;
Ajay_Marampally 0:d44967a3251e 495 wait(0.5);
Ajay_Marampally 0:d44967a3251e 496 if(Ain<=0.2)
Ajay_Marampally 0:d44967a3251e 497 leds=0;
Ajay_Marampally 0:d44967a3251e 498 else if(Ain>0.2 & Ain<=0.4)
Ajay_Marampally 0:d44967a3251e 499 leds=0x08;
Ajay_Marampally 0:d44967a3251e 500 else if(Ain>0.4 & Ain<=0.6)
Ajay_Marampally 0:d44967a3251e 501 leds=0x0C;
Ajay_Marampally 0:d44967a3251e 502 else if(Ain>0.6 & Ain<=0.8)
Ajay_Marampally 0:d44967a3251e 503 leds=0x0E;
Ajay_Marampally 0:d44967a3251e 504 else if(Ain>0.8 & Ain<=1.0)
Ajay_Marampally 0:d44967a3251e 505 leds=0x0F;
Ajay_Marampally 0:d44967a3251e 506 }
Ajay_Marampally 0:d44967a3251e 507 }
Ajay_Marampally 0:d44967a3251e 508
Ajay_Marampally 0:d44967a3251e 509
Ajay_Marampally 0:d44967a3251e 510
Ajay_Marampally 0:d44967a3251e 511
Ajay_Marampally 0:d44967a3251e 512
Ajay_Marampally 0:d44967a3251e 513 3.
Ajay_Marampally 0:d44967a3251e 514 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 515 Serial pc(USBTX ,USBRX);
Ajay_Marampally 0:d44967a3251e 516 AnalogIn A(p20);
Ajay_Marampally 0:d44967a3251e 517 int main()
Ajay_Marampally 0:d44967a3251e 518 {
Ajay_Marampally 0:d44967a3251e 519 while(1)
Ajay_Marampally 0:d44967a3251e 520 {
Ajay_Marampally 0:d44967a3251e 521 float Ain=A;
Ajay_Marampally 0:d44967a3251e 522 pc.printf("%f the value is ",(Ain*3.3)*100);
Ajay_Marampally 0:d44967a3251e 523 wait(0.2);
Ajay_Marampally 0:d44967a3251e 524 }
Ajay_Marampally 0:d44967a3251e 525 }
Ajay_Marampally 0:d44967a3251e 526
Ajay_Marampally 0:d44967a3251e 527
Ajay_Marampally 0:d44967a3251e 528
Ajay_Marampally 0:d44967a3251e 529
Ajay_Marampally 0:d44967a3251e 530
Ajay_Marampally 0:d44967a3251e 531 Verification:
Ajay_Marampally 0:d44967a3251e 532
Ajay_Marampally 0:d44967a3251e 533
Ajay_Marampally 0:d44967a3251e 534
Ajay_Marampally 0:d44967a3251e 535 EXPERIMENT 5
Ajay_Marampally 0:d44967a3251e 536 PULSE WIDTH MODULATION
Ajay_Marampally 0:d44967a3251e 537 AIM:
Ajay_Marampally 0:d44967a3251e 538 To perform the Following Using mbed LPC11U24
Ajay_Marampally 0:d44967a3251e 539 •Create a PWM signal which will generate a 100 Hz pulse with 50% duty cycle.
Ajay_Marampally 0:d44967a3251e 540 •Change the duty cycle to some different values, say 0.2 (20%) and 0.8 (80%) and check the correct display.
Ajay_Marampally 0:d44967a3251e 541 •Controlling LED brightness with PWM
Ajay_Marampally 0:d44967a3251e 542 •This exercise uses a pulse width modulation signal to increase and decrease the brightness of the onboard LED The program requires the use of a host terminal application to communicate the brightness value to the mbed, in this example by using the ‘u’ and ‘d’ keys.
Ajay_Marampally 0:d44967a3251e 543 General information:
Ajay_Marampally 0:d44967a3251e 544 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 545
Ajay_Marampally 0:d44967a3251e 546 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 547 • • NXP LPC11U24 MCU o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 548 • o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 549 • o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 550
Ajay_Marampally 0:d44967a3251e 551 • • Prototyping form-factor o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 552 • o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 553 • o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 554
Ajay_Marampally 0:d44967a3251e 555 • • mbed.org Developer Website o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 556 • o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 557 • o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 558
Ajay_Marampally 0:d44967a3251e 559
Ajay_Marampally 0:d44967a3251e 560 API Used:
Ajay_Marampally 0:d44967a3251e 561 For serial communication port access:
Ajay_Marampally 0:d44967a3251e 562 Serial pc(USBTX, USBRX); where the arguments are the transmitting or receiving pins
Ajay_Marampally 0:d44967a3251e 563 Serial device( pin tx, pin rx, int baud)
Ajay_Marampally 0:d44967a3251e 564 For printing :
Ajay_Marampally 0:d44967a3251e 565 pc.printf(“”); to print a string
Ajay_Marampally 0:d44967a3251e 566 pc.putc(); to print a character
Ajay_Marampally 0:d44967a3251e 567 Syntax used for PWM signal generation
Ajay_Marampally 0:d44967a3251e 568 PwmOut (PinName pin)
Ajay_Marampally 0:d44967a3251e 569 For delay:
Ajay_Marampally 0:d44967a3251e 570 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 571 For LED:
Ajay_Marampally 0:d44967a3251e 572 Led.write(); Led.read(); Led.period();
Ajay_Marampally 0:d44967a3251e 573 For getting analog input:
Ajay_Marampally 0:d44967a3251e 574 Analogin a(pin)
Ajay_Marampally 0:d44967a3251e 575 For delay:
Ajay_Marampally 0:d44967a3251e 576 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 577
Ajay_Marampally 0:d44967a3251e 578 1. 1. Create a PWM signal which will generate a 100 Hz pulse with 50% duty cycle.
Ajay_Marampally 0:d44967a3251e 579 CODE:
Ajay_Marampally 0:d44967a3251e 580 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 581
Ajay_Marampally 0:d44967a3251e 582 PwmOut led(p5);
Ajay_Marampally 0:d44967a3251e 583
Ajay_Marampally 0:d44967a3251e 584 int main() {
Ajay_Marampally 0:d44967a3251e 585 //specify time period first, then everything else
Ajay_Marampally 0:d44967a3251e 586 led.period(0.5);
Ajay_Marampally 0:d44967a3251e 587 led.write(0.5);
Ajay_Marampally 0:d44967a3251e 588 while(1);
Ajay_Marampally 0:d44967a3251e 589 }
Ajay_Marampally 0:d44967a3251e 590 }
Ajay_Marampally 0:d44967a3251e 591
Ajay_Marampally 0:d44967a3251e 592 Output:
Ajay_Marampally 0:d44967a3251e 593
Ajay_Marampally 0:d44967a3251e 594
Ajay_Marampally 0:d44967a3251e 595
Ajay_Marampally 0:d44967a3251e 596 2. Change the duty cycle to some different values, say 0.2 (20%) and 0.8 (80%) and check the correct display.
Ajay_Marampally 0:d44967a3251e 597
Ajay_Marampally 0:d44967a3251e 598 CODE:
Ajay_Marampally 0:d44967a3251e 599 80 % duty cycle
Ajay_Marampally 0:d44967a3251e 600 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 601
Ajay_Marampally 0:d44967a3251e 602 PwmOut led(p5);
Ajay_Marampally 0:d44967a3251e 603
Ajay_Marampally 0:d44967a3251e 604 int main() {
Ajay_Marampally 0:d44967a3251e 605
Ajay_Marampally 0:d44967a3251e 606 led.period(0.1);
Ajay_Marampally 0:d44967a3251e 607 led.pulsewidth(0.8);
Ajay_Marampally 0:d44967a3251e 608 while(1);
Ajay_Marampally 0:d44967a3251e 609 }
Ajay_Marampally 0:d44967a3251e 610
Ajay_Marampally 0:d44967a3251e 611
Ajay_Marampally 0:d44967a3251e 612
Ajay_Marampally 0:d44967a3251e 613
Ajay_Marampally 0:d44967a3251e 614 20 % duty cycle
Ajay_Marampally 0:d44967a3251e 615 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 616
Ajay_Marampally 0:d44967a3251e 617 PwmOut led(p5);
Ajay_Marampally 0:d44967a3251e 618
Ajay_Marampally 0:d44967a3251e 619 int main() {
Ajay_Marampally 0:d44967a3251e 620
Ajay_Marampally 0:d44967a3251e 621 led.period(0.1);
Ajay_Marampally 0:d44967a3251e 622 led.pulsewidth(0.2);
Ajay_Marampally 0:d44967a3251e 623 while(1);
Ajay_Marampally 0:d44967a3251e 624 }
Ajay_Marampally 0:d44967a3251e 625
Ajay_Marampally 0:d44967a3251e 626
Ajay_Marampally 0:d44967a3251e 627
Ajay_Marampally 0:d44967a3251e 628
Ajay_Marampally 0:d44967a3251e 629 Output:
Ajay_Marampally 0:d44967a3251e 630
Ajay_Marampally 0:d44967a3251e 631
Ajay_Marampally 0:d44967a3251e 632
Ajay_Marampally 0:d44967a3251e 633
Ajay_Marampally 0:d44967a3251e 634
Ajay_Marampally 0:d44967a3251e 635
Ajay_Marampally 0:d44967a3251e 636
Ajay_Marampally 0:d44967a3251e 637 3. Controlling LED brightness with PWM.
Ajay_Marampally 0:d44967a3251e 638 CODE:
Ajay_Marampally 0:d44967a3251e 639
Ajay_Marampally 0:d44967a3251e 640 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 641
Ajay_Marampally 0:d44967a3251e 642 PwmOut led(p5);
Ajay_Marampally 0:d44967a3251e 643 float brightness=0.0;
Ajay_Marampally 0:d44967a3251e 644
Ajay_Marampally 0:d44967a3251e 645 int main() {
Ajay_Marampally 0:d44967a3251e 646 while(1)
Ajay_Marampally 0:d44967a3251e 647 {
Ajay_Marampally 0:d44967a3251e 648 while(brightness<1)
Ajay_Marampally 0:d44967a3251e 649 {
Ajay_Marampally 0:d44967a3251e 650 brightness+=0.1;
Ajay_Marampally 0:d44967a3251e 651 led=brightness;
Ajay_Marampally 0:d44967a3251e 652 wait(0.2);
Ajay_Marampally 0:d44967a3251e 653 }
Ajay_Marampally 0:d44967a3251e 654 while (brightness>0)
Ajay_Marampally 0:d44967a3251e 655 {
Ajay_Marampally 0:d44967a3251e 656 brightness-=0.1;
Ajay_Marampally 0:d44967a3251e 657 led=brightness;
Ajay_Marampally 0:d44967a3251e 658 wait(0.2);
Ajay_Marampally 0:d44967a3251e 659 }
Ajay_Marampally 0:d44967a3251e 660 }
Ajay_Marampally 0:d44967a3251e 661 }
Ajay_Marampally 0:d44967a3251e 662
Ajay_Marampally 0:d44967a3251e 663
Ajay_Marampally 0:d44967a3251e 664 Output:
Ajay_Marampally 0:d44967a3251e 665
Ajay_Marampally 0:d44967a3251e 666 4. This exercise uses a pulse width modulation signal to increase and decrease the brightness of the onboard LED The program requires the use of a host terminal application to communicate the brightness value to the mbed, in this example by using the ‘u’ and ‘d’ keys.
Ajay_Marampally 0:d44967a3251e 667
Ajay_Marampally 0:d44967a3251e 668 Code:
Ajay_Marampally 0:d44967a3251e 669
Ajay_Marampally 0:d44967a3251e 670
Ajay_Marampally 0:d44967a3251e 671 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 672 Serial pc(USBTX, USBRX);
Ajay_Marampally 0:d44967a3251e 673 PwmOut led(p5);
Ajay_Marampally 0:d44967a3251e 674 float brightness=0.0;
Ajay_Marampally 0:d44967a3251e 675
Ajay_Marampally 0:d44967a3251e 676 int main() {
Ajay_Marampally 0:d44967a3251e 677 while(1)
Ajay_Marampally 0:d44967a3251e 678 {
Ajay_Marampally 0:d44967a3251e 679 if(pc.getc()=='u')
Ajay_Marampally 0:d44967a3251e 680 {
Ajay_Marampally 0:d44967a3251e 681 brightness+=0.2;
Ajay_Marampally 0:d44967a3251e 682 led=brightness;
Ajay_Marampally 0:d44967a3251e 683 }
Ajay_Marampally 0:d44967a3251e 684 else if(pc.getc()=='d')
Ajay_Marampally 0:d44967a3251e 685 {
Ajay_Marampally 0:d44967a3251e 686 brightness-=0.2;
Ajay_Marampally 0:d44967a3251e 687 led=brightness;
Ajay_Marampally 0:d44967a3251e 688 }
Ajay_Marampally 0:d44967a3251e 689 }
Ajay_Marampally 0:d44967a3251e 690 }
Ajay_Marampally 0:d44967a3251e 691
Ajay_Marampally 0:d44967a3251e 692
Ajay_Marampally 0:d44967a3251e 693 Output:
Ajay_Marampally 0:d44967a3251e 694
Ajay_Marampally 0:d44967a3251e 695
Ajay_Marampally 0:d44967a3251e 696
Ajay_Marampally 0:d44967a3251e 697
Ajay_Marampally 0:d44967a3251e 698
Ajay_Marampally 0:d44967a3251e 699
Ajay_Marampally 0:d44967a3251e 700
Ajay_Marampally 0:d44967a3251e 701
Ajay_Marampally 0:d44967a3251e 702
Ajay_Marampally 0:d44967a3251e 703
Ajay_Marampally 0:d44967a3251e 704
Ajay_Marampally 0:d44967a3251e 705
Ajay_Marampally 0:d44967a3251e 706
Ajay_Marampally 0:d44967a3251e 707
Ajay_Marampally 0:d44967a3251e 708 Verification
Ajay_Marampally 0:d44967a3251e 709
Ajay_Marampally 0:d44967a3251e 710
Ajay_Marampally 0:d44967a3251e 711 Result:
Ajay_Marampally 0:d44967a3251e 712 PWM is implemented and verified in LPC11U24.
Ajay_Marampally 0:d44967a3251e 713
Ajay_Marampally 0:d44967a3251e 714 EMBEDDED SYSTEM DESIGN LAB
Ajay_Marampally 0:d44967a3251e 715 EXPERIMENT 6
Ajay_Marampally 0:d44967a3251e 716 CONTROLLING SERVO WITH PWM
Ajay_Marampally 0:d44967a3251e 717 AIM:
Ajay_Marampally 0:d44967a3251e 718 To perform the Following Using mbed LPC11U24
Ajay_Marampally 0:d44967a3251e 719 • To control a server motor using PWM.
Ajay_Marampally 0:d44967a3251e 720 • Light tracking devices are very important for the capture of solar energy. Often, they operate in 3 dimensions, and tilt a solar panel so that it is facing the sun as accurately as possible. To start rather more simply, create a 2D light tracker by fitting 2 LDRs, angled array from each other by 90 to 180 by a servo motor connected to the LDRs using the circuit in the figure to two ADC inputs. Write a program that reads the light value sensed by the 2 LDRs and rotates the servo motor such that each is receiving equal light. The servo can only rotate 180o. This is not, however, unrenewable, as a sun tracking system will be located to track the sun from sunrise to sunset, i.e, not more than 180o. Display the position of the servomotor in the serial of the computer.
Ajay_Marampally 0:d44967a3251e 721
Ajay_Marampally 0:d44967a3251e 722 General information:
Ajay_Marampally 0:d44967a3251e 723 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 724
Ajay_Marampally 0:d44967a3251e 725 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 726 • NXP LPC11U24 MCU
Ajay_Marampally 0:d44967a3251e 727 o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 728 o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 729 o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 730 • Prototyping form-factor
Ajay_Marampally 0:d44967a3251e 731 o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 732 o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 733 o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 734 • mbed.org Developer Website
Ajay_Marampally 0:d44967a3251e 735 o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 736 o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 737 o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 738
Ajay_Marampally 0:d44967a3251e 739 API Used:
Ajay_Marampally 0:d44967a3251e 740
Ajay_Marampally 0:d44967a3251e 741 Syntax used for PWM signal generation
Ajay_Marampally 0:d44967a3251e 742 PwmOut (PinName pin)
Ajay_Marampally 0:d44967a3251e 743
Ajay_Marampally 0:d44967a3251e 744 For delay:
Ajay_Marampally 0:d44967a3251e 745 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 746
Ajay_Marampally 0:d44967a3251e 747 For LED:
Ajay_Marampally 0:d44967a3251e 748 Led.write(); Led.read(); Led.period();
Ajay_Marampally 0:d44967a3251e 749
Ajay_Marampally 0:d44967a3251e 750
Ajay_Marampally 0:d44967a3251e 751 For getting analog input:
Ajay_Marampally 0:d44967a3251e 752 Analogin a(pin)
Ajay_Marampally 0:d44967a3251e 753 For delay:
Ajay_Marampally 0:d44967a3251e 754 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 755
Ajay_Marampally 0:d44967a3251e 756
Ajay_Marampally 0:d44967a3251e 757
Ajay_Marampally 0:d44967a3251e 758
Ajay_Marampally 0:d44967a3251e 759
Ajay_Marampally 0:d44967a3251e 760
Ajay_Marampally 0:d44967a3251e 761
Ajay_Marampally 0:d44967a3251e 762
Ajay_Marampally 0:d44967a3251e 763
Ajay_Marampally 0:d44967a3251e 764
Ajay_Marampally 0:d44967a3251e 765
Ajay_Marampally 0:d44967a3251e 766
Ajay_Marampally 0:d44967a3251e 767
Ajay_Marampally 0:d44967a3251e 768
Ajay_Marampally 0:d44967a3251e 769
Ajay_Marampally 0:d44967a3251e 770
Ajay_Marampally 0:d44967a3251e 771 5. To control a server motor using PWM.
Ajay_Marampally 0:d44967a3251e 772 CODE:
Ajay_Marampally 0:d44967a3251e 773 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 774 PwmOut ser(p6);
Ajay_Marampally 0:d44967a3251e 775 AnalogIn pot(p5);
Ajay_Marampally 0:d44967a3251e 776 int main()
Ajay_Marampally 0:d44967a3251e 777 {
Ajay_Marampally 0:d44967a3251e 778 float i;
Ajay_Marampally 0:d44967a3251e 779 ser.period(20);
Ajay_Marampally 0:d44967a3251e 780 while(1)
Ajay_Marampally 0:d44967a3251e 781 {
Ajay_Marampally 0:d44967a3251e 782 if(pot==0)
Ajay_Marampally 0:d44967a3251e 783 {
Ajay_Marampally 0:d44967a3251e 784 for(i=0;i<1;i=i+0.25)
Ajay_Marampally 0:d44967a3251e 785 ser.pulsewidth_ms(1.25*i);
Ajay_Marampally 0:d44967a3251e 786 }
Ajay_Marampally 0:d44967a3251e 787 else
Ajay_Marampally 0:d44967a3251e 788 {
Ajay_Marampally 0:d44967a3251e 789 for(i=1;i>0;i=i-0.25)
Ajay_Marampally 0:d44967a3251e 790 ser.pulsewidth_ms(1.25*i);
Ajay_Marampally 0:d44967a3251e 791 }
Ajay_Marampally 0:d44967a3251e 792
Ajay_Marampally 0:d44967a3251e 793 }
Ajay_Marampally 0:d44967a3251e 794
Ajay_Marampally 0:d44967a3251e 795
Ajay_Marampally 0:d44967a3251e 796 Output:
Ajay_Marampally 0:d44967a3251e 797
Ajay_Marampally 0:d44967a3251e 798
Ajay_Marampally 0:d44967a3251e 799 6. Light tracking devices are very important for the capture of solar energy. Often, they operate in 3 dimensions, and tilt a solar panel so that it is facing the sun as accurately as possible. To start rather more simply, create a 2D light tracker by fitting 2 LDRs, angled array from each other by 90 to 180 by a servo motor connected to the LDRs using the circuit in the figure to two ADC inputs. Write a program that reads the light value sensed by the 2 LDRs and rotates the servo motor such that each is receiving equal light. The servo can only rotate 180o. This is not, however, unrenewable, as a sun tracking system will be located to track the sun from sunrise to sunset, i.e, not more than 180o
Ajay_Marampally 0:d44967a3251e 800 CODE:
Ajay_Marampally 0:d44967a3251e 801 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 802 AnalogIn ldr1(p7);
Ajay_Marampally 0:d44967a3251e 803 AnalogIn ldr2(p6);
Ajay_Marampally 0:d44967a3251e 804 PwmOut servo(p20);
Ajay_Marampally 0:d44967a3251e 805
Ajay_Marampally 0:d44967a3251e 806 int main() {
Ajay_Marampally 0:d44967a3251e 807
Ajay_Marampally 0:d44967a3251e 808 servo.period_ms(20);
Ajay_Marampally 0:d44967a3251e 809 float i = 1.25;
Ajay_Marampally 0:d44967a3251e 810 while(1) {
Ajay_Marampally 0:d44967a3251e 811 //servo.pulsewidth(1.25);
Ajay_Marampally 0:d44967a3251e 812 while(ldr1!=ldr2) {
Ajay_Marampally 0:d44967a3251e 813 if(ldr1<ldr2)
Ajay_Marampally 0:d44967a3251e 814 servo.pulsewidth(i+0.25);
Ajay_Marampally 0:d44967a3251e 815 else
Ajay_Marampally 0:d44967a3251e 816 servo.pulsewidth(i-0.25);
Ajay_Marampally 0:d44967a3251e 817
Ajay_Marampally 0:d44967a3251e 818 }
Ajay_Marampally 0:d44967a3251e 819 }
Ajay_Marampally 0:d44967a3251e 820 }
Ajay_Marampally 0:d44967a3251e 821
Ajay_Marampally 0:d44967a3251e 822 Output:
Ajay_Marampally 0:d44967a3251e 823
Ajay_Marampally 0:d44967a3251e 824
Ajay_Marampally 0:d44967a3251e 825
Ajay_Marampally 0:d44967a3251e 826 Verification
Ajay_Marampally 0:d44967a3251e 827
Ajay_Marampally 0:d44967a3251e 828
Ajay_Marampally 0:d44967a3251e 829 Result:
Ajay_Marampally 0:d44967a3251e 830 The servo is controlled with PWM.
Ajay_Marampally 0:d44967a3251e 831
Ajay_Marampally 0:d44967a3251e 832
Ajay_Marampally 0:d44967a3251e 833
Ajay_Marampally 0:d44967a3251e 834
Ajay_Marampally 0:d44967a3251e 835
Ajay_Marampally 0:d44967a3251e 836
Ajay_Marampally 0:d44967a3251e 837
Ajay_Marampally 0:d44967a3251e 838
Ajay_Marampally 0:d44967a3251e 839
Ajay_Marampally 0:d44967a3251e 840 EMBEDDED SYSTEM DESIGN LAB
Ajay_Marampally 0:d44967a3251e 841 EXPERIMENT 7
Ajay_Marampally 0:d44967a3251e 842 TIMERS AND COUNTERS
Ajay_Marampally 0:d44967a3251e 843 AIM:
Ajay_Marampally 0:d44967a3251e 844 To perform the Following Using mbed LPC11U24
Ajay_Marampally 0:d44967a3251e 845 • Write a code with a help if the timer to measure the time taken to write a message on the screen, and display the time taken as the message.
Ajay_Marampally 0:d44967a3251e 846 • Create a square ware (400ms) output using scheduled programming and verify the timing accuracy with an oscilloscope.
Ajay_Marampally 0:d44967a3251e 847 • When the interrupt is activated, by this rising edge, the ISR executes and LED1 is toggled. This can occur at any time in the program execution. The program has effectively one time triggered task, the switching of the LED4 and one event triggered task, the switching of LEDs.
Ajay_Marampally 0:d44967a3251e 848 • Use the mbed interrupt In library to toggle an LED whenever a digital input goes high, implementing a debounce counter to avoid multiple interrupts.
Ajay_Marampally 0:d44967a3251e 849
Ajay_Marampally 0:d44967a3251e 850 General information:
Ajay_Marampally 0:d44967a3251e 851 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 852
Ajay_Marampally 0:d44967a3251e 853 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 854 • NXP LPC11U24 MCU
Ajay_Marampally 0:d44967a3251e 855 o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 856 o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 857 o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 858 • Prototyping form-factor
Ajay_Marampally 0:d44967a3251e 859 o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 860 o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 861 o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 862 • mbed.org Developer Website
Ajay_Marampally 0:d44967a3251e 863 o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 864 o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 865 o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 866
Ajay_Marampally 0:d44967a3251e 867 API Used:
Ajay_Marampally 0:d44967a3251e 868
Ajay_Marampally 0:d44967a3251e 869 Syntax used for trimer:
Ajay_Marampally 0:d44967a3251e 870 Timer (PinName pin)
Ajay_Marampally 0:d44967a3251e 871
Ajay_Marampally 0:d44967a3251e 872 Syntax used for interrupt:
Ajay_Marampally 0:d44967a3251e 873 InterruptIn (PinName pin)
Ajay_Marampally 0:d44967a3251e 874
Ajay_Marampally 0:d44967a3251e 875 For delay:
Ajay_Marampally 0:d44967a3251e 876 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 877
Ajay_Marampally 0:d44967a3251e 878 For LED:
Ajay_Marampally 0:d44967a3251e 879 Led.write(); Led.read(); Led.period();
Ajay_Marampally 0:d44967a3251e 880
Ajay_Marampally 0:d44967a3251e 881
Ajay_Marampally 0:d44967a3251e 882
Ajay_Marampally 0:d44967a3251e 883
Ajay_Marampally 0:d44967a3251e 884
Ajay_Marampally 0:d44967a3251e 885
Ajay_Marampally 0:d44967a3251e 886
Ajay_Marampally 0:d44967a3251e 887
Ajay_Marampally 0:d44967a3251e 888
Ajay_Marampally 0:d44967a3251e 889
Ajay_Marampally 0:d44967a3251e 890
Ajay_Marampally 0:d44967a3251e 891
Ajay_Marampally 0:d44967a3251e 892
Ajay_Marampally 0:d44967a3251e 893
Ajay_Marampally 0:d44967a3251e 894
Ajay_Marampally 0:d44967a3251e 895
Ajay_Marampally 0:d44967a3251e 896
Ajay_Marampally 0:d44967a3251e 897
Ajay_Marampally 0:d44967a3251e 898
Ajay_Marampally 0:d44967a3251e 899 1. Write a code with a help if the timer to measure the time taken to write a message on the screen, and display the time taken as the message.
Ajay_Marampally 0:d44967a3251e 900 CODE:
Ajay_Marampally 0:d44967a3251e 901 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 902
Ajay_Marampally 0:d44967a3251e 903 Timer t;
Ajay_Marampally 0:d44967a3251e 904 Serial pc(USBTX,USBRX);
Ajay_Marampally 0:d44967a3251e 905
Ajay_Marampally 0:d44967a3251e 906 int main() {
Ajay_Marampally 0:d44967a3251e 907 t.start();
Ajay_Marampally 0:d44967a3251e 908 pc.printf("Hey");
Ajay_Marampally 0:d44967a3251e 909 t.stop();
Ajay_Marampally 0:d44967a3251e 910 pc.printf("The time taken was %f seconds\n", t.read());
Ajay_Marampally 0:d44967a3251e 911 }
Ajay_Marampally 0:d44967a3251e 912
Ajay_Marampally 0:d44967a3251e 913
Ajay_Marampally 0:d44967a3251e 914
Ajay_Marampally 0:d44967a3251e 915 Output:
Ajay_Marampally 0:d44967a3251e 916
Ajay_Marampally 0:d44967a3251e 917
Ajay_Marampally 0:d44967a3251e 918
Ajay_Marampally 0:d44967a3251e 919 2. Create a square ware (400ms) output using scheduled programming and verify the timing accuracy with an oscilloscope.
Ajay_Marampally 0:d44967a3251e 920 CODE:
Ajay_Marampally 0:d44967a3251e 921 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 922
Ajay_Marampally 0:d44967a3251e 923 Timer t;
Ajay_Marampally 0:d44967a3251e 924 DigitalOut sqr(p7);
Ajay_Marampally 0:d44967a3251e 925
Ajay_Marampally 0:d44967a3251e 926 int main() {
Ajay_Marampally 0:d44967a3251e 927 while(1)
Ajay_Marampally 0:d44967a3251e 928 {
Ajay_Marampally 0:d44967a3251e 929 t.start();
Ajay_Marampally 0:d44967a3251e 930 sqr=1;
Ajay_Marampally 0:d44967a3251e 931 if (t.read_ms()==200)
Ajay_Marampally 0:d44967a3251e 932 {
Ajay_Marampally 0:d44967a3251e 933 t.stop();
Ajay_Marampally 0:d44967a3251e 934 }
Ajay_Marampally 0:d44967a3251e 935 t.start();
Ajay_Marampally 0:d44967a3251e 936 sqr=0;
Ajay_Marampally 0:d44967a3251e 937 if (t.read_ms()==200)
Ajay_Marampally 0:d44967a3251e 938 {
Ajay_Marampally 0:d44967a3251e 939 t.stop();
Ajay_Marampally 0:d44967a3251e 940 }
Ajay_Marampally 0:d44967a3251e 941 }
Ajay_Marampally 0:d44967a3251e 942 }
Ajay_Marampally 0:d44967a3251e 943
Ajay_Marampally 0:d44967a3251e 944 Output:
Ajay_Marampally 0:d44967a3251e 945
Ajay_Marampally 0:d44967a3251e 946
Ajay_Marampally 0:d44967a3251e 947
Ajay_Marampally 0:d44967a3251e 948
Ajay_Marampally 0:d44967a3251e 949
Ajay_Marampally 0:d44967a3251e 950 3. When the interrupt is activated, by this rising edge, the ISR executes and LED1 is toggled. This can occur at any time in the program execution. The program has effectively one time triggered task, the switching of the LED4 and one event triggered task, the switching of LEDs.
Ajay_Marampally 0:d44967a3251e 951 CODE:
Ajay_Marampally 0:d44967a3251e 952 InterruptIn button(p5);
Ajay_Marampally 0:d44967a3251e 953 DigitalOut led(LED1);
Ajay_Marampally 0:d44967a3251e 954 DigitalOut flash(LED4);
Ajay_Marampally 0:d44967a3251e 955
Ajay_Marampally 0:d44967a3251e 956 void flip() {
Ajay_Marampally 0:d44967a3251e 957 led = !led;
Ajay_Marampally 0:d44967a3251e 958 }
Ajay_Marampally 0:d44967a3251e 959
Ajay_Marampally 0:d44967a3251e 960 int main() {
Ajay_Marampally 0:d44967a3251e 961 button.rise(&flip);
Ajay_Marampally 0:d44967a3251e 962 while(1) {
Ajay_Marampally 0:d44967a3251e 963 flash = !flash;
Ajay_Marampally 0:d44967a3251e 964 wait(0.25);
Ajay_Marampally 0:d44967a3251e 965 }
Ajay_Marampally 0:d44967a3251e 966 }
Ajay_Marampally 0:d44967a3251e 967
Ajay_Marampally 0:d44967a3251e 968
Ajay_Marampally 0:d44967a3251e 969 Output:
Ajay_Marampally 0:d44967a3251e 970
Ajay_Marampally 0:d44967a3251e 971
Ajay_Marampally 0:d44967a3251e 972
Ajay_Marampally 0:d44967a3251e 973
Ajay_Marampally 0:d44967a3251e 974
Ajay_Marampally 0:d44967a3251e 975 4. Use the mbed interrupt In library to toggle an LED whenever a digital input goes high, implementing a debounce counter to avoid multiple interrupts.
Ajay_Marampally 0:d44967a3251e 976 CODE:
Ajay_Marampally 0:d44967a3251e 977 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 978
Ajay_Marampally 0:d44967a3251e 979 Timer debounce;
Ajay_Marampally 0:d44967a3251e 980 InterruptIn button(p18);
Ajay_Marampally 0:d44967a3251e 981 DigitalOut led1(p5);
Ajay_Marampally 0:d44967a3251e 982
Ajay_Marampally 0:d44967a3251e 983 void toggle(void);
Ajay_Marampally 0:d44967a3251e 984 int main(){
Ajay_Marampally 0:d44967a3251e 985 debounce.start();
Ajay_Marampally 0:d44967a3251e 986 button.rise(&toggle);
Ajay_Marampally 0:d44967a3251e 987 }
Ajay_Marampally 0:d44967a3251e 988 void toggle(){
Ajay_Marampally 0:d44967a3251e 989 if(debounce.read_ms()>200)
Ajay_Marampally 0:d44967a3251e 990 led1=!led1;
Ajay_Marampally 0:d44967a3251e 991 debounce.reset();
Ajay_Marampally 0:d44967a3251e 992 }
Ajay_Marampally 0:d44967a3251e 993
Ajay_Marampally 0:d44967a3251e 994
Ajay_Marampally 0:d44967a3251e 995 Output:
Ajay_Marampally 0:d44967a3251e 996
Ajay_Marampally 0:d44967a3251e 997
Ajay_Marampally 0:d44967a3251e 998 Verification
Ajay_Marampally 0:d44967a3251e 999
Ajay_Marampally 0:d44967a3251e 1000
Ajay_Marampally 0:d44967a3251e 1001 Result:
Ajay_Marampally 0:d44967a3251e 1002 The working of timer and counter is verified.
Ajay_Marampally 0:d44967a3251e 1003
Ajay_Marampally 0:d44967a3251e 1004
Ajay_Marampally 0:d44967a3251e 1005
Ajay_Marampally 0:d44967a3251e 1006
Ajay_Marampally 0:d44967a3251e 1007
Ajay_Marampally 0:d44967a3251e 1008 EMBEDDED SYSTEM DESIGN LAB
Ajay_Marampally 0:d44967a3251e 1009 EXPERIMENT 8
Ajay_Marampally 0:d44967a3251e 1010 INTERFACING BLUETOOTH MODULE HC-05
Ajay_Marampally 0:d44967a3251e 1011 AIM:a
Ajay_Marampally 0:d44967a3251e 1012 To perform the Following Using mbed LPC11U24
Ajay_Marampally 0:d44967a3251e 1013 • Transmit any character or string from smartphone via Bluetooth to the ARM board and toggle LED1 of mbed board.
Ajay_Marampally 0:d44967a3251e 1014 • Design, Build and program a simple embedded system using LM35 Sensor which displays temperature on the phone using Bluetooth terminal.
Ajay_Marampally 0:d44967a3251e 1015
Ajay_Marampally 0:d44967a3251e 1016 General information:
Ajay_Marampally 0:d44967a3251e 1017 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 1018
Ajay_Marampally 0:d44967a3251e 1019 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 1020 • NXP LPC11U24 MCU
Ajay_Marampally 0:d44967a3251e 1021 o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 1022 o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 1023 o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 1024 • Prototyping form-factor
Ajay_Marampally 0:d44967a3251e 1025 o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 1026 o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 1027 o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 1028 • mbed.org Developer Website
Ajay_Marampally 0:d44967a3251e 1029 o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 1030 o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 1031 o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 1032
Ajay_Marampally 0:d44967a3251e 1033 API Used:
Ajay_Marampally 0:d44967a3251e 1034
Ajay_Marampally 0:d44967a3251e 1035 For Bluetooth
Ajay_Marampally 0:d44967a3251e 1036 Serial blue(p9,p10);
Ajay_Marampally 0:d44967a3251e 1037
Ajay_Marampally 0:d44967a3251e 1038 For delay:
Ajay_Marampally 0:d44967a3251e 1039 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 1040
Ajay_Marampally 0:d44967a3251e 1041 For LED:
Ajay_Marampally 0:d44967a3251e 1042 Led.write(); Led.read(); Led.period();
Ajay_Marampally 0:d44967a3251e 1043
Ajay_Marampally 0:d44967a3251e 1044 Serial communication:
Ajay_Marampally 0:d44967a3251e 1045 Serial pc(USBTX, USBRX); // tx, rx
Ajay_Marampally 0:d44967a3251e 1046
Ajay_Marampally 0:d44967a3251e 1047
Ajay_Marampally 0:d44967a3251e 1048
Ajay_Marampally 0:d44967a3251e 1049 1. Transmit any character or string from smartphone via Bluetooth to the ARM board and toggle LED1 of mbed board.
Ajay_Marampally 0:d44967a3251e 1050 CODE:
Ajay_Marampally 0:d44967a3251e 1051 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1052 Serial pc(USBTX, USBRX);
Ajay_Marampally 0:d44967a3251e 1053 Serial blue(p9, p10);
Ajay_Marampally 0:d44967a3251e 1054 DigitalOut myled(LED1);
Ajay_Marampally 0:d44967a3251e 1055 int main()
Ajay_Marampally 0:d44967a3251e 1056 {
Ajay_Marampally 0:d44967a3251e 1057 blue.baud(115200);
Ajay_Marampally 0:d44967a3251e 1058 pc.baud(115200);
Ajay_Marampally 0:d44967a3251e 1059 pc.printf("Bluetooth Start\r\n");
Ajay_Marampally 0:d44967a3251e 1060 // echo back characters and toggle the LED
Ajay_Marampally 0:d44967a3251e 1061 while (1)
Ajay_Marampally 0:d44967a3251e 1062 {
Ajay_Marampally 0:d44967a3251e 1063 if (blue.readable())
Ajay_Marampally 0:d44967a3251e 1064 {
Ajay_Marampally 0:d44967a3251e 1065 pc.putc(blue.getc());
Ajay_Marampally 0:d44967a3251e 1066 myled = !myled;
Ajay_Marampally 0:d44967a3251e 1067 }
Ajay_Marampally 0:d44967a3251e 1068 }
Ajay_Marampally 0:d44967a3251e 1069 }
Ajay_Marampally 0:d44967a3251e 1070
Ajay_Marampally 0:d44967a3251e 1071
Ajay_Marampally 0:d44967a3251e 1072
Ajay_Marampally 0:d44967a3251e 1073 Output:
Ajay_Marampally 0:d44967a3251e 1074
Ajay_Marampally 0:d44967a3251e 1075
Ajay_Marampally 0:d44967a3251e 1076
Ajay_Marampally 0:d44967a3251e 1077
Ajay_Marampally 0:d44967a3251e 1078
Ajay_Marampally 0:d44967a3251e 1079
Ajay_Marampally 0:d44967a3251e 1080
Ajay_Marampally 0:d44967a3251e 1081 2. Design, Build and program a simple embedded system using LM35 Sensor which displays temperature on the phone using Bluetooth terminal.
Ajay_Marampally 0:d44967a3251e 1082 CODE:
Ajay_Marampally 0:d44967a3251e 1083 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1084 Serial pc(USBTX, USBRX);
Ajay_Marampally 0:d44967a3251e 1085 Serial blue(p9, p10);
Ajay_Marampally 0:d44967a3251e 1086 AnalogIn temp(p5);
Ajay_Marampally 0:d44967a3251e 1087 int main()
Ajay_Marampally 0:d44967a3251e 1088 {
Ajay_Marampally 0:d44967a3251e 1089 blue.baud(9600);
Ajay_Marampally 0:d44967a3251e 1090 pc.baud(9600);
Ajay_Marampally 0:d44967a3251e 1091 while (1)
Ajay_Marampally 0:d44967a3251e 1092 { float t=temp*3.3*100;
Ajay_Marampally 0:d44967a3251e 1093 if (pc.readable())
Ajay_Marampally 0:d44967a3251e 1094 { blue.printf("The temperature is ");
Ajay_Marampally 0:d44967a3251e 1095 blue.putc(t);
Ajay_Marampally 0:d44967a3251e 1096 }
Ajay_Marampally 0:d44967a3251e 1097 }
Ajay_Marampally 0:d44967a3251e 1098 }
Ajay_Marampally 0:d44967a3251e 1099
Ajay_Marampally 0:d44967a3251e 1100
Ajay_Marampally 0:d44967a3251e 1101
Ajay_Marampally 0:d44967a3251e 1102
Ajay_Marampally 0:d44967a3251e 1103
Ajay_Marampally 0:d44967a3251e 1104
Ajay_Marampally 0:d44967a3251e 1105 Output:
Ajay_Marampally 0:d44967a3251e 1106
Ajay_Marampally 0:d44967a3251e 1107
Ajay_Marampally 0:d44967a3251e 1108
Ajay_Marampally 0:d44967a3251e 1109 Verification
Ajay_Marampally 0:d44967a3251e 1110
Ajay_Marampally 0:d44967a3251e 1111
Ajay_Marampally 0:d44967a3251e 1112
Ajay_Marampally 0:d44967a3251e 1113 Result:
Ajay_Marampally 0:d44967a3251e 1114 Bluetooth is interfaced and its working is verified.
Ajay_Marampally 0:d44967a3251e 1115
Ajay_Marampally 0:d44967a3251e 1116
Ajay_Marampally 0:d44967a3251e 1117
Ajay_Marampally 0:d44967a3251e 1118
Ajay_Marampally 0:d44967a3251e 1119 EMBEDDED SYSTEM DESIGN LAB
Ajay_Marampally 0:d44967a3251e 1120 EXPERIMENT 9
Ajay_Marampally 0:d44967a3251e 1121 SPI USING LPC11U24
Ajay_Marampally 0:d44967a3251e 1122 AIM:
Ajay_Marampally 0:d44967a3251e 1123 To perform the Following Using mbed LPC11U24
Ajay_Marampally 0:d44967a3251e 1124 • Set the mbed board as a master and exchange data with a slave, sending its own switch position and display that of slave.
Ajay_Marampally 0:d44967a3251e 1125 • Set the mbed board as a slave and exchange data with a master, sending its own switch position and display that of master.
Ajay_Marampally 0:d44967a3251e 1126 • Display the text typed into the terminal application of the slave terminal. Use # key to clear the screen of the text u have written.
Ajay_Marampally 0:d44967a3251e 1127
Ajay_Marampally 0:d44967a3251e 1128 General information:
Ajay_Marampally 0:d44967a3251e 1129 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 1130
Ajay_Marampally 0:d44967a3251e 1131 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 1132 • NXP LPC11U24 MCU
Ajay_Marampally 0:d44967a3251e 1133 o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 1134 o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 1135 o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 1136 • Prototyping form-factor
Ajay_Marampally 0:d44967a3251e 1137 o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 1138 o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 1139 o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 1140 • mbed.org Developer Website
Ajay_Marampally 0:d44967a3251e 1141 o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 1142 o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 1143 o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 1144
Ajay_Marampally 0:d44967a3251e 1145 API Used:
Ajay_Marampally 0:d44967a3251e 1146
Ajay_Marampally 0:d44967a3251e 1147 Syntax used for digital input:
Ajay_Marampally 0:d44967a3251e 1148 DigitalIn switch_ip1(p5);
Ajay_Marampally 0:d44967a3251e 1149
Ajay_Marampally 0:d44967a3251e 1150 Digital output:
Ajay_Marampally 0:d44967a3251e 1151 DigitalOut led1(LED1);
Ajay_Marampally 0:d44967a3251e 1152
Ajay_Marampally 0:d44967a3251e 1153 SPI master:
Ajay_Marampally 0:d44967a3251e 1154 SPI ser_port(p11,p12,p13);//mosi,miso,sclk
Ajay_Marampally 0:d44967a3251e 1155
Ajay_Marampally 0:d44967a3251e 1156 SPI slave:
Ajay_Marampally 0:d44967a3251e 1157 SPISlave ser_port(p11,p12,p13,p14);//mosi,miso,sclk
Ajay_Marampally 0:d44967a3251e 1158 For delay:
Ajay_Marampally 0:d44967a3251e 1159 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 1160
Ajay_Marampally 0:d44967a3251e 1161 Serial communication:
Ajay_Marampally 0:d44967a3251e 1162 Serial pc(USBTX, USBRX); // tx, rx
Ajay_Marampally 0:d44967a3251e 1163
Ajay_Marampally 0:d44967a3251e 1164
Ajay_Marampally 0:d44967a3251e 1165
Ajay_Marampally 0:d44967a3251e 1166 1. Set the mbed board as a master and exchange data with a slave, sending its own switch position and display that of slave.
Ajay_Marampally 0:d44967a3251e 1167 CODE:
Ajay_Marampally 0:d44967a3251e 1168 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1169 SPI ser_port(p11,p12,p13);//mosi,miso,sclk
Ajay_Marampally 0:d44967a3251e 1170 DigitalOut led1(LED1);//led
Ajay_Marampally 0:d44967a3251e 1171 DigitalOut led2(LED2);//led
Ajay_Marampally 0:d44967a3251e 1172 DigitalOut cs(p14);//this acts as "slave select"
Ajay_Marampally 0:d44967a3251e 1173 DigitalIn switch_ip1(p7);
Ajay_Marampally 0:d44967a3251e 1174 DigitalIn switch_ip2(p8);
Ajay_Marampally 0:d44967a3251e 1175 char switch_word;//word we will send
Ajay_Marampally 0:d44967a3251e 1176 char recd_val;//value return from slave
Ajay_Marampally 0:d44967a3251e 1177 int main() {
Ajay_Marampally 0:d44967a3251e 1178 while(1) {
Ajay_Marampally 0:d44967a3251e 1179 //Default settings for SPI Master chosen, no need for further configuration
Ajay_Marampally 0:d44967a3251e 1180 //Set up word to be sent, by testing switch inputs
Ajay_Marampally 0:d44967a3251e 1181 switch_word=0xa0;//set up a recognisable output pattern
Ajay_Marampally 0:d44967a3251e 1182 if (switch_ip1==1)
Ajay_Marampally 0:d44967a3251e 1183 switch_word=switch_word|0x01;//OR in lsb
Ajay_Marampally 0:d44967a3251e 1184 if (switch_ip2==1)
Ajay_Marampally 0:d44967a3251e 1185 switch_word=switch_word|0x02;//OR in next lsb
Ajay_Marampally 0:d44967a3251e 1186 cs=0;//select slave
Ajay_Marampally 0:d44967a3251e 1187 recd_val=ser_port.write(switch_word);//send switch_word and receive data
Ajay_Marampally 0:d44967a3251e 1188 cs=1;
Ajay_Marampally 0:d44967a3251e 1189 wait(0.01);
Ajay_Marampally 0:d44967a3251e 1190 //set leds according to incoming word from slave
Ajay_Marampally 0:d44967a3251e 1191 led1=0;//preset both to 0
Ajay_Marampally 0:d44967a3251e 1192 led2=0;
Ajay_Marampally 0:d44967a3251e 1193 recd_val=recd_val&0x03;//AND out unwanted bits
Ajay_Marampally 0:d44967a3251e 1194 if(recd_val==1)
Ajay_Marampally 0:d44967a3251e 1195 led1=1;
Ajay_Marampally 0:d44967a3251e 1196 if(recd_val==2)
Ajay_Marampally 0:d44967a3251e 1197 led2=1;
Ajay_Marampally 0:d44967a3251e 1198 if(recd_val==3)
Ajay_Marampally 0:d44967a3251e 1199 {
Ajay_Marampally 0:d44967a3251e 1200 led1=1;
Ajay_Marampally 0:d44967a3251e 1201 led2=1;
Ajay_Marampally 0:d44967a3251e 1202 }
Ajay_Marampally 0:d44967a3251e 1203 }
Ajay_Marampally 0:d44967a3251e 1204 }
Ajay_Marampally 0:d44967a3251e 1205
Ajay_Marampally 0:d44967a3251e 1206
Ajay_Marampally 0:d44967a3251e 1207
Ajay_Marampally 0:d44967a3251e 1208
Ajay_Marampally 0:d44967a3251e 1209
Ajay_Marampally 0:d44967a3251e 1210
Ajay_Marampally 0:d44967a3251e 1211
Ajay_Marampally 0:d44967a3251e 1212 2. Set the mbed board as a slave and exchange data with a master, sending its own switch position and display that of master.
Ajay_Marampally 0:d44967a3251e 1213 CODE:
Ajay_Marampally 0:d44967a3251e 1214 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1215 SPISlave ser_port(p11,p12,p13,p14);//mosi,miso,sclk
Ajay_Marampally 0:d44967a3251e 1216 DigitalOut led1(LED1);//led
Ajay_Marampally 0:d44967a3251e 1217 DigitalOut led2(LED2);//led
Ajay_Marampally 0:d44967a3251e 1218 DigitalIn switch_ip1(p5);
Ajay_Marampally 0:d44967a3251e 1219 DigitalIn switch_ip2(p6);
Ajay_Marampally 0:d44967a3251e 1220 char switch_word;//word we will send
Ajay_Marampally 0:d44967a3251e 1221 char recd_val;//value return from slave
Ajay_Marampally 0:d44967a3251e 1222 int main() {
Ajay_Marampally 0:d44967a3251e 1223 //default formatting applied
Ajay_Marampally 0:d44967a3251e 1224 while(1) {
Ajay_Marampally 0:d44967a3251e 1225 //set up switch_word from switches that are pressed
Ajay_Marampally 0:d44967a3251e 1226 switch_word=0xa0;//set up a recognizable outout pattern
Ajay_Marampally 0:d44967a3251e 1227 if (switch_ip1==1)
Ajay_Marampally 0:d44967a3251e 1228 switch_word=switch_word|0x01;
Ajay_Marampally 0:d44967a3251e 1229 if (switch_ip2==1)
Ajay_Marampally 0:d44967a3251e 1230 switch_word=switch_word|0x02;
Ajay_Marampally 0:d44967a3251e 1231 if (ser_port.receive())
Ajay_Marampally 0:d44967a3251e 1232 {//test if data transfer has occured
Ajay_Marampally 0:d44967a3251e 1233 recd_val=ser_port.read();//Read byte from master
Ajay_Marampally 0:d44967a3251e 1234 ser_port.reply(switch_word);//Make this the next reply
Ajay_Marampally 0:d44967a3251e 1235 }
Ajay_Marampally 0:d44967a3251e 1236 led1 = 0;
Ajay_Marampally 0:d44967a3251e 1237 led2 = 0;
Ajay_Marampally 0:d44967a3251e 1238 recd_val=recd_val&0x03;
Ajay_Marampally 0:d44967a3251e 1239 if(recd_val==1)
Ajay_Marampally 0:d44967a3251e 1240 led1=1;
Ajay_Marampally 0:d44967a3251e 1241 if(recd_val==2)
Ajay_Marampally 0:d44967a3251e 1242 led2=1;
Ajay_Marampally 0:d44967a3251e 1243 if(recd_val==3)
Ajay_Marampally 0:d44967a3251e 1244 {
Ajay_Marampally 0:d44967a3251e 1245 led1=1;
Ajay_Marampally 0:d44967a3251e 1246 led2=1;
Ajay_Marampally 0:d44967a3251e 1247 }
Ajay_Marampally 0:d44967a3251e 1248 }
Ajay_Marampally 0:d44967a3251e 1249 }
Ajay_Marampally 0:d44967a3251e 1250
Ajay_Marampally 0:d44967a3251e 1251
Ajay_Marampally 0:d44967a3251e 1252 Output:
Ajay_Marampally 0:d44967a3251e 1253
Ajay_Marampally 0:d44967a3251e 1254
Ajay_Marampally 0:d44967a3251e 1255
Ajay_Marampally 0:d44967a3251e 1256
Ajay_Marampally 0:d44967a3251e 1257 3. Display the text typed into the terminal application of the slave terminal. Use # key to clear the screen of the text u have written.
Ajay_Marampally 0:d44967a3251e 1258 MASTER CODE:
Ajay_Marampally 0:d44967a3251e 1259 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1260 SPI spi(p11,p12,p13,p14); // mosi, miso, sclk
Ajay_Marampally 0:d44967a3251e 1261 DigitalOut cs(p8);
Ajay_Marampally 0:d44967a3251e 1262 Serial pc(USBTX, USBRX); // tx, rx
Ajay_Marampally 0:d44967a3251e 1263 char a;
Ajay_Marampally 0:d44967a3251e 1264 int main()
Ajay_Marampally 0:d44967a3251e 1265 {
Ajay_Marampally 0:d44967a3251e 1266 while(1)
Ajay_Marampally 0:d44967a3251e 1267 {
Ajay_Marampally 0:d44967a3251e 1268 //pc.printf("Enter char: ");
Ajay_Marampally 0:d44967a3251e 1269 a=pc.getc();
Ajay_Marampally 0:d44967a3251e 1270 pc.printf("%c",a);
Ajay_Marampally 0:d44967a3251e 1271 cs=0;
Ajay_Marampally 0:d44967a3251e 1272 spi.write(a);
Ajay_Marampally 0:d44967a3251e 1273 cs=1;
Ajay_Marampally 0:d44967a3251e 1274 }
Ajay_Marampally 0:d44967a3251e 1275 }
Ajay_Marampally 0:d44967a3251e 1276
Ajay_Marampally 0:d44967a3251e 1277
Ajay_Marampally 0:d44967a3251e 1278
Ajay_Marampally 0:d44967a3251e 1279 SLAVE CODE:
Ajay_Marampally 0:d44967a3251e 1280 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1281 SPISlave device(p11, p12, p13, p14);
Ajay_Marampally 0:d44967a3251e 1282 Serial pc(USBTX, USBRX);
Ajay_Marampally 0:d44967a3251e 1283 int main() {
Ajay_Marampally 0:d44967a3251e 1284 while (1) {
Ajay_Marampally 0:d44967a3251e 1285 if (device.receive()) {
Ajay_Marampally 0:d44967a3251e 1286 char v = device.read();
Ajay_Marampally 0:d44967a3251e 1287 pc.printf("%c",v);
Ajay_Marampally 0:d44967a3251e 1288 if (v =='#')
Ajay_Marampally 0:d44967a3251e 1289 pc.printf("/b");
Ajay_Marampally 0:d44967a3251e 1290 }
Ajay_Marampally 0:d44967a3251e 1291 }
Ajay_Marampally 0:d44967a3251e 1292
Ajay_Marampally 0:d44967a3251e 1293
Ajay_Marampally 0:d44967a3251e 1294 Output:
Ajay_Marampally 0:d44967a3251e 1295
Ajay_Marampally 0:d44967a3251e 1296
Ajay_Marampally 0:d44967a3251e 1297 Master:
Ajay_Marampally 0:d44967a3251e 1298
Ajay_Marampally 0:d44967a3251e 1299 Slave:
Ajay_Marampally 0:d44967a3251e 1300
Ajay_Marampally 0:d44967a3251e 1301
Ajay_Marampally 0:d44967a3251e 1302
Ajay_Marampally 0:d44967a3251e 1303 Verification
Ajay_Marampally 0:d44967a3251e 1304
Ajay_Marampally 0:d44967a3251e 1305
Ajay_Marampally 0:d44967a3251e 1306
Ajay_Marampally 0:d44967a3251e 1307 Result:
Ajay_Marampally 0:d44967a3251e 1308 SPI protocol is implemented and verified.
Ajay_Marampally 0:d44967a3251e 1309
Ajay_Marampally 0:d44967a3251e 1310
Ajay_Marampally 0:d44967a3251e 1311
Ajay_Marampally 0:d44967a3251e 1312
Ajay_Marampally 0:d44967a3251e 1313 ECE 4003 EMBEDDED SYSTEM DESIGN
Ajay_Marampally 0:d44967a3251e 1314 EXPERIMENT 10
Ajay_Marampally 0:d44967a3251e 1315 I2C Interface
Ajay_Marampally 0:d44967a3251e 1316
Ajay_Marampally 0:d44967a3251e 1317 SOFTWARE USED:
Ajay_Marampally 0:d44967a3251e 1318 Arm Mbed OS developer site
Ajay_Marampally 0:d44967a3251e 1319 General information:
Ajay_Marampally 0:d44967a3251e 1320 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 1321
Ajay_Marampally 0:d44967a3251e 1322 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 1323 • NXP LPC11U24 MCU
Ajay_Marampally 0:d44967a3251e 1324 o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 1325 o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 1326 o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 1327 • Prototyping form-factor
Ajay_Marampally 0:d44967a3251e 1328 o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 1329 o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 1330 o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 1331 • mbed.org Developer Website
Ajay_Marampally 0:d44967a3251e 1332 o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 1333 o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 1334 o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 1335
Ajay_Marampally 0:d44967a3251e 1336
Ajay_Marampally 0:d44967a3251e 1337 API Used:
Ajay_Marampally 0:d44967a3251e 1338
Ajay_Marampally 0:d44967a3251e 1339 Syntax used for digital output:
Ajay_Marampally 0:d44967a3251e 1340 DigitalOut (PinName pin)
Ajay_Marampally 0:d44967a3251e 1341
Ajay_Marampally 0:d44967a3251e 1342 For LED blinking we’ve used:
Ajay_Marampally 0:d44967a3251e 1343 DigitalOut variable(LEDn); where n= 1,2,3,4
Ajay_Marampally 0:d44967a3251e 1344
Ajay_Marampally 0:d44967a3251e 1345 For delay:
Ajay_Marampally 0:d44967a3251e 1346 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 1347
Ajay_Marampally 0:d44967a3251e 1348
Ajay_Marampally 0:d44967a3251e 1349 Ex. 1
Ajay_Marampally 0:d44967a3251e 1350 •Interface two mbed boards to have communication on I2C with one as master and another as slave.
Ajay_Marampally 0:d44967a3251e 1351 •Receive data from serial monitor and transmit thru master device and receive the same and display on serial monitor of slave I2C.
Ajay_Marampally 0:d44967a3251e 1352
Ajay_Marampally 0:d44967a3251e 1353 MASTER:
Ajay_Marampally 0:d44967a3251e 1354 //Master
Ajay_Marampally 0:d44967a3251e 1355 #include <mbed.h>
Ajay_Marampally 0:d44967a3251e 1356 Serial pc(USBTX, USBRX);
Ajay_Marampally 0:d44967a3251e 1357 I2CSlave slave(p28, p27);
Ajay_Marampally 0:d44967a3251e 1358 int main()
Ajay_Marampally 0:d44967a3251e 1359 {
Ajay_Marampally 0:d44967a3251e 1360 char buf[20];
Ajay_Marampally 0:d44967a3251e 1361 char msg[] = "Slave!";
Ajay_Marampally 0:d44967a3251e 1362 slave.address(0xA0);
Ajay_Marampally 0:d44967a3251e 1363 while (1) {
Ajay_Marampally 0:d44967a3251e 1364 int i = slave.receive();
Ajay_Marampally 0:d44967a3251e 1365 switch (i) {
Ajay_Marampally 0:d44967a3251e 1366 case I2CSlave::ReadAddressed:
Ajay_Marampally 0:d44967a3251e 1367 slave.write(msg, strlen(msg) + 1); // Includes null char
Ajay_Marampally 0:d44967a3251e 1368 break;
Ajay_Marampally 0:d44967a3251e 1369 case I2CSlave::WriteGeneral:
Ajay_Marampally 0:d44967a3251e 1370 slave.read(buf, 20);
Ajay_Marampally 0:d44967a3251e 1371 pc.printf("Read : %s\n", buf);
Ajay_Marampally 0:d44967a3251e 1372 break;
Ajay_Marampally 0:d44967a3251e 1373 case I2CSlave::WriteAddressed:
Ajay_Marampally 0:d44967a3251e 1374 slave.read(buf, 20);
Ajay_Marampally 0:d44967a3251e 1375 pc.printf("Read : %s\n", buf);
Ajay_Marampally 0:d44967a3251e 1376 break;
Ajay_Marampally 0:d44967a3251e 1377 }
Ajay_Marampally 0:d44967a3251e 1378 for(int i = 0; i< 20; i++)
Ajay_Marampally 0:d44967a3251e 1379 buf[i] = 0;
Ajay_Marampally 0:d44967a3251e 1380 }
Ajay_Marampally 0:d44967a3251e 1381
Ajay_Marampally 0:d44967a3251e 1382
Ajay_Marampally 0:d44967a3251e 1383
Ajay_Marampally 0:d44967a3251e 1384
Ajay_Marampally 0:d44967a3251e 1385
Ajay_Marampally 0:d44967a3251e 1386 Slave
Ajay_Marampally 0:d44967a3251e 1387 //Slave
Ajay_Marampally 0:d44967a3251e 1388 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1389 Serial pc (USBTX,USBRX);
Ajay_Marampally 0:d44967a3251e 1390 I2C i2c(p28, p27);
Ajay_Marampally 0:d44967a3251e 1391
Ajay_Marampally 0:d44967a3251e 1392 int main()
Ajay_Marampally 0:d44967a3251e 1393 {
Ajay_Marampally 0:d44967a3251e 1394 int address = 0xA0;
Ajay_Marampally 0:d44967a3251e 1395 char data[20];
Ajay_Marampally 0:d44967a3251e 1396 pc.printf("enter data to be sent");
Ajay_Marampally 0:d44967a3251e 1397 pc.scanf("%s",&data);
Ajay_Marampally 0:d44967a3251e 1398 pc.printf("%s",data);
Ajay_Marampally 0:d44967a3251e 1399 int l=strlen(data);
Ajay_Marampally 0:d44967a3251e 1400 i2c.write(address, data, l);
Ajay_Marampally 0:d44967a3251e 1401 wait(10);
Ajay_Marampally 0:d44967a3251e 1402 }
Ajay_Marampally 0:d44967a3251e 1403
Ajay_Marampally 0:d44967a3251e 1404
Ajay_Marampally 0:d44967a3251e 1405
Ajay_Marampally 0:d44967a3251e 1406 Ex.2
Ajay_Marampally 0:d44967a3251e 1407 I2C Master, transfers switch state to second mbed acting as slave, and displays state of slave’s switches on its leds.
Ajay_Marampally 0:d44967a3251e 1408 Master:
Ajay_Marampally 0:d44967a3251e 1409 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1410 I2C i2c_port(p27,p28);
Ajay_Marampally 0:d44967a3251e 1411 DigitalOut led1(LED1);
Ajay_Marampally 0:d44967a3251e 1412 DigitalOut led2(LED2);
Ajay_Marampally 0:d44967a3251e 1413 DigitalIn switch_ip1(p5);
Ajay_Marampally 0:d44967a3251e 1414 DigitalIn switch_ip2(p6);
Ajay_Marampally 0:d44967a3251e 1415 char switch_word;
Ajay_Marampally 0:d44967a3251e 1416 char recd_val
Ajay_Marampally 0:d44967a3251e 1417 const int addr=0x52;
Ajay_Marampally 0:d44967a3251e 1418 int main()
Ajay_Marampally 0:d44967a3251e 1419 {
Ajay_Marampally 0:d44967a3251e 1420 while(1) {
Ajay_Marampally 0:d44967a3251e 1421 switch_word=0xa0;
Ajay_Marampally 0:d44967a3251e 1422 if (switch_ip1==1)
Ajay_Marampally 0:d44967a3251e 1423 switch_word=switch_word|0x01;
Ajay_Marampally 0:d44967a3251e 1424 if (switch_ip1==2)
Ajay_Marampally 0:d44967a3251e 1425 switch_word=switch_word|0x02;
Ajay_Marampally 0:d44967a3251e 1426 i2c_port.start(); //force a start condition
Ajay_Marampally 0:d44967a3251e 1427 i2c_port.write(addr); //send the address
Ajay_Marampally 0:d44967a3251e 1428 i2c_port.write(switch_word); //send one byte of data, ie switch_word
Ajay_Marampally 0:d44967a3251e 1429 i2c_port.stop(); //force a stop condition
Ajay_Marampally 0:d44967a3251e 1430 wait(0.002);
Ajay_Marampally 0:d44967a3251e 1431 //receive a single byte of data, in correct I2C package
Ajay_Marampally 0:d44967a3251e 1432 i2c_port.start();
Ajay_Marampally 0:d44967a3251e 1433 i2c_port.write(addr|0x01); //send address, with R/W bit set to Read
Ajay_Marampally 0:d44967a3251e 1434 recd_val=i2c_port.read(addr); //Read and save the received byte
Ajay_Marampally 0:d44967a3251e 1435 i2c_port.stop(); //force a stop condition
Ajay_Marampally 0:d44967a3251e 1436 led1=0;
Ajay_Marampally 0:d44967a3251e 1437 led2=0;
Ajay_Marampally 0:d44967a3251e 1438 recd_val=recd_val&0x03;
Ajay_Marampally 0:d44967a3251e 1439 if(recd_value==1)
Ajay_Marampally 0:d44967a3251e 1440 led1=1;
Ajay_Marampally 0:d44967a3251e 1441 if (recd_val==2)
Ajay_Marampally 0:d44967a3251e 1442 led2=1;
Ajay_Marampally 0:d44967a3251e 1443 if (recd_val==3) {
Ajay_Marampally 0:d44967a3251e 1444 led1=1;
Ajay_Marampally 0:d44967a3251e 1445 led2=1;
Ajay_Marampally 0:d44967a3251e 1446 }
Ajay_Marampally 0:d44967a3251e 1447 }
Ajay_Marampally 0:d44967a3251e 1448 }
Ajay_Marampally 0:d44967a3251e 1449
Ajay_Marampally 0:d44967a3251e 1450
Ajay_Marampally 0:d44967a3251e 1451
Ajay_Marampally 0:d44967a3251e 1452
Ajay_Marampally 0:d44967a3251e 1453
Ajay_Marampally 0:d44967a3251e 1454
Ajay_Marampally 0:d44967a3251e 1455
Ajay_Marampally 0:d44967a3251e 1456
Ajay_Marampally 0:d44967a3251e 1457
Ajay_Marampally 0:d44967a3251e 1458
Ajay_Marampally 0:d44967a3251e 1459 Ex.3
Ajay_Marampally 0:d44967a3251e 1460 I2C Slave, when called transfers switch state to mbed acting as Master, and displays state of Master’s switches on its leds.
Ajay_Marampally 0:d44967a3251e 1461
Ajay_Marampally 0:d44967a3251e 1462 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1463 I2CSlave i2c_port(p27,p28);
Ajay_Marampally 0:d44967a3251e 1464 DigitalOut led1(LED1);
Ajay_Marampally 0:d44967a3251e 1465 DigitalOut led2(LED2);
Ajay_Marampally 0:d44967a3251e 1466 DigitalIn switch_ip1(p5);
Ajay_Marampally 0:d44967a3251e 1467 DigitalIn switch_ip2(p6);
Ajay_Marampally 0:d44967a3251e 1468 char switch_word;
Ajay_Marampally 0:d44967a3251e 1469 char recd_val
Ajay_Marampally 0:d44967a3251e 1470 int main()
Ajay_Marampally 0:d44967a3251e 1471 { slave.address(0x52);
Ajay_Marampally 0:d44967a3251e 1472 while(1) {
Ajay_Marampally 0:d44967a3251e 1473 switch_word=0xa0;
Ajay_Marampally 0:d44967a3251e 1474 if (switch_ip1==1)
Ajay_Marampally 0:d44967a3251e 1475 switch_word=switch_word|0x01;
Ajay_Marampally 0:d44967a3251e 1476 if (switch_ip1==2)
Ajay_Marampally 0:d44967a3251e 1477 switch_word=switch_word|0x02;
Ajay_Marampally 0:d44967a3251e 1478 slave.write(switch_word);
Ajay_Marampally 0:d44967a3251e 1479 int i=slave.receive():
Ajay_Marampally 0:d44967a3251e 1480 if(i==3)
Ajay_Marampally 0:d44967a3251e 1481 recd_val=slave.read();
Ajay_Marampally 0:d44967a3251e 1482 led1=0;
Ajay_Marampally 0:d44967a3251e 1483 led2=0;
Ajay_Marampally 0:d44967a3251e 1484 recd_val=recd_val&0x03;
Ajay_Marampally 0:d44967a3251e 1485 if(recd_value==1)
Ajay_Marampally 0:d44967a3251e 1486 led1=1;
Ajay_Marampally 0:d44967a3251e 1487 if (recd_val==2)
Ajay_Marampally 0:d44967a3251e 1488 led2=1;
Ajay_Marampally 0:d44967a3251e 1489 if (recd_val==3) {
Ajay_Marampally 0:d44967a3251e 1490 led1=1;
Ajay_Marampally 0:d44967a3251e 1491 led2=1;
Ajay_Marampally 0:d44967a3251e 1492 }
Ajay_Marampally 0:d44967a3251e 1493 }
Ajay_Marampally 0:d44967a3251e 1494 }
Ajay_Marampally 0:d44967a3251e 1495
Ajay_Marampally 0:d44967a3251e 1496 Result:
Ajay_Marampally 0:d44967a3251e 1497 I2C protocol is implemented and verified.
Ajay_Marampally 0:d44967a3251e 1498
Ajay_Marampally 0:d44967a3251e 1499 EMBEDDED SYSTEM DESIGN LAB
Ajay_Marampally 0:d44967a3251e 1500 EXPERIMENT 11
Ajay_Marampally 0:d44967a3251e 1501 INTERFACING LCD WITH LPC11U24
Ajay_Marampally 0:d44967a3251e 1502 AIM:
Ajay_Marampally 0:d44967a3251e 1503 To perform the Following Using mbed LPC11U24
Ajay_Marampally 0:d44967a3251e 1504 • Write an Modular c++ program to display the ,essage “HELLO” on LCD display.
Ajay_Marampally 0:d44967a3251e 1505 • Write a C++ program by using TextLCD library to display a message “Hello World”.
Ajay_Marampally 0:d44967a3251e 1506 • Display a continuous count variable o the LCD display 2nd row 5th digit.
Ajay_Marampally 0:d44967a3251e 1507
Ajay_Marampally 0:d44967a3251e 1508 General information:
Ajay_Marampally 0:d44967a3251e 1509 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 1510
Ajay_Marampally 0:d44967a3251e 1511 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 1512 • NXP LPC11U24 MCU
Ajay_Marampally 0:d44967a3251e 1513 o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 1514 o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 1515 o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 1516 • Prototyping form-factor
Ajay_Marampally 0:d44967a3251e 1517 o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 1518 o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 1519 o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 1520 • mbed.org Developer Website
Ajay_Marampally 0:d44967a3251e 1521 o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 1522 o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 1523 o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 1524
Ajay_Marampally 0:d44967a3251e 1525 API Used:
Ajay_Marampally 0:d44967a3251e 1526
Ajay_Marampally 0:d44967a3251e 1527
Ajay_Marampally 0:d44967a3251e 1528 Digital output:
Ajay_Marampally 0:d44967a3251e 1529 DigitalOut led1(LED1);
Ajay_Marampally 0:d44967a3251e 1530
Ajay_Marampally 0:d44967a3251e 1531 LCD defining:
Ajay_Marampally 0:d44967a3251e 1532 TextLCD lcd(p19, p20, p21, p22, p23, p24); //rs,e,d0,d1,d2,d3
Ajay_Marampally 0:d44967a3251e 1533
Ajay_Marampally 0:d44967a3251e 1534 Print in LCD:
Ajay_Marampally 0:d44967a3251e 1535 lcd.printf("Hello World!");
Ajay_Marampally 0:d44967a3251e 1536
Ajay_Marampally 0:d44967a3251e 1537 For delay:
Ajay_Marampally 0:d44967a3251e 1538 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 1539
Ajay_Marampally 0:d44967a3251e 1540 1. Write an Modular c++ program to display the ,essage “HELLO” on LCD display.
Ajay_Marampally 0:d44967a3251e 1541 CODE:
Ajay_Marampally 0:d44967a3251e 1542 // LCD.cpp file
Ajay_Marampally 0:d44967a3251e 1543 #include "LCD.h"
Ajay_Marampally 0:d44967a3251e 1544 DigitalOut RS(p19);
Ajay_Marampally 0:d44967a3251e 1545 DigitalOut E(p20);
Ajay_Marampally 0:d44967a3251e 1546 BusOut data(p21, p22, p23, p24);
Ajay_Marampally 0:d44967a3251e 1547 void toggle_enable(void){
Ajay_Marampally 0:d44967a3251e 1548 E=1;
Ajay_Marampally 0:d44967a3251e 1549 wait(0.001);
Ajay_Marampally 0:d44967a3251e 1550 E=0;
Ajay_Marampally 0:d44967a3251e 1551 wait(0.001);
Ajay_Marampally 0:d44967a3251e 1552 }//initialise LCD function
Ajay_Marampally 0:d44967a3251e 1553 void LCD_init(void)
Ajay_Marampally 0:d44967a3251e 1554 {
Ajay_Marampally 0:d44967a3251e 1555 wait(0.02);
Ajay_Marampally 0:d44967a3251e 1556 RS=0;
Ajay_Marampally 0:d44967a3251e 1557 E=0;//function node
Ajay_Marampally 0:d44967a3251e 1558 data=0x2;
Ajay_Marampally 0:d44967a3251e 1559 toggle_enable(); //display mode
Ajay_Marampally 0:d44967a3251e 1560 data=0x0;
Ajay_Marampally 0:d44967a3251e 1561 toggle_enable();
Ajay_Marampally 0:d44967a3251e 1562 data=0xF;
Ajay_Marampally 0:d44967a3251e 1563 toggle_enable(); //clear display
Ajay_Marampally 0:d44967a3251e 1564 data=0x0;
Ajay_Marampally 0:d44967a3251e 1565 toggle_enable() ;
Ajay_Marampally 0:d44967a3251e 1566 data=0x1;
Ajay_Marampally 0:d44967a3251e 1567 toggle_enable();
Ajay_Marampally 0:d44967a3251e 1568 }
Ajay_Marampally 0:d44967a3251e 1569 void display_to_LCD(char value) //display function
Ajay_Marampally 0:d44967a3251e 1570 {
Ajay_Marampally 0:d44967a3251e 1571 RS=1;
Ajay_Marampally 0:d44967a3251e 1572 data=value>>4;
Ajay_Marampally 0:d44967a3251e 1573 toggle_enable();
Ajay_Marampally 0:d44967a3251e 1574 data=value&0x0F;
Ajay_Marampally 0:d44967a3251e 1575 toggle_enable();
Ajay_Marampally 0:d44967a3251e 1576 }
Ajay_Marampally 0:d44967a3251e 1577
Ajay_Marampally 0:d44967a3251e 1578
Ajay_Marampally 0:d44967a3251e 1579 //LCD.h FIle
Ajay_Marampally 0:d44967a3251e 1580 #ifndef LCD_H
Ajay_Marampally 0:d44967a3251e 1581 #define LCD_H
Ajay_Marampally 0:d44967a3251e 1582 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1583
Ajay_Marampally 0:d44967a3251e 1584
Ajay_Marampally 0:d44967a3251e 1585 void display_to_LCD(char value);
Ajay_Marampally 0:d44967a3251e 1586 void toggle_enable(void);
Ajay_Marampally 0:d44967a3251e 1587 void LCD_init(void);
Ajay_Marampally 0:d44967a3251e 1588
Ajay_Marampally 0:d44967a3251e 1589 #endif
Ajay_Marampally 0:d44967a3251e 1590
Ajay_Marampally 0:d44967a3251e 1591
Ajay_Marampally 0:d44967a3251e 1592 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1593 #include "LCD.h"
Ajay_Marampally 0:d44967a3251e 1594 //DigitalOut vo(p18);
Ajay_Marampally 0:d44967a3251e 1595
Ajay_Marampally 0:d44967a3251e 1596 int main()
Ajay_Marampally 0:d44967a3251e 1597 {
Ajay_Marampally 0:d44967a3251e 1598 //vo = 0.5;
Ajay_Marampally 0:d44967a3251e 1599 LCD_init();
Ajay_Marampally 0:d44967a3251e 1600 display_to_LCD(0x48); // ‘H’
Ajay_Marampally 0:d44967a3251e 1601 display_to_LCD(0x45); // ‘E’
Ajay_Marampally 0:d44967a3251e 1602 display_to_LCD(0x4C); // ‘L’
Ajay_Marampally 0:d44967a3251e 1603 display_to_LCD(0x4C); // ‘L’
Ajay_Marampally 0:d44967a3251e 1604 display_to_LCD(0x4F); // ‘O’
Ajay_Marampally 0:d44967a3251e 1605 }
Ajay_Marampally 0:d44967a3251e 1606
Ajay_Marampally 0:d44967a3251e 1607
Ajay_Marampally 0:d44967a3251e 1608
Ajay_Marampally 0:d44967a3251e 1609 Output:
Ajay_Marampally 0:d44967a3251e 1610
Ajay_Marampally 0:d44967a3251e 1611
Ajay_Marampally 0:d44967a3251e 1612
Ajay_Marampally 0:d44967a3251e 1613
Ajay_Marampally 0:d44967a3251e 1614
Ajay_Marampally 0:d44967a3251e 1615
Ajay_Marampally 0:d44967a3251e 1616
Ajay_Marampally 0:d44967a3251e 1617
Ajay_Marampally 0:d44967a3251e 1618
Ajay_Marampally 0:d44967a3251e 1619
Ajay_Marampally 0:d44967a3251e 1620 2. Write a C++ program by using TextLCD library to display a message “Hello World”.
Ajay_Marampally 0:d44967a3251e 1621 CODE:
Ajay_Marampally 0:d44967a3251e 1622 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1623 #include "TextLCD.h"
Ajay_Marampally 0:d44967a3251e 1624 TextLCD lcd(p19, p20, p21, p22, p23, p24); //rs,e,d0,d1,d2,d3
Ajay_Marampally 0:d44967a3251e 1625 int main()
Ajay_Marampally 0:d44967a3251e 1626 {
Ajay_Marampally 0:d44967a3251e 1627 lcd.printf("Hello World!");
Ajay_Marampally 0:d44967a3251e 1628 }
Ajay_Marampally 0:d44967a3251e 1629
Ajay_Marampally 0:d44967a3251e 1630 Output:
Ajay_Marampally 0:d44967a3251e 1631
Ajay_Marampally 0:d44967a3251e 1632
Ajay_Marampally 0:d44967a3251e 1633
Ajay_Marampally 0:d44967a3251e 1634
Ajay_Marampally 0:d44967a3251e 1635
Ajay_Marampally 0:d44967a3251e 1636
Ajay_Marampally 0:d44967a3251e 1637
Ajay_Marampally 0:d44967a3251e 1638
Ajay_Marampally 0:d44967a3251e 1639
Ajay_Marampally 0:d44967a3251e 1640
Ajay_Marampally 0:d44967a3251e 1641 3. Display a continuous count variable o the LCD display 2nd row 5th digit.
Ajay_Marampally 0:d44967a3251e 1642
Ajay_Marampally 0:d44967a3251e 1643 CODE:
Ajay_Marampally 0:d44967a3251e 1644 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1645 #include "TextLCD.h"
Ajay_Marampally 0:d44967a3251e 1646 TextLCD lcd(p19, p20, p21, p22, p23, p24);
Ajay_Marampally 0:d44967a3251e 1647 //rs,e,d0,d1,d2,d3
Ajay_Marampally 0:d44967a3251e 1648 int t=0;
Ajay_Marampally 0:d44967a3251e 1649 int main()
Ajay_Marampally 0:d44967a3251e 1650 {
Ajay_Marampally 0:d44967a3251e 1651 while(t<=50)
Ajay_Marampally 0:d44967a3251e 1652 { lcd.locate(4,2);
Ajay_Marampally 0:d44967a3251e 1653
Ajay_Marampally 0:d44967a3251e 1654 t=t+1;
Ajay_Marampally 0:d44967a3251e 1655 lcd.printf("%d",t);
Ajay_Marampally 0:d44967a3251e 1656 wait(0.5);
Ajay_Marampally 0:d44967a3251e 1657 }
Ajay_Marampally 0:d44967a3251e 1658 }
Ajay_Marampally 0:d44967a3251e 1659
Ajay_Marampally 0:d44967a3251e 1660
Ajay_Marampally 0:d44967a3251e 1661
Ajay_Marampally 0:d44967a3251e 1662
Ajay_Marampally 0:d44967a3251e 1663
Ajay_Marampally 0:d44967a3251e 1664
Ajay_Marampally 0:d44967a3251e 1665
Ajay_Marampally 0:d44967a3251e 1666
Ajay_Marampally 0:d44967a3251e 1667 Output:
Ajay_Marampally 0:d44967a3251e 1668
Ajay_Marampally 0:d44967a3251e 1669
Ajay_Marampally 0:d44967a3251e 1670
Ajay_Marampally 0:d44967a3251e 1671 Verification
Ajay_Marampally 0:d44967a3251e 1672
Ajay_Marampally 0:d44967a3251e 1673
Ajay_Marampally 0:d44967a3251e 1674
Ajay_Marampally 0:d44967a3251e 1675 Result:
Ajay_Marampally 0:d44967a3251e 1676 Interfacing LCD with LPC11U24 is done and verified.
Ajay_Marampally 0:d44967a3251e 1677
Ajay_Marampally 0:d44967a3251e 1678
Ajay_Marampally 0:d44967a3251e 1679
Ajay_Marampally 0:d44967a3251e 1680
Ajay_Marampally 0:d44967a3251e 1681
Ajay_Marampally 0:d44967a3251e 1682
Ajay_Marampally 0:d44967a3251e 1683 EMBEDDED SYSTEM DESIGN LAB
Ajay_Marampally 0:d44967a3251e 1684 EXPERIMENT 12
Ajay_Marampally 0:d44967a3251e 1685 IMPLEMENTING RTOS FUNCTIONS WITH LPC11U24
Ajay_Marampally 0:d44967a3251e 1686 AIM:
Ajay_Marampally 0:d44967a3251e 1687 To perform the Following Using mbed LPC11U24
Ajay_Marampally 0:d44967a3251e 1688 • Creating and Controlling a Simple thread.
Ajay_Marampally 0:d44967a3251e 1689 • Create two threads (blinking two sets of LEDS) with different priorities and display the priorities on PC.
Ajay_Marampally 0:d44967a3251e 1690 • Write a program to use MUTEX to protect printf().
Ajay_Marampally 0:d44967a3251e 1691
Ajay_Marampally 0:d44967a3251e 1692 General information:
Ajay_Marampally 0:d44967a3251e 1693 The mbed NXP LPC11U24 Microcontroller in particular is designed for prototyping low cost USB devices, battery powered applications and 32-bit ARM® Cortex™-M0 based designs. It is packaged as a small DIP form-factor for prototyping with through-hole PCBs, stripboard and breadboard, and includes a built-in USB FLASH programmer.
Ajay_Marampally 0:d44967a3251e 1694
Ajay_Marampally 0:d44967a3251e 1695 Specifications of LPC11U24:
Ajay_Marampally 0:d44967a3251e 1696 • NXP LPC11U24 MCU
Ajay_Marampally 0:d44967a3251e 1697 o Low power ARM® Cortex™-M0 Core
Ajay_Marampally 0:d44967a3251e 1698 o 48MHz, 8KB RAM, 32KB FLASH
Ajay_Marampally 0:d44967a3251e 1699 o USB Device, 2xSPI, I2C , UART, 6xADC, GPIO
Ajay_Marampally 0:d44967a3251e 1700 • Prototyping form-factor
Ajay_Marampally 0:d44967a3251e 1701 o 40-pin 0.1" pitch DIP package, 54x26mm
Ajay_Marampally 0:d44967a3251e 1702 o 5V USB, 4.5-9V supply or 2.4-3.3V battery
Ajay_Marampally 0:d44967a3251e 1703 o Built-in USB drag 'n' drop FLASH programmer
Ajay_Marampally 0:d44967a3251e 1704 • mbed.org Developer Website
Ajay_Marampally 0:d44967a3251e 1705 o Lightweight Online Compiler
Ajay_Marampally 0:d44967a3251e 1706 o High level C/C++ SDK
Ajay_Marampally 0:d44967a3251e 1707 o Cookbook of published libraries and projects
Ajay_Marampally 0:d44967a3251e 1708
Ajay_Marampally 0:d44967a3251e 1709 API Used:
Ajay_Marampally 0:d44967a3251e 1710
Ajay_Marampally 0:d44967a3251e 1711
Ajay_Marampally 0:d44967a3251e 1712 Initializing a thread:
Ajay_Marampally 0:d44967a3251e 1713 Thread thread;
Ajay_Marampally 0:d44967a3251e 1714
Ajay_Marampally 0:d44967a3251e 1715 Starting a thread:
Ajay_Marampally 0:d44967a3251e 1716 thread.start(led2_thread);
Ajay_Marampally 0:d44967a3251e 1717
Ajay_Marampally 0:d44967a3251e 1718 To set priority to a pointer object of thread:
Ajay_Marampally 0:d44967a3251e 1719 test->set_priority(osPriorityHigh);
Ajay_Marampally 0:d44967a3251e 1720
Ajay_Marampally 0:d44967a3251e 1721 To get priority to a pointer object of thread:
Ajay_Marampally 0:d44967a3251e 1722 test->get_priority();
Ajay_Marampally 0:d44967a3251e 1723
Ajay_Marampally 0:d44967a3251e 1724 For delay:
Ajay_Marampally 0:d44967a3251e 1725 wait(t) ; where ‘t’ is in seconds
Ajay_Marampally 0:d44967a3251e 1726 Thread::wait(500);
Ajay_Marampally 0:d44967a3251e 1727
Ajay_Marampally 0:d44967a3251e 1728 Defining a Mutex
Ajay_Marampally 0:d44967a3251e 1729 Mutex stdio_mutex;
Ajay_Marampally 0:d44967a3251e 1730
Ajay_Marampally 0:d44967a3251e 1731 Locking a Mutex
Ajay_Marampally 0:d44967a3251e 1732 stdio_mutex.lock();
Ajay_Marampally 0:d44967a3251e 1733
Ajay_Marampally 0:d44967a3251e 1734 Unlocking a Mutex
Ajay_Marampally 0:d44967a3251e 1735 stdio_mutex.unlock();
Ajay_Marampally 0:d44967a3251e 1736
Ajay_Marampally 0:d44967a3251e 1737
Ajay_Marampally 0:d44967a3251e 1738
Ajay_Marampally 0:d44967a3251e 1739
Ajay_Marampally 0:d44967a3251e 1740
Ajay_Marampally 0:d44967a3251e 1741
Ajay_Marampally 0:d44967a3251e 1742
Ajay_Marampally 0:d44967a3251e 1743
Ajay_Marampally 0:d44967a3251e 1744
Ajay_Marampally 0:d44967a3251e 1745
Ajay_Marampally 0:d44967a3251e 1746
Ajay_Marampally 0:d44967a3251e 1747
Ajay_Marampally 0:d44967a3251e 1748 4. Creating and Controlling a Simple thread.
Ajay_Marampally 0:d44967a3251e 1749 CODE:
Ajay_Marampally 0:d44967a3251e 1750 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1751 #include "rtos.h"
Ajay_Marampally 0:d44967a3251e 1752 DigitalOut led1(LED1);
Ajay_Marampally 0:d44967a3251e 1753 DigitalOut led2(LED2);
Ajay_Marampally 0:d44967a3251e 1754 Thread thread;
Ajay_Marampally 0:d44967a3251e 1755 void led2_thread() {
Ajay_Marampally 0:d44967a3251e 1756 while (true) {
Ajay_Marampally 0:d44967a3251e 1757 led2 = !led2;
Ajay_Marampally 0:d44967a3251e 1758 wait(0.5);
Ajay_Marampally 0:d44967a3251e 1759 }
Ajay_Marampally 0:d44967a3251e 1760 }
Ajay_Marampally 0:d44967a3251e 1761 int main() {
Ajay_Marampally 0:d44967a3251e 1762
Ajay_Marampally 0:d44967a3251e 1763
Ajay_Marampally 0:d44967a3251e 1764 thread.start(led2_thread);
Ajay_Marampally 0:d44967a3251e 1765
Ajay_Marampally 0:d44967a3251e 1766 while (true) {
Ajay_Marampally 0:d44967a3251e 1767 led1 = !led1;
Ajay_Marampally 0:d44967a3251e 1768 wait(0.5);
Ajay_Marampally 0:d44967a3251e 1769 }
Ajay_Marampally 0:d44967a3251e 1770 }
Ajay_Marampally 0:d44967a3251e 1771
Ajay_Marampally 0:d44967a3251e 1772
Ajay_Marampally 0:d44967a3251e 1773 Output:
Ajay_Marampally 0:d44967a3251e 1774
Ajay_Marampally 0:d44967a3251e 1775
Ajay_Marampally 0:d44967a3251e 1776
Ajay_Marampally 0:d44967a3251e 1777
Ajay_Marampally 0:d44967a3251e 1778 5. Create two threads (blinking two sets of LEDS) with different priorities and display the priorities on PC.
Ajay_Marampally 0:d44967a3251e 1779 CODE:
Ajay_Marampally 0:d44967a3251e 1780 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1781 #include "rtos.h"
Ajay_Marampally 0:d44967a3251e 1782 DigitalOut led1(LED1);
Ajay_Marampally 0:d44967a3251e 1783 DigitalOut led2(LED2);
Ajay_Marampally 0:d44967a3251e 1784 DigitalOut led3(LED3);
Ajay_Marampally 0:d44967a3251e 1785 DigitalOut led4(LED4);
Ajay_Marampally 0:d44967a3251e 1786 Serial pc(USBTX, USBRX); // tx, rx
Ajay_Marampally 0:d44967a3251e 1787 Thread *(test);
Ajay_Marampally 0:d44967a3251e 1788 void led2_thread(void const *args) {
Ajay_Marampally 0:d44967a3251e 1789 while (true) {
Ajay_Marampally 0:d44967a3251e 1790 led2 = !led2;
Ajay_Marampally 0:d44967a3251e 1791
Ajay_Marampally 0:d44967a3251e 1792 Thread::wait(1000);
Ajay_Marampally 0:d44967a3251e 1793 }
Ajay_Marampally 0:d44967a3251e 1794 }
Ajay_Marampally 0:d44967a3251e 1795 void led4_thread1(void const *args) {
Ajay_Marampally 0:d44967a3251e 1796 while (true) {
Ajay_Marampally 0:d44967a3251e 1797 led4 = !led4;
Ajay_Marampally 0:d44967a3251e 1798
Ajay_Marampally 0:d44967a3251e 1799 Thread::wait(1000);
Ajay_Marampally 0:d44967a3251e 1800 }
Ajay_Marampally 0:d44967a3251e 1801 }
Ajay_Marampally 0:d44967a3251e 1802 int main() {
Ajay_Marampally 0:d44967a3251e 1803 char ch;
Ajay_Marampally 0:d44967a3251e 1804 Thread thread(led2_thread);
Ajay_Marampally 0:d44967a3251e 1805 test = &thread;
Ajay_Marampally 0:d44967a3251e 1806 test->set_priority(osPriorityHigh);
Ajay_Marampally 0:d44967a3251e 1807 ch=test->get_priority();
Ajay_Marampally 0:d44967a3251e 1808 pc.printf("%i\n\r",ch);
Ajay_Marampally 0:d44967a3251e 1809
Ajay_Marampally 0:d44967a3251e 1810 Thread thread1(led4_thread1);
Ajay_Marampally 0:d44967a3251e 1811 test = &thread;
Ajay_Marampally 0:d44967a3251e 1812 test->set_priority(osPriorityLow);
Ajay_Marampally 0:d44967a3251e 1813 pc.printf("%i\n\r",test->get_priority());
Ajay_Marampally 0:d44967a3251e 1814
Ajay_Marampally 0:d44967a3251e 1815 while (true) {
Ajay_Marampally 0:d44967a3251e 1816 led1 = !led1;
Ajay_Marampally 0:d44967a3251e 1817 led3 = !led3;
Ajay_Marampally 0:d44967a3251e 1818 Thread::wait(500);
Ajay_Marampally 0:d44967a3251e 1819 }
Ajay_Marampally 0:d44967a3251e 1820
Ajay_Marampally 0:d44967a3251e 1821
Ajay_Marampally 0:d44967a3251e 1822 }
Ajay_Marampally 0:d44967a3251e 1823
Ajay_Marampally 0:d44967a3251e 1824
Ajay_Marampally 0:d44967a3251e 1825 Output:
Ajay_Marampally 0:d44967a3251e 1826
Ajay_Marampally 0:d44967a3251e 1827
Ajay_Marampally 0:d44967a3251e 1828
Ajay_Marampally 0:d44967a3251e 1829
Ajay_Marampally 0:d44967a3251e 1830
Ajay_Marampally 0:d44967a3251e 1831 6. Write a program to use MUTEX to protect printf().
Ajay_Marampally 0:d44967a3251e 1832
Ajay_Marampally 0:d44967a3251e 1833 CODE:
Ajay_Marampally 0:d44967a3251e 1834 #include "mbed.h"
Ajay_Marampally 0:d44967a3251e 1835 #include "rtos.h"
Ajay_Marampally 0:d44967a3251e 1836 Mutex stdio_mutex;
Ajay_Marampally 0:d44967a3251e 1837 Thread t2;
Ajay_Marampally 0:d44967a3251e 1838 Thread t3;
Ajay_Marampally 0:d44967a3251e 1839 void notify(const char* name, int state) {
Ajay_Marampally 0:d44967a3251e 1840 stdio_mutex.lock();
Ajay_Marampally 0:d44967a3251e 1841 printf("%s: %d\n\r", name, state);
Ajay_Marampally 0:d44967a3251e 1842 stdio_mutex.unlock();
Ajay_Marampally 0:d44967a3251e 1843 }
Ajay_Marampally 0:d44967a3251e 1844 void test_thread(void const *args) {
Ajay_Marampally 0:d44967a3251e 1845 while (true) {
Ajay_Marampally 0:d44967a3251e 1846 notify((const char*)args, 0); wait(1);
Ajay_Marampally 0:d44967a3251e 1847 notify((const char*)args, 1); wait(1);
Ajay_Marampally 0:d44967a3251e 1848 }
Ajay_Marampally 0:d44967a3251e 1849 }
Ajay_Marampally 0:d44967a3251e 1850
Ajay_Marampally 0:d44967a3251e 1851 int main() {
Ajay_Marampally 0:d44967a3251e 1852 t2.start(callback(test_thread, (void *)"Th 2"));
Ajay_Marampally 0:d44967a3251e 1853 t3.start(callback(test_thread, (void *)"Th 3"));
Ajay_Marampally 0:d44967a3251e 1854 test_thread((void *)"Th 1");
Ajay_Marampally 0:d44967a3251e 1855 }
Ajay_Marampally 0:d44967a3251e 1856
Ajay_Marampally 0:d44967a3251e 1857
Ajay_Marampally 0:d44967a3251e 1858 Output:
Ajay_Marampally 0:d44967a3251e 1859
Ajay_Marampally 0:d44967a3251e 1860
Ajay_Marampally 0:d44967a3251e 1861
Ajay_Marampally 0:d44967a3251e 1862
Ajay_Marampally 0:d44967a3251e 1863 Verification
Ajay_Marampally 0:d44967a3251e 1864
Ajay_Marampally 0:d44967a3251e 1865
Ajay_Marampally 0:d44967a3251e 1866
Ajay_Marampally 0:d44967a3251e 1867 Result:
Ajay_Marampally 0:d44967a3251e 1868 RTOS functions are verified using mbed LPC11U24.
Ajay_Marampally 0:d44967a3251e 1869