You are on page 1of 72
Nhém I- D3divt TRUONG DAI HOC DIEN LUC KHOA DIEN TU - VIEN THONG BAO CAO THUC TAP MON VI XU LY Dé tai : Led Cube 8x8x8 Gido vién huéng dan: Hoang Van Bong Sinh vin: NHOM 1 Dinh Viét An Pham Van Déng Va Chung Kién Lop: D3_DTVT Nhém I- D3devt oi Thigu Chung 1. Sw khac nhau giita vi xir ly va vi diéu khién Vi xit ly, vi dy nhu con chip intel hay ADM trong khong cé RAM,ROM,céng IO va cae thiét bj ngoai vi on chip. Cdn vi diéu khi ‘mot b9 vi xir ly, RAM,ROM,céng IO va ‘hanh nay ching ta chi nghién ctu vé vi ic may tinh théng thudmg,nd én chira thé chita céc thiét bi ngoai vi. Trong bai thye khién. 2. Gidi thigu vé dong AT89C51 AT89CSI la m6t bé vi xir ly 8 bit,loai CMOS, 06 téc dé cao va céng suat thap voi 'b6 nhé Flash c6 thé lap trinh durge.N6 duge sin xudt voi céng nghé b6 nhé khéng bay hoi mt 46 cao ctia hiing Atmel, va tuong thich véi hp MCS-51™ vé chan ra va tap Iénh. So ad khdi cia AT89CS1 Nhém I- D3devt trumg co ban sau : 4Kbyte Flash,128 byte RAM, 32 duémg xudt nh§p,hai b6 dinh théi/dém 16 bit,mot cdu tric ngat hai wu tién va Snguyén nhan ngit,mét post néi tiép song céng,mach dao déng va tao xung clock trén chip. AT89CS1 duge thiét ké véi logic tinh cho hoat déng e6 tin s6 gidm xuéng 0 va hé tr hai ché d6 tiét kigm nang long duge Iya chon bing pl Ché a nghi dimg CPU trong khi van cho phép RAM.céc b6 dinh théi/dém,port ndi tigp va hé thong ngit tiép tuc hoat ddng, Ché d6 ngudn gidm duy tri ndi dung cita RAM nhung khéng cho mach dao dng cung cfip xung clock nhim v6 higu héa cée hoat —_//khai bao thu vien// define bat 0 // dinh nghia bat den led// fédefine tat 1 //dinh nghia tat den led// 7khai bao bien toan cuc sbit led1= P2"0; ‘Tkbai bao led kieu bit chan P2_0// sbit led2= P21; sbit led3= P2°2; sbit led4= P2"3; sbit ledS= P2"4; sbit led6= P25; sbit led7= P2*6, sbit led8= P27; 1/*khai bao ham tre// Nhém I- D3devt void tre (long time) { long n; for (n=O;n [PHS H OE Eo Co Eee EoEEoE nee) void tre(int time) { int n;// khai bao bien cuc bo for(n-O:n/! dinh nghia ‘fkhai bao bien toan cue unsigned char i; unsigned char so_dem{] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; :u khéng cén tinh toan nhung phai iso 0 1 2% 3 4 5, 6& 7% 8& 9 unsigned char so_dem2[] = {0x00 ,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90}; so 0 1 3% 4S HTD Hcbuong trinh con void taotre(long time ) { int n; for(n=0;n unsigned char Ma{] = {0xc0,0x19,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x8, 2h: unsigned char stt=0,a; sbit H_I =P3"4; sbit C1 =P343; sbit C_2 =P3/2; sbit C_3 =P341; sbit C_4 =P30; void scan( void), void delay( unsigned long time ) { long i; for(iH0;i #include Mi -Khoi tao bien va cae gia tri gan~ sbit RS_LCD = P25; sbit RW_LCD = P26; sbit E LCD = P27; Me ‘au day la cae chuong trinh con- unsigned char min,sec,hour,x0,x1; //ngat do bo dinh thoi 0 void timer0_isr() interrupt 1 { x04; if (X0=100) { x0=0; xl++ 5 if (x1 = 100) t x1=0; sec + if (see—60) { sec=0; mint; if{min—60) { min=0; hour++; iffhour—=24) t hour=0; t } } } } } Ih ‘Ham tre khoang thoi gian rat ngan phuc vu viec kiem tr co ban- void delay() { unsigned int is for(iH0;i<125;i+4); Nhém I- D3devt } te Ham kiem tra co ban (busy_flag)-~ void kt_ban() { unsigned char x; PO = Oxf; RS_LCD = 0; RW LCD=1 do { ELCD=1; delay(); E_LCD=0; x=PO; X=x&0x80; } while(x!-0x80);, } Me -Ham ghi lenh giao tiep voi LCD. void ghi_lenh(unsigned char lenh) { Kt_banQ; PO=lenh; #1 Chon thanh ghi lenh {/ Chon che do ghi du lieu tu 8051 vao LCD delay); E. 'D=0; Me Ham ghi ky tu ra LCD—~ void ghi_kytu(unsigned char kytu) { kt_ban(); PO=kytu; RS_LCD // Chon thanh ghi du liew RW_LCD ~0; Jiche do ghi E_LCD=1; delay); Jixung cho phep chot du lieu >450ns E_LCD= } Ih ‘Ham ghi chuoi ky tu ra LCD. void ghi_chuoi(char *str) { while(*str) { Nhém I- D3devt 1 delay(50); ghi_kytu(*str); void setting LCD() ‘ghi_lenh(0x38); ghi_lenh(0x01); + Xoa man hinh, ghi_lenh(Ox0); 11 Co dich hien thi } /*CHUONG TRINH CHINH */ void main() { TMOD = 0x02;_//Bit chon che do thu nhat cho timer0 THO=155; _//155-255 100 lan dem thi ngat TE=0x82; _//cho phep ngat tu ben ngoai (ngat ngoai 0) TRO=1; _//Cho phep timer0 chay setting LCDQ; while(1) { ghi_lenh(Ox80); ghi_lenh(Ox0c); ‘ghi_chuoi ("Nhom 18-d3dtvt"); ghi_lenh(Oxc0); ghi_lenh(0x0c); ‘ghi_kytu(hour/10+0x30);,// chuyen sag bang ASCIL ‘ghi_kytu(hour%10+0x30); ghi_kytu('’) ; ghi_kytu(min/10+0x30); ghi_kytu(min%10+0x30); ghi_kytu('’) ; ghi_kytu(sec/10+0x30); ghi_kytu(see%10+0x30); 5 Nhém I D3divt Hién thj mé phéng : Nhém I- D3devt BAI5: LED MA TRA é iéu khién LED ma tran 8x8 dong chit chay “NHOM-18” LED ma tran: “!o000000 |= “10000000 @= Pa 0000 rons 0000 }™ eu ago * ™!15oQ00000/™ a1 8S G6 oO = #400 ooo} 2. Co sé ly thuyét ‘Dya trén nguyén tic nhu quét mang hinh,ta cé thé thye hign viée hién thj ma tran dén bing cch quét theo hang va quét theo c6t.M6i led trén ma trén c6 thé coi ld m6t diém inh. Dia chi cia méi diém anh duge xéc dinh ding thi véi bO gidi ma hang va gidi ma c6t.Diém anh ny duge xe dinh trang thai nhd vi diéu khién 8051 Nhu vay tai m6i thai diém chi cé trang thai cia mot diém anh duge xéc dinh. Tuy nhién khi xac dinh dia chi va trang thai cla diém anh tiép theo thi cdc diém anh cén lai sé chuyén ve trang thai tat(néu LED dang sang thi sé tat dan). Vi thé dé hién thj duge toan bé hinh anh cia ma cua dén. Mat nguéi chi nban bi nhfn ra duge sy thay d6i nhé cia dén mi sé 1 Nhém I- D3devt 3. Nguyén lf hoat dong pe gee Les ey pes pe es Le 2 bel Gel bel bel 2 p=) Gel ae Ge «a bet GelGelbe 2 192 g2@ Gage @ bee Gee w lel GQealGe | uo Lier) Ler} Lge PL ge ei ce 3 Muén cho led sang ta cdp dong SV vio hang,0V vao e6t dong 10mA dén 15mA. ‘Vi dy : mudn led & vi tri 5x4 sang, ta dura dign ap c6t 4(P0_3) xuéng OV dén hing 5(P2_5) lén SV. Hign thi chit: théng ké cdc diém sang thanh chit rdi cho céc hing Ximg. Giéng nhur quyét bin phim dua dign ap OV ra timg e6t néi ve 8 gid tri: OxFE, OxED, OxFB, OxE7, OxEF, OxDE, OxBE, Ox7F 4p tong, ng 0. Nhu viy @ 6 1g 0 xudng OV ta diing cng 2 dura ra I gid tr 8 bit di ie n t nhimg din nao sing, Vi dy muén hing Iva hing 3 sing thi hang Iva 3.06 gid tri SV con cdc hing khéc OV, ta duoc gid tri 8 bit sau: 0x05 (1010 000). diém chi c6 mét so dén trén 1o9t sdng,nhung do ta quet 8 c6t véi tin s6 nan, vi mit c6 trong 1 wo T mang § ity kytul(8) ta sé viet cde key tren 7 e6t Let khéng sing.Ta khai béo mang kytul[9] e6 9 phan tir va phan tir dau tién c6 a ti day ra céng 2 18 0x00 dé tit ton bd c6t dé. Qua trinh diéu khién hién thi nhu sau: Cot 1, hang 1, c6t 2 hing 2, ..., cbt 8 , hang & Thém 1 bién vao dé diéu khién thir ty hién thi hang. Hién | chit trén led nhu trén da dua ra: Nhém I- D3devt Cot 1, hang 1, e6t 2 hang 2, ..., et 8 , hang 8. Muén chit dé dich chuyén sang tréi ta hién thj nbur sau: Cot 1, hang 2, c6t 2 hang 3, ..., o6t 7, hang 8,c6t 8, hang | ky ty sau. Cét 1, hang 3, c6t 2 hang 4, ..., ot Thang 1 ky ty sau,cét 8 , hang 2 ky ty sau. 4. L§p trinh : Code: ‘#include unsigned int mn,k,p.x,ys unsigned char hang[8]={0X80,0X40,0X20,0X10,0X08,0X04,0X02,0X01}; unsigned char cot{75]={OXFF,0XFF,0XFF,0XFF, 0X00,0X00,0X9F,OXCF,0XE7,0xF3,0X00,0X00, _/ehu N OXFF,0X00,0X00,0XE7,0XE7,0X00,0X00,//chu H OXFF,OXFF,0X81,0X00,0X3C,0X00,0X81, // chu o OXFF,0X00,0X00,0X9F,0XCF,0XCF,0X9F,0X00,0X00, //chu M OXFF,OXFF,OXF7,0XF7,0XF7,0XF7, 1 dau OXFF,OXFF,OXFF,0XFF,0XCC,0X00,0X00,0XFC,i/ so 1 OXFF,OXFF,0X00,0X00,0X24,0X24,0X00,0X00, // so 8 OXFF,OXFF,0XFF,0XFF,0XFF,0XFF,OXFF,0XFF,OXFF,OXFF,0XFF,0XFF,0XFF,0XFF,0XFF, OXBF,OXFF,OXFF}; void delay(unsigned int t) { unsigned int i; void scan(void) iffp>8) P1=cot[p-8]; iffp>16) PO=cot[p-16]; void main(void) { Nhém I- D3devt for(i-0:i<—ti+}); } { P3=hang[n]; if{(p<=75) P2=cot[p]; m0; while(1) { for(n-0;n<=7;n++) { pantm; scan(); delay(100); } delay(3000); Nhém I D3divt } Hién thi trén protus : Nhém I- D3divt BAI 6 : NGAT NGOAI- DEM XUNG L Ngit ngoai a. Xir ly ngit C6 5 nguyén nhan tao ra ngit (goi tit la nguyén nhan ngat) déi véi 8051: hai ngét do bén ‘ngoai, hai ngat do bd dinh thai vi mot ngat do port ndi tiép. Song cling c6 nhiéu tai ligu ky thuat i it lp trang thai ban dau dy ra mot ngit trong khi mot ngit khac dang duge mtu vy, ta 06 2 so” vong va so dé hai mite wu tin, So 46 chudi vong ld so dé o6 dinh, con so dé wu tién ngit duge lip trinh béi ngudi sir dung. Khi Reset thi tit ca moi ngat déu bj cdm (bi che), c6 nghia la khong cé ngit nao duge b6 vi diéu khién dap img néu ching duge kich hogt. Cac ngat phai duge cho phép bang phan mém dé 6 vi digu khién co thé dp img duge. Cé mot thanh ghi duge goi la cho phép ngit (Interrupt Enable) chiu tréch nhiém vé viée cho phép (khéng che) va cam (che) céc ngat. IE Register (Interrupt Enable) EA — bit enable hoge disable tat ca cdc interrupt. EA=0 thi khong ngat ndo duge nhan. EA=I thi tig nguén ngit s duge mé hode cim bing cach bat hode x6a bit cho phép tuong tng, ES — bit enable hodc disable ngit céng néi tiép. ES=0 thi khong cho phép ngit néi tiép. ES=1 cho phép ngit néi tiép. Nhém I- D3devt ETI ~ bit enable hod disable ngit tran cla cla Timerl. ETI=0 Timerl khong anh huéng dén ngit. ET1=I Timer! kich hoat ngat. EXTI ~ cho phép hodc cdm ngit ngoai ciia Timer! EXTI=0 thi sy thay 44i trang thai cia cng INTO kh6ng anh hudng dén vige ngit. EXTI=I enable ngat ngoai ngay tai théi diém INTO thay déi trang thai. ETO — bit enable hoe disable ngit tran cia Timer0. ETO=0 Timer0 khéng anh huéng dén ngit. ETO=1 Timer kich hoat ngat. EXO — it enable hoe disable ngit ngdai cba Timer0. EX0=0 thi sy thay d4i trang thai cla INT1 khéng anh huéng dén viéc ngit. EXO0=1 enable ngat ngoai ngay tai théi digm INT] thay déi trang thai, it ngoai Ngit ngoai xd ra khi e6 mite thép hoje e6 canh am trén chén INTO hoe INT1 eta 8051. Day [a cic chin da hop v6i 2 chan P3.2 vi P3.3 cia port Thue té nhé cdc c& tao ra cde ngiit nay IA cdc bit TEO va TEL cia thanh ghi TCON. Khi mot ngit ngoai dugc tao ra, cé tao ra ngat duge x6a béi phan cimg khi CPU tré dén trinh phuc vu ngat chi néu ngit thudc loai tac dng canh. Néu ngat thudc loai tac déng mitc, nguyén nhin ngit ngoai sé diéu khién mite cia e& thay vi 1a phan etmng trén chip. Vige chon cae ngit loai tac dong canh hay cic ngit loai tac dong mite duge lap trinh thong qua céc bit ITO va IT] cia thanh ghi TCON. Lay vi dy néu IT1=0, ngt ngoai 1 duge kich khéi canh, & ché d6 nay néu ede mau lién tiép & chan INT1 cho thy chan nay & mite cao trong mot chu ky va 6 mite thap trong chu ky ké, ci ngit IE trong thanh ghi TCON duge set bing 1; ké dén IE1 yéu cau mét ngat. trang thai duge phat hign, 1E0 va IEI te rane diuge x6a Khi CPU trot tinh hue vu ngit trong ‘ing. Nhém I- D3devt Néu ngit ngoti thuge loai tée ding méc, nguyén nhan ngit ngoai pha duge duy tri trang théi tich ewe cho dén khi ngit theo yéu cau thy sy due tao ra. Sau dé nguyén nhan ngit phai 6 trang thai thy dng truée khi trinh phyc vu ngait durgc thutc thi xong hoge trade khi cd mOt ngat khée duge tg0 ra. Thong thuémg, m6t céng vige duge thyc thi bén trong trinh phuc vu ngit lam cho nguyén nhan ngit tra tin higu yéu cdu ngit tro vé trang thai khdng tich eye 2, Lap trinh Code include ‘include ikbai bao va dinh nghia unsigned const t = 100; unsigned char giay = 0,gio~3, phut=4: unsigned char date=29,month=9; /hansigned char count=0; /idinh nghia LCD sbit BF = P2°7; a sbit rs = P30; sbit rw = P31; Hchuong trinh tao tre Nhém I- D3devt Void taotre(long time ) { long is, for(i-05 } wt i CAC CHUONG TRINH CUA LCD //chuong trinh kiem tra co bao ban cua LCD void ready(void) { BF = 1; //de ban dau la | 18 = 0; //chon thanh ghi lenh rw = I; //chon che do doc while(1) { e = 0y/ dua noi dung tu thanh ghi lenb ra bus du lieu de xac dinh trang thai co bao ban e=k if[BF = 0) break; } } 1 chuong trinh ghi lenh dieu khien void control(unsigned char c) // ¢ phai o dang hexa Nhém I- D3devt { ready(); databus = c; 18 = 0;//chon thanh ghi lenh rw = 0;//chon che do ghi e= 1y/dua chan chot tu 1 xuong 0 de day du lieu tren bus vao LCD. ©=0; } /khoi tao LCD void led_init(void) { control(0x01);// xoa man hinh hien thi truoc do control(0x38);//0x38:giao tiep 8 bit,hien thi 2 dong va che do 5x8 diem anh 0x37 giao tiep 8 bit,hien thi 1 dong, kieu ky tu 5x10 diem anh control(0x0c);//0x0F; bat hien thi,nhap nhay con tro (/0x0c:tat con tro control(0x06);//dich con tro sang phai I vi tri khi co thao tac doc/ghi du lieu tren DDRAM,nhung. // khong dich toan bo noi dung hien thi.neu muon dich toan bo thi nap vao 0x05 } Hebuong trinh ghi du liew void putchar(unsigned char e) { Nhém I- D3devt ready(); databus = c; ts = 1y// chon thanh ghi du liew rw = 0; // chon che do ghi 1 chuong trin in sau ki tu void led_putsf(unsigned char *s)//,unsigned char row) { unsigned char do_ dai; Miftow = 1) control(0x80); //ep con tro ve dau dong thu nhat else iffrow = 2) control(0xc0);//ep con tro ve dau dong thu hai " do_dai = strlen(s);//lay do dai bien duoc tro boi con tro,strlen(s) la ham lay do dai bien duoc tro J! boi con tro s while(do_dai != 0) { putchar(*s); //ghi ra LCD du liew duoc tro boi bien con tro s s+; (Aang gia tri cua bien con tro Nhém I- D3devt ii di mot don vi,co den khi bang 0 di thoat khoi while } Whien nguyen void integer(unsigned int d ) { unsigned char nghin,tram,chue,don_vi; iftd>999) { don_vi = 4%10; //duoe chuc so hang don vi d= d/10; //duoc so da bo di hang don vi ->lam viee voi so d moi //sau moi lan chia cho 10 va lay phan nguyen thi lai duoc 1 so moi mat di mot hang ben phai chue = d%10; //duoc chu so hang chue d= dio; tram = d%10; / duoc chu so hang tram nghin = d/l0y/duoe hang nghin putchar(48+nghin),//hien thi hang nghin putchar(48+ram); //hien thi hang tram putchar(48+-chuc); //hien thi hang chuc putchar(48+don_vi); //hien thi hang don vi } else if(d<1000)&&(d>99)) Nhém I- D3devt don_vi=4%10; //duoe chuc so hang don vi d= d/10; //duoc so da bo di hang don vi ->lam viee voi so d moi ‘sau moi lan chia cho 10 va lay phan nguyen thi lai duoc 1 so moi mat di mot hang ben phai chue = d%10; //duoc chu so hang chue = a0; tram = d%10; // duoc chu so hang tram. putchar(48/tram); //hien thi hang tram putchar(48'chuc); ‘bien thi hang chuc putchar(48+don_vi); //hien thi hang don vi } else { don_vi = 4%10; //duoc chuc so hang don vi chue = d%10; //duoe chu so hang chue putchar(48+chuc); //hien thi hang chue putchar(48+don_vi); //hien thi hang don vi } /*hien thi so trong bang ma ASSCII thi so 0 co ma la 48,so 1 la 49,cu tiep tuc nhu vay */ putchar(48nghin);//hien thi hang nghin putchar(48/tram); //hien thi hang tram putchar(48rchuc); /¢hien thi hang chuc putchar(48+don_vi); //hien thi hang don vi Nhém I- D3devt 3 sidua con tro toi vi tri bat ky void led_gotoxy(unsigned char x,y) //y la cot y = 0->15, x la hang x = 1,2 { unsigned char i; iftx=1) control(0x80); //ep con tro ve dau dong thu nhat else control(0xc0); “/ep com tro ve dau dong thu 2 ifly<16) { for(i-0;i=13) { h=h-12; led_gotoxy(1,4); hienthi_so(h); Ied_gotoxy(1,1); Jed_putsf"pm"); ifhien thi dau" Ied_gotoxy(1,6); led_putstt’ bien thi phut Jed_gotoxy(1,7); hienthi_so(m); Whien thi dau"! led_gotoxy(1.9); led_putsf(":"); Wfhien thi giay led_gotoxy(1,10); hienthi_so(s); } else iffh = 12) else Nhém I- D3devt led_gotoxy(1,4); hienthi_so(h); ed_gotoxy(1,1); led_putst"pm"); fhien thi dau"! led_gotoxy(,6); led_putsf" bien thi phut led_gotoxy(1,7); hienthi_so(m); Jhien thi dau" led_gotoxy(1,9); led_putsf{":"); hien thi giay led_gotoxy(1,10); hienthi_so(s); led_gotoxy(1,4); hienthi_so(h); Nhim I~ D3dtvt Jed_gotoxy(1,1); led_putsi("am"); Jihien thi dau" led_gotoxy(1,6); led_putsit":' Whien thi phut led_gotoxy(1,7); hienthi_so(m); ihien thi dau" Jed_gotoxy(1,9); ed_putsf(":"); Jhien thi giay Jed_gotoxy(1,10); hienthi_so(s); } ihien thi lich void hienthi_lich(unsigned char dt,mt) { ihien thi ngay led_gotoxy(2,6); hienthi_so(dt); {bien thi dau ' Nhém I- D3devt led_gotoxy(2,8); led_putsit""); Jhien thi thang led_gotoxy(2,9); hienthi_so(mt); ifhien thi dau" Jod_gotoxy(2,11); Ied_puts ft" /hien thi nam led_gotoxy(2,12); integer(2011); Jichuong trinh chinh void main(void) { //unsigned char a; lod_init(); ex_init(); while(1) { Heontrol(0x01); Hfor(a=0;a<24;a++) mn hienthi_time(gio,phut,giay); hienthi_lich(date,month); taotre(5000); ‘4 control(0x18); Nhém I D3divt Nhém I- D3devt BAI MACH BO TAN SO Code: #include #include ‘finclude #define RS P3_5 #idefine RW P3_6/RW-0 => ghi fidefine EN P3_7//RW=I => doc MIRS=0 => code URS=1 => data #define led PORT PI #define INTR P3_0 #define RD P3_1 fidefine WR P3_2 Nhém I- D3divt — void delay_ms(int n) { int kyjs for(k=O;k2)&Be(y16)) { x1 yl } iftx = 1) Jed_command(0x7F+y); else Jed_command(0xBF+y); } [Poses ass void led_init() # Khoi tao LCD { delay_1Sms(); Jed_command(0x38); Jed_command(0x0C); i 1ed_command(0x06); led_command(0x01); // Xoa man hinh LCD —— void led_clear() Nhém I- D3divt { Ied_command(0x01); } I void Ied_home() { Jed_command(0x80); } I void led_putsflunsigned char *8) { while (*3) { led_data(*s); shy void HienThi_ADC(unsigned char t) { unsigned char v; ift<10) Ted_data(t+48); Nhém I- D3devt else if{t<100) { Jed_data(t/10+48); Jed_data(t%10+48); } else { vt/l0; led_data(w/l0+48); lod_data(v%10+48); lod_data(t%10+48); } void main (void) { unsigned char gt=0; Jigt la bie*n’ cho gia tri Sbit ADC led_init(); Jed_command(0x83); Ied_putsft"8051 & ADC"); while(1) { Nhém I- D3devt WR-0; W Bat dau chuyen doi gia tritu ADC delay_ms(5); J) Tao tre de cap nhat du lieu tu ADC WR-1; i while(!INTR); RD=0; // Nhan du lieu da duoc chuyen doi at=P2; Jed_command(0x01); Jed_command(0x83); led_putsf("8051 & ADC"); Jed_command(0xC0); led_putsf{"Nhiet do:"); HienThi_ADC(gt); delay_ms(150); M6 phéng : Nhém I D3divt Nhém I- D3devt BAO CAO THUC TAP VI XU LY LED CUBE 8X8X8 1. Tim hiéu chung 11 Atmega32 Atmegal 6 cé edu tric RISC véii +131 lénh,hau hét duge thyc thi trong 1 chu ki xung nhip. +32x8 thanh ghi da dung ‘ull static operation +Téec dé lim vige 16MPIS,véi thach anh 16MHz - BO nhé: +32KB ISP Flash véi kha ning 10.000Lin ghi/x6a +1024 Byte EEROM +2KB SRAM ngoai * Giao tiép JTAG +Kha ning quét toin dign theo chudn JTAG +H tro kha nang go roi +H6 trg lip trinh Flash, EEROM, fuse. +Lock bit qua giao tiép JTAG Ngoai vi +2 timer/counter 8 bit véi cc mode :so sénh va chia tan sé +1 timer/counter 16 bit véi céc mode:so sénh,chia tin _s6,capture,PWM +1 timer thoi gian thyc(Real time clock) véi bd dao déng riéng biét +4 kénh PWM(hoic nhiéu hon trong cdc VDK Khac thugc ho nay) Nhém I- D3devt +8 kénh bién déi ADC 10bit +H6 tro giao tiép I2C +B6 giao giao tiép ndi tiép lap trinh duge USART +Giao tiép SPI +Watch_dog timer véi bd dao dng on-chip rigng bigt * Nhiing thu +Power On reset va Brown-out detection chinh b9 sai sé cho bG dao dng RC On-chip inh dic bigt: +ohé di +Cac ché 46 ngat ngoai va trong da dang +6 mode sleep:Idle,ADC noise reduction,tiét kigm ning lugng,power-down, standby, extended standby * 10 port: +32 chan /O(Atmegal 6) vi 21 chan I/O (Atmega8) lap trinh duge +v6 40 chaan (Atmegal6) ,28 chan(Atmegag),64 chan(AT90can128); Nguén cap: 2,7-25.5 V voi ATmega32L 4,5->5.5V voi ATmega32H. * Tigu hao nang lung: +Khi hoat dong tiéu thy dong 1,1mA +O mode Idle tiéu thy dong 0.35mA +6 ché d6 Power_down tiéu thy dong nhé hon uA * Day ld nhiing chite nang co ban thudng thay trong cdc Vi diéu khién vi diéu khién khéc th ye dong vi diéu khién nay thi Vi dy AT90can128 hé tro AVR,ngbai ra trong thuémg duge hd tre thém nhimg chite nang dae thém b@ giao tiép mang Can bus on-chip Nhém I- D3divt * Cac phan mém lip trinh cho AVR: + AVRStuido (free), Code Vision. Cac phan mém nay 6 hd tr phan nap va. debug on chip 1.2 ULN2803 us Pa 1 15 z 17 3 15, = 15 5 13 o 3 Sew 12 Beas vy 2 19__VCC Header 8 oT Nguyén ly hoat déng cia ULN2803: ULN2803 ding dé dém dong (khuéch dai dong). Né bién di chan diu vao 1 thinh 0, néu dau vao 1a 0 dau ra khong xéc dinh. Nhém I- D3divt 1.3 IC 74HC595 GND Chan 11 1a chan xung clock. Khi c6 Ixung tir thap lén cao thi nhan 1 bit dit ligu vao chan Data. Chan 14 la chan data cho timg bit dit ligu khi cé xung vao chan 11, Céc bit dit ligu nay dich tir chan QA téi chan QH, néu cdc bit dy QA dén QH thi dit ligu tran xuéng chan 9 14 chin SDO (chan tran) ‘Chan 12 la chan chét dit ligu (STR). dit ligu sau khi duge dua vao chan data, khi cé xung tir 0 1én 1 vao chan STR thi dit ligu sé duge xudt ra Khoi IC74he595. Nhém I D3divt 2.Mach nguyén ly diéu khién led cube 8x8x8 FHIMBAM ‘ATAEGA 6 Ta sit dung chan PCO lam chan xudt data tit vi diéu khién vio chan data ciia 1C74hc5995. Chan PCI chan chét dir ligu cho 74he595. Chan PC2 lam chan xuét xung clock cho chan CLK eiia 74he595. Nhém I D3divt ULN2803 GND Ta ding PORTA dé xuit dit ligu cho ULN2803 diéu khién cdc ting cia led cube. Méi ting tuong img voi Ibit cla PORTA. ta sir dung cac chan CLK, STR, DATA dé dua dit ligu tir vi didu khién t6i 64 c6t théng qua 8 con 74he595 Nhém I- D3devt 4.L4p trinh hign thj led cube 8x8x8 Mach led cube gém 8 ting mac cathode chung, méi ting duge diéu khién Lbit ctia PORTA théng qua con ULN2803. Vi dic diém ciia ULN2803 bién | thinh 0, nén ta sé xuat cdc tin higu I tir bit cia PORTA cila vi diéu khién diéu khién cho led sing khi chin anode cita led c6 tin higu 1 64 cét ciia led cube tuong tg véi 8temp méi temp 8bit dé diéu khién led sing tuong tg. Code 1p trinh mét sé higu ting don gin #include #include #define DATA PORTC.0 #define chot PORTC.1 #define xung PORTC.2 #define mat PORTA, #define Ll PORTA.0 #define L2 PORTA.1 #define L3 PORTA.2 #define L4 PORTA.3 #define LS PORTA #define L6 PORTA.S #define L7 PORTA.6 #define L8 PORTA.7 unsigned char temp ,temp2,temp3,temp4,tempS,temp6,temp7,temp,; unsigned char i,j//k,c: Nhém I- D3devt void hienthi(unsigned char x) { unsigned char i,temp; for(i t temp=x; i

You might also like