Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 60

TRNG I HC S PHM K THUT

THNH PH H CH MINH
KHOA IN- IN T

BO CO H THNG NHNG
ti:
O KHONG CCH BNG SNG SIU M
HIN TH GLCD 128X64

GVHD : V Minh Hun


SVTH : Trn Anh

12141058

Vn Ph

12141169

Nguyn Gia Bo

12141013

Tp.H Ch Minh, ngy 26 thng 05 nm 2015

MC LC
Chng I GII THIU YU CU- MC CH TI..3
1.1 GII THIU...3
1.2 MC CH NGHIN CU..3
1.3 GII HN..3
Chng II KHO ST S KHI......4
2.1 TM TT..4
2.2 KHO ST S KHI....4
2.2.1 THIT K S NGUYN L.....5
2.2.2 LU V CHNG TRNH...25
Chng III THI CNG MCH..44
3.1 V S NGUYN L44
3.2 V PCB...45
3.3 GIA CNG, LP RP V KIM TRA MCH...48
Chng IV KT QU THC HIN V KT LUN..53
TI LIU THAM KHO...54

Chng 1:

GII THIU YU CU GII HN CA TI


1.1

GII THIU
Vic o lng, c bit l o lng khong cch l rt quan trng trong

cuc sng. o lng khong cch gip con ngi bit c khong cch t s
vt ny n s vt khc, thun tin cho vic tnh ton v xc nh cc thng
s nh chiu di, chiu rng, chiu cao, din tch, th tch v.v V ti ny
c th tm lc ngn gn trong cc sau:
-

Chc nng ca thit b o khong cch: Dng o lng, kho st


v tnh ton khong cch vt l trong thc t.

C nhiu loi thit b o khong cch nh: Thc, s dng laser, s


dng sng siu m v.v ti ny s ch yu trnh by v thit
b o khong cch s dng sng siu m.

ti c s dng 1 s ti liu c lin quan v c ghi r ngun. C


th xem phn Ti liu tham kho.

1.2

MC CH NGHIN CU
ti c thc hin vi mc ch o khong cch bng cch ng

dng sng siu m(sng m thanh). Cc khu x l s liu o khng cn can


thip ca con ngi. ton b qu trnh o, x l s liu o v hin th cho ngi
dng u c my mc m nhim nh s phi hp ca cc khi chc nng.

1.3

GII HN
V ang l sinh vin ang theo hc i hc nn vi ti ny ti ch c

th u t cc linh kin cho thit b ph hp vi iu kin kinh t cng nh


trnh kin thc m ti tch ly c cho n hin gi. Cc linh kin ti s
dng trong ti ny nh sau:
-

Vi iu khin: Kit Arduino Uno R3.

Hin th LCD: GLCD 128x64 chip iu khin ST7920.

Cm bin: Cm bin siu m HC-SR04.

Cc linh kin khc: 8 nt nhn Up, Dw, Start, Select


v.v, led, in tr, buzzer.

Chng 2:

KHO ST S KHI
2.1. TM TT:
Vic phi hp o t, tnh ton, hin th cc thng s cn thit ca thit
b s do cc khi chc nng m nhim. V cho vic o t v hin th c
din ra ng yu cu ca ti th ti s dng 4 khi chc nng:
-

Khi ngun.

Khi vi x l.

Khi cm bin.

Khi hin th.

Khi nt nhn.

2.2. KHO ST S KHI:


d hnh dung hn vic phi hp lm vic gia cc khi chc nng
trong thit b ca ti, di y l phn trnh by v s khi v chc nng
c th tng khi cng nh cch thc phi hp lm vic gia cc khi.

Hnh 2.1 S khi thit b o khong cch dng sng siu m.

Chc nng tng khi:

Khi ngun: c chc nng cp ngun cho ton b mch hot ng.

Khi vi x l: B x l trung tm. X l, tnh ton s liu v iu khin


cc khi cm bin, hin th.

Khi cm bin: o v chuyn s liu ti khi vi x l.

Khi hin th: Hin th s liu tnh ton, thng tin theo yu cu.

Khi nt nhn: Giao tip gia con ngi vi thit b.

2.2.1
a.

THIT K S NGUYN L
KHI VI X L:
Khi vi x l chnh s dng trong ti ny l kit Arduino UNO

R3 do sn xut. Arduino UNO R3 s dng vi x l 8-bit ATmega 328


ca Atmel. Cc dng vi x l ny cho php lp trnh cc ng dng iu
khin phc tp do c trang b cu hnh mnh vi cc loi b nh
ROM, RAM, Flash, cc ng vo ra digital I/O trong c nhiu ng c
kh nng xut tn hiu PWM, cc ng tn hiu Analog v cc chun giao
tip a dng nh UART, SPI, I2C(TWI).

Hnh 2.2 Kit Arduino Uno R3.

Di y l mt s thng s ca Kit Arduino Uno R3

Vi iu khin

ATmega328 (h 8bit)

in p hot ng

5V DC (ch c cp qua
cng USB)

Tn s hot ng

16 MHz

Dng tiu th

30mA

in p vo khuyn

7-12V DC

dng
in p vo gii hn

6-20V DC

S chn Digital I/O

14 (6 chn PWM)

S chn Analog

6 ( phn gii 10bit)

Dng ti a trn mi

30 mA

chn I/O
Dng ra ti a (5V)

500 mA

Dng ra ti a (3.3V)

50 mA

B nh flash

32 KB (ATmega328) vi 0.5KB
dng bi bootloader

SRAM

2 KB (ATmega328)

EEPROM

1 KB (ATmega328)

vic s dng kit Arduino UNO R3 c d dng hn, sau y l mt s


thng tin quan trng m ngi dng cn phi bit r:

Ngun: Arduino UNO c th c cp ngun 5V DC thng qua cng USB


hoc cp ngun ngoi vi in p khuyn dng l 7-12V DC v gii hn l 620V. Thng th cp ngun bng Pin 9V l hp l nht nu nh khng c sn

ngun t cng USB. Nu cp ngun vt qu ngng gii hn trn, Arduino c


th s b hng.

Nhm chn nng lng trn Arduino:

GND(Ground): Cc m ca ngun in cp cho Arduino UNO. Khi kt ni Arduino


vi ngun v giao tip vi cc thip b khc th chn GND ca mi phn t phi c
ni chung vi nhau.
-

5V: Cp in p 5V u ra. Dng ra ti a cho php chn ny l 500mA.

3.3V: Cp in p 3.3V u ra. Dng ti a cho php ca chn ny l


50mA.

Vin(Voltage Input): cp ngun ngoi cho Arduino UNO, ta cn phi


ni cc dng vi chn ny cn cc m ni vi chn GND.

IOREF: in p hot ng ca vi iu khin trn Arduino UNO c th


c o chn ny. p ny lun l 5V. Mc d vy ta khng c ly
ngun 5V t chn ny s dng bi chc nng ca n khng phi l cp
ngun.

RESET: Vic nhn nt Reset trn board reset vi iu khin tng ng


vi vic chn RESET c ni vi GND qua 1 in tr 10K.

Lu :
Arduino UNO khng c bo v cm ngc ngun vo. Do phi ht sc cn
thn, kim tra cc cc m dng ca ngun trc khi cp cho Arduino UNO.
Vic lm chp mch ngun vo ca Arduino UNO s bin n thnh mt ming
nha chn giy. Khuyn khch nn dng ngun t cng USB nu c th.
Cc chn 3.3V v 5V trn Arduino l cc chn dng cp ngun ra cho cc
thit b khc, khng phi l cc chn cp ngun vo. Vic cp ngun sai v tr
c th lm hng board. iu ny khng c nh sn xut khuyn khch.
Cp ngun ngoi khng qua cng USB cho Arduino UNO vi in p di 6V
c th lm hng board.
Cp in p trn 13V vo chn RESET trn board c th lm hng vi iu
khin ATmega328.

Cng dng in vo/ra tt c cc chn Digital v Analog ca Arduino


UNO nu vt qu 200mA s lm hng vi iu khin.
Cp ip p trn 5.5V vo cc chn Digital hoc Analog ca Arduino UNO s
lm hng vi iu khin.
Cng dng in qua mt chn Digital hoc Analog bt k ca Arduino
UNO vt qu 40mA s lm hng vi iu khin. Do nu khng dng
truyn nhn d liu, th phi mc mt in tr hn dng.

B nh: Vi iu khin Atmega 328 tiu chun cung cp cho ngi dng:
-

32KB b nh Flash: nhng on lnh ta lp trnh s c lu tr trong b


nh Flash ca vi iu khin. Thng th s c khong vi KB trong s ny
s c dng cho bootloader(Chng trnh h tr cho vic Upload chng
trnh ln vi iu khin Atmega328 trn Kit Arduino).

2KB cho SRAM (Static Random Access Memory): gi tr cc bin ta khai


bo khi lp trnh s lu y. Khai bo cng nhiu bin th cng cn nhiu
b nh RAM. Khi mt in, d liu trn SRAM s b mt.

1KB
EEPROM (Electrically Eraseble Programmable Read OnlyMemory): y
ging nh mt chic cng mini ni c th c v ghi d liu ca mnh
vo y m khng b mt khi cp in ging nh d liu trn SRAM.

Cc cng vo/ra: Arduino UNO c 14 chn digital dng c hoc xut tn


hiu. Chng ch c 2 mc in p l 0V v 5V vi dng vo/ra ti a trn mi
chn l 40mA. mi chn u c cc in tr pull-up t c ci t ngay
trong vi iu khin ATmega328 (mc nh th cc in tr ny khng c kt
ni).

Mt s chn digital c chc nng c bit nh sau:


-

chn Serial: 0 (RX) v 1 (TX): dng gi (transmit TX) v nhn


(receive RX) d liu TTL Serial. Arduino Uno c th giao tip vi thit b
khc thng qua 2 chn ny. Kt ni bluetooth thng thy ni d hiu chnh
l kt ni Serial khng dy. Nu khng cn giao tip Serial, khng nn s
dng 2 chn ny nu khng cn thit

Chn PWM (~): 3, 5, 6, 9, 10, v 11: cho php ta xut ra xung PWM vi
phn gii 8bit (gi tr t 0 2 8-1 tng ng vi 0V 5V) bng hm
analogWrite(). Ni mt cch n gin, ta c th iu chnh c in p ra
chn ny t mc 0V n 5V thay v ch c nh mc 0V v 5V nh
nhng chn khc.

Chn giao tip SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoi


cc chc nng thng thng, 4 chn ny cn dng truyn pht d liu
bng giao thc SPI vi cc thit b khc.

LED 13: trn Arduino UNO c 1 n led mu cam (k hiu ch L). Khi
bm nt Reset, ta s thy n ny nhp nhy bo hiu. N c ni vi
chn s 13. Khi chn ny c ngi dng s dng, LED s sng.

Arduino UNO c 6 chn analog(A0-A5) cung cp phn gii tn hiu 10bit(0 - 2 10-1)
c gi tr in p trong khong(0V-5V). Vi chn AREF trn board, ta c th a
vo in p tham chiu khi s dng cc chn analog. Tc l nu ta cp in p 2.5V
vo chn ny th ta c th dng cc chn analog o in p trong khong t 0V
2.5V vi phn gii vn l 10bit. c bit, Arduino UNO c 2 chn A4 (SDA) v A5
(SCL) h tr giao tip I2C/TWI vi cc thit b khc.
b.

KHI CM BIN
Cm bin siu m c s dng trong ti ny l cm bin HCSR04

Hnh 2.3 Cm bin HC-SR04.

HC-SR04 l module cm bin siu m dng o khong cch


bng sng siu m. Sng siu m l sng m thanh thuc nhm sng c
hc vi tc lan truyn trong khng kh khng cao, li dng iu ny
m ngi ta c th o t khong cch da trn sng ny.
Nguyn l nh sau, u tin my s pht i mt chm sng siu
m, khi lan truyn nu gp c vt cn sng s di v my thu, t thi
gian pht i v nhn v ca chm sng ny ngi ta s tnh c
khong cch ca vt cn.

Hnh 2.4 Nguyn l truyn v phn x sng m thanh.


Trn cm bin c 4 chn:

VCC: Ngun cp cho cm bin 5V.

GND: t.

Trigger: Pin cho cc pht ---- ni trc tip vo chn ca


vdk.

Echo: Pin cho cc thu ---- ni trc tip vo chn ca vdk.

Qu trnh hot ng ca cm bin l qu trnh ly thi gian sng


m truyn i v di tr li tnh ton khong cnh theo cng thc
S=V.t (V: Tc m thanh, S: Khong cch cn o,t=T/2 vi T l thi
gian sng m truyn i v di li).

Hnh 2.5 Nguyn l hot ng cc chn cm bin HC-SR04


Khi bt u th vi iu khin s pht 1 xung vo pin
Trigger c rng l 10us.
Sau khi c xung kch vo chn Trigger th cc pht ca
cm bin s pht ra 8 xung ca sng m thanh ( v=
340m/s).
Ngay sau pin Echo vi iu khin s ko ln cao
v i sng m thanh phn x li. Khi gp sng phn x
th pin Echo s c ko xung thp. Nh vy, thi gian
pin Echo mc cao s chnh l thi gian sng m thanh
i v v trn qung ng t cm bin ti vt cn.
Gii hn khng gian hot ng ca cm bin HC-SR04:

Hnh 2.6 Gii hn khng gian hot ng ca cm bin HCSR04


-

Cm bin HC-SR04 hot ng n nh v chnh


xc nht trong tm 30 gc hnh nn tnh t
ng thng vung gc vi mt phng cha 2
mt thu v nhn ca cm bin.

Cm bin HC-SR04 o c khong cch ti a


chnh xc v n nh nht vi gii hn khong
cch >= 3m tnh t mt cm bin n vt cn xc
nh khon cch.

c.

KHI KHI HIN TH

Vic theo yu cu ca ti, khi hin th s s dng 1 LCD


Graphic(GLCD) 128x64 pixel. y ti s s dng GLCD 128x64
pixel chip iu khin ST7920.
-

Hnh dng thc v s chn GLCD 128x64 ST7920:

Hnh 2.7 Hnh dng thc v s chn GLCD 128x64 ST7920

Cc loi vng nh ca GLCD ST7920:

CGROM (Character Generation ROM) : ROM dung


lng 2M-bits cha font ch Trung Quc dng 16x16.

HCGROM (Half Height CGROM): ROM dung lng


16K-bits cha font ca 168 k t dng 16x8 nh trong
hnh 2.8

Hnh 2.8 Cc k t 16x8 vng nh HCGROM

CGRAM (Character Generation RAM) : RAM kch


thc 64x16 bits cho php ngi dng t to k t
ring dng 16x16.

Hnh 2.9 Cch to k t trong CGRAM

IRAM (ICON RAM) : RAM to icon 240 im dng


15x16.

DDRAM (Display Data RAM): RAM lu d liu hin


th ra mn hnh.
o Hin th fonts ca HCGROM: ghi 2 bytes vo
DDRAM hin th 2 k t dng 16x8, ni byte
l 1 k t. Cc byte c ghi phi nm trong
phm vi 02H7FH.
o Hin th fonts ca CGRAM: ghi 2 bytes vo
DDRAM hin th mt k t dng 16x16. Ch
c

php

ghi

gi

tr

sau

0000H,0002H,0004H,0006H.
o Hin th fonts ca CGROM: ghi 2 bytes vo
DDRAM hin th mt k t. A140H D75FH
l m BIG5, A1A0HF7FFH l m GB.
Ch : Lun ghi byte cao trc v byte thp sau.

Hnh 2.10 Cch ghi d liu vo vng nh DDRAM.

GDRAM (graphic display RAM) : Vng nh hin th


nh gn 64x256 bits. Cc bc ghi d liu hin th ln
GDRAM:
o t t a ch hng dc (Y).
o t a ch hng ngang (X).

o Ghi D15-D8 vo GDRAM ( byte th 1).


o Ghi D7-D0 vo GDRAM (byte th 2 ).

a ch GDRAM s t ng tng ln 1 chun b ghi 2


bytes tip theo.

Hnh 2.11 T chc vng nh GDRAM.


-

Tp lnh:
Nhm lnh 1 (Khi RE=0: nhm lnh c bn)

Hnh 2.12 Nhm lnh c bn.


Nhm lnh 2 (Khi RE=1: nhm lnh m rng)

Hnh 2.12 Nhm lnh m rng.


d.

KHI NT NHN
Cc nt nhn giao tip gi thit b vi con ngi s c s dng

trong ti l cc nt nhn 2 chn.


Vic giao tip vi nt nhn s gip ngi s dng thit b c th
iu khin, tng tc vi thit b c d dn hn.
Bn cnh vic to thm giao tip nt nhn s d dng hn trong
vic pht trin ti sau ny.

Hnh 2.13 Hnh dng thc nt nhn 2 chn.

e.

KHI NGUN
Theo nh phn thng tin v Kit iu khin Arduino nu trn. V

khng thng xuyn dng ngun USB nn trong ti ny ti s s


dng khi ngun vi u ra 9V DC, dng ra 500mA vi IC n p 7809.
p ng ng vi yu cu ngun vo cho Kit Arduino.
c th to c khi ngun trn, ti la chn c linh kin
nh sau:
-

Ic n p 7809:

Hnh 2.14 Hnh dng thc v s chn dng IC n p 78XX.

Hnh 2.15 DataSheet IC n p 7809.


-

Cu diode:

Hnh 2.16 Hnh dng thc v s chn cu Diode RS507.

Hnh 2.17 DataSheet cu Diode RS50X


-

T in:
Cc t in c s dng bao gm: T ha 2200uF/50V, t
ha 100uF/25V, t gm 104. Chc nng chnh l lc ngun.

f.

S NGUYN L CHO TON MCH

Hnh 2.18 S nguyn l ton mch.


Gii thch tm gn cho s nguyn l:
-

GLCD 128x64 ST7920 giao tip SPI vi Arduino thng qua


3 chn(c nh ngha trong th vin iu khin s gii
thiu phn sau:

E(GLCD)PinA4(Arduino).

RS(GLCD)PinA3(Arduino).

R\W(GLCD)PinA2(Arduino).

PSB ni Mass: Giao tip SPI.

Cc chn khc kt ni ng vi datasheet.

Cm bin HC-SR04 giao tip vi Arduino thng qua:

TriggerPinPin12(Arduino).

EchoPinPin13(Arduino).

Cc chn khc kt ni theo datasheet.

H thng nt nhn s giao tip theo trnh t sau:


Button(a,b,up,down,left,right,select,start)ArduinoPin(2,3
,4,5,6,7,8,9). V qu trnh iu khin s dng tr ko
ln(PULL_UP) trong vi iu khin nn khng cn s dng
in tr ko ln ngoi.

Led v buzzer giao tip theo th t Pin10 v Pin11 trn


Arduino.

2.2.2

LU V CHNG TRNH

a. GII THIU YU CU IU KHIN


Yu cn quan trng nht l yu cu o v hin th khong cch ln
GLCD.
Ngoi ra trong qu trnh thc hin ti ti thm mt s yu
cu iu khin khc c hng m rng hn cho thit b:
-

Cho php chn ch o bng giao din Menu bao gm:


o khong cch, o din tch. Nhn Up, Down, L, R
chn ch . Nu chn ch no th nhn Start bt
u, thot th nhn B. mi ch u c chn n v o
l Mt, Cm hay Dm bng nt A.

Trong ch o khong cch: Nu khong cch di


khong cch t(iu chnh khaorng cch t bng nt Up,
Down, L, R) th s bo ng bng Buzzer v Led v hin
ch WARING!! trn GLCD.

Trong ch o din tch, khi o khong cch th nht.


Mun ly khaorng cch th nhast th nhn Select ln 1,
mun ly khaorng cch th 2 v tnh din tich th nhn
Select ln 2.

b. GII THIU TRNH BIN DCH ARDUINO IDE

Cc thit b da trn nn tng Arduino c lp trnh bng ngn


ring. Ngn ng ny da trn ngn ng Wiring c vit cho phn cng
ni. V Wiring li l mt bin th ca C/C++. Mt s ngi gi n l
Wiring, mt s khc th gi l C hay C/C++. Ring ti th gi n l
ngn ng Arduino, v i ng pht trin Arduino cng gi nh vy.
Ngn ng Arduino bt ngun t C/C++ ph bin hin nay do rt d
hc, d hiu. Nu hc tt vic lp trnh vi ngn ng C c hc
mn K thut lp trnh giao tip th vic lp trnh Arduino s rt d
dng.
lp trnh cng nh gi lnh v nhn tn hiu t mch
Arduino, nhm pht trin d n ny cng cp n cho ngi dng
mt mi trng lp trnh Arduino c gi l Arduino IDE
(IntergratedDevelopment Environment) nh hnh di y.

Hnh 2.19 Arduino IDE v10.6.


c. GII THIU V TH VIN IU KHIN GLCD U8GLIB
V CHUN GIAO TIP SPI
-

Th vin iu khin GLCD U8glib:


Th vin U8glib l th vin h tr iu khin rt nhiu
chng loi GLCD cho Arduio c cng ng trn
https://code.google.com/p/u8glib/ pht trin.
i vi GLCD ST7920, th vin U8glib c h tr c 2
cch thc giao tip l: Giao tip song song 8 ng, v
giao tip theo chun truyn thng SPI. Trong ti, v l

do Arduino khng chn giao tip nn ti chn cch giao


tip theo chun truyn thng SPI.
-

Cch s dng th vin U8glib:

Download: Th vin U8glib c download ti


https://code.google.com/p/u8glib/

Hnh 2.20 a ch download U8glib.

Add th vin vo trnh bin dch Arduino IDE:


o Sau khi download File th vin U8glib v
my, ta tin hnh gii nn file.
o Bt trnh bin dch Arduino IDE chn:
SketchImportLibraryAddLibrary
Chn th mc th vin U8glib va
gii nn lc trcOK.

Chy Demo th vin:

o Kt ni GLCD vi Arduino ng theo s


nguyn l trnh by trn.
o Trong

Arduino

IDE

chn:

ExampleU8glibHello Wold.

Lc

ny 1 chng trinh Demo cho hin th ch


Hello World trn GLCD s xut hin.
o Trong dy m b b bng du // ca
chng trnh Demo, hy tm dng m
U8GLIB_ST7920_128X64_1X

u8g(18,

16, 17); v b // u dng m . Cc


dng m b b bi // l cc dng m
nh ngha thit b v chun giao tip.
y thit b GLCD ta dng c tn l
ST7920 v giao tip SPI nn ta phi chn
ng dng m tng ng.
-

Chun giao tip truyn thng SPI:


SPI (Serial Peripheral Bus) l mt chun truyn thng

ni tip tc cao do hang Motorola xut. y l kiu


truyn thng Master-Slave, trong c 1 chip Master iu
phi qu trnh tuyn thng v cc chip Slaves c iu khin
bi Master v th truyn thng ch xy ra gia Master v
Slave. SPI l mt cch truyn song cng (full duplex) ngha l
ti cng mt thi im qu trnh truyn v nhn c th xy ra
ng thi. SPI i khi c gi l chun truyn thng 4 dy
v c 4 ng giao tip trong chun ny l SCK (Serial
Clock), MISO (Master Input Slave Output), MOSI (Master
Ouput Slave Input) v SS (Slave Select).
SCK: Xung gi nhp cho giao tip SPI, v SPI l chun
truyn ng b nn cn 1 ng gi nhp, mi nhp trn chn
SCK bo 1 bit d liu n hoc i. y l im khc bit vi
truyn thng khng ng b m chng ta bit trong chun

UART. S tn ti ca chn SCK gip qu trnh tuyn t b li v


v th tc truyn ca SPI c th t rt cao. Xung nhp ch
c to ra bi chip Master.
MISO Master Input / Slave Output: nu l chip
Master th y l ng Input cn nu l chip Slave th MISO
li l Output. MISO ca Master v cc Slaves c ni trc tip
vi nhau..
MOSI Master Output / Slave Input: nu l chip
Master th y l ng Output cn nu l chip Slave th MOSI
l Input. MOSI ca Master v cc Slaves c ni trc tip vi
nhau.
SS Slave Select: SS l ng chn Slave cn giao tip,
trn cc chip Slave ng SS s mc cao khi khng lm vic.
Nu chip Master ko ng SS ca mt Slave no xung
mc thp th vic giao tip s xy ra gia Master v Slave .
Ch c 1 ng SS trn mi Slave nhng c th c nhiu ng
iu khin SS trn Master, ty thuc vo thit k ca ngi
dng.
Trn Kit Arduino UNO, cc chn giao tip theo chn SPI
tng

ng

l:

Pin

SPI(SCK,MOSI,MISO,SS)PinArduino(13,11,12,10).

Tuy

nhin, v th vin h tr iu khin GLCD nh ngha cc


chn SPI khc nn ta s s dng chn SPI theo ng nh th
vin

U8glib

nh

ngha

nh

sau:

SPIArduino(SCK=PinA4,MOSI=PinA2,SS=PinA3)PinGLC
D(E,RS,R\W).
d. LU
Lu chng trnh chnh:

Chng trnh con menu:

Chng trnh con o khong cch

Chng trnh con o din tch hnh ch nht

e. CHNG TRNH
Chng trnh o khong cch bng sng siu m hin th GLCD
theo ng yu cu iu khin:
#include "U8glib.h"
U8GLIB_ST7920_128X64_4X u8g(18, 16, 17);
// SPI Com: SCK = en = 18 = PIN A4,
//MOSI = rw = 16 = PIN A2, CS = di = 17 = PIN A3
//TH VIN U8GLIB L TH VIN H TR HIN TH
GLCD 128X64 C 2 //CCH GIAO TIP: SONG SONG, V
SPI...
// Y CHN GIAO TIP SPI TIT KIM CHN
ARDUINO( CH GIAO //TIP N CNG NN CH S
DNG MOSI-"CH GI,T NHN V HIN //TH")
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX

const

int

A=2,B=3,UP=4,DW=5,L=6,R=7,ST=8,SL=9,LED=10,BZ=11;
const int trig=12;
const int echo=13;
unsigned long t_echo;
float kc=0;
float d1,d2,dt;
int br;
float gia_tri_an_toan=5;
unsigned int i;
unsigned mode = 1;
int cot=5;
String a="";
String

kc_an_toan,

bd,

s_d1,

nutB,

nutVang,

string_mode="(cm)";
String c;
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void setup()
{
//Serial.begin(9600);
pinMode(A, INPUT_PULLUP);
pinMode(B, INPUT_PULLUP);
pinMode(UP, INPUT_PULLUP);
pinMode(DW, INPUT_PULLUP);
pinMode(L, INPUT_PULLUP);
pinMode(R, INPUT_PULLUP);
pinMode(ST, INPUT_PULLUP);
pinMode(SL, INPUT_PULLUP);
pinMode(trig,OUTPUT);

pinMode(echo,INPUT);
pinMode(LED, OUTPUT);
pinMode(BZ, OUTPUT);
digitalWrite(LED,HIGH);
delay(100);
digitalWrite(LED,LOW);
gioi_thieu();
delay(5000);
u8g.setFont(u8g_font_6x12);
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void loop()
{
menu();
if(cot==5)
dokhoangcach();
else dodientich();
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void nut_mode()//nutA
{
if(digitalRead(A)==LOW)
{
tone(BZ,2300,50);
mode++;
if(mode>3) mode=1;

while(digitalRead(A)==LOW);
if(mode==1)string_mode="(cm)";
else if(mode==2)string_mode="(dm)";
else string_mode="(m)";
delay(50);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void menu()
{
//bd="";
kc_an_toan="";
s_d1="";
digitalWrite(LED,LOW);
nutB="";
nutVang="";
while(true)
{
nut_up_menu();
nut_down_menu();
u8g.firstPage();
do{
u8g.drawFrame(9,cot,110,13);
u8g.drawStr(22,14,"Do khoang cach");
u8g.drawStr(18,34,"Do dien tich hcn");
u8g.drawStr(0,60,"UP,DW

Start");

}while(u8g.nextPage());
if(digitalRead(ST)==LOW)
{tone(BZ,2300,50);while(digitalRead(ST)==LOW);break;}
}
}

//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX
void nut_up_menu()
{
if((digitalRead(UP)==LOW)|(digitalRead(L)==LOW))
{
tone(11,2300,50);
cot -=20;
if(cot<10) cot=5;
while((digitalRead(UP)==LOW)|(digitalRead(L)==LOW));
delay(50);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void nut_down_menu()
{
if((digitalRead(DW)==LOW)|(digitalRead(R)==LOW))
{
tone(11,2300,50);
cot +=20;
if(cot>30) cot=25;
while((digitalRead(DW)==LOW)|(digitalRead(R)==LOW));
delay(50);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX

void nut_up_kc()
{
if((digitalRead(UP)==LOW)|(digitalRead(L)==LOW))
{
if(digitalRead(L)==LOW)
{
tone(11,2300,50);
gia_tri_an_toan -=0.01;
}
else
{
tone(11,2300,50);
gia_tri_an_toan ++;
}
while((digitalRead(UP)==LOW)|(digitalRead(L)==LOW));
delay(50);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX
void nut_down_kc()
{
if((digitalRead(DW)==LOW)|(digitalRead(R)==LOW))
{
if(digitalRead(R)==LOW)
{
tone(11,2300,50);
gia_tri_an_toan +=0.01;
}
else
{
tone(11,2300,50);

gia_tri_an_toan --;
}
if(gia_tri_an_toan<0) gia_tri_an_toan=0;
while((digitalRead(DW)==LOW)|(digitalRead(R)==LOW));
delay(50);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void tinhkhoangcach()
{
digitalWrite(trig,0);
delayMicroseconds(2);
digitalWrite(trig,1);
delayMicroseconds(10);
digitalWrite(trig,0);
t_echo = pulseIn(echo,HIGH);
if(mode==3) kc=(float(((t_echo)*0.034)/2))/100;

//m

else if (mode==2) kc=(float(((t_echo)*0.034)/2))/10;

//dm

else kc=float(((t_echo)*0.034)/2);

//cm

}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX
void ktantoan()
{
if(kc<=gia_tri_an_toan)
{
kc_an_toan=" WARNING!!";
tone(BZ,2500);
digitalWrite(LED,HIGH);
}

else
{
kc_an_toan="kc dat " + String(gia_tri_an_toan) +
string_mode;
noTone(BZ);
digitalWrite(LED,LOW);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void hienthi()
{
u8g.firstPage();
do{
u8g.setPrintPos(64,60); u8g.print(nutB);
u8g.setPrintPos(64,60); u8g.print(nutVang);
u8g.drawStr(0,60,"'A'=mode");
u8g.setPrintPos(15,12); u8g.print(kc_an_toan);//khi do
khoang cach moi hien thi muc nay
u8g.setPrintPos(24,12); u8g.print(s_d1);//khi do dien tich
moi hien thi muc nay
//u8g.setPrintPos(25,60); u8g.print(bd);//khi co bao dong
moi hien thi muc nay
u8g.drawFrame(14,16,100,32);
u8g.setPrintPos(20,29); u8g.print("Khoang cach" + a);
if (kc >=100)
u8g.setPrintPos(35,43);
else if ((kc <100) & (kc >=10))
u8g.setPrintPos(38,43);
else
u8g.setPrintPos(41,43);
u8g.print(String(kc) + string_mode);

}while(u8g.nextPage());
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void dokhoangcach()
{
a= " la:";
nutB="'B'=menu";
while(true)
{
nut_mode();
nut_up_kc();
nut_down_kc();
kc_an_toan="kc dat " + String(gia_tri_an_toan) +
string_mode;
tinhkhoangcach();
ktantoan();
hienthi();
if(digitalRead(B)==LOW) {tone(BZ,2300,50);break;}
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void dodientich()
{
br=0;
while(true)
{
s_d1="";
nutVang="YellowBt=SL";
dolani();
tinhdientich();

hienthi_dientich();
if(br==1) break;
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void dolani()
{
for(i=1;i<3;i++)
{
a= " d"+String(i)+":";
if(i==2)
{
s_d1="d1 = "+ String(d1)+string_mode;
}
while(true)
{
nut_mode();
tinhkhoangcach();
hienthi();
if(digitalRead(SL)==LOW)
{tone(BZ,2300,50);while(digitalRead(SL)==LOW);break;}
}
if(i==1) d1=kc;
else d2=kc;
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void tinhdientich()
{
dt=d1*d2;

if(mode==1)
c="(cm)";
else if(mode==2)
c="(dm)";
else
c="(m)";
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void hienthi_dientich()
{
u8g.firstPage();
do{
u8g.setPrintPos(12,10);
u8g.print("d1 = "+String(d1) + string_mode);
u8g.setPrintPos(12,22);
u8g.print("d2 = "+String(d2) + string_mode);
u8g.setPrintPos(12,34);
u8g.print("dt = "+String(dt) + string_mode+"2");
u8g.drawStr(12,46,"'A',tiep tuc");
u8g.drawStr(12,58,"'B',menu");
}while(u8g.nextPage());
while(true)
{
if(digitalRead(A)==LOW)
{tone(BZ,2300,50);while(digitalRead(A)==LOW);break;}
if(digitalRead(B)==LOW)
{tone(BZ,2300,50);while(digitalRead(B)==LOW);br=1;break;}
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX

void gioi_thieu()
{
u8g.firstPage();
do {
u8g.drawFrame(0,0,128,64);
u8g.setFont(u8g_font_5x7);
u8g.setPrintPos(11,9);
u8g.print("TRUONG DH SPKT TP HCM");
u8g.drawLine(1,18,126,18);
u8g.setPrintPos(20,17);
u8g.print("KHOA DIEN-DIEN TU");
u8g.setPrintPos(25,26);
u8g.print("DO AN DIEN TU 1");
u8g.setPrintPos(5,34);
u8g.print("(DO KHOANG CACH SU DUNG");
u8g.setPrintPos(22,42);
u8g.print("CAM BIEN SIEU AM");
u8g.setPrintPos(14,50);
u8g.print( "HIEN THI GLCD 128x64)");
u8g.setPrintPos(25,60);
u8g.print("Loading......");
} while( u8g.nextPage() );
}
f. GII THCH CC LNH S DNG TRONG CHNG TRNH.
-

#include "U8glib.h" : Khai bo th vin iu khin


GLCD.

U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); : Chn


thit b iu khin ca th vin l GLCD ST7920 128x64
theo giao tip SPI vi Pin18=PinA4=E, Pin17=PinA3=RS,
Pin16=PinA2=R\W.

pinMode(x,MODE); : nh cu hnh cho pin x, MODE c


th l: INPUT,OUTPUT,INPUT_PULLUP.

u8g.setFont(u8g_font_6x12); :La chn phng ch, lnh


do th vin U8glin h tr. y phng ch c chn l
6x12.

tone(x,y,z); : Xut tn s m thanh ra chn x, vi tn s


m thanh y v trong thi gian z.

digitalWrite(x,MODE); : Xut gi tr s ra chn x,


MODE c th l: LOW, HIGH.

digitalRead(x,MODE); : c gi tr s vo chn x,
MODE c th l: LOW, HIGH.

u8g.drawFrame(x,y,W,H); : Lnh do th vin U8glib h


tr. V khung bt u t ta (x,y) trn GLCD vi chiu
di l W, chiu cao l H.(dng trong vng lp hnh nh)

u8g.drawStr(x,y,"abc"); : Lnh do th vin U8glib h


tr. Ti v tr c ta (x,y) trn GLCD, th hin chui
abc.(dng trong vng lp hnh nh)

u8g.setPrintPos(x,y); u8g.print(Bin chui hoc 1


chui); : Cp lnh lm vic tng t vi cu lnh
u8g.drawStr(x,y,"abc");. Tuy nhin cp lnh ny c th
hin th bin chui. (dng trong vng lp hnh nh)

delay(x): Tr hon vi thi gian x mili giy.

Vng lp hnh nh ca th vin U8glib: Cc lnh nu c


bt buc phi c t trong vng lp hnh nh th phi t
v tr cc lnh ng yu cu. Vng lp hnh nh ca U8glib
th hin ni dung cn hin th vi cac thi im khc nhau
nhng ni dung mi khng th hin ln ni dung c m
ni dung c s b xa i v ni dung mi c th hin.

Hnh 2.21 V d v vng lp hnh nh trong th vin U8glib vi


chng trnh HelloWorld.

Chng 3:

THI CNG MCH

3.1

V S NGUYN L

Hnh 3.1 S nguyn l.

3.2

V PCB

Hnh 3.2 PCB khi vi iu khin,button,GLCD

Hnh 3.3 PCB khi ngun.

3.3

GIA CNG MCH V LP RP KIM TRA MCH


Di y l mt s hnh nh mch sau khi c gia cng, lp rp v
chy kim tra.

Chng 4:

KT QU THC HIN V KT LUN

Mch sau khi hon thnh chy n nh v chnh xc cao.

Hng pht trin: ti ny c th pht trin thm cc chc nng o a


dng hn nh: din tch cc hnh khi, th tch cc hnh khi, bo ng
cho oto xe my, v.v Ngoi ra vi thit k hnh dng bn ngoi ta c
th thm tnh nng gii tr nh Game vo sn phm to s a dng
khi s dng

TI LU THAM KHO

[1]

http://arduino.vn/reference

[2]

https://code.google.com/p/u8glib/wiki/userreference

[3]

http://www.arduino.cc/en/Reference/SPI

[4]

L thuyt Vi iu khin PIC 18f4550.L thuyt GLCD ST7920. Nguyn nh

Ph
[5]

http://alldatasheet.com

[6]

http://arduino.vn

You might also like