Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
462 views

Contents Arm Microcontroller Projects

The document discusses ARM microcontroller projects for beginners and intermediates. It provides an overview of microcontroller systems and components, describes features of ARM microcontrollers, and examines the architecture of the STM32F107VCT6 ARM microcontroller in detail.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
462 views

Contents Arm Microcontroller Projects

The document discusses ARM microcontroller projects for beginners and intermediates. It provides an overview of microcontroller systems and components, describes features of ARM microcontrollers, and examines the architecture of the STM32F107VCT6 ARM microcontroller in detail.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

ARM Microcontroller Projects

Beginner to Intermediate

Prof Dr Dogan Ibrahim


Near East University

an Elektor Publication
LEARN

DESIGN

SHARE

Table of Contents

Table of Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Chapter 1 Microcomputer systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2 Microcontroller Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.1 RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.2 ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.3 PROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.4 EPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.2.5 EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.2.6 Flash Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.3 Microcontroller Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.3.1 Supply Voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.3.2 The Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3.3 Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3.4 Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3.5 Reset Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3.6 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.3.7 Brown-out Detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.3.8 Analog-to-digital Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.3.9 Sample and Hold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.3.10 RS232 Serial Input-Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.3.11 SPI and I2C Busses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3.12 EEPROM Data Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3.13 LCD Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3.14 Analog Comparators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3.15 Real-time Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3.16 Sleep Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3.17 Power-on Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3.18 Low Power Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3.19 Current Sink/Source Capability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

ARM Microcontroller Projects: Beginner to Intermediate


1.3.20 Input/output (I/O) Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3.21 USB Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3.22 CAN Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3.23 Ethernet Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3.24 ZigBee Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3.25 Multiply and Divide Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3.26 Operating Temperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.3.27 Pulse Width Modulated (PWM) Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.3.28 In-circuit Serial Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.3.29 Digital-to-analog Converter (DAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.3.30 Debug Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.3.31 Package Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.3.32 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.3.33 Temperature Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.4 Microcontroller Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.4.1 RISC and CISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.5 8, 16, or 32 Bits ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Chapter 2 Why ARM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1 ARM Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.1.1 Cortex-M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.1.2 Cortex-R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.1.3 Cortex-A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2 Cortex-M Processor Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3 Processor Performance Measurement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4 Cortex-M Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Chapter 3 Architecture of the STM32F107VCT6 ARM Microcontroller . . . . . . . . . . . . . 37
3.1 The STM32 Family of ARM Microcontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2 The STM32F107VCT6 Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.1 Basic Features of the STM32F107VCT6 . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Table of Contents
3.2.2 Internal Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.3 The Power Supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.4 Low Power Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.5 The Clock Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.2.6 General Purpose Inputs and Outputs (GPIOs) . . . . . . . . . . . . . . . . . . . . . . 48
3.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Chapter 4 Microcontroller Development Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1 ARM Hardware Development Kits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1.1 EasyMx Pro V7 for STM32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1.2 Clicker 2 for STM32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.1.3 EasyMx Pro V7 for Tiva C Series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.1.4 MCB1000 Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.1.5 MCBSTM32F200 development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.1.6 ARM7 Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 ARM Software Development Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.2.1 mikroC Pro for ARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2.2 ARM DS-5 Development Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2.3 ARM Compilation Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2.4 Green Hills ARM Software Development Tools . . . . . . . . . . . . . . . . . . . . . . 59
4.2.5 MDK-ARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2.6 CrossWorks for ARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.2.7 IAR Embedded Workbench for ARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.2.8 JumpStart Software Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Chapter 5 Programming ARM Microcontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1 mikroC STM32F107VCT6 Microcontroller Specific Features . . . . . . . . . . . . . . . . . 63
5.2 The General Purpose Input-Output (GPIO) Library . . . . . . . . . . . . . . . . . . . . . . . 64
5.2.1 GPIO_Clk_Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2.2 GPIO_Clk_Disable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2.3 GPIO_Config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2.4 GPIO_Set_Pin_Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2.5 GPIO_Digital_Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.2.6 GPIO_Digital_Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

ARM Microcontroller Projects: Beginner to Intermediate


5.2.7 GPIO_Analog_Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.2.8 GPIO_Alternate_Function_Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3 Memory Type Specifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.4 PORT Input-Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5 Accessing Individual Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.6 bit Data Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.7 Interrupts and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.7.1 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.7.2 Interrupt Service Routine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.8 Creating a New Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.9 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.9.1 Setting Break Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.10 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.11 Other mikroC IDE Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.11.1 ASCII Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.11.2 GLCD Bitmap Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.11.3 HID Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.11.4 Interrupt Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.11.5 LCD Custom Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.11.6 Seven Segment Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.11.7 UDP Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.11.8 USART Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.11.9 USB HID Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.11.10 Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.11.11 The Library Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.12 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Chapter 6 Microcontroller Program Development . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.1 Using the Program Development Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.1.1 BEGIN END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.1.2 Sequencing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.1.3 IF THEN ELSE ENDIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.1.4 DO ENDDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

10

Table of Contents
6.1.5 REPEAT UNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.1.6 Calling Subprograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.1.7 Subprogram Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.2 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.3 Representing for Loops in Flow Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Chapter 7 The EasyMx PRO v7 for STM32 Development Board . . . . . . . . . . . . . . . . 107
7.1 The Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.2 The Power Supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.3 The CPU Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.4 On-board Programmer and Hardware Debugger . . . . . . . . . . . . . . . . . . . . . . . 109
7.5 The LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.6 mikroBUS Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.7 USB-UART Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.8 USB Host Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.9 USB Device Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.10 Ethernet Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.11 Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.12 Audio I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.13 microSD card Slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.14 320x240 Pixel TFT Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.15 Touch Panel Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.16 128x64 Pixel GLCD Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.17 Navigation Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.18 DS1820 Digital Temperature Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.19 LM35 Analog Temperature Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.20 Serial Flash Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.21 EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.22 Piezo Buzzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.23 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

11

ARM Microcontroller Projects: Beginner to Intermediate


Chapter 8 Beginner ARM Microcontroller Projects . . . . . . . . . . . . . . . . . . . . . . . . . 115
8.1 PROJECT 1 Flashing LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
8.2 PROJECT 2 Complex Flashing LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
8.3 8.3 PROJECT 3 Chasing LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.4 PROJECT 4 Binary Counting LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.5 PROJECT 5 Random Flashing LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.6 PROJECT 6 Push-Button Switch With LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.7 PROJECT 7 Event Counter With LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.8 PROJECT 8 Quiz Game Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
8.9 PROJECT 9 Generating the SOS Morse Code . . . . . . . . . . . . . . . . . . . . . . . . . 131
8.10 PROJECT 10 Generating Melody Using a Piezo Buzzer . . . . . . . . . . . . . . . . . 134
8.11 PROJECT 11 Electronic Organ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
8.12 PROJECT 12 Displaying Text on an LCD Display . . . . . . . . . . . . . . . . . . . . . 138
8.12.1 HD44780 Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
8.13 PROJECT 13 - Event Counter With LCD Display . . . . . . . . . . . . . . . . . . . . . . . 143
8.14 PROJECT 14 - LCD Font Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Chapter 9 Elementary ARM Microcontroller Projects . . . . . . . . . . . . . . . . . . . . . . . 149
9.1 PROJECT 1 Voltmeter With LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
9.2 PROJECT 2 Analog Temperature Measurement . . . . . . . . . . . . . . . . . . . . . . . 156
9.3 PROJECT 3 Dice With LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
9.4 PROJECT 4 7-Seg Click Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
9.5 PROJECT 5 Temperature and Humidity Measurement . . . . . . . . . . . . . . . . . . 171
9.6 PROJECT 6 Simple Calculator With Keypad . . . . . . . . . . . . . . . . . . . . . . . . . . 178
9.7 PROJECT 7 DAC Converter Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
9.7.1 PROJECT 8 Generating Square Waveform . . . . . . . . . . . . . . . . . . . . . . . 184
9.7.2 PROJECT 9 Generating Sawtooth Waveform . . . . . . . . . . . . . . . . . . . . . 187
9.7.3 PROJECT 10 Generating Sine wave . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Chapter 10 Intermediate ARM Microcontroller Projects . . . . . . . . . . . . . . . . . . . . . 191
10.1 PROJECT 1 Event Counter Using An External Interrupt . . . . . . . . . . . . . . . . 191
10.2 PROJECT 2 Car Park Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
10.3 PROJECT 3 Pulse Width Modulation (PWM) Project . . . . . . . . . . . . . . . . . . . 200
10.4 PROJECT 4 Controlling LED Brightness with PWM . . . . . . . . . . . . . . . . . . . . 204

12

Table of Contents
10.5 PROJECT 5 - TFT Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
10.6 PROJECT 6 Displaying Temperature on TFT Display . . . . . . . . . . . . . . . . . . . 214
10.7 PROJECT 7 - Timer Interrupts - Chronograph . . . . . . . . . . . . . . . . . . . . . . . . 217
Appendix A Programming Listings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
A.1 Flashing LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
A.2 Flashing LED (LED10.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
A.3 Complex Flashing LED (LEDCPLX.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
A.4 Chasing LEDs (LEDCHASE.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
A.5 Binary Counting LEDs (LEDCNT.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
A.6 Random Flashing LEDs (LEDRAN.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
A.7 Push-Button Switch With LEDs (SWITCH.c) . . . . . . . . . . . . . . . . . . . . . . . . . . 229
A.8 Event Counter With LEDs (EVENTLED.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
A.9 Event Counter With LEDs - Modified Listing (EVENTLED2.c) . . . . . . . . . . . . . . . 231
A.10 Quiz Game Controller - PDL Listing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
A.11 Quiz Game Controller (QUIZ.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
A.12 Quiz Game Controller (QUIZ2.c) - Modified Listing . . . . . . . . . . . . . . . . . . . . . 235
A.13 SOS Morse Code (SOS.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
A.14 Generating Melody Using a Piezo Buzzer (Melody.c) . . . . . . . . . . . . . . . . . . . . 239
A.15 Electronic Organ (ORGAN.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
A.16 Displaying Text on LCD Display (LCDTXT.c) . . . . . . . . . . . . . . . . . . . . . . . . . . 242
A.17 Event Counter With LCD Display (LCDEVNT.c) . . . . . . . . . . . . . . . . . . . . . . . . 243
A.18 Event Counter With LCD Modified (LCDEVNT2.c) . . . . . . . . . . . . . . . . . . . . . . 245
A.19 LCD Font Generation (FONT.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
A.20 Voltmeter With LCD (VOLTMETER.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
A.21 Analog Temperature Measurement (LM35.c) . . . . . . . . . . . . . . . . . . . . . . . . . 250
A.22 Dice With LCD (DICE.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
A.23 7-Seg Click Board (SEVENSEG.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
A.24 7-Seg Click Board - Modified (SEVENSEG2.c) . . . . . . . . . . . . . . . . . . . . . . . . 257
A.25 Temperature and Humidity Measurement PDL . . . . . . . . . . . . . . . . . . . . . . . . 260
A.26 Temperature and Humidity Measurement (HTU21D.c) . . . . . . . . . . . . . . . . . . 262
A.27 Simple Calculator With Keypad PDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
A.28 Simple Calculator With Keypad (KEYPAD.c) . . . . . . . . . . . . . . . . . . . . . . . . . . 266

13

ARM Microcontroller Projects: Beginner to Intermediate


A.29 Generating Square Waveform (SQUARE.c) . . . . . . . . . . . . . . . . . . . . . . . . . . 270
A.30 Generating Sawtooth Waveform (SAWTOOTH.c) . . . . . . . . . . . . . . . . . . . . . . 271
A.31 Generating Sine wave (SINE.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
A.32 Event Counter Using An External Interrupt PDL . . . . . . . . . . . . . . . . . . . . . . . 273
A.33 Event Counter Using An External Interrupt (EVNTINT.c) . . . . . . . . . . . . . . . . . 274
A.34 Event Counter Using An External Interrupt (EVNTINT2.c) . . . . . . . . . . . . . . . . 276
A.35 Car Park Controller PDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
A.36 Car Park Controller (CARPARK.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
A.37 Pulse Width Modulation (PWM) - (PWM40.c) . . . . . . . . . . . . . . . . . . . . . . . . . 284
A.38 Controlling LED Brightness with PWM (PWMLED.c) . . . . . . . . . . . . . . . . . . . . . 285
A.39 TFT Displays (TFT1.c) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
A.40 Displaying Temperature on TFT Display PDL . . . . . . . . . . . . . . . . . . . . . . . . . 288
A.41 Displaying Temperature on TFT Display (TFTLM35.c) . . . . . . . . . . . . . . . . . . . 289
A.42 Timer Interrupts - Chronograph PDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
A.43 Timer Interrupts - Chronograph (CHRONO.c) . . . . . . . . . . . . . . . . . . . . . . . . 294
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

14

You might also like