Sunteți pe pagina 1din 60

NuMicro GPIO

Department of Electrical Engineering,


National Taiwan Ocean University

4/25/2015

Richard Kuo
Assistant Professor

www.ee.ntou.edu.tw

Outline
Department of Electrical Engineering,
National Taiwan Ocean University

4.NuMicro_GPIO.ppt
GPIO Interface Introduction
Lab. LED control (smpl_GPIO_LED1, smpl_GPIO_RGBled)
Lab. Buzzer control (smpl_GPIO_Buzzer)
Lab. Sensor input (smpl_GPIO_PIR)
Lab. 7-segment Display (smpl_7seg)
Lab. Keypad scanning (smpl_Keypad)
Lab. Step Motor control (smpl_GPIO_StepMotor)
Lab. GPIO Interrupt (smpl_GPIO_IRQ)

Homework

: LED Cube 3x3x3


Homework: Electronic Safe

www.ee.ntou.edu.tw

Peripherals
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

To use GPIO to access the following components/modules

LEDs

Buzzer

Keypad

IR

Relays

PIR

Step Motor

GPIO pins of NUC140 LQFP-100


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

GPIO pins of Nano102 LQFP-64


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

GPIO I/O Modes : Input


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Input only with high impedance


Set GPIOx_PMD (PMDn[1:0]) to 00b the GPIOx port [n] pin is in Input mode
and the I/O pin is in tri-state (high impedance) without output drive capability

GPIO_SetMode(PC, BIT12, GPIO_PMD_INPUT);

GPIO I/O Modes - Output


Department of Electrical Engineering,
National Taiwan Ocean University

Push-Pull Output

GPIO_SetMode(PC, BIT12, GPIO_PMD_OUTPUT);

www.ee.ntou.edu.tw

GPIO I/O Modes Open_Drain


Department of Electrical Engineering,
National Taiwan Ocean University

Open-Drain

GPIO_SetMode(PC, BIT12, GPIO_PMD_OPEN_DRAIN);

www.ee.ntou.edu.tw

GPIO I/O Modes


Department of Electrical Engineering,
National Taiwan Ocean University

Quasi bi-direction

GPIO_SetMode(PC, BIT12, GPIO_PMD_QUASI);

www.ee.ntou.edu.tw

StdDriver/GPIO_OutputInput
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

GPIO set mode : GPIO_SetMode(PA, BIT12, GPIO_PMD_OUTPUT);

I/O groups :
NUC140 = GPA, GPB, GPC, GPD, GPE
NANO102 = PA, PB, PC, PD, PE, PF

port no = BIT0~15
I/O modes
GPIO_PMD_INPUT : input only mode
GPIO_PMD_OUTPUT : push-pull output mode
GPIO_PMD_OPEN_DRAIN : open-drain output mode
GPIO_PMD_QUASI : quai bi-direction mode

Output value : PA12 = 0;


Read Input : if (PA12 !=0) {

LED schematic (Nu-LB-NUC140)


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

LED
Department of Electrical Engineering,
National Taiwan Ocean University

PC12
GPIO_SetMode(PC, BIT12, GPIO_PMD_OUTPUT);

Each IO pad drive/sink ~25mA


Entire Chip drive/sink ~200mA

www.ee.ntou.edu.tw

smpl_GPIO_LED1
Department of Electrical Engineering,
National Taiwan Ocean University
int main(void)
{
Initialize Clocks & Pins
SYS_Init();
GPIO_SetMode(PC, BIT12, GPIO_PMD_OUTPUT);
while(1) {
PC12 =0; // turn on LED
CLK_SysTickDelay(100000);
PC12 =1; // turn off LED
CLK_SysTickDelay(100000);
}
}

// Delay
// Delay

www.ee.ntou.edu.tw

Output Mode

PIR (Passive InfraRed) sensor


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

PIR (Passive InfraRed) schemiatc


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

PIR (Passive InfraRed) application circuit


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Application Circuit

5~9V Battery

smpl_GPIO_PIR
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

display Detection message


Passive Infrared Detector
detecting human body

smpl_GPIO_PIR
Department of Electrical Engineering,
National Taiwan Ocean University
int main(void)
{
SYS_Init();
GPIO_SetMode(PA, BIT0, GPIO_PMD_INPUT);
while(1) {
if (PA0==1) printf("PIR detected!\n");
else
printf("PIR no detection!\n");
}
}

www.ee.ntou.edu.tw

Input Mode

Reflective Optical Sensor : TCRT5000


Department of Electrical Engineering,
National Taiwan Ocean University

Application Circuit

www.ee.ntou.edu.tw

Picture

Vcc

TCRT5000

PA0
R2
10K

R1
220

Gnd

IR Diode keep emitting Infrared light


IR Transistor receive the reflective Infrared light

Top View

Buzzer schematic (Nu-LB-NUC140)


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

0 ohm

R1 is shorted

smpl_GPIO_Buzzer
Department of Electrical Engineering,
National Taiwan Ocean University
void Init_Buzzer(void)
{
GPIO_SetMode(PB, BIT11, GPIO_PMD_OUTPUT);
PB11=1; // turn off Buzzer
}
void Buzz(int number)
{
int i;
for (i=0; i<number; i++) {
PB11 =0; // turn on Buzzer
CLK_SysTickDelay(100000); // Delay
PB11 =1; // turn off Buzzer
CLK_SysTickDelay(100000); // Delay
}
}

www.ee.ntou.edu.tw

7-segment display
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

7seg. LED schematics (Nu-LB-NUC140)


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw
Drive Low will turn on 7-seg. LED

Seven_Segment.c
Department of Electrical Engineering,
National Taiwan Ocean University
#include <stdio.h>
#include "NUC100Series.h"
#include "GPIO.h"
#include "SYS.h"
#include "Seven_Segment.h"
#define SEG_N0 0x82
#define SEG_N1 0xEE
#define SEG_N2 0x07
#define SEG_N3 0x46
#define SEG_N4 0x6A
#define SEG_N5 0x52
#define SEG_N6 0x12
#define SEG_N7 0xE6
#define SEG_N8 0x02
#define SEG_N9 0x62
#define SEG_N10 0x22
#define SEG_N11 0x1A
#define SEG_N12 0x93
#define SEG_N13 0x0E
#define SEG_N14 0x13
#define SEG_N15 0x33

www.ee.ntou.edu.tw
unsigned char SEG_BUF[16]={SEG_N0, SEG_N1,
SEG_N2, SEG_N3, SEG_N4, SEG_N5, SEG_N6, SEG_N7,
SEG_N8, SEG_N9, SEG_N10, SEG_N11, SEG_N12,
SEG_N13, SEG_N14, SEG_N15};
void OpenSevenSegment(void)
{
GPIO_SetMode(PC, BIT4, GPIO_PMD_OUTPUT);
GPIO_SetMode(PC, BIT5, GPIO_PMD_OUTPUT);
GPIO_SetMode(PC, BIT6, GPIO_PMD_OUTPUT);
GPIO_SetMode(PC, BIT7, GPIO_PMD_OUTPUT);
PC4=0; PC5=0; PC6=0; PC7=0;
GPIO_SetMode(PE, BIT0, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT1, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT2, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT3, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT4, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT5, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT6, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT7, GPIO_PMD_OUTPUT);
PE0=0; PE1=0; PE2=0; PE3=0;
PE4=0; PE5=0; PE6=0; PE7=0;
}

Seven_Segment.c
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw
switch(i) {
case 0: PE0=0; break;
case 1: PE1=0; break;
case 2: PE2=0; break;
case 3: PE3=0; break;
case 4: PE4=0; break;
case 5: PE5=0; break;
case 6: PE6=0; break;
case 7: PE7=0; break;
}
temp=temp>>1;

void ShowSevenSegment(unsigned char no, unsigned char


number)
{
unsigned char temp,i;
temp=SEG_BUF[number];
for(i=0;i<8;i++) {
if((temp&0x01)==0x01)
switch(i) {
case 0: PE0=1; break;
case 1: PE1=1; break;
case 2: PE2=1; break;
case 3: PE3=1; break;
case 4: PE4=1; break;
case 5: PE5=1; break;
case 6: PE6=1; break;
case 7: PE7=1; break;
}
else

}
switch(no) {
case 0: PC4=1; break;
case 1: PC5=1; break;
case 2: PC6=1; break;
case 3: PC7=1; break;
}
}

Seven_Segment.c
Department of Electrical Engineering,
National Taiwan Ocean University
void CloseSevenSegment(void)
{
PC4=0;
PC5=0;
PC6=0;
PC7=0;
}

www.ee.ntou.edu.tw

4x4 Keypad
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

3x3 Keypad on Learning board


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

3x3 Keypad schematic (Nu-LB-NUC140)


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Keypad GPIO setting


Department of Electrical Engineering,
National Taiwan Ocean University

GPIO pin mode : Input


GPIO_SetMode(PA, BIT0, GPIO_PMD_QUASI);

Key press will connect output pin to input pin


Quasi output 1 : pin is floating
Quasi output 0 : pin drive to Low

Keypad scanning
Set input pins PA3,4,5 to 1
Set output pins to 0 one at a time PA0,1,2
PA3=1; PA4=1; PA5=1;
PA0=1; PA1=1; PA2=0;
if (PA3==0) return 1;
if (PA4==0) return 4;
if (PA5==0) return 7;

www.ee.ntou.edu.tw

Scankey.c
Department of Electrical Engineering,
National Taiwan Ocean University
void OpenKeyPad(void)
{
GPIO_SetMode(PA, BIT0, GPIO_PMD_QUASI);
GPIO_SetMode(PA, BIT1, GPIO_PMD_QUASI);
GPIO_SetMode(PA, BIT2, GPIO_PMD_QUASI);
GPIO_SetMode(PA, BIT3, GPIO_PMD_QUASI);
GPIO_SetMode(PA, BIT4, GPIO_PMD_QUASI);
GPIO_SetMode(PA, BIT5, GPIO_PMD_QUASI);
}

www.ee.ntou.edu.tw
uint8_t ScanKey(void)
{
PA0=1; PA1=1; PA2=0; PA3=1; PA4=1; PA5=1;
if (PA3==0) return 1;
if (PA4==0) return 4;
if (PA5==0) return 7;
PA0=1; PA1=0; PA2=1; PA3=1; PA4=1; PA5=1;
if (PA3==0) return 2;
if (PA4==0) return 5;
if (PA5==0) return 8;
PA0=0; PA1=1; PA2=1; PA3=1; PA4=1; PA5=1;
if (PA3==0) return 3;
if (PA4==0) return 6;
if (PA5==0) return 9;
return 0;
}

smpl_7seg_Keypad
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

7-segment
display number =
5

Press middle key


of 3x3 keypad

Scankey.c : function calls for scanning keypad 3x3

smpl_GPIO_Keypad
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Vcc/Gnd

Press key

Using GPIO outputs to control relays

GPIOs control 4-port Relay

smpl_GPIO_Keypad
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Press key1

Press key2

Press key3

Press key4

Relay #1 off

Relay #2 off

Relay #3 off

Relay #4 off

Vcc = 3.3V, GPIO output hi (base) Relay Control pin = low (collector)

Smpl_GPIO_Keypad
Department of Electrical Engineering,
National Taiwan Ocean University
int main(void)
{
uint32_t i =0;
SYS_Init();
OpenKeyPad();
Init_GPIO();
while(1)
{
i=ScanKey();
switch(i) {
case 1 : PB0=1; break;
case 2 : PB1=1; break;
case 3 : PB2=1; break;
case 4 : PB3=1; break;
default: PB0=0; PB1=0; PB2=0; PB3=0; break;
}
}
}

www.ee.ntou.edu.tw

8x8 LED Matrix


Department of Electrical Engineering,
National Taiwan Ocean University

MAX7219

www.ee.ntou.edu.tw

N1588

MAX7219.c
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

//
// MAX7219 Driver : drive 8x8 LEDs
//
#include <stdio.h>
#include "NUC100Series.h"
#include "SYS.h"
#include "GPIO.h"

void Init_GPIO(void)
{
GPIO_SetMode(PA, BIT0, GPIO_PMD_OUTPUT);
GPIO_SetMode(PA, BIT1, GPIO_PMD_OUTPUT);
GPIO_SetMode(PA, BIT2, GPIO_PMD_OUTPUT);
PA0=0; PA1=0; PA2=0;
}

// Define GPA2,1,0 as CLK, CS, DIN pins


#define CLK_HI PA2=1
#define CLK_LO PA2=0
#define CS_HI PA1=1
#define CS_LO PA1=0
#define DIN_HI PA0=1
#define DIN_LO PA0=0

void WriteData_MAX7219(uint8_t DATA)


{
uint8_t i;
CS_LO;
for(i=8;i>=1;i--) {
CLK_LO;
if (DATA&0x80) DIN_HI;
else
DIN_LO;
DATA=DATA<<1;
CLK_HI;
CLK_SysTickDelay(10);
}
}

MAX7219.c
Department of Electrical Engineering,
National Taiwan Ocean University
void write_MAX7219(uint8_t address,uint8_t dat)
{
CS_LO;
WriteData_MAX7219(address);
WriteData_MAX7219(dat);
CS_HI;
}
void Init_MAX7219(void)
{
write_MAX7219(0x09, 0x00);
write_MAX7219(0x0a, 0x03);
write_MAX7219(0x0b, 0x07);
write_MAX7219(0x0c, 0x01);
write_MAX7219(0x0f, 0x00);
}

www.ee.ntou.edu.tw

smpl_GPIO_LED8x8
Department of Electrical Engineering,
National Taiwan Ocean University
int main(void)
{
uint8_t i,j;
SYS_Init();
Init_GPIO();
Init_MAX7219();
while(1) {
for(j=0;j<38;j++) {
for(i=1;i<9;i++)
write_MAX7219(i, Font8x8[j][i-1]);
CLK_SysTickDelay(100000);
}
}
}

www.ee.ntou.edu.tw

GPIO Interrupt pin circuit


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Pullup resistor

MCU

GPIO Interrupt pin setting


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

GPIO pin mode : Input


GPIO_SetMode(PB, BIT12, GPIO_PMD_INPUT);

GPIO pin chip internal Pull-up


GPIO_ENABLE_PULL_UP(PB, BIT12);

GPIO interrupt trigger type :


RISING/FALLING/BOTH_EDGE/HIGH/LOW
GPIO_EnableInt(PB, 12, GPIO_INT_FALLING);

GPIO Interrupts : two groups = ABC or DEF


NVIC_EnableIRQ(GPABC_IRQn); // ABC group share 1 interrupt to CPU
NVIC_EnableIRQ(GPDEF_IRQn); // DEF group share 1 interrupt to CPU

GPIO pin debouncing


Debounce Clock Source = LIRC (10KHz) or HCLK
GPIO_SET_DEBOUNCE_TIME(GPIO_DBCLKSRC_LIRC, GPIO_DBCLKSEL_64);
GPIO_ENABLE_DEBOUNCE(PB, BIT12);

Initialize GPIO interrupt pins


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

// KEY1 to PB12, KEY2 to PB13, KEY3 to PB14


void Init_KEY(void)
{
GPIO_SetMode(PB, (BIT12 | BIT13 | BIT14), GPIO_PMD_INPUT);
GPIO_ENABLE_PULL_UP(PB, (BIT12 | BIT13 | BIT14));
GPIO_EnableInt(PB, 12, GPIO_INT_FALLING);
GPIO_EnableInt(PB, 13, GPIO_INT_FALLING);
GPIO_EnableInt(PB, 14, GPIO_INT_FALLING);
GPAB_IRQn for NUC100
series
NVIC_EnableIRQ(GPAB_IRQn);
GPABC_IRQn for Nano100
series GPIO_DBCLKSEL_64);
GPIO_SET_DEBOUNCE_TIME(GPIO_DBCLKSRC_LIRC,
GPIO_ENABLE_DEBOUNCE(PB, (BIT12 | BIT13 | BIT14));
}

GPAB_IRQHandler (NUC100Series)
Department of Electrical Engineering,
National Taiwan Ocean University
volatile uint8_t KEY1_Flag = 0;
volatile uint8_t KEY2_Flag = 0;
volatile uint8_t KEY3_Flag = 0;
void GPAB_IRQHandler(void)
{
if (PB->ISRC & BIT12) {
// check if PB12 interrupt occurred
PB->ISRC |= BIT12;
// clear PB12 interrupt status
KEY1_Flag=1;
// set a flag for PB12(KEY1)
} else if (PB->ISRC & BIT13) { // check if PB13 interrupt occurred
PB->ISRC |= BIT13;
// clear PB13 interrupt status
KEY2_Flag=1;
// set a flag for PB13(KEY2)
} else if (PB->ISRC & BIT14) { // check if PB14 interrupt occurred
PB->ISRC |= BIT14;
// clear PB14 interrupt status
KEY3_Flag=1;
// set a flag for PB14(KEY3)
} else {
// else it is unexpected interrupts
PB->ISRC = PB->ISRC;
// clear all GPB pins
}
}

www.ee.ntou.edu.tw

GPABC_IRQHandler (Nano100Series)
Department of Electrical Engineering,
National Taiwan Ocean University
volatile uint8_t KEY1_Flag = 0;
volatile uint8_t KEY2_Flag = 0;
volatile uint8_t KEY3_Flag = 0;
void GPABC_IRQHandler(void)
{
if (PB->ISRC & BIT12) {
// check if PB12 interrupt occurred
PB->ISRC |= BIT12;
// clear PB12 interrupt status
KEY1_Flag=1;
// set a flag for PB12(KEY1)
} else if (PB->ISRC & BIT13) { // check if PB13 interrupt occurred
PB->ISRC |= BIT13;
// clear PB13 interrupt status
KEY2_Flag=1;
// set a flag for PB13(KEY2)
} else if (PB->ISRC & BIT14) { // check if PB14 interrupt occurred
PB->ISRC |= BIT14;
// clear PB14 interrupt status
KEY3_Flag=1;
// set a flag for PB14(KEY3)
} else {
// else it is unexpected interrupts
PB->ISRC = PB->ISRC;
// clear all GPB pins
}
}

www.ee.ntou.edu.tw

smpl_GPIO_IRQ
Department of Electrical Engineering,
National Taiwan Ocean University
int32_t main()
{
SYS_Init();
Init_KEY();
printf("Testing KEY1/2/3 IRQ generation:\n");
while(1) {
if (KEY1_Flag) {
printf("KEY1/PB12 Interrupt!\n");
KEY1_Flag=0; }
if (KEY2_Flag) {
printf("KEY2/PB13 Interrupt!\n");
if (KEY3_Flag) {
printf("KEY3/PB14 Interrupt!\n");
KEY3_Flag=0; }
}
}

www.ee.ntou.edu.tw

KEY2_Flag=0; }

Stepping Motor
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Operation principle of stepper motor

http://www.piclist.com/images/www/hobby_elec/e_step1.htm

Step Motor Driving Methods


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Four phase Step Motor :


4 phases are A, /A, B, /B

Diving Method as left

Wave Drive: single phase full step


Full Step Drive : two phase full step
Half Stepping : one/two phase half step
Microstepping

http://commons.wikimedia.org/wiki/File:Drive.png

5V Step Motor 28YBJ-48


Department of Electrical Engineering,
National Taiwan Ocean University

28YBJ-48

ULN2003 IC

www.ee.ntou.edu.tw

smpl_GPIO_Stepmotor
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

5V Step Motor
Driver IC : TI ULN2003A
Connections

Motor A+ connected to INA of ULN2003A, controlled by NUC140 GPA3


Motor A- connected to INB of ULN2003A, controlled by NUC140 GPA2
Motor B+ connected to INC of ULN2003A, controlled by NUC140 GPA1
Motor B- connected to IND of ULN2003A, controlled by NUC140 GPA0

unsigned char CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //counter-clockwise


sequence
unsigned char CW[8] ={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //clockwise sequence

Stepping Control
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Clockwise : 0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08

Port

Step

InA

InB

InC

InD

Counter clockwise : 0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09

Port

Step

InA

InB

InC

InD

smpl_GPIO_Stepmotor
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Project : LED Cube 3x3x3


Department of Electrical Engineering,
National Taiwan Ocean University

Ex.Video : http://youtu.be/jxIFTKsBAT0

www.ee.ntou.edu.tw

LED Cube 3x3x3 schematic


Department of Electrical Engineering,
National Taiwan Ocean University

PD0

PD2

PD1

PD3

PD6

PD5

PD4

PA0

www.ee.ntou.edu.tw

PD8

PD7

PA1

PA2

Project : LED Cube 8x8x8


Department of Electrical Engineering,
National Taiwan Ocean University

Ex. Video: http://youtu.be/6mXM-oGggrM

www.ee.ntou.edu.tw

Project : Electronic Safe


Department of Electrical Engineering,
National Taiwan Ocean University
Electronic Safe : http://goods.ruten.com.tw/item/show?21110021890926
Ex.Video : http://youtu.be/PUKqQM0oIIo Samsung Door Lock

www.ee.ntou.edu.tw

Electronic Safe : Functional Description


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Project Objectives
To use Cortex-M0 learning board to control the electronic safe
To study/trace the PCB & circuit of Electronic Safe
To draw the flow chart & implement the firmware of MCU

Functional Description

Input six keycode by pressing 3x3 keypad


Buzz when each keycode pressed
Compared with passcode when six keycodes are entered
If passcode equal to entered keycode, buzz few times and output
to (drive electronic magnet) open the door
SWInt button to change the passcode

Flow Chart
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

while(1)

Start

Keycode
==
passcode

number=Scankey()

Setup HCLK

Y
Init_RGBLED
Init_Buzzer
InitLock
Init SWInt

number!=0
Y
print_LCD
RGBLED(BLUE)
Buzz(1)

OpenKeyPad
Initial LCD
Print 2 lines
N

i==4

i=0
Y

print_LCD
RGBLED(GREEN)
Buzz(3)
OpenLock

print_LCD
RGBLED(RED)
Buzz(2)
CloseLock

print_LCD to clear code


i=0

Electronic Safe : Interface Circuit


Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

Vcc

+6V (1.5V AA x4)

Gnd

Ground

GPB15
GPA11
2N2222

Electronic Safe : Interface Circuit


Department of Electrical Engineering,
National Taiwan Ocean University

GPA12

www.ee.ntou.edu.tw

+6V

GPA13
GPA14

GPA15

2N2222

Gnd

Important Notice !
Department of Electrical Engineering,
National Taiwan Ocean University

www.ee.ntou.edu.tw

This educational material are neither intended nor warranted for usage in systems or
equipment, any malfunction or failure of which may cause loss of human life, bodily
injury or severe property damage. Such applications are deemed, Insecure Usage.
Insecure usage includes, but is not limited to: equipment for surgical implementation,
atomic energy control instruments, airplane or spaceship instruments, the control or
operation of dynamic, brake or safety systems designed for vehicular use, traffic signal
instruments, all types of safety devices, and other applications intended to support or
sustain life.
All Insecure Usage shall be made at users own risk, and in the event that third parties
lay claims to the author as a result of customers Insecure Usage, the user shall
indemnify the damages and liabilities thus incurred by using this material.
Please note that all lecture and sample codes are subject to change without notice. All the
trademarks of products and companies mentioned in this material belong to their
respective owners.

S-ar putea să vă placă și