
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 với chế độ so sánh và chia tần
số tách biệt và chế độ bắt mẫu.
+ Ba kênh điều chế độ rộng xung PWM
+ Có đến 13 interrupt ngoài và trong
+ Bộ định thời Watchdog lập trình được. tự động reset khi treo máy
+ Bộ so sánh tương tự
+ Ba chế độ ngủ : chế độ rỗi (Idle), tiết kiệm điện ( 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 l−u 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 l−u 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)
L−u 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.

