You are on page 1of 72

Gio trnh vi iu khin AVR

Bin tp bi:
DKS Group
Gio trnh vi iu khin AVR

Bin tp bi:
DKS Group

Cc tc gi:
DKS Group

Phin bn trc tuyn:


http://voer.edu.vn/c/b68a6564
MC LC

1. iu khin IO(vo-ra) vi led n


2. iu khin vo ra vi led 7 on
3. iu khin IO vi LCD
4. ADC vi LM35
5. Giao tip I2C vi RTC DS1307
6. Truyn thng ni tip RS232 v Visual Bais
7. o lng s dng my tnh
8. iu khin Step Motor
Tham gia ng gp

1/70
iu khin IO(vo-ra) vi led n
Kin trc vi iu khin

AVR l h vi iu khin 8 bit theo cng ngh mi, vi nhng tnh nng rt mnh c
tch hp trong chip ca hng Atmel theo cng ngh RISC, n mnh ngang hng vi cc
h vi iu khin 8 bit khc nh PIC,Pisoc.Do ra i mun hn nn h vi iu khin
AVR c nhiu tnh nng mi p ng ti a nhu cu ca ngi s dng, so vi h 8051
89xx s c n nh, kh nng tch hp, s mm do trong vic lp trnh v rt tin
li.

* Tnh nng mi ca h AVR:

- Giao din SPI ng b.

- Cc ng dn vo/ra (I/O) lp trnh c.

- Giao tip I2C.

- B bin i ADC 10 bit.

- Cc knh bm xung PWM.

- Cc ch tit kim nng lng nh sleep, stand by..vv.

- Mt b nh thi Watchdog.

- 3 b Timer/Counter 8 bit.

- 1 b Timer/Counter 16 bit.

- 1 b so snh analog.

- B nh EEPROM.

- Giao tip USART..vv.

2/70
Gii thiu vi iu khin Atmega16L

Atmelga16L c y tnh nng ca h AVR, v gi thnh so vi cc loi khc th gi


thnh l va phi khi nghin cu v lm cc cng vic ng dng ti vi iu khin. Tnh
nng:

- B nh 16K(flash) . - 512 byte (EEPROM). - 1 K (SRAM).

- ng v 40 chn , trong c 32 chn vo ra d liu chia lm 4 PORT A,B,C,D. Cc


chn ny u c ch pull_up resistors.

- Giao tip SPI. - Giao din I2C. - C 8 knh ADC 10 bit.

- 1 b so snh analog. - 4 knh PWM.

- 2 b timer/counter 8 bit, 1 b timer/counter1 16 bit.

- 1 b nh thi Watchdog.

- 1 b truyn nhn UART lp trnh c.

M t cc chn

- Vcc v GND 2 chn cp ngun cho vi iu khin hot ng.

- Reset y l chn reset cng khi ng li mi hot ng ca h thng.

- 2 chn XTAL1, XTAL2 cc chn to b dao ng ngoi cho vi iu khin, cc chn


ny c ni vi thch anh (hay s dng loi 4M), t gm (22p).

3/70
- Chn Vref thng ni ln 5v(Vcc), nhng khi s dng b ADC th chn ny c s
dng lm in th so snh, khi chn ny phi cp cho n in p c nh, c th s
dng diode zener:

Cch ni chn Vref

- Chn Avcc thng c ni ln Vcc nhng khi s dng b ADC th chn ny c


ni qua 1 cun cm ln Vcc vi mc ch n nh in p cho b bin i.

Phn mm lp trnh codevision(Hitech)

La chn phn mm : y l phn mm c s dng rt rng di bi n c xy dng


trn nn ngn ng lp trnh C, phn mm c vit chuyn nghip hng ti ngi s
dng bi s n gin, s h tr cao cc th vin c sn.

M t phn cng trn KIT AVR 03

Cc led n ni vi cc cng vo ra ca ATMEGA16L(PORTA-PORTB-PORTC-


PORTD). led sng cn a mc logic ca cc chn IO ca AVR ln mc cao(5V),
led tt a cc chn IO ca AVR xung mc thp.

4/70
Lp trnh

Thit lp cng vo ra:

Khi xem xt n cc cng I/O ca AVR th ta phi xt ti 3 thanh ghi bit


DDxn,PORTxn,PINxn.

-Cc bit DDxn truy cp cho a ch xut nhp DDRx. Bit DDxn trong thanh ghi
DDRx dng iu khin hng d liu ca cc chn ca cng ny.Khi ghi gi tr logic
0 vo bt k bit no ca thanh ghi ny th n s tr thnh li vo,cn ghi 1 vo bit
th n tr thnh li ra.

-Cc bit PORTxn truy cp ti a ch xut nhp PORTx. Khi PORTx c ghi gi
tr 1 khi cc chn c cu to nh cng ra th in tr ko l ch ng(c ni vi

5/70
cng).Ngt in tr ko ra, PORTx c ghi gi tr 0 hoc cc chn c dng nh cng
ra.Cc chn ca cng l 3 trng thi khi 1 iu kin reset l tch cc thm ch xung ng
h khng hot ng.

-Cc bit PINxn truy cp ti a ch xut nhp PINx. PINx l cc cng ch c,cc
cng ny c th c trng thi logic ca PORTx.PINx khng phi l thanh ghi,vic c
PINx cho php ta c gi tr logic trn cc chn ca PORTx.ch PINx khng phi l
thanh ghi,vic c PINx cho php ta c gi tr logic trn cc chn ca PORTx.

Nu PORTxn c ghi gi tr logic 1 khi cc chn ca cng c dng nh chn ra ,cc


chn c gi tr 1.Nu PORTxn ghi gi tr 0 khi cc chn ca cng c dng nh chn
ra th cc chn c gi tr 0.

Cc cng ca AVR u c th c,ghi. thit lp 1 cng l cng vo ,ra th ta tc


ng ti cc bit DDxn, PORTxn,PINxn.ta c th thit lp tng bit lm cng vo,ra
c khng ch vi cng,nh vy ta c th s l ti tng bit,y chnh l im mnh ca
cc dng Vi iu khin 8 bit.

Ta c th s dng CodeWizardAVR thit lp cho cc PORTx v Pinx.

V d nh trn hnh:cc bit 0,1,2,4,7 ca PORTA lm chn ra c tr ko,cn cc bit cn


li lm chn vo. Khi thit lp xong th cc bit 0,1,2,4,7 s c th xut d liu ra cn
cc bit cn li c th nhn d liu vo.

6/70
Ta mun ghi d liu gi tr logic 0 ra PORTA.0 bt tt mt Led th:

PORTA.0=1;

Ta mun c d liu l mt bit t chn 3 ca PORTA: Bit x;

x=PINA.3;

Cng nh vy khi ta thit lp PORTA lm cng ra th ta c th xut d liu ra t


PORTA:

PORTA=0xAA;

Cn nu ta thit lp PORTA lm cng vo v gi tr hin thi ca PORTA:

Th sau cu lnh c gi tr t PORTA: x=PORTA th x=0x55. Khi thit lp PORTA


lm cng ra th khi reset gi tr ca PORTA l PORTA=0xFF;

Khi thit lp PORTA lm cng vo th khi reset gi tr ca PORTA l PORTA=0x00;

Vic thit lp cng vo ra l mt vic quan trng v ty theo mc ch s dng cc cng


no lm cng vo ra,th ta phi thit lp ng th mi c th s dng c, ng tc ny
khc vi h vi iu khin 8051- AT8951.

CodeVision:

Chy CodeVision bng cch click chut vo ICON ca CodeVision trn Desktop c
ca s nh sau:

7/70
to Project mi chn trn menu: File New c nh sau:

Chn Project sau click chut vo OK c ca s hi xem c s dng Code Winzard


khng:

8/70
Chn Yes c ca s CodeWinzardAVR nh sau :

S dng chp AVR no v thch anh tn s bao nhiu ta nhp vo tab Chip.

khi to cho cc cng IO ta chuyn qua tab Ports.

Cc chn IO ca AVR mc nh trng thi IN, mun chuyn thnh trng thi OUT c
th a cc mc logic ra ta click chut vo cc nt IN (mu trng) n chuyn thnh
OUT trong cc Tab Port. Sau chn File Generate, Save and Exit.

9/70
c ca s yu cu nh cc file ca Project. y l v d IO nn ta save tn l IO.

10/70
Sau khi nh song 3 file : IO.c IO.prj IO.cwp c ca s nh sau:

Chng ta c code vision khi to code. Trong c y code cn thit m khi


ny chng ta cu hnh cho cng IO. Chng ta bt u son code.

led nhp nhy chng ta dng hm delay_ms(). Do ta thm th vin delay.h bng
cch tm dng lnh: #include <mega16.h> ngay u chng trnh vit ngay di dng
lnh sau:

#include <delay.h>. led nhp nhy cng IO ta a ra cng IO mt bin temp c


gi tr tng dn t 0 n 255. Do ta khai bo thm mt bin unsigned char temp ngay
di dng // Declare your global variables here nh sau:

11/70
Khi to cho cc cng IO

Trong hm main c vng while(1). Chng ta son code vo nh sau:

temp=0;

while (1)

// Place your code here

12/70
PORTA=temp;

PORTB=temp;

PORTC=temp;

PORTD=temp;

delay_ms(1000);

temp++;

};

dch chng trnh n F9 hoc vo menu : Project Compile.

c ca s Information nh sau:

13/70
Chng trnh khng c li. Nhp OK.

np chng trnh cc bn cn cu hnh cho mch np. Vo menu: Settings


Programmer c ca s nh bn cnh.

Mch np ta dng STK 200 do cc bn chn Kanda Systems STK200+/300. Nhp


OK. Sau cc bn chn trn menu: Projects Configure c ca s nh sau:

14/70
Trong tab After Make cc bn nh du vo Program the Chip v nhp OK. Nhn t
hp phm Shift + F9 c nh hnh bn.

Cm Jump mch np vo .Click vo Program. i np xong nh jump np ra n Reset


thy led chy.

15/70
iu khin vo ra vi led 7 on
M t

4 led 7 thanh anot chung, 4 chn anot chung(chn dng) c ni vi 4 transitor ta


c th qut led s dng 4 chn ca PORTD, cc chn iu khin sng cc thanh cn li
c ni song song nhau v a vo PORTB ca AVR v c th t nh sau: T bt 0
6 ng vi t A G. Bt th 7 l du chm.

V c 4 led nn ta c th hin th n hng nghn. Do u vo ca ta l mt s bt


k ln ti hng nghn. Ta phi tch ly tng s hng nghn, trm, chc, n v ri a
vo 4 bin ri ty vo 4 bin s m ta a ra tng led. Qut let ta lm nh sau:
a PORTD.0 xung 0 bt ngun cho led hng n v, y tr s hng n v ra
PORTB, tr mt khong thi gian a PORTD.0 ln mt tt ngun led n v, a
PORTD.1 xung 0 bt ngun cho led hng chc, y gi tr hng chc ra PORTB, tr
mt khong thi gian, C lm nh vy n hng nghn. Nh vy ti mt thi im
ch c mt led sng ch bng 1/3 thi gian led tt, nhng do tn s bt led nhanh, mt
ngi lu nh nn vn thy led sng nh lc no cng bt ngun cho led.

Thc hnh

Cc bc khi to tng t bi mt. Chng ta son tho code gm hai hm nh sau v


t ngay pha trn hm main nh trong hnh.

void daydulieu(unsigned char x)// Ham dua du lieu ra PORT

16/70
{

switch(x) // Tuy thuoc vao bien dau vao ma dua du lieu ra


tu 0...9

{ //logic 1 tat led, logic 0 bat led

case 0: { PORTB=0xC0; break; } // So 0

case 1: { PORTB=0xF9; break; } // So 1

case 2: { PORTB=0xA4; break; } // So 2

case 3: { PORTB=0xB0; break; } // So 3

case 4: { PORTB=0x99; break; } // So 4

case 5: { PORTB=0x92; break; } // So 5

case 6: { PORTB=0x82; break; } // So 6

case 7: { PORTB=0xF8; break; } // So 7

case 8: { PORTB=0x80; break; } // So 8

case 9: { PORTB=0x90; break; } // So 9

void hienthi(int n)

int a,b,c,d;

// Lay cac so cac hang

a= n/1000; // lay hang nghin

b=(n-a*1000)/100; // lay hang tram

17/70
c=(n-a*1000-b*100)/10; // lay hang chuc

d=(n-a*1000-b*100-c*10);// lay hang don vi

// Quet led

PORTD=0xFE;// led dau tien

daydulieu(d);// day ra hang don vi

delay_ms(10);// tre

PORTB=0xFF;// tat toan bo led

PORTD=0xFD;//led thu hai

daydulieu(c);// dua ra hang chuc

delay_ms(10);// tre

PORTB=0xFF;// tat toan bo led

PORTD=0xFB;

daydulieu(b);

delay_ms(10);

PORTB=0xFF;

PORTD=0xF7; d

aydulieu(a);

delay_ms(10);

PORTB=0xFF;

18/70
Trong vng while(1) trong hm main ta ch dng mt cu lnh gi hm hin th nh sau:

19/70
Trong bi ny v nu a cc PORTD v PORTB lc khi to bng 0x00 th tt c cc
led s sng do ti cc cu lnh khi to cho hai PORT ny cc bn hy gn cho n
gi tr 0xFF nh hnh sau:

20/70
21/70
iu khin IO vi LCD
M t

LCD c ni vi PORTB.

L thuyt

Chc nng ca LCD trong hu ht cc mch, cc b iu khin m nhn vai tr hin


th cc thng s, cc thng tin m chng ta mun nhp vo hay cc thng tin x l m
b iu khin ang hot ng oc hin th ra mn hnh, gip chng ta giao tip gn
hn vi qu trnh hot ng ca h thng. Loi LCD m chng ta s dng l loi SD-
DM1602A 2 dng mi dng 16 k t, loi ny do Trung Quc sn xut . N c 16 chn
nh hnh v.

Trong chng ta c th thy 2 chn 1,2 c cp ngun cho LCD hot ng, chn
th 3 (chn VSS) c ni vo u ra ca bin tr dng iu chnh tng phn
(phi iu chnh VSS hp l th LCD mi hin th c) 2 chn 15,16 y l 2 chn cp
ngun dung bt n ca LCD t chn 4->14 l cc chn iu khin c ni vi vi
iu khin, cc chn 4,5,6 c iu khin hot ng ca LCD, cc chn cn li l 8
bit Data dng truyn nhn d liu. Chng ta c th giao tip Data 8 bit hoc 4 bit nh
trong mch ca chng ta truyn Data di dng 4 bit. Vic truyn di dng 4bit hoc
8 bit phi c thit lp c phn cng v phn mm.

Thc hnh

Cc bc khi to trong CodeWinzard nh sau:

22/70
Trong ca s CodeWinzard, chn tab LCD, trong list mc nh l None, cc bn chuyn
thnh PORTB cho ph hp vi phn cng ca KIT( thit k LCD PORTB). Chn File
Generate, Save and Exit c nh sau:

Code cho LCD cc bn c th tham kho trong Help bng cch chn trn menu Help
Help Topic(hoc n F1). c ca s Help nh sau:

23/70
Trong tab Contents, click p chut vo CodeVisionAVR C Compiller Library
Functions c nh bn cnh. Nhp p vo LCD Functions tham kho cc hm cho
LCD.

24/70
Trong vng while(1) trong hm main ta vit cc cu lnh nh sau:

while (1) { // Place your code here lcd_gotoxy(0,0);// Dua


con tro ve goc, dong 0, cot 0 lcd_putsf("DKS-MTC-
JACKY");// Hien thi dong chu lcd_gotoxy(0,1);// Dua con
tro ve dong 1, cot 0 lcd_putsf("Wellcome you"); // Hien
thi dong chu delay_ms(3000); // Tre 3 s lcd_gotoxy(0,0);
// Dua con tro ve dong 0 cot 0 lcd_putsf("embestdks.com");
// Hien thi dong chu delay_ms(3000); // Tre 3 s };

25/70
ADC vi LM35
L thuyt

i vi ATMEGA 16L: 8 chn ca PORTA s dng lm 8 knh u vo ADC. s


dng tnh nng ADC ca Atmega 16L chng ta cn phi thit k phn cng ca Vi iu
khin nh sau :

* Chn AVCC chn ny bnh thng khi thit k mch chng ta a ln Vcc(5V) nhng
khi trong mch c s dng cc knh ADC ca phn cng th chng ta phi ni chn ny
ln Vcc qua 1 cun cm nhm mc ch cp ngun n nh cho cc knh (u vo) ca
b bin i.

* Chn AREF chn ny cn cp 1 gi tr in p n nh c s dng lm in p tham


chiu, chnh v vy in p cp vo chn ny cn n nh v khi n thay i lm gi tr
ADC cc knh thu c b tri (thay i ) khng n nh vi 1 gi tr u vo chng ta
c cng thc tnh nh sau: ADCx=(V_INT*1024)/ AREF ch da vo cng thc chng
ta cng c th thy gi tr ADCx t l thun vi in p vo V_INT. Gi tr ADC thu
c t cc knh c lu vo 2 thanh ghi ADCH v ADCL khi s dng chng ta phi
c gi tr t cc thanh ghi ny, khi s dng ch 8 bt th ch lu vo thanh ghi
ADCL.

M t

u ra ca LM35 v chn 2 bin tr 1K trn Kit c ni vi 2 jump ch. Vi


AMEGA16L c 8 knh ADC l chc nng th 2 ca PORTA. Do ADC ta dung
dy ni 2 chn vi 2 bit ca PORTA l bit 0 v bit 1..

Theo datasheet LM35 th c 10mV tng ng vi 10C, 00C in p ra l 0V, tng


ng vi gi tr ADC l 0. Vi Vref=5V, gi tr ca ADC t 0 n 256, ly trn 250 mc.

26/70
Mi gi tr ADC ng vi 5V/250= 20 mV. Vy 1 gi tr ADC ng vi 20C. Mun tng
phn gii ADC ta gim Vref.

Thc hnh

Cc bc khi to code nh sau:

Trong tab ADC check vo ADC enable:

Ta check vo Use 8 bt, ADC tr v gi tr 8 bt, v ta ADC dng ngt check vo


Interrupt, v in p tham kho AREF th ly in p ca chn AREF ca AVR c ni
vi 5V. Tn s ADC ty cc bn thch nhanh hoc chm chn gi tr ph hp. Trong box
Automatically Scan Inputs cc bn check vo Enabled. V chng ta cn ADC 2 knh, 1
knh dng bin tr test ADC, mt knh t LM35 u vi 2 bit 0 v 1 ca PORTA do
chn First 0, Last 1.

Khi to cho LCD vo PORTB nh hnh bn cnh.

Chn Generate, Save and Exit.

hin th c mt s bt k ln LCD, trong th vin hm khng c v ta phi t vit


hm . u vo l mt bin unsigned char, ta phi tch ly hng trm, hng chc, hng
n v v a ln lt ln LCD.

Code nh sau:

void lcd_putnum(unsigned char so,unsigned char x,unsigned


char y)

unsigned char a,b,c;

a=so/100;

27/70
// lay fan tram

b=(so-100*a)/10;

// lay fan chuc

c=(so-100*a-10*b);

// lay hang don vi

lcd_gotoxy(x,y);

// ve vi tri x,y

lcd_putchar(a+48);

// day ra hang tram, ma ascii

lcd_putchar(b+48);

// day ra hang chuc, ma ascii

lcd_putchar(c+48);

// day ra hang don vi, ma ascii

Trong vng while(1) trong hm main ta vit nh sau:

while (1) { // Place your code here


lcd_putnum(2*adc_data[1],0,0); // dua gia tri ADC tu
LM35*2= nhiet do lcd_putnum(adc_data[0],0,1); // dua gia
tri ADC tu bien tro delay_ms(3000); // tre 3 s, cap nhat
du lieu mot lan };

28/70
o nhit bng LM35 qua ADC thng c sai s v tri, do ta cn hiu chnh
nhit bng cch so snh vi nhit k.

29/70
Giao tip I2C vi RTC DS1307
M t

Bus ca I2C t DS1307 v 24Cxx c ni vi mt jumper gip ta c th ni vi bt k


2 bt ca hai cng bt k ca AVR trn KIT bi mt dy ni.

Thc hnh

Khi to cho LCD v DS1307 nh sau:

30/70
Trong tab cc chip ta chn chp DS1307, check vo Enabled xc nh s dng
DS1307 v trong Square Wave Output ta check vo Enabled, trong list Freq: Chn
1 Hz khi to cho chn output ca DS1307 c 1 s c mt xung ra, trong mch chn
ni vi 1 led v khi to va ri lm cho led nhp nhy vi tn s 1 Hz. Sau
chn File Save, Generate and Exit.

31/70
c ca s son tho code.

S lm vic vi DS1307 nh sau:

Coding nh sau:

B xung th vin delay.h vo u chng trnh.

32/70
Ngay trc vng while(1) trong hm main b xung cu lnh t thi gian v ngy thng
cho RTC. I2C, DS1307, LCD khi to bng CodeWinzard AVR.

c th c c thi gian ta dng hm rtc_get_time() v rtc_get_date c sn trong


th vin DS1307.h.( tham kho cc hm c th m Help tng t nh tham kho cc
hm ca LCD bi trc.)

Chng ta phi khai bo 3 bin lu thng tin v thi gian l gi h; pht m; giy s v
3 bin lu thng tin v ngy thng l ngy day; thng month; nm year ngay pha trc
hm main nh sau:

33/70
hin th cc s ra LCD ta phi vit thm mt hm LCD_putnum nh sau:

Chng trnh chnh trong vng while(1) nh sau:

34/70
Dch v np chng trnh, xem kt qu.

35/70
Truyn thng ni tip RS232 v Visual Bais
M t

Cng ni tip trn KIT.

Thc hnh

Cc bc khi to cho cng ni tip dng CodeWinzard nh sau:

36/70
Khi to RS232

Trong tab USART check vo cc Receiver cho php nhn d liu; Rx Interrupt
nhn d liu s dng ngt; Transmitter cho php truyn d liu; Tx Interrupt
truyn d liu s dng ngt.

Cc thng s cn li: Receiver Buffer v Transmitter Buffer l b nh m nhn v m


truyn. Trong ng dng n gin chng ta mc nh l 8,trong cc ng dng truyn
s lng thng tin ln ta c th tng b m trnh mt thng tin. Tc baud mc
nh l 9600 (bit/s). Cc thng s ca b truyn: 8 bit, 1 bit dng(stop), khng u tin.
Ch truyn khng ng b. Theo yu cu l nhn d liu v truyn ln d liu ta
vit code nh sau. Trc tin ta khai bo mt bin trung gian truyn nhn d liu v
khi to cho PORTA l u ra nh sau:

37/70
Trong hm main ta vit code nh sau:

38/70
Chn File Save All. n F9 dch chng trnh. Np chng trnh vo AVR.

Visual Basic v cc control n gin

Khi to Project trong VB. Kch p v biu ICON ca VB c ca s New Project


nh sau:

39/70
Hoc khi m mt Project sn mun to mt Project mi c th s dng Menu: File
New Project (phm tt Ctrl + N). Nh sau:

Trong ca s New Project c 3 tab: New to Project mi; Existing m mt Project


c sn; Recent: m cc Project gn y. Trong tab new c nhiu loi Project : Standar
Exe, ActiveX exe, ActiveX DLL, . Chng ta chn Standar EXE v chn Open c
Project nh sau:

40/70
sa tn ca Form trong thuc tnh iu khin ca FORM ta sa Text trong Caption
nh sau:

41/70
To FORM n gin nh sau: truyn v nhn d liu khi nhp vo mt nt. u vo
s c 1 tham s a truyn, u ra c 1 thng s- nhn d liu- nh vy ta s dng 2
textbox control, ngoi ra ta cn s dng 3 nt bm button xc nh s kin truyn,
nhn v thot.

c th a mt control vo trong FORM, phn CAC DIEU KHIEN CO BAN ta


ch cn nhp p vo cc control mi dng. V d ly textbox control.

Trong phn thuc tnh ca Textbox Text1, tm text v xo ch Text1 i. Text 1


thnh trng, di chuyn cc control ta nhp tri chut v d cht v di chuyn ti v tr
thch hp.

42/70
ng bin ca cc Control u c cc im t mu m, a tr chut ti tr chut
bin thnh mi tn, nhp tri chut v d cht thay i kch thc ca cc control.
Ly LABEL nh sau:

Thay i Caption ca Label thnh MSCOM CONTROL BASIC . Ly cc button v sa


cc thuc tnh tng t nh sau:

43/70
Tng t ly cc text v label v sp xp li nh sau:

Trong trng hp cc bn kch p chut vo mt iu khin n s hin ra ca s


CODE, cc bn c th tt nh du X trn gc trn phi m hnh :

44/70
Trong thuc tnh ca cc control chng ta c th thay i cc thng s nh tn ca cc
control v d: Name, Font ch hin th, mu sc ch, mu nn, v.v.Nh vy ta to ra
mt FORM cc tham s a,b hin th bi cc textbox1,2. Nt truyn l Command1, nt
nhn l thot l Command2, nt thot l Command3.

Form chy nh sau: Nhp thng s vo cc text 1, nhn nt Truyn th d liu trong
text1 c truyn ra cng COM. Nhn nt nhn th d liu nhn c s hin th ln
text 2. Phm thot thot khi chng trnh.

V Control iu khin cng COM MSCOM khng phi control c bn nn n


khng hin th trn tools, chng ta phi ly trong th vin ra. Nh sau: kch chut phi
vo thanh cc control n gin chn Component .

45/70
c ca s Components nh sau:

Tm dng Microsoft Comm Control 6.0 v check vo v nhn OK. By gi trn thanh
cng c c thm mt biu tng mi l MSCOMM control. Kch p vo ly
control vo Form.nh sau:

46/70
Thuc tnh mc nh cho MSCOMM nh sau:

vit Code cho i tng no ta ch cn nhp p chut vo i tng ca s


vit code s hin ra. Khi chy chng trnh th trc ht ta cn khi to cho control
MSCOMM. Nh vy ta phi khi to trong hm Form_Load.

Ta chuyn tr chut n nh du Form ( Nhp p vo khong trng trn

Form) thc hin nh sau:

47/70
Ta c ca s son code nh sau:

VB t khi to cho ta mt hm khi load form. Vit m lnh nh sau:

48/70
vit m lnh cho nt truyn kch p chut vo button truyn:

M lnh nh sau:

Tng t lm cho nt nhn vit code. M lnh nh sau:

Tng t lm cho nt EXIT:

49/70
Chn File Save Project v File Save Form vi tn l tut. lu li Project va to.

Chn File Make tut.exe to file thc thi v chy nh phn mm thng thng.

c kt qu nh sau:

50/70
Cm cng COM vo v test chng trnh.

51/70
o lng s dng my tnh
iu khin led

To mt Form bng VB nh sau:

Trong FORM c: 1 i tng picturebox cha logo ca DKS. C 10 i tng button


trong 8 i tng button Led1...Led8 l mt mng button c tn t Command1(0) ...
Command1(7). Mun to mt mng button ta ch vic ly ra 8 i tng button v
sa tn tt c chng thnh Command 1. Hai button cn li l Phn hi v Exit. C
mt textbox hin th d liu phn hi.

Hot ng ca phn mm nh sau:

Khi nhn vo button Led 1 th truyn d liu l 0x01 xung cng ni tip ca PC, AVR
nhn c v a d liu ra cng ca AVR 1 led trn Kit sng. Tng t cho bm
cc nt Led cn li. ng thi AVR gi lun gi tr va nhn c ln PC. V khi bm
nt phn hi th d liu hin ra trn Textbox. Khi nhn nt Exit th thot khi phn
mm.

Thc hnh:

Phn mm trn VB Code nh sau:

Private Sub Command1_Click(Index As Integer)

If Index = 0 Then

52/70
MSComm1.Output = Chr$(1)

End If

If Index = 1 Then

MSComm1.Output = Chr$(2)

End If

If Index = 2 Then

MSComm1.Output = Chr$(4)

End If

If Index = 3

Then MSComm1.Output = Chr$(8)

End If

If Index = 4

Then MSComm1.Output = Chr$(16)

End If

If Index = 5 Then

MSComm1.Output = Chr$(32)

End If

If Index = 6 Then

MSComm1.Output = Chr$(64)

End If

If Index = 7 Then

MSComm1.Output = Chr$(128)

53/70
End If

End Sub

Private Sub Command2_Click()

MSComm1.PortOpen = False End

End Sub

Private Sub Command3_Click()

If MSComm1.Input = "" Then

Exit Sub

Else

Text1.Text = Asc(MSComm1.Input)

End If

End Sub

Private Sub Form_Load()

MSComm1.CommPort = 1

MSComm1.Settings = "9600,n,8,1"

MSComm1.PortOpen = True

End Sub

Firm ware:

Khi to trong CodeVision AVR cho php cng ni tip hot ng, PORTD l out put
nh cc bi trc hc. Sau lp trnh cho hm main nh sau:

54/70
Trong hm main c s dng thm mt bin temp nn d nhin cc bn phi khai bo
thm bin pha ngoi hm main.

Np chng trnh vo chip AVR

Kt ni dy cng Com t KIT v cng Com my tnh v test kt qu.

o ADC t bin tr v LM35.

Trn VB to ra mt giao din phn mm nh sau:

55/70
Form gm c:

4 label hin th nh hnh.

2 text box hin th d liu.

2 button: Thu du lieu v Thoat khi phn mm.

Code trn VB nh sau:

Private Sub Command1_Click()

If MSComm1.Input = "" Then

Exit Sub

Else

Text1.Text = Asc(MSComm1.Input)

Text2.Text = Asc(MSComm1.Input)

End If

56/70
End Sub

Private Sub Command2_Click()

MSComm1.PortOpen = False

End

End Sub

Private Sub Form_Load()

MSComm1.CommPort = 1

MSComm1.Settings = "9600,n,8,1"

MSComm1.PortOpen = True

End Sub

Firm Ware:

Khi to bng CodeWinzard AVR cho cng ni tip USART hot ng, cho php ADC
hot ng(interrupt) nh cc bi trc sau vit code cho hm main nh sau:

Dch np chng trnh v test

57/70
iu khin Step Motor
L thuyt

Gii thiu v ng c bc

ng c bc thc cht l mt ng c ng b dng bin i cc tn hiu iu khin


di dng cc xung in ri rc k tip nhau thnh cc chuyn ng gc quay hoc cc
chuyn ng ca roto v c kh nng c nh roto vo nhng v tr cn thit. ng c
bc lm vic c l nh c b chuyn mch in t a cc tn hiu iu khin vo
stato theo mt th t v mt tn s nht nh. Tng s gc quay ca roto tng ng vi
s ln chuyn mch, cng nh chiu quay v tc quay ca roto, ph thuc vo th
t chuyn i v tn s chuyn i. Khi mt xung in p t vo cun dy stato (phn
ng) ca ng c bc th roto (phn cm) ca ng c s quay i mt gc nht nh,
gc y l mt bc quay ca ng c. Khi cc xung in p t vo cc cun dy phn
ng thay i lin tc th roto s quay lin tc. (Nhng thc cht chuyn ng vn l
theo cc bc ri rc).

H thng iu khin ng c bc

Mt h thng c s dng ng c bc c th c khi qut theo s sau.

D.C.SUPPLY: C nhim v cung cp ngun mt chiu cho h thng. Ngun mt chiu


ny c th ly t pin nu ng c c cng sut nh. Vi cc ng c c cng sut ln
c th dng ngun in c chnh lu t ngun xoay chiu.

58/70
CONTROL LOGIC: y l khi iu khin logic. C nhim v to ra tn hiu iu
khin ng c. Khi logic ny c th l mt ngun xung, hoc c th l mt h thng
mch in t. N to ra cc xung iu khin. ng c bc c th iu khin theo c
bc hoc theo na bc.

POWER DRIVER: C nhim v cp ngun in c iu chnh a vo ng


c. N ly in t ngun cung cp v xung iu khin t khi iu khin to ra dng
in cp cho ng c hot ng.

STEPPER MOTOR: ng c bc. Cc thng s ca ng c gm c: Bc gc, sai


s bc gc, mmen ko, mmen hm, mmen lm vic.i vi h iu khin ng c
bc, ta thy l mt h thng kh n gin v khng h c phn t phn hi. iu
ny c c v ng c bc trong qu trnh hot ng khng gy ra sai s tch ly, sai
s ca ng c do sai s trong khi ch to. Vic s dng ng c bc tuy em lai
chnh xc cha cao nhng ngy cng c s dng ph bin. V cng sut v chnh
xc ca bc gc ang ngy cng c ci thin.

Bc gc ca ng c bc c ch to theo bng tiu chun sau:

Nguyn tc iu khin ng c bc n cc

ng c bc n cc, ( c th l ng c vnh cu hoc ng c hn hp ) c 5,6 hoc


8 dy ra thng c qun nh s di. Khi dng, cc u ni trung tm thng
c ni vo cc dng ngun cp, v hai u cn li ca mi mu ln lt ni t
o chiu t trng to bi qun .

ng c n cc

59/70
Tn hiu iu khin. iu khin bc (full step) :

Winding 1a 1000100010001000100010001

Winding 1b 0010001000100010001000100

Winding 2a 0100010001000100010001000

Winding 2b 0001000100010001000100010

time --->

Winding 1a 1100110011001100110011001

Winding 1b 0011001100110011001100110

Winding 2a 0110011001100110011001100

Winding 2b 1001100110011001100110011

time --->

iu khin na bc ( half step )

Winding 1a 11000001110000011100000111

Winding 1b 00011100000111000001110000

Winding 2a 01110000011100000111000001

Winding 2b 00000111000001110000011100

time --->

Mch iu khin ng c bc

Mch iu khin ng c bc bao gm mt s chc nng sau y:

To cc xung vi nhng tn s khc nhau.

Chuyn i cc phn cho ph hp vi th t kch t.

Lm gim cc dao ng c hc.

60/70
u vo ca mch iu khin l cc xung. Thnh phn ca mch l cc bn dn, vi
mch. Kch thch cc phn ca ng c bc theo th t 1-2-3-4 do cc transistor cng
sut T1 n T4 thc hin.Vi vic thay i v tr b chuyn mch, ng c c th quay
theo chiu kim ng h hoc ngc li.

in p c cp qua cc kho chuyn nui cc cun dy, to ra t trng lm quay


rotor. Cc kho y khng c th, c th l bt c thit b ng ct no iu khin
c nh rle, transitor cng sut... Tn hiu iu khin c th c a ra t b iu
khin nh vi mch chuyn dng, my tnh. Vi ng c nh c dng c 500 mili Ampe,
c th dng IC loi dy darlington collector h nh :

ULN2003, ULN2803 ( Allegro Microsystem)

DS2003 (National Semiconductor), MC1413 ( Motorola)

IC h ULN200x c u vo ph hp TTL, cc u emitor c ni vi chn 8. Mi


transitor darlington c bo v bi hai diode. Mt mc gia emitor ti collector chn
in p ngc ln t ln transitor. Diode th hai ni collector vi chn 9. Nu chn 9
ni vi cc dng ca cun dy, to thnh mch bo v cho transitor.

61/70
Vi cc ng c ln c dng > 0.5A cc IC h ULN khng p ng c ta c th dng
cc Tranzitor trng(IRF).Mt s loi IRF thng dng:

IRF540 tranzitor ngc c th chu dng n 20A

IRF640 tranzitor ngc c th chu dng n 18A

IRF250 tranzitor ngc c th chu dng n 30A .

S mch c thit k nh sau:

62/70
Code

#include <mega16.h>

#include <delay.h>

// Khai bao bien

unsigned char stepA[] = {0xFF,0xFE,0xFD,0xFB,0xF7}, stepB[]


= {0xFF,0xEF,0xDF,0xBF,0x7F},

stepC[] = {0xFF,0xEF,0xDF,0xBF,0x7F};

unsigned char indexA, indexB, indexC;

unsigned char n_data;

unsigned char n_step=10;

unsigned int n_step3=5000,n_i;

//-------------------

// Declare your global variables here void main(void)

// Declare your local variables here

// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In


Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T


State1=T State0=T PORTA=0xFF;

DDRA=0xFF;

// Port B initialization

63/70
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In
Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T


State1=T State0=T PORTB=0xFF;

DDRB=0xFF;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In


Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T


State1=T State0=T PORTC=0xFF;

DDRC=0xFF;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In


Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T


State1=T State0=T

PORTD=0xFF;

DDRD=0xFF;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

64/70
OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

65/70
OCR1BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80; SFIOR=0x00;

66/70
while (1)

// Place your code here

if(indexA ++>3) indexA = 1;

if(indexB ++>3) indexB = 1;

if(indexC ++>3) indexC = 1;

PORTA = stepA[indexA] & stepB[indexB];

PORTC = stepC[indexC];

//------- delay_ms(500);

}}

67/70
Tham gia ng gp
Ti liu: Gio trnh vi iu khin AVR
Bin tp bi: DKS Group
URL: http://voer.edu.vn/c/b68a6564
Giy php: http://creativecommons.org/licenses/by/3.0/

Module: iu khin IO(vo-ra) vi led n


Cc tc gi: DKS Group
URL: http://www.voer.edu.vn/m/4cc37242
Giy php: http://creativecommons.org/licenses/by/3.0/

Module: iu khin vo ra vi led 7 on


Cc tc gi: DKS Group
URL: http://www.voer.edu.vn/m/9a7cbb0b
Giy php: http://creativecommons.org/licenses/by/3.0/

Module: iu khin IO vi LCD


Cc tc gi: DKS Group
URL: http://www.voer.edu.vn/m/754f4a94
Giy php: http://creativecommons.org/licenses/by/3.0/

Module: ADC vi LM35


Cc tc gi: DKS Group
URL: http://www.voer.edu.vn/m/8ba96fab
Giy php: http://creativecommons.org/licenses/by/3.0/

Module: Giao tip I2C vi RTC DS1307


Cc tc gi: DKS Group
URL: http://www.voer.edu.vn/m/db2df59a
Giy php: http://creativecommons.org/licenses/by/3.0/

Module: Truyn thng ni tip RS232 v Visual Bais


Cc tc gi: DKS Group
URL: http://www.voer.edu.vn/m/c05c90fd

68/70
Giy php: http://creativecommons.org/licenses/by/3.0/

Module: o lng s dng my tnh


Cc tc gi: DKS Group
URL: http://www.voer.edu.vn/m/fdfcfc16
Giy php: http://creativecommons.org/licenses/by/3.0/

Module: iu khin Step Motor


Cc tc gi: DKS Group
URL: http://www.voer.edu.vn/m/2f2385e9
Giy php: http://creativecommons.org/licenses/by/3.0/

69/70
Chng trnh Th vin Hc liu M Vit Nam

Chng trnh Th vin Hc liu M Vit Nam (Vietnam Open Educational Resources
VOER) c h tr bi Qu Vit Nam. Mc tiu ca chng trnh l xy dng kho
Ti nguyn gio dc M min ph ca ngi Vit v cho ngi Vit, c ni dung phong
ph. Cc ni dung u tun th Giy php Creative Commons Attribution (CC-by) 4.0
do cc ni dung u c th c s dng, ti s dng v truy nhp min ph trc
ht trong trong mi trng ging dy, hc tp v nghin cu sau cho ton x hi.

Vi s h tr ca Qu Vit Nam, Th vin Hc liu M Vit Nam (VOER) tr thnh


mt cng thng tin chnh cho cc sinh vin v ging vin trong v ngoi Vit Nam. Mi
ngy c hng chc nghn lt truy cp VOER (www.voer.edu.vn) nghin cu, hc
tp v ti ti liu ging dy v. Vi hng chc nghn module kin thc t hng nghn
tc gi khc nhau ng gp, Th Vin Hc liu M Vit Nam l mt kho tng ti liu
khng l, ni dung phong ph phc v cho tt c cc nhu cu hc tp, nghin cu ca
c gi.

Ngun ti liu m phong ph c trn VOER c c l do s chia s t nguyn ca cc


tc gi trong v ngoi nc. Qu trnh chia s ti liu trn VOER tr ln d dng nh
m 1, 2, 3 nh vo sc mnh ca nn tng Hanoi Spring.

Hanoi Spring l mt nn tng cng ngh tin tin c thit k cho php cng chng d
dng chia s ti liu ging dy, hc tp cng nh ch ng pht trin chng trnh ging
dy da trn khi nim v hc liu m (OCW) v ti nguyn gio dc m (OER) . Khi
nim chia s tri thc c tnh cch mng c khi xng v pht trin tin phong
bi i hc MIT v i hc Rice Hoa K trong vng mt thp k qua. K t , phong
tro Ti nguyn Gio dc M pht trin nhanh chng, c UNESCO h tr v c
chp nhn nh mt chng trnh chnh thc nhiu nc trn th gii.

70/70

You might also like