B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng
Trêng §H N«ng nghiÖp I - 71 - T§H K46 - Khoa C¬ §iÖn
+ 1 b Timer 8 bit và 1 b Timer 16 bit vi chế độ so sánh và chia tn
s tách bit và chế độ bt mu.
+ Ba kênh điu chế độ rng xung PWM
+ Có đến 13 interrupt ngoài và trong
+ B định thi Watchdog lp trình được. t động reset khi treo máy
+ B so sánh tương t
+ Ba chế độ ng : chế độ ri (Idle), tiết kim đin ( Power save) và chế
độ Power Down
ThiÕt kÕ m¹ch ®iÒu khiÓn vµ hiÓn thÞ chiÒu dµi èng
Môc ®Ých :
M¹ch ®o chiÒu dµi sÏ nhËn t×n hiÖu xung tõ m¸y ph¸t xung. Trªn m¹ch
thiÕt kÕ s½n c¸c nót Ên víi c¸c chøc n¨ng, ban ®Çu ngêi vËn hµnh sÏ Ên nót ®Ó
®Æt chiÒu dµi cÇn ®o, sau ®ã d÷ liÖu nµy sÏ ®îc lu vµo bé nhí Flash cña chÝp
AVR. Khi èng ch¹y m¸y ph¸t xung liªn tôc ph¸t xung vµ chÝp sÏ ®Õm nh÷ng
xung nµy vµ chuyÓn thµnh cm chiÒu dµi víi 400 xung t¬ng øng víi 7cm
a. ThiÕt kÕ vµ chÕ t¹o m¹ch ®iÒu khiÓn, hiÓn thÞ chiÒu dµi èng
Tõ môc ®Ých cña m¹ch ®Õm vµ cÊu tróc cña chÝp vi sö lý AT90S2313 ta
®a ra s¬ ®å thuËt to¸n ®iÒu khiÓn nh sau:
B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng
Trêng §H N«ng nghiÖp I - 72 - T§H K46 - Khoa C¬ §iÖn
H×nh 33: S¬ ®å thuËt to¸n xö lý m¹ch ®o chiÒu dµi
Begin
Khai b¸o c¸c th viÖn vµ c¸c
biÕn cÇn sö dông trong
ch¬ng tr×nh
Hµm quet(void).
Hµm nµy chê phÝm ®îc Ên vµ
tr¶ l¹i gi¸ trÞ cña phÝm Ên
Hµm ext_int1_isr(void)
Hµm nµy ®îc thùc hiÖn khi
mét ng¾t ngoµi x¶y ra. Nã
phôc vô viÖc xö lý bµn phÝm
Hµm timer1_comp_isr(void)
Hµm nµy ®îc thùc hiÖn khi
x¶y ra ng¾t so s¸nh bé ®Þnh thêi
1. Nã kÝch xung ®iÒu khiÓn
®ång thêi chê tÝn hiÖu ®iÒu
khiÓn trªn ch©n PortD4.
Hµm main(void)
§©y lµ hµm chÝnh cña ch¬ng
tr×nh. Nã ®îc thùc hiÖn khi b¾t
®Çu vµo ch¬ng tr×nh.
KÕt thóc.
B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng
Trêng §H N«ng nghiÖp I - 73 - T§H K46 - Khoa C¬ §iÖn
` C¸c th viÖn ®îc sö dông trong ch¬ng tr×nh viÕt cho chÝp:
#include <90s2313.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include <stdlib.h>
#include <delay.h>
#include <string.h>
Th viÖn 90s2313.h chøa c¸c hµm vÒ phÇn cøng cña chip AT90s2313
nh: C¸c cæng xuÊt nhËp d÷ liÖu, c¸c thanh ghi cã trong chÝp, dung lîng c¸c
bé nhí vv.
Th viÖn lcd.h chøa c¸c hµm vÒ phÇn cøng cña LCD: Sè dßng, sè ký tù
viÕt ®îc trªn mµn h×nh LCD vv.
Th viÖn stdlib.h th viÖn chøa c¸c hµm chuÈn trong C++. Th viÖn nµy
®îc tÝch hîp thªm mét sè hµm kh¸c n÷a trong phÇn mÒm CodeVisionAVR C
Compiler.
Th viÖn delay.h chøa c¸c hµm sö dông cho xö lý ng¾t, vµ c¸c bé ®Þnh
thêi t¹o chÔ.
Th viÖn string.h chøa c¸c hµm sö dông xö lý víi ký tù .
Sau phÇn khai b¸o c¸c th viÖn sö dông trong ch¬ng tr×nh tiÕp ®Õn khèi
ch¬ng tr×nh con xö lý quÐt bµn phÝm
S¬ ®å thuËt to¸n cña ch¬ng tr×nh xö lý quÐt bµn phÝm
B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng
Trêng §H N«ng nghiÖp I - 74 - T§H K46 - Khoa C¬ §iÖn
H×nh 34: S¬ ®å khèi ch¬ng tr×nh quÐt bµn phÝm m¹ch ®Õm
Sau khi quÐt xong bµn phÝm d÷ liÖu vÒ chiÒu dµi ®Æt ®îc lu l¹i trong
thanh ghi OCR1. TiÕp theo chÝp AT90S2313 xö lý d÷ liÖu tÝn hiÖu Encoder
ext_int1_isr(void)
Lu phÝm ®îc Ên.
ChuyÓn vÞ trÝ con trá LCD
®Õn täa ®é 11, 1
KiÓm tra
p
hÝm Ên
NÕu lµ
phÝm t¨ng
th× biÕn
data_e +10
NÕu lµ phÝm
gi¶m
th× biÕn
data_e - 10
NÕu biÕn data_e>999 th× data_e=0
NÕu biÕn data_e<0 th× data_e=999
Di chuyÓn con trá LCD ®Õn täa ®é
(11, 0) chuyÓn data_e thµnh x©u råi
xuÊt lªn LCD
Chê phÝm bÊm tiÕp theo.
trÔ 100ms
KiÓm tra cã
ph¶i phim OK?
§æi data_e tõ cm thµnh sè xung råi
chuyÓn vµo OCR1 ®Ó so s¸nh.
KÕt thóc
NÕu lµ
phÝm sang tr¸i
th× biÕn
data_e /10
NÕu lµ phÝm
sang ph¶i
th× biÕn
data_e *10
B¸o c¸o tèt nghiÖp NguyÔn Duy Hoµng
Trêng §H N«ng nghiÖp I - 75 - T§H K46 - Khoa C¬ §iÖn
®a vµo chÝp. Cuèi cïng trong ch¬ng tr×nh chÝnh chÝp xö lý tÝn hiÖu Encoder
chuyÓn ®æi c¸c xung thµnh ®é dµi Cm vµ sau khi ®ñ chiÒu dµi chÝp xuÊt ra mét
tÝn hiÖu ®a vµo PLC.
H×nh 35: S¬ ®å khèi ch¬ng tr×nh chÝnh m¹ch ®Õm
Main (void)
Chän PortD4 lµm ch©n
xuÊt d÷ liÖu
Bé ®Þnh thêi 1 ho¹t ®éng víi tÇn sè
xung nhÞp trªn ch©n T1 vµ ë chÕ ®é
gi¸ trÞ cao nhÊt lµ gi¸ trÞ cña thanh
ghi OCR1. Ng¾t lµ ng¾t so s¸nh bé
®Þnh thêi.
Ng¾t ngoµi 1 cho phÐp ®îc
ho¹t ®éng.
Nã cã tÝch cùc trªn sên lªn
cña ch©n INT1.
Khëi t¹o LCD
XuÊt lªn LCD dßng ch÷ “do dai dat Cm”
ChuyÓn con trá xuèng dßng 2, xuÊt lªn LCD dßng
ch÷ “Do dai do Cm”.
§æi data_e tõ ®¬n vÞ cm sang sè xung, råi n¹p vµo
thanh ghi OCR1.
ChuyÓn data_e sang d¹ng x©u, råi xuÊt lªn LCD ë
täa ®é (11,0)
ChuyÓn con trá LCD sang täa ®é
(11,1) råi xuÊt gi¸ trÞ hiÖn thêi ®o
®îc lªn LCD.