Đồ án Môn Thiết kế mạch Logic
NGUYÊN LÝ LμM VIỆC CỦA MẠCH QUANG BÁO
I.1 Giới thiệu về bảng LED ma trận
Trước khi đi vo nguyên lý hoạt động của mạch ta tìm hiểu qua về bảng ma trận LED
được sử dụng trong đề ti.
Bảng hiển thị ma trận LED (dot-matrix display) có rất nhiều loại v đủ kích cỡ to nhỏ
khác nhau, mỗi bảng gồm có rất nhiều LED đơn đ−ợc ghép lại với nhau trong một khối.
Trong khối đó các LED đơn được sắp sếp theo các hng v các cột, tại mỗi giao điểm của
hng với cột l một LED đơn, v người ta thường phân biệt các loại bảng LED theo số hng
v cột. Một bảng LED 5x7 tức l có 5 cột dọc v 7 hng ngang, tổng cộng sẽ có 5x7=35
LED đơn được ghép lại. Cũng như vậy một bảng 8x8 l có 8 hng v 8 cột, do 64 LED đơn
ghép lại. V nhiều loại cỡ to hơn như 16x16 hay 32x32
Trên thị trường ta thường thấy các bảng LED cỡ lớn, di hng mét với đủ kích cỡ. Các
bảng LED đó l do hng nghìn LED đơn ghép lại. Khi thiết kế những bảng LED to như vậy
ta cần chú ý đến sự đồng đều về độ sáng của các LED để việc hiển thị được đồng đều. Bên
cạnh đó vấn đề cấp nguồn cho mạch cũng cần được chú ý v thiết kế cho phù hợp. Trong đề
ti ny em sử dụng hai bảng LED 8x8 cho việc hiển thị, sử dụng ma trận 5x7 cho việc hiển
thị mỗi một ký tự.
Sau đây l sơ đồ ghép nối của hai loại bảng LED thông dụng l 5x7 v 8x8.
17 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 2621 | Lượt tải: 5
Bạn đang xem nội dung tài liệu Đồ án Môn Thiết kế mạch Logic, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
Ch−¬ng 3
M¹ch quang b¸o dïng Vi §iÒu KhiÓn PIC16F88
I. Nguyªn lý lµm viÖc cña m¹ch quang b¸o
I.1 Giíi thiÖu vÒ b¶ng LED ma trËn
Tr−íc khi ®i vµo nguyªn lý ho¹t ®éng cña m¹ch ta t×m hiÓu qua vÒ b¶ng ma trËn LED
®−îc sö dông trong ®Ò tµi.
B¶ng hiÓn thÞ ma trËn LED (dot-matrix display) cã rÊt nhiÒu lo¹i vµ ®ñ kÝch cì to nhá
kh¸c nhau, mçi b¶ng gåm cã rÊt nhiÒu LED ®¬n ®−îc ghÐp l¹i víi nhau trong mét khèi.
Trong khèi ®ã c¸c LED ®¬n ®−îc s¾p sÕp theo c¸c hµng vµ c¸c cét, t¹i mçi giao ®iÓm cña
hµng víi cét lµ mét LED ®¬n, vµ ng−êi ta th−êng ph©n biÖt c¸c lo¹i b¶ng LED theo sè hµng
vµ cét. Mét b¶ng LED 5x7 tøc lµ cã 5 cét däc vµ 7 hµng ngang, tæng céng sÏ cã 5x7=35
LED ®¬n ®−îc ghÐp l¹i. Còng nh− vËy mét b¶ng 8x8 lµ cã 8 hµng vµ 8 cét, do 64 LED ®¬n
ghÐp l¹i. Vµ nhiÒu lo¹i cì to h¬n nh− 16x16 hay 32x32…
Trªn thÞ tr−êng ta th−êng thÊy c¸c b¶ng LED cì lín, dµi hµng mÐt víi ®ñ kÝch cì. C¸c
b¶ng LED ®ã lµ do hµng ngh×n LED ®¬n ghÐp l¹i. Khi thiÕt kÕ nh÷ng b¶ng LED to nh− vËy
ta cÇn chó ý ®Õn sù ®ång ®Òu vÒ ®é s¸ng cña c¸c LED ®Ó viÖc hiÓn thÞ ®−îc ®ång ®Òu. Bªn
c¹nh ®ã vÊn ®Ò cÊp nguån cho m¹ch còng cÇn ®−îc chó ý vµ thiÕt kÕ cho phï hîp. Trong ®Ò
tµi nµy em sö dông hai b¶ng LED 8x8 cho viÖc hiÓn thÞ, sö dông ma trËn 5x7 cho viÖc hiÓn
thÞ mçi mét ký tù.
Sau ®©y lµ s¬ ®å ghÐp nèi cña hai lo¹i b¶ng LED th«ng dông lµ 5x7 vµ 8x8.
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
H1.1 B¶ng LED 8x8
B¶ng ma trËn LED cã hai lo¹i, lo¹i cã c¸c cét lµ c¸c ch©n Anode, cßn hµng lµ c¸c ch©n
Cathode vµ lo¹i kia th× ng−îc l¹i c¸c cét lµ Cathode, hµng lµ Anode. Khi sö dông LED ta cÇn
chó ý ®iÒu nµy ®Ó ®iÒu khiÓn cho ®óng. Khi ®ãng vá, sù ph©n bè ch©n c¸c hµng vµ cét lµ
kh«ng theo thø tù (do tÝnh phøc t¹p trong ghÐp nèi), do ®ã ta cÇn t×m hiÓu kü ®Ó m¾c m¹ch
cho ®óng.
D−íi ®©y lµ s¬ ®å ch©n cña b¶ng LED 8x8 ®−îc dïng trong ®Ò tµi.
C¸c sè g¹ch ch©n lµ hµng
C¸c sè kh«ng g¹ch ch©n lµ cét
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
6 3 4 1 6 7 2 4
Hµng
Cét
8 5 3 5 8 7 2 1
H1.2 B¶ng LED 5x7
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
I.2 Nguyªn t¾c lµm s¸ng ®Ìn LED trªn b¶ng LED
Khi muèn lµm s¸ng LED d¬n, ta cÇn ®−a ®iªn ¸p d−¬ng vµo ch©n Anode vµ ®iÖn ¸p ©m
vµo ch©n Cathode víi gi¸ trÞ thÝch hîp, khi ®ã LED s¸ng. Gi¸ trÞ ®iÖn ¸p vµ dßng ®iÖn tuú
thuéc vµo mµu s¾c tõng lo¹i LED. Dßng ch¶y qua c¸c LED ®Ó ®¶m b¶o ®é s¸ng b×nh th−êng
lµ tõ 10mA cho ®Õn 25mA. VÒ ®iÖn ¸p ta cã b¶ng sau.
Mµu LED\§iÖn ¸p Vmin V Vmax
§á 1.88 1.9 1.93
Xanh 2.08 2.1 2.12
Vµng 1.98 2.0 2.02
Khi ta muèn lµm s¸ng mét ®iÓm trªn b¶ng ma trËn LED ta còng lµm t−¬ng tù. XÐt víi
b¶ng LED 5x7 d−íi ®©y (H1.3).
H1.3 B¶ng LED 5x7
Ta muèn lµm s¸ng LED t¹i vÞ trÝ hµng 5 - cét 3 (Row = 5 : Col = 3), ta ®−a møc ®iÖn ¸p
d−¬ng (møc logic 1) ®Õn ch©n sè 4 tøc hµng thø 5 vµ nèi ch©n sè 10 tøc cét 3 xuèng ®Êt
(GND hay møc logic 0), ®Ìn LED t¹i vÞ trÝ ®ã sÏ s¸ng.
ViÖc hiÓn thÞ th«ng tin trªn b¶ng LED ta còng lµm t−¬ng tù, cho s¸ng nh÷ng ®iÓm theo sù
®iÒu khiÓn cña ta ®Ó t¹o ra ch÷ vµ h×nh ¶nh. ViÖc ®iÒu khiÓn hiÓn thÞ sÏ ®−îc tr×nh bµy trong
phÇn d−íi d©y.
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
I.3 Nguyªn t¾c quÐt b¶ng ma trËn LED
Trong ®Ò tµi nµy em sö dông hai b¶ng LED 8x8 ghÐp l¹i thµnh mét b¶ng cì 8x16 (8 hµng
vµ 16 cét). Mçi ký tù sÏ ®−îc hiÓn thÞ trong mét khung cì 5x7. D−íi ®©y lµ nguyªn t¾c quÐt
vµ hiÓn thÞ mét ký tù (gi¶ thiÕt lµ ch÷ R) trªn khung h×nh 5x7.
§Ó hiÓn thÞ ký tù lªn b¶ng LED, ë ®©y ta dïng ph−¬ng ph¸p quÐt cét vµ xuÊt d÷ liÖu
hµng. Qu¸ tr×nh quÐt cét lµ ta göi tÝn hiÖu cho phÐp ®Õn tõng cét trong tõng thêi ®iÓm. Cïng
lóc ®ã ta göi d÷ liÖu hµng ®Õn 7 hµng. Trong ®Ò tµi nµy tÝn hiÖu cho phÐp cét lµ møc logic
‘1’, vµ d÷ liÖu hµng t−¬ng øng lµ møc ‘0’ hay ‘1’ cña tõng hµng, møc ‘0’ øng víi LED s¸ng
(on) vµ møc ‘1’ lµ t¾t (off).
- §Çu tiªn ta ®−a d÷ liÖu cÇn hiÓn thÞ ®Õn 7 hµng, vÝ dô 11100110
- KÝch ho¹t cét thø nhÊt vµ c¸c LED t−¬ng øng sÏ s¸ng. T¹o mét thêi gian trÔ, sau ®ã t¾t
cét thø nhÊt.
- Göi tiÕp gi¸ trÞ d÷ liÖu 7 hµng cña cét thø 2, kÝch ho¹t cét thø 2, t¹o trÔ vµ l¹i t¾t cét
thø 2.
- Qu¸ tr×nh quÐt ®ã cø tiÕp diÔn cho ®Õn khi quÐt hÕt 16 cét cña b¶ng LED. ViÖc quÐt
hiÓn thÞ nµy diÔn ra trong thêi gian rÊt ng¾n, cì vµi chôc mili gi©y, ta sÏ thÊy h×nh ¶nh
hay ch÷ hiÓn thÞ trªn b¶ng LED. Tuy r»ng trong mçi thêi ®iÓm chØ cã mét cét ®−îc
s¸ng nh−ng do thêi gian quÐt rÊt nhanh vµ do hiÖn t−¬ng l−u ¶nh trong vâng m¹c cña
m¾t nªn ta thÊy h×nh ¶nh xuÊt hiÖn liªn tôc. TÇn sè quÐt cÇn ph¶i ®¶m b¶o sao cho ®ñ
hoÆc lín h¬n 24h×nh/s. Th−êng ta chän tÇn sè quÐt tõ 40Hz ®Õn 100Hz hoÆc cã thÓ
lín h¬n.
D÷ liÖu hiÓn thÞ cña hµng ®−îc lÊy tõ EEPROM hoÆc tõ Flash ROM cña Vi §iÒu KhiÓn
hay tõ ROM ngoµi. Trong ®Ò tµi nµy ban ®Çu d÷ liÖu ®−îc lÊy tõ ROM trong PIC16F88, khi
c©p nhËt d÷ liÖu tõ m¸y tÝnh th× d÷ liÖu sÏ ®−îc lÊy tõ EEPROM trong PIC16F88 (256 byte).
QuÐt cét
Dữ liệu
hàng
TÝn hiÖu kÝch ho¹t
cét (C1 -> C5)
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
I.4 Ph−¬ng ph¸p t¹o hiÖu øng ch÷ ch¹y tõ ph¶i qua tr¸i trªn b¶ng LED
Sau khi ® hiÓn thÞ ®−îc h×nh ¶nh lªn b¶ng LED. B©y giê ta sÏ t×m hiÓu c¸ch t¹o hiÖu øng
ch÷ ch¹y trªn b¶ng LED. Thñ thuËt ë ®©y lµ quÐt vµ hiÓn thÞ mét h×nh ¶nh trong mét thêi
gian nhÊt ®Þnh, sau ®ã ta dÞch d÷ liÖu cña c¸c cét sang tr¸i mét vÞ trÝ, khi ®ã ta sÏ t¹o ®−îc
hiÖu øng ch÷ ch¹y trªn b¶ng LED.
§Ò tµi nµy ta sö dông m¹ch mÉu lµ b¶ng LED 8x16, sö dông 16 byte RAM lµm bé ®Öm
cho mµn h×nh, l−u gi¸ trÞ d÷ liÖu hµng cña 16 cét. Bé ®Öm ®−îc khai b¸o trong RAM néi cña
chip PIC16F88 lµ mét m¶ng gåm 17 phÇn tö. Ch−¬ng tr×nh hiÓn thÞ lµm nhiÖm vô ®äc d÷ liÖu
tõ c¸c vÞ trÝ 0 ®Õn 16 cña bé ®Öm vµ ®−a ra mµn h×nh hiÓn thÞ. HiÖu øng ch÷ ch¹y ®−îc t¹o ra
b»ng c¸ch dÞch gi¸ trÞ c¸c phÇn tö ®i mét vÞ trÝ (15 ->16, 14 ->15, 13 ->12…). Sau mçi lÇn
dÞch ta l¹i gäi ch−¬ng tr×nh hiÓn thÞ. Khi ®ã trªn b¶ng LED ta sÏ quan s¸t ®−îc hiÖu øng ch÷
ch¹y.
II. Nguyªn lý lµm viÖc cña m¹ch quang b¸o
M¹ch ®iÖn sö dông Vi §iÒu KhiÓn PIC nªn vÒ phÇn cøng kh¸ ®¬n gi¶n. M¹ch gåm cã 3
khèi chÝnh víi 3 IC chÝnh ®−îc sö dông.
Khèi ®iÒu khiÓn trung t©m sö dông Vi §iÒu KhiÓn PIC16F88. Vi §iÒu KhiÓn
nµy cã 18 ch©n (kÝch th−íc nhá nhÊt cña dßng PIC Mid-range). Tuy vËy, víi nhiÒu tÝnh n¨ng
m¹nh ®−îc tÝch hîp s½n nªn PIC16F88 ®−îc chän.
Khèi gi¶i m$ ®Þa chØ cét sö dông IC 74HC154 lµ IC gi¶i m/gi¶ ®a hîp. ChÝp
CMOS nµy ®−îc dïng ®Ó gi¶i m cét, 4 ®−êng vµo vµ 16 ®−íng ra. 16 ®−êng ra nµy ®−îc nèi
®Õn 16 cét ®Ó lµm nhiÖm vô ®−a tÝn hiÖu cho phÐp cét.
KhèI gi¶i m$ d÷ liÖu hµng sö dông IC 74HC595, ®©y lµ thanh ghi dÞch 8-bit vµo
nèi tiÕp ra song song. Ta sö dông IC nµy nh»m môc ®Ých tiÕt kiÖm ch©n giao tiÕp gi÷a IC gi¶i
m víi Vi §iÒu KhiÓn. Ch©n DATA-IN (14) ®Ó ®−a d÷ liÖu nèi tiÕp vµo, ch©n CLK (11) ®−a
xung ®ång hå dÞch bit, ch©n LATCH(12) ®Ó chèt d÷ liÖu ®−îc göi ra. 8 ®Çu ra ®−îc nèi ®Õn 8
hµng cña bang LED th«ng qua m¹ch ®Öm dßng.
Nguyªn lý ho¹t ®éng: Ch−¬ng tr×nh phÇn mÒm chøa trong Vi §iÒu KhiÓn lµm nhiÖm vô
®iÒu khiÓn chÝnh mäi ho¹t ®éng cña m¹ch. Ch−¬ng tr×nh phÇn mÒm gåm cã nhiÒu ch−¬ng
tr×nh con: ch−¬ng tr×nh hiÓn thÞ, ch−¬ng tr×nh cËp nhËt EEPROM…
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
L−u ®å thuËt to¸n
YES
NO YES
NO
Khëi t¹o ban ®Çu:
- §Þnh nghÜa c¸c ch©n vµo ra
- ThiÕt lËp cho ADC(kªnh,tèc ®é)
- L−u b¶n tin vµo EEPROM)
Xo¸ bé ®Öm
mµn h×nh
§äc gi¸ trÞ
ADC
Trë vÒ
Update_flag ?
Gäi ch−¬ng tr×nh cËp nhËt:
- Sè tõ hiÓn thÞ míi
- VÞ trÝ EEPROM
- Sè ký tù thªm vµo
- NhËp
Ch−¬ng tr×nh
hiÓn thÞ trªn
b¶ng LED
NhËp b¶n
tin míi ?
START
HiÓn thÞ néi dung:
- B¶n tin
- EEPROM
CËp nhËt b¶n tin
END
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
III. S¬ ®å nguyªn lý m¹ch ®iÖn.
a. Khèi m¹ch chÝnh vµ hiÓn thÞ.
U6
PIC16F88
14
15
4 16
17
18
1
2
3
6
7
8
9
10
11
12
13
VDD
OSC2/CLKOUT
MCLR OSC1/CLKIN
RA0
RA1
RA2
RA3
RA4/TOCKI
RB0/INT
RB1
RB2/RX
RB3
RB4
RB5/TX
RB6
RB7
R1 4k7
Col4 Col8
row4
Col7
XTAL2
R9 4k7VCC
row5
Col1Q7
A1015 Col10
A3
VCC
Ma
tran
8x8
Q8
A1015
A0
A1015
Dieu chinh toc do
10K
Q1
A1015
Col0
A1015
U4
74HC595
14
11
10
12
13
15
1
2
3
4
5
6
7
9
SER
SRCLK
SRCLR
RCLK
G
QA
QB
QC
QD
QE
QF
QG
QH
QH'
row6
Col13
U5
74154
1 2 3 4 5 6 7 8 9 1
0
1
1
1
3
1
4
1
5
1
6
1
7
2
3
2
2
2
1
2
0
1
8
1
9
Y
0
Y
1
Y
2
Y
3
Y
4
Y
5
Y
6
Y
7
Y
8
Y
9
Y
1
0
Y
1
1
Y
1
2
Y
1
3
Y
1
4
Y
1
5
A B C D G
1
G
2
XTAL1
A2
Ma
tran
8x8
A0
Col6 Col12R2 4k7
row8
A1015
A2
row1
R9 4k7
Col3 Col9
Q3
A1015
VCC
R3 4k7
VCC
Col5
A3
R3 4k7
row2
R1 4k7
A1
R2 4k7
A1
Col11 Col15
Col2
row3
Col14
row7
A1015
b. Khèi t¹o dao ®éng, m¹ch Reset
C5
22p
10MHz
XTAL2XTAL1
C6
22p
C4 10u
VCC
RST
R15
10k
c. Khèi giao tiÕp m¸y tÝnh
MAX232
1
3
4
5
2
6
12
9
11
10
13
8
14
7
C1+
C1-
C2+
C2-
V+
V-
R1OUT
R2OUT
T1IN
T2IN
R1IN
R2IN
T1OUT
T2OUT
C2 10uF
C3
C7 VCC
TX (RB5)
C1
COM on PC
5
9
4
8
3
7
2
6
1
RX (RB2)
Nèi ®Õn ch©n
MCLR(1)
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
d. Khèi nguån
7805
1 3
2
VIN VOUT
G
N
D
100uF
+5V
10uF
+9V ..+12V
10447uF
IV. Linh kiÖn sö dông trong m¹ch
a. Khèi ®iÒu khiÓn trung t©m: Vi ®iÒu khiÓn PIC16F88
b. Gi¶I m d÷ liÖu hµng: IC 74HC595
c. Gi¶I m ®Þa chØ cét: IC 74HC154
d. §Öm dßng cho hµng dïng Transistor A1015
e. Giao tiÕp m¸y tÝnh: IC MAX232 (MAXIM-DALLAS)
f. §iÖn trë 4K7, 10K, tô 10µF, 100µF, 47µF, IC 7805 (æn ¸p 5V)
g. B¶ng LED 8x8 (2 b¶ng)
V. M< nguån ch−¬ng tr×nh
D−íi ®©y lµ m nguån cña ch−¬ng tr×nh hiÓn thÞ LED. Ch−¬ng tr×nh sö dông ng«n ng÷
C, sö dông tr×nh biªn dÞch PCWH Compiler cña hng Custom Computer Services, Inc (CCS),
phiªn b¶n 3.227. §©y lµ phÇn mÒm chuyªn dông trong viÖc lËp tr×nh PIC c¸c dßng PIC16F vµ
PIC18F…
§Ó lËp tr×nh cho PIC ta cã thÓ sö dông rÊt nhiÒu ng«n ng÷ kh¸c nhau nh− C, C++,
BASIC, ASM… Mçi ng«n ng÷ l¹i cã mét tr×nh biªn dÞch khac nhau. Riªng nhµ cung cÊp
chip lµ hng MicroChip th× hç trî ng−êi dïng tr×nh dÞch b»ng ASM lµ MPLAB IDE (phiªn
b¶n míi nhÊt lµ 7.21). §©y lµ phÇn mÒm hoµn toµn miÔn phÝ, cho phÐp ng−êi dïng ph¸t triÓn
trªn m«i tr−êng ASM c¸c øng dông. Tuy vËy trong ®Ò tµi nµy em chän dïng ng«n ng÷ C ®Ó
viÕt m ch−¬ng tr×nh v× C lµ ng«n ng÷ bËc cao, cho phÐp ta thùc hiÖn nhiÒu phÐp toµn phøc
t¹p víi c©u lÖnh ®¬n gi¶n. Trong tr×nh biªn dÞch PCWH Compiler cã hç trî kh¸ nhiÒu hµm
cho phÐp ta lËp tr×nh víi PIC mét c¸ch nhanh chãng nh−: c¸c hµm giao tiÕp I2C, RS232,
SPI…, c¸c hµm xö lý víi EEPROM nh− write_eeprom, read_eeprom,…
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
//+===Chuong trinh LED matrix display===========+
//| Thiet ke: Nguyen Chi Linh - DT8K47 - DHBKHN |
//| MCU: PIC16F88 (4K FLASH ROM, 256K EEPROM) |
//| Cac IC khac: 74154 - demux/decoder 1-of-16 |
//| 74595 - Ghi dich 8bit |
//+=============================================+
#include
#include
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD,
NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9)
#include
#include //File chua bo font ma hoa ky tu ASCII
// Dinh nghia cac chan cho ket noi 74595
#bit clk = 0x06.1 //RB0
#bit data = 0x06.3 //RB1
#bit latch = 0x06.4 //RB3
// Bo nho dem man hinh hien thi
int8 buff_disp[25]; //Bo nho dem cho man hinh LED
int8 max_char=117; //SO ky tu hien thi toi da
int8 time=5; //Bien quy dinh toc do chu chay
int1 text_on_rom=0;
int8 chon=0;
int8 address;
int8 choose_text;
//=========KHAI BAO CAC CHUONH TRINH CON================
int8 doc_eeprom(int8 addr);
void send_2_595(int8 temp);
void display();
void copy_2_ram1(int8 index_char);
void copy_2_ram2(int8 index_char);
void update_eeprom();
void convert_bcd(int8 x);
//=============================================
#INT_EXT
EXT_ISR() {
disable_interrupts(GLOBAL);
clear_interrupt(int_ext);
chon++;
if(chon==3) chon = 0;
choose_text = 0;
text_on_rom = 0;
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
enable_interrupts(GLOBAL);
}
//===========Chuong trinh chinh================
void main() {
int8 i,j,k;
#bit update_rom = 0x06.6
char const a[119]= " Hello World.LED Matrix PIC16F88 - 74154 - 74595. Bang thong
tin dien tu.Nguyen Chi Linh-DT8 DAI HOC BACH KHOA HA NOI ";
char const b[119]= " HAPPY NEW YEAR *2006* - CHUC MUNG NAM MOI - Chuc
Mung Nam Moi - Happy new year. linhnc308@yahoo.com 1234567890 ";
char const c[119]= " You like a little flame in my heart. When I see you, the flame is like
up. Because I love you. Because I LOVE YOU ";
char const adc[6] = " ADC=";
//===========================================
TRISA=0x10; // Thiet lap chan vao ra
TRISB=0b00100101;
//==Thiet lap ngat ngoai 0 ==================
enable_interrupts(INT_EXT);
ext_int_edge(H_TO_L);
enable_interrupts(GLOBAL);
//===========================================
setup_adc_ports(sAN4);
setup_adc(ADC_CLOCK_INTERNAL);
chs0=0; //Clear bit 1f.3
chs1=0; //Clear bit 1f.4
chs2=1; //Clear bit 1f.5
delay_ms(10);
//======= HIEN THI TRAI TIM =======
//==============================
//======= HIEN THI BAN TIN ========
for(i=0;i<6;++i)
write_eeprom(0xf0+i,adc[i]);
for(i=0;i<117;++i)
write_eeprom(i,a[i]);
write_eeprom(0xff,max_char); // Luu so ky tu toi da vao ROM
if(update_rom==1) //Kiem tra cong tac cap nhat du lieu
update_eeprom(); //Goi chuong trinh con cap nhat(giao tiep qua cong COM)
for (i=0;i<=24;i++) // Clear RAM of buff_disp
buff_disp[i]=0xff;
//Doanchuong trinh nay se hien thi noi dung ban tin luu trong EEPROM
while(1) {
for (i=0;i<=max_char;i++) // Begin of text
{
if(choose_text==0) {choose_text=1; goto hien_thi;}
if(text_on_rom==0)
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
{
switch(chon)
{
case 0: j=a[i]-32; break;
case 1: j=b[i]-32; break;
case 2: j=c[i]-32; break;
case 3: chon=0; break;
}
}
else
j=read_eeprom(i)-32;
if(j < 51)
copy_2_ram1(j);
else
{
j=j-51;
copy_2_ram2(j);
}
}
k=read_adc();
convert_bcd(k);
for(i=0;i<8;++i)
{
k = doc_eeprom(0xf0 + i)-32;
copy_2_ram1(k);
}
}
}
//========= END MAIN ==============
// === CAC CHUONG TRINH CON =========
//=======Gui du lieu theo duong noi tiep toi 595============
void send_2_595(int8 temp) {
#bit flag_bit = temp.7 // bien temp la du lieu 8-bit can gui
int8 i;
clk=0;
for(i=0;i<8;i++)
{
if(flag_bit)
data=1; //bit 1
else data=0; //bit 0
clk=1; clk=0;
temp<<=1; // Dich trai 1 bit
}
latch=1; latch=0; //Chot du lieu
}
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
//===========Chuong trinh con hien thi=========
void display() {
int8 count,column_count;
int8 i;
time = read_adc()/10; // Viec doc gia tri ADC truoc khi hien thi lam cho viec thay doi
// toc do chu chay linh hoat hon, truc tiep tha doi
for (i=0;i<=time;i++) //Toc do chu chay thay doi boi bien time
{
column_count=0; //Bien dem so cot, xem da quet het 16 cot chua
for(count=24;count>0;count--)
{
send_2_595(buff_disp[count]);
if(column_count > 15) RB7=1; else RB7 = 0;
PORTA=column_count;
delay_us(300);
column_count++;
}
}
}
//========Copy to Ram1=====================
void copy_2_ram1(int8 index_char) {
int8 i,j;
for (j=0;j<=5;j++)
{ // Dich RAM
for (i=24;i>0;i--)
buff_disp[i]= buff_disp[i-1]; // Dich RAM sang trai
buff_disp[0]= font[index_char].b[j]; // Luu ma ascii vao RAM
display(); // Goi hien thi
}
buff_disp[0]=0xff;
}
//========Copy to Ram 2===================
void copy_2_ram2(int8 index_char) {
int8 i,j;
for (j=0;j<=5;j++)
{
for (i=24;i>0;i--) // Dich RAM
buff_disp[i]= buff_disp[i-1]; //Dich RAM sang trai
buff_disp[0]=font2[index_char].b[j]; //Luu ma ascii vao RAM
display(); // Goi hien thi
}
buff_disp[0]=0xff; // Them mot khoang trang giua hai ky tu
}
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
//=========Update EEPROM===================
void update_eeprom() {
byte i,j,addr,max;
char temp;
char string[64];
// Hien thi noi dung cua EEPROM
printf("\r\n256 byte EEPROM of PIC16F88:\r\n");
for(i=0; i<=15; ++i) // bytes of the data EEPROM in hex
{
for(j=0; j<=15; ++j)
printf( "%2x ", doc_eeprom( i*16+j ) );
printf("\n\r");
}
// Hien thi noi dung ban tin
i=0;
do {
temp = doc_eeprom(i);
printf( "%C", temp);
i++;
} while (temp != 0xff);
//--------Ket thuc ----------
printf("\r\nTong so chu: %2u", doc_eeprom(0xff));
printf("\r\n\nCo thay doi ban tin ko(Y/N)? "); temp=getc();//temp = getc();
if (temp == 'y' || temp == 'Y')
{
printf("\r\nSo chu hien thi moi la: ");
max_char=gethex();
write_eeprom(0xff,max_char);
printf("\r\nDia chi EEPROM can thay doi: ");
addr = gethex();
if (addr >= max_char)
write_eeprom(0xff,addr);
printf("\r\nSo ky tu them vao: ");
max = gethex(); // Tra ve gia tri Hexa
if(max >= max_char)
write_eeprom(0xff,max); // Cap nhat so ky tu
printf("\r\nNew: ");
get_string(string,max+1);
for (i=0;i<max;i++) //bat dau qua trinh ghi vao ROM (cap nhat du lieu moi)
{ write_eeprom(addr,string[i]);
addr=addr+1;
} text_on_rom=1;
}
else {
printf("Tro ve !"); // Ket thuc viec cap nhat, tro ve hien thi
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
text_on_rom = 0;
}
}
//=============READ EEPROM=====================
int8 doc_eeprom(int8 addr)
{
EEADR=addr;
RD=1;
return(EEDATA);
}
//=======Chuyen gia tri hex ra so ASCII=========
void convert_bcd(int8 x)
{
int8 temp;
int8 a;
temp=x%10; //chia lay phan du, so hang don vi
write_eeprom(0xf7,temp+0x30); //Cong them 0x30 de tra ve gia tri SCII
a=x/10; //tach hang tram va hang chuc
temp=a%10; //tach so hang chuc
write_eeprom(0xf6,temp+0x30);
temp=x/100;
write_eeprom(0xf5,temp+0x30);
}
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
VI. Thùc hiÖn m¹ch l¾p r¸p
Tõ s¬ ®å nguyªn lý trªn, m¹ch l¾p r¸p ®−îc chia lµm hai khèi. Khèi thø nhÊt lµ khèi
gi¶i m vµ hiÓn thÞ. Khèi thø hai lµ khèi ®iÒu khiÓn trung t©m vµ giao tiÕp.
A. Khèi gi¶i m< hiÓn thÞ
- M¹ch gi¶i m gåm cã 3 IC. IC gi¶i m d÷ liÖu hµng 74HC595 vµ c¸c IC gi¶i m ®Þa
chØ cét 74HC154 vµ 74HC138. Ngoµi ra cßn cã c¸c Transistor A1015 lµm nhiÖm vô
®Öm dßng cho c¸c LED.
Sau ®©y lµ h×nh ¶nh m¹ch ®iÖn. M¹ch ®−îc lµm trªn ®Õ hµn linh kiÖn, cã s½n ch©n ®Õ.
M¹ch ®i d©y c¶ hai mÆt.
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
B. Khèi ®iÒu khiÓn trung t©m
Khèi ®iÒu khiÓn trung t©m gåm cã Vi ®iÒu khiÓn PIC16F88 vµ IC MAX232 ®Ó giao tiÕp
m¸y tÝnh. Toµn bé m¹ch ®−îc thùc hiÖn trªn bo c¾m, ®i ®©y.
H×nh ¶nh m¹ch ®iÖn.
Các file đính kèm theo tài liệu này:
- Đồ án thiết kế mạch quang báo dùng vi điều khiển PIC16F88.pdf