You are on page 1of 17

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

Chng 3 Mch quang bo dng Vi iu Khin PIC16F88


I. Nguyn l lm vic ca mch quang bo

I.1 Gii thiu v bng LED ma trn


Trc khi i v o nguyn l hot ng ca mch ta tm hiu qua v bng ma trn LED c s dng trong t i. Bng hin th ma trn LED (dot-matrix display) c rt nhiu loi v kch c to nh khc nhau, mi bng gm c rt nhiu LED n c ghp li vi nhau trong mt khi. Trong khi cc LED n c sp sp theo cc h ng v cc ct, ti mi giao im ca h ng vi ct l mt LED n, v ngi ta thng phn bit cc loi bng LED theo s h ng v ct. Mt bng LED 5x7 tc l c 5 ct dc v 7 h ng ngang, tng cng s c 5x7=35 LED n c ghp li. Cng nh vy mt bng 8x8 l c 8 h ng v 8 ct, do 64 LED n ghp li. V nhiu loi c to hn nh 16x16 hay 32x32 Trn th trng ta thng thy cc bng LED c ln, d i h ng mt vi kch c. Cc bng LED l do h ng nghn LED n ghp li. Khi thit k nhng bng LED to nh vy ta cn ch n s ng u v sng ca cc LED vic hin th c ng u. Bn cnh vn cp ngun cho mch cng cn c ch v thit k cho ph hp. Trong t i n y em s dng hai bng LED 8x8 cho vic hin th, s dng ma trn 5x7 cho vic hin th mi mt k t. Sau y l s ghp ni ca hai loi bng LED thng dng l 5x7 v 8x8.

Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

H1.1 Bng LED 8x8

Bng ma trn LED c hai loi, loi c cc ct l cc chn Anode, cn h ng l cc chn Cathode v loi kia th ngc li cc ct l Cathode, h ng l Anode. Khi s dng LED ta cn ch iu n y iu khin cho ng. Khi ng v, s phn b chn cc h ng v ct l khng theo th t (do tnh phc tp trong ghp ni), do ta cn tm hiu k mc mch cho ng. Di y l s chn ca bng LED 8x8 c dng trong t i. Cc s gch chn l h ng Cc s khng gch chn l ct

Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

6 H ng

3 4

6 7

Ct

3 5

8 7

2 1

H1.2 Bng LED 5x7


Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

I.2 Nguyn tc l m sng n LED trn bng LED Khi mun l m sng LED dn, ta cn a in p dng v o chn Anode v in p m v o chn Cathode vi gi tr thch hp, khi LED sng. Gi tr in p v dng in tu thuc v o m u sc tng loi LED. Dng chy qua cc LED m bo sng bnh thng l t 10mA cho n 25mA. V in p ta c bng sau. M u LED\in p Xanh V ng Vmin 1.88 2.08 1.98 V 1.9 2.1 2.0 Vmax 1.93 2.12 2.02

Khi ta mun l m sng mt im trn bng ma trn LED ta cng l m tng t. Xt vi bng LED 5x7 di y (H1.3).

H1.3 Bng LED 5x7 Ta mun l m sng LED ti v tr h ng 5 - ct 3 (Row = 5 : Col = 3), ta a mc in p dng (mc logic 1) n chn s 4 tc h ng th 5 v ni chn s 10 tc ct 3 xung t (GND hay mc logic 0), n LED ti v tr s sng. Vic hin th thng tin trn bng LED ta cng l m tng t, cho sng nhng im theo s iu khin ca ta to ra ch v hnh nh. Vic iu khin hin th s c trnh b y trong phn di dy.

Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

I.3 Nguyn tc qut bng ma trn LED


Trong t i n y em s dng hai bng LED 8x8 ghp li th nh mt bng c 8x16 (8 h ng v 16 ct). Mi k t s c hin th trong mt khung c 5x7. Di y l nguyn tc qut v hin th mt k t (gi thit l ch R) trn khung hnh 5x7. hin th k t ln bng LED, y ta dng phng php qut ct v xut d liu h ng. Qu trnh qut ct l ta gi tn hiu cho php n tng ct trong tng thi im. Cng lc ta gi d liu h ng n 7 h ng. Trong t i n y tn hiu cho php ct l mc logic 1, v d liu h ng tng ng l mc 0 hay 1 ca tng h ng, mc 0 ng vi LED sng (on) v mc 1 l tt (off). u tin ta a d liu cn hin th n 7 h ng, v d 11100110 Kch hot ct th nht v cc LED tng ng s sng. To mt thi gian tr, sau tt ct th nht. Gi tip gi tr d liu 7 h ng ca ct th 2, kch hot ct th 2, to tr v li tt ct th 2. Qu trnh qut c tip din cho n khi qut ht 16 ct ca bng LED. Vic qut hin th n y din ra trong thi gian rt ngn, c v i chc mili giy, ta s thy hnh nh hay ch hin th trn bng LED. Tuy rng trong mi thi im ch c mt ct c sng nhng do thi gian qut rt nhanh v do hin tng lu nh trong vng mc ca mt nn ta thy hnh nh xut hin lin tc. Tn s qut cn phi m bo sao cho hoc ln hn 24hnh/s. Thng ta chn tn s qut t 40Hz n 100Hz hoc c th ln hn. D liu hin th ca h ng c ly t EEPROM hoc t Flash ROM ca Vi iu Khin hay t ROM ngo i. Trong t i n y ban u d liu c ly t ROM trong PIC16F88, khi cp nht d liu t my tnh th d liu s c ly t EEPROM trong PIC16F88 (256 byte).
Qut ct Tn hiu kch hot ct (C1 -> C5)

D li u hng

Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

I.4 Phng php to hiu ng ch chy t phi qua tri trn bng LED
Sau khi hin th c hnh nh ln bng LED. By gi ta s tm hiu cch to hiu ng ch chy trn bng LED. Th thut y l qut v hin th mt hnh nh trong mt thi gian nht nh, sau ta dch d liu ca cc ct sang tri mt v tr, khi ta s to c hiu ng ch chy trn bng LED. t i n y ta s dng mch mu l bng LED 8x16, s dng 16 byte RAM l m b m cho m n hnh, lu gi tr d liu h ng ca 16 ct. B m c khai bo trong RAM ni ca chip PIC16F88 l mt mng gm 17 phn t. Chng trnh hin th l m nhim v c d liu t cc v tr 0 n 16 ca b m v a ra m n hnh hin th. Hiu ng ch chy c to ra bng cch dch gi tr cc phn t i mt v tr (15 ->16, 14 ->15, 13 ->12). Sau mi ln dch ta li gi chng trnh hin th. Khi trn bng LED ta s quan st c hiu ng ch chy.

II. Nguyn l lm vic ca mch quang bo


Mch in s dng Vi iu Khin PIC nn v phn cng kh n gin. Mch gm c 3 khi chnh vi 3 IC chnh c s dng. Khi iu khin trung tm s dng Vi iu Khin PIC16F88. Vi iu Khin n y c 18 chn (kch thc nh nht ca dng PIC Mid-range). Tuy vy, vi nhiu tnh nng mnh c tch hp sn nn PIC16F88 c chn. Khi gii m a ch ct s dng IC 74HC154 l IC gii m /gi a hp. Chp

CMOS n y c dng gii m ct, 4 ng v o v 16 ng ra. 16 ng ra n y c ni n 16 ct l m nhim v a tn hiu cho php ct. KhI gii m d liu h ng s dng IC 74HC595, y l thanh ghi dch 8-bit v o

ni tip ra song song. Ta s dng IC n y nhm mc ch tit kim chn giao tip gia IC gii m vi Vi iu Khin. Chn DATA-IN (14) a d liu ni tip v o, chn CLK (11) a xung ng h dch bit, chn LATCH(12) cht d liu c gi ra. 8 u ra c ni n 8 h ng ca bang LED thng qua mch m dng. Nguyn l hot ng: Chng trnh phn mm cha trong Vi iu Khin l m nhim v iu khin chnh mi hot ng ca mch. Chng trnh phn mm gm c nhiu chng trnh con: chng trnh hin th, chng trnh cp nht EEPROM

Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

Lu thut ton

START

Cp nht bn tin

Khi to ban u: - nh ngha cc chn v o ra - Thit lp cho ADC(knh,tc ) - Lu bn tin v o EEPROM)

Hin th ni dung: - Bn tin - EEPROM

Xo b m m n hnh

Update_flag ?

YES

NO

Nhp bn tin mi ?

NO

Tr v

YES

c gi tr ADC

Gi chng trnh cp nht: - S t hin th mi - V tr EEPROM - S k t thm v o - Nhp

Chng trnh hin th trn bng LED

END

Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

III.

S nguyn l mch in.


a. Khi mch chnh v hin th.
R1 4k7 R2 VCC 4k7 A1015 A1015 A1015

R3 4k7 VCC 14 12 11 13 10 9 R9 U4 SER RCLK SRCLK G SRCLR QH' QA QB QC QD QE QF QG QH 15 1 2 3 4 5 6 7 4k7

A1015
row1 row2 row3 row4 row5

R1

4k7
4k7 4k7

Q1 A1015 Q3 A1015 Q8 A1015 Q7 A1015

row6 row7 row8 Col1 Col0

Ma tran 8x8
Col3 Col2 Col4 Col5 Col6 Col7 Col8 Col9

Ma tran 8x8

R3 4k7 R9 R2

74HC595

Col11 Col15 Col13 Col10 Col12 Col14

VCC
U6 6 7 8 9 10 11 12 13 4 14 RA0 RB0/INT RA1 RB1 RA2 RB2/RX RA3 RB3 RA4/TOCKI RB4 RB5/TX RB6 RB7 OSC2/CLKOUT MCLR OSC1/CLKIN VDD 17 18 1 2 3 A0 A1 A2 A3 VCC 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17

Dieu chinh toc do


XTAL1 XTAL2 23 22 21 20 18 19

15 16

10K

G1 G2

A B C D

PIC16F88

b. Khi to dao ng, mch Reset


XTAL1 XTAL2
VCC R15 10k

10MHz C5 22p

C6 22p

C4

c. Khi giao tip my tnh


MAX232
13 8 RX (RB2) TX (RB5) 11 10 1 C2 10uF 3 4 C3 5 R1IN R2IN T1IN T2IN C1+ C1C2+ C2V+ V2 6 R1OUT R2OUT T1OUT T2OUT 12 9 14 7 C1 C7 VCC

COM on PC
1 6 2 7 3 8 4 9 5

Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 A0A1A2A3

U5

74154

Ni n chn MCLR(1)

RST 10u

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

d. Khi ngun

7805
+9V ..+12V
1 GND VIN VOUT 3

+5V
47uF 104 100uF

10uF 2

IV.

Linh kin s dng trong mch


a. Khi iu khin trung tm: Vi iu khin PIC16F88 b. GiI m d liu h ng: IC 74HC595 c. GiI m a ch ct: IC 74HC154 d. m dng cho h ng dng Transistor A1015 e. Giao tip my tnh: IC MAX232 (MAXIM-DALLAS) f. in tr 4K7, 10K, t 10F, 100F, 47F, IC 7805 (n p 5V) g. Bng LED 8x8 (2 bng)

V. M ngun chng trnh Di y l m ngun ca chng trnh hin th LED. Chng trnh s dng ngn ng C, s dng trnh bin dch PCWH Compiler ca h ng Custom Computer Services, Inc (CCS), phin bn 3.227. y l phn mm chuyn dng trong vic lp trnh PIC cc dng PIC16F v PIC18F lp trnh cho PIC ta c th s dng rt nhiu ngn ng khc nhau nh C, C++, BASIC, ASM Mi ngn ng li c mt trnh bin dch khac nhau. Ring nh cung cp chip l h ng MicroChip th h tr ngi dng trnh dch bng ASM l MPLAB IDE (phin bn mi nht l 7.21). y l phn mm ho n to n min ph, cho php ngi dng pht trin trn mi trng ASM cc ng dng. Tuy vy trong t i n y em chn dng ngn ng C vit m chng trnh v C l ngn ng bc cao, cho php ta thc hin nhiu php to n phc tp vi cu lnh n gin. Trong trnh bin dch PCWH Compiler c h tr kh nhiu h m cho php ta lp trnh vi PIC mt cch nhanh chng nh: cc h m giao tip I2C, RS232, SPI, cc h m x l vi EEPROM nh write_eeprom, read_eeprom,

Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

//+===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 <defs_88.h> #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 <input.c> #include <font_ascii.c> //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;
Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

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)
Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

{ 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 }
Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

//===========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 }
Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

//=========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
Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

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); }

Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

VI.

Thc hin mch lp rp

T s nguyn l trn, mch lp rp c chia l m hai khi. Khi th nht l khi gii m v hin th. Khi th hai l khi iu khin trung tm v giao tip. A. Khi gii m hin th Mch gii m gm c 3 IC. IC gii m d liu h ng 74HC595 v cc IC gii m a ch ct 74HC154 v 74HC138. Ngo i ra cn c cc Transistor A1015 l m nhim v m dng cho cc LED. Sau y l hnh nh mch in. Mch c l m trn h n linh kin, c sn chn . Mch i dy c hai mt.

Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

n mn Thit k mch Logic

Gio vin hng dn: Nguyn Nam Qun

B. Khi iu khin trung tm Khi iu khin trung tm gm c Vi iu khin PIC16F88 v IC MAX232 giao tip my tnh. To n b mch c thc hin trn bo cm, i y. Hnh nh mch in.

Nhm sinh vin: Nguyn Ch Linh Tek Song Leng

You might also like