§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
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 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.
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
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 hng l c¸c ch©n Cathode v lo¹i kia th× ng−îc l¹i c¸c cét l Cathode, hng l Anode. Khi sö dông LED ta cÇn chó ý ®iÒu ny ®Ó ®iÒu khiÓn cho ®óng. Khi ®ãng vá, sù ph©n bè ch©n c¸c hng 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 ®Ò ti. C¸c sè g¹ch ch©n l hng C¸c sè kh«ng g¹ch ch©n l cét
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
6 3 4 1 6 7 2 4 Hng Cét
8 5 3 5 8 7 2 1
H1.2 B¶ng LED 5x7 Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
I.2 Nguyªn t¾c lm s¸ng ®Ìn LED trªn b¶ng LED
Khi muèn lm s¸ng LED d¬n, ta cÇn ®−a ®iªn ¸p d−¬ng vo ch©n Anode v ®iÖn ¸p ©m vo 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 vo mu 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. Mu LED\§iÖn ¸p
Vmin
V
Vmax
§á
1.88
1.9
1.93
Xanh
2.08
2.1
2.12
Vng
1.98
2.0
2.02
Khi ta muèn lm s¸ng mét ®iÓm trªn b¶ng ma trËn LED ta còng lm 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 lm s¸ng LED t¹i vÞ trÝ hng 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 hng 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 lm 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 by trong phÇn d−íi d©y.
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
I.3 Nguyªn t¾c quÐt b¶ng ma trËn LED Trong ®Ò ti ny em sö dông hai b¶ng LED 8x8 ghÐp l¹i thnh mét b¶ng cì 8x16 (8 hng 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 hng. 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 hng ®Õn 7 hng. Trong ®Ò ti ny tÝn hiÖu cho phÐp cét l møc logic ‘1’, v d÷ liÖu hng t−¬ng øng l møc ‘0’ hay ‘1’ cña tõng hng, 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 hng, 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 hng 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Þ ny diÔn ra trong thêi gian rÊt ng¾n, cì vi 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 hng ®−îc lÊy tõ EEPROM hoÆc tõ Flash ROM cña Vi §iÒu KhiÓn hay tõ ROM ngoi. Trong ®Ò ti ny 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 liu hàn
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
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
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. §Ò ti ny ta sö dông m¹ch mÉu l b¶ng LED 8x16, sö dông 16 byte RAM lm bé ®Öm cho mn h×nh, l−u gi¸ trÞ d÷ liÖu hng 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Þ lm nhiÖm vô ®äc d÷ liÖu tõ c¸c vÞ trÝ 0 ®Õn 16 cña bé ®Öm v ®−a ra mn 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 ny 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 ny ®−îc dïng ®Ó gi¶i m cét, 4 ®−êng vo v 16 ®−íng ra. 16 ®−êng ra ny ®−îc nèi ®Õn 16 cét ®Ó lm nhiÖm vô ®−a tÝn hiÖu cho phÐp cét.
KhèI gi¶i m d÷ liÖu hng sö dông IC 74HC595, ®©y l thanh ghi dÞch 8-bit vo nèi tiÕp ra song song. Ta sö dông IC ny 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 vo, 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 hng 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 lm 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…
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
L−u ®å thuËt to¸n
CËp nhËt b¶n tin
START
Khëi t¹o ban ®Çu: - §Þnh nghÜa c¸c ch©n vo ra - ThiÕt lËp cho ADC(kªnh,tèc ®é) - L−u b¶n tin vo EEPROM)
HiÓn thÞ néi dung: - B¶n tin - EEPROM
Xo¸ bé ®Öm mn h×nh
Update_flag ?
NO
YES
NO
Trë vÒ
§äc gi¸ trÞ ADC
Ch−¬ng tr×nh hiÓn thÞ trªn b¶ng LED
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
hËp b¶n tin míi ? YES
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 vo - NhËp
END
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
III. S¬ ®å nguyªn lý m¹ch ®iÖn. a. Khèi m¹ch chÝnh v hiÓn thÞ. R1
4k7 VCC
R2 R3
4k7
R9
VCC
12 11 13 10 9
SER RCLK SRCLK G SRCLR
QA QB QC QD QE QF QG QH
15 1 2 3 4 5 6 7
row1
A1015
4k7
U4 14
A1015
4k7
row2
A1015
row3
A1015
QH'
R3
74HC595
Q1 A1015
4k7
R1
R9
4k7
R2
4k7
Ma
Ma
row5
tran
tran
row6
8x8
8x8
row7
Q3 A1015
4k7
row4
row8
Q8 A1015 Q7 A1015
Col1 Col0
Col3 Col2
Col5 Col4
Col7 Col6
Col9 Col8
Col11 Col13 Col15 Col10 Col12 Col14
VCC U6 6 7 8 9 10 11 12 13 4 14
RB0/INT RA0 RB1 RA1 RB2/RX RA2 RB3 RA3 RB4 RA4/TOCKI RB5/TX RB6 RB7 OSC2/CLKOUT MCLR OSC1/CLKIN
17 18 1 2 3
15 16
A0 A1 A2 A3
0 1 3 4 5 6 7 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1
VCC
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 1 1 1 1 1 1 Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Dieu chinh toc do
1 2 A B C D G G
10K
XTAL1 XTAL2
U5
3 2 1 0 2 2 2 2
8 9 1 1
74154
A0A1A2A3
VDD
PIC16F88
b. Khèi t¹o dao ®éng, m¹ch Reset XTAL1
VCC
XTAL2
R15 10k
10MHz C5 22p
RST
C6 22p
C4
10u
c. Khèi giao tiÕp m¸y tÝnh COM on PC
MAX232 13 8 RX (RB2) TX (RB5)
11 10 1
C2 10uF 3 4 C3 5
R1IN R2IN
R1OUT R2OUT
T1IN T2IN
T1OUT T2OUT
12 9 14 7
C1+ C1C2+
1 6 2 7 3 8 4 9 5
C1 V+ V-
2 6
C2-
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
C7
VCC
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
d. Khèi nguån 7805 +9V ..+12V
1
VI N
VOUT
+5V
3
D N G
10uF
47uF
104
100uF
2
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 hng: IC 74HC595 c. Gi¶I m ®Þa chØ cét: IC 74HC154 d. §Öm dßng cho hng 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 5 V) 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 hon ton 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 ®Ò ti ny 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 ton 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 hm cho phÐp ta lËp tr×nh víi PIC mét c¸ch nhanh chãng nh−: c¸c hm giao tiÕp I2C, RS232, SPI…, c¸c hm xö lý víi EEPROM nh− write_eeprom, read_eeprom,…
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
//+===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 <16f88.h> #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; Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
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. [email protected] 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) Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
{ 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 } Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
//===========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 } Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
//=========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
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
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); }
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
VI.
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
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 lm 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 hng 74HC595 v c¸c IC gi¶i m ®Þa chØ cét 74HC154 v 74HC138. Ngoi ra cßn cã c¸c Transistor A1015 lm nhiÖm vô ®Öm dßng cho c¸c LED.
Sau ®©y l h×nh ¶nh m¹ch ®iÖn. M¹ch ®−îc lm trªn ®Õ hn linh kiÖn, cã s½n ch©n ®Õ. M¹ch ®i d©y c¶ hai mÆt.
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng
§å ¸n m«n ThiÕt kÕ m¹ch Logic
Gi¸o viªn h−íng dÉn: NguyÔn Nam Qu©n
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. Ton bé m¹ch ®−îc thùc hiÖn trªn bo c¾m, ®i ®©y. H×nh ¶nh m¹ch ®iÖn.
Nhãm sinh viªn: NguyÔn ChÝ Linh – Tek Song Leng