Professional Documents
Culture Documents
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
6 H ng
3 4
6 7
Ct
3 5
8 7
2 1
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.
D li u hng
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.
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
Lu thut ton
START
Cp nht bn tin
Xo b m m n hnh
Update_flag ?
YES
NO
Nhp bn tin mi ?
NO
Tr v
YES
c gi tr ADC
END
III.
A1015
row1 row2 row3 row4 row5
R1
4k7
4k7 4k7
Ma tran 8x8
Col3 Col2 Col4 Col5 Col6 Col7 Col8 Col9
Ma tran 8x8
R3 4k7 R9 R2
74HC595
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
15 16
10K
G1 G2
A B C D
PIC16F88
10MHz C5 22p
C6 22p
C4
COM on PC
1 6 2 7 3 8 4 9 5
U5
74154
Ni n chn MCLR(1)
RST 10u
d. Khi ngun
7805
+9V ..+12V
1 GND VIN VOUT 3
+5V
47uF 104 100uF
10uF 2
IV.
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,
//+===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
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
{ 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
//===========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
//=========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
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); }
VI.
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.
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.