Giới thiệu bo thực hành với ic lập trình AT89C51

Embed Size (px)

Citation preview

Gii thiu bo thc hanh vi ic lp trinh AT89C511. Tim hiu hoat ng cua ic lp trinh AT89C51.

Hinh trn cho thy ic lp trinh n phin AT89C51 co 40 chn, cng dung cua cac chn nh sau: Chn cui cua hang di, chn 20, cho ni masse, chn cui cua hang trn, chn 40, cho ni ngun 5V Chn 9 la chn reset, khi chn nay mc ap cao, IC se trang thai reset. Chn 18, 19 dung gn thach anh inh tn cho xung nhip, vi thach anh 12MHz, chu ky lnh se la 1us.

Chn 31 dung khai bao IC se lam vic vi b nh nao, khi treo chn nay ln mc ap cao, IC se chi lam vic vi b nh trong. IC AT89C51 co 4 cang dang 8-bit dung xut nhp bit. Cac cang c t tn la p0, p1, p2 va p3. Cang p0 gm cac chn: 39, 38, 37, 36, 35, 34, 33, 32. Cang p1 gm cac chn: 1, 2, 3, 4, 5, 6, 7, 8. Cang p2 gm cac chn: 21, 22, 23, 24, 25, 26, 27 ,28. Cang p3 gm cac chn: 10, 11, 12, 13, 14, 15, 16, 17. Ghi nh: tin dung trn cac chn cua cac cang u a cho t tn ring, do vy chung ta co th x dung cac tn nay trong cac cu lnh ma khng cn phai nh s chn cua IC. Cung chu y co mt s chn a nhim, nghia la chn o co th lam nhiu nhim vu. Nht la cac chn cua cang p3. Ngi ta thng dung 2 cang p0 va p2 truy cp ia chi 16-bit cua cac b nh ngoai, vi kha nng truy cp ia chi 16-bit, no co th lam vic vi cac b nh co 65536 thanh nh. Khi dung ic lp trinh n phin AT89C51, Ban chu y n 4 iu sau y:

. Vn cp ngun, IC AT89C51 la m vic vi mc ngun 5V, ngun nui cn co n i nh tt. Do vy Ba n nn du ng ic n a p 7805 co ngun 5V cp cho IC na y. . ma ch reset, Ba n du ng tu khoa ng 10F va in tr co tri 10K ta o ra mc a p cao ngay khi ma ch c cp in, vi mc a p cao xut hin trn chn s 9, IC se va o tra ng tha i

reset, no tra ca c thanh ghi trong IC v tra ng tha i reset va quay la i cha y do ng lnh t thanh 0000h trong b nh ROM. . Mun ic lp tri nh hoa t ng Ba n pha i gn tha ch anh trn chn 18, 19 du ng i nh tn cho ma ch dao ng ta o xung nhi p. Tha ch anh thng du ng trong thc nghim la 12MHz, vy chu ky thc hin lnh se la 1s. . Nu chi la m thc nghim vi ca c cu lnh co trong b nh ROM bn trong, nghi a la khng du ng b nh ngoa i, Ba n cho treo chn 31 ln mc a p cao. Khi a thoa ma n 4 iu kin trn, by gi Ba n a co th du ng ca c cu lnh na p va o b nh ROM va du ng ic AT89C51 la m ca c cng vic ma Ba n mun.

2. Mach in ng dung c ban cua ic lp trinh AT89C51. Trn bo thc ha nh a du ng, Ba n thy chung quanh ic lp tri nh n phin AT89C51 co du ng n ca c ic 74245 la m tng khuch a i du ng iu khin vic xut nhp cu a ca c bit ra va o trn ca c ca ng cu a IC.

Trc ht chu ng ta ha y ti m hiu cng du ng cu a ca c ic 74HC245.

Hi nh trn cho thy, ic logic 74HC245 co 8 tng khuch a i song hng. IC la m vic vi chn cui cu a ha ng di, chn 10, cho ni masse va chn cui cu a ha ng trn, chn 20, cho ni ngun 5V. Ca c tng khuch a i vi A0 - B0, A1- B1, A2 - B2, A3 - B3, A4 - B4, A5 - B5, A6 - B6, A7 - B7. Chn 19 /OE du ng ki ch m hoa t ng cu a ic khi no mc volt thp, hay cho ni masse, khi chn na y treo mc a p cao, ca c nga xut nhp se cho tra ng tha i th ba, nghi a la tra ng tha i co tr kha ng v cu ng ln, xem nh h ma ch. Chn s 1 cho n hng i cho ti n hiu. Khi chn DIR mc a p cao, thi ti n hiu va o bn A ra bn B va khi chn DIR mc a p thp thi ti n hiu va o bn B va ra bn A. To m la i, ngi ta du ng ic 74HC245 khuch a i tng cng cho ca c ca ng cu a ic lp tri nh AT89C51. Vy, co th thy, trong s ma ch in trn, khi 4 kho a in trong S u h thi ca c chn DIR u cho mc a p cao, lu c na y ti n hiu va o bn A va ra bn B, hay co th no i no du ng cho mode xut bit trn 4 ca ng cu a AT89C51. Nu mun nhp bit

va o ca c ca ng cu a ic AT89C51 chu ng ta pha i t chn DIR xung mc a p thp. Trong ma ch ngi ta co n du ng ca c in tr thanh treo a p ca c chn ln mc a p cao. Vy s ma ch in na y cho thy phn ma ch trung tm du ng cha y ic lp tri nh n phin AT89C51, Ba n co th du ng bo dy ni 8 ng cho kt ni ca c cng p0, p1, p2 va p3 n ca c b phn chi u ta c ng iu khin kha c cu ng trang bi trn bo la m thc ha nh vi bo ma ch a du ng na y.

3. Cu truc cua cac chng trinh ngun. Ba n cho gn 8 Led vi ca c chn cathode ni masse va ca c chn anode ni va o ca ng p1. S ma ch in nh hi nh sau:

By gi Ba n ha y vit mt chng tri nh ngun 8 Led ny ln lt sa ng ln tng Led va khi 8 Led a sa ng ht thi cho tt ht 8 Led va ri bt u la i. org 0000h jmp loop ; thanh nh khi u trong b nh ROM ; du ng lnh nhy, cho nhy qua ca c thanh nh

du ng org 0080h

cho ngt ; sp xp ca c lnh sau t thanh nh ny tr i

loop: mov p1,#00h thp, tt setb p1.0 call delay setb p1.1

; t 8 chn cu a ca ng p0 xung mc a p ht 8 led ; cho sa ng led trn chn p1.0 ; go i chng tri nh la m chm ; cho sa ng led trn chn p1.1 call delay setb p1.2 ; cho sa ng led trn chn p1.2 call delay setb p1.3 ; cho sa ng led trn chn p1.3 call delay setb p1.4 ; cho sa ng led trn chn p1.4 call delay setb p1.5 ; cho sa ng led trn chn p1.5 call delay setb p1.6 ; cho sa ng led trn chn p1.6 call delay setb p1.7 ; cho sa ng led trn chn p1.7 call delay JMP LOOP ; quay la i, bt u t tn nha n loop

delay: ; oa n chng tri nh du ng la m chm mov r5,#20 ; na p tri thp phn 20 va o thanh r5 d1: mov r6,#40 ; na p tri thp phn 40 va o thanh r6 d2: mov r7,#248 ; na p tri thp phn 248 va o thanh r7 djnz r7,$ ; cho tri trong r7 gia m theo bc -1, ch r7 = 0 djnz r6,d2 ; gia m tri trong r6, cha =0, quay la i d2 djnz r5,d1 ; gia m tri trong r5, cha =0, quay la i d1 ret ; quay tr la i do ng lnh sau lnh call end ; dng cng vic bin di ch y.

Phn ti ch ca ch vit chng tri nh ngun trn:

Ca c cu lnh setb p1.x tip theo se ln lt la m cho ca c Led trn ca c chn p1.1, p1.2, p1.3. p1.4. p1.5, p1.6, p1.7 sa ng ln. Chu ng ta thy nh hi nh minh ho a sau:

Phn ti ch oa n chng tri nh du ng la m chm:

Sau cu ng du ng gia lnh end ba o cho dng bin di ch ta i do ng na y. Nh vy nhng do ng lnh tip theo bn di gia lnh end u se bo qua. Sau y la chng tri nh ngun, cu ng la m ca c cng vic ging nh trn, c vit theo ngn ng lp tri nh C.

#include // xa c i nh ca c i nh nghi a ly trong file reg51.h #define uchar unsigned char // du ng i nh nghi a t tn tin du ng #define uint unsigned int // du ng i nh nghi a t tn tinn du ng #define LED P1 // du ng i nh nghi a t tn tin du ng uchar led_value[]={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f, 0xff}; // ta o ca c tri cho 8 Led sa ng lan ln uchar *p=led_value; // ga n tri khi u void delay() // ta o ha m la m chm { uchar ii,jj; for(ii=0;ii