Đồ án Thiết kế đồng hồ sử dụng PIC16F887 hiển thị LCD - Luận văn, đồ án, đề tài tốt nghiệp

Embed Size (px)

Citation preview

PHU LUCLV GIL11 THIEU.2CHUONG 1: TONG QUAN VE VI DIEU KHIEN PIC.3I . I PIC LA GI?.31.2 TAI SAO LAHO VI DIEU KHIEN KHAC.3

CHUONG 2: VI DIEU KHIEN PIC 16F887.6

CHUONG 3: LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IS

A.SODoOI.......................................................................................................2lB.SDONGUYENLY.22C.LDOGITHUAT.24D.LTNH.30

Do tin mon hoc 2:

LV GI1I THIEU

Ngay nay citng vii su phat trin khong ngiing cua khoa hoc ky thuat, thi ky thuat so cling da dem lai cho con nguoi nhung thanh tuu to Ion. Ngay cang co nhiu san pham ky thuat so ra doi, dap irng dupc nhiu nhu cau lpi ich cho con nguoi. Hoa sung xu huong do vi due khin da khang d|inh dupc vi the vitng chac cua minh trong nhiu ung dung, din hinh la dong ho din tu hien thi ten man hinh LCD voi do chinh xac gan nhu tuyt doi thay the cho dong ho cc.Voi huong di 6 nhom chung em da tim hiu va thit ke irng ding DONG HO VA LJCH DI N TO SP DUNG VI DIEU KHIEN PIC 16F887 trong khuon kho cua Do an mon hpc 2.

Qua day, chung em xin chan thanh cain on nhirng Hi chi 'n cua thay de'n nhirng nguoi ban, nhirng anh chi khoa tren da cho chung em nhung kinh nghiem guy bau.

2

: LY THUYET

CHONG 1: TONG QUAN VE VI DIEU KHIEN PIC

1.1 PIC LA GI ???

PIC I:i viet tat cua Programable Intellegent Computer, so th tain dish 1:i May tinh thong minh khii trinh do hang Genenral Intrusment d 7at tn cho vi dieu khien dau tien cua ho: PIC 1650 dupc thiet ke dung lain thit bi ngoai vi cho vi diu khin CP1600. Vi diu khin (VDK) my sau di duoc nghin ciiu va phat trin them va tu dci hinh thanh nn dong vi diu khin PlC nhu ngay nay.

1.2 TAI SAO LA PIC MA KHONG LA CAC HO VI DIEU KHIEN KHAC ???

Hin nay trn thi truing co rat nhiu ho vi dieu khin 8051, Motorola 68HC, AVR, ARM,. . .Ngoai ho 8051 dupc hirong dan cm ban o mo i triring dat hpc, ban than nguoi vit da lira chon ho vi dieu khin PIC

d mc rong kien thfic vii ph:it trien cac ting dung tren cong cu

vi c:ic nguyn nhan sau:

Ho vi dieu khien my co th tim mua de dang o thi tru6ng Vit Nam.Cut thanh khong quit dat. Ci day du tinh nang cua mot vi dieu khin khi hoat d(ong doc 1(ap. La m(ot su bo suing rat tot ve kie'n thuc cling nhu ve irng dung cho hp vi diii khin mang tinh truyn thong 8051.So luong nguii su dung ho vi diu khin PlC hin nay tai Vit Nam ciing nhu trn th gioi ngay cang tang. Dieu my tao nhiii thuan lot trong qua trinh tim hiu va ph:it trin cac irng dung nhu: so luong ta liii, so luong ung dung mc da dirpc phat trin thanh cong, d dang trao doi, hpc tap, de dang tim dupc su chi dan khi gap kho khan.Su ho tro cua nha san xuat v trinh bin dich, ciic cong cu lap trinh, nap chung trinh tu don giiin denphirc tap, C:ic tinh nang da dang cua vi diu khin PIC, va c:ic tinh uang nity khong ngung dupc phat trin.

1.3 KIEN TRUC CUA PIC

Cau triic phan cung ciia mot vi diu khin duoc thit k theo hat dang kin triic: kin triic Von Neuman va kin triic Havard.

Hinh I . cau triic Von Neuman

Hinh 2. cau triic Havard

To chuc phan cirng cfia PIC dupc thiet ke theo kin triic Havard. Dim khac nhau giua hai kin triic trn la cau trc b)o nho dfi lieu vii b(o nho chuong trinh.

Doi voi kin triic Von Neuman, b)o nho dir liu va bo nho chuong trinh mm chung mot bo nho, do do ta ci th to chirc, can dcii mot cach linh hoat b)o nho chuong trinh va bo nho dir lieu. Tuy nhin dieu my chi co y nghla khi toc do xfi 1y cua CPU ph:ii rat cao, vi vi ca triic do, trong mot their diem, CPU chi co the tirong tac voi bo nho dir liu hoac bo nho chuong trinh. Nhu vay co the noi kin triic Von Neuman khong thich hop voi cau triic ciia mot vi diu khin.Doi voi kin triic Havard, bo nho du lieu vii bo nho chuong trinh tach ra thanh hat bo nho rieng biet. Dodo trong mot tho diem, CPU co the tuong t:ic vi ca hat bo nho, nhir v(ay toc d)o cua vi diu khin dupc cai thin dang k.

Mot dim cm lim y ma lii tap lenh trong kin trtic Havard co the dupc to uu tiiy theo yii cm ciia kien tnic vi dieu khin mm khong phii thuoc vao cm truc du lieu. Vi dii voi dong dieu khin PIC16F, do dat lnh luon la 14 bit (khi din lieu dooc ter chuc thanh tiing byte), con voi kien triic Von Neuman, do dai lnh cua byte (do din lieu duoc to chuc thanh tung byte).

1.4 CAC DONG PIC VA CACH L A CHON VI DIEU KHIEN PIC

Cac ky hiu cua vi diu khin PIC: PIC1 2xxxx: do diii 1)enh 12 bit. PIC1 6xxxx: do diii 1)enh 14 bit. PlC l8xxxx: do ciii lenh 16 bit.C: PIC co bo nho EPROM (chi co PIC16C84 la co bo nho EEPROM) F: PIC co bo nho flash.- LF: PIC co b)o nho lash hoat dong o dien :ip thapLV: tuong tu nhu LF, day la ky hiu ciiBn canh do, mot so vi diu khin ci ky hieu xxFxxx la EEPROM, con ci thm chu A cr cuoi la flash (vi dii PIC 16F877 la EEPROM, con PIC 16F877A la flash).Ngoai ra co co thm mot dong vi diu khin mii la dsPIC.O Viet Nam pho bin nhat la vi diu khin PIC do hang Microchip sun xuat.4

Cach lua chon mot vi diu khin PIC phu hop:Truoc ht ta can chin y so chan ciia vi diu khin PIC can thiet cho ting dung. Co nhieu vi diu khin PIC ci so luong chan khac nhau, thaw chi co VDK chi ci 8 chan, ngoai ra co co cac vi diu khin PIC 28, 40, 44,. . . chan.Nn lua chon VDK ci bo nho flash d co th nap xoa chuong trinh dupc nhiu Ian hon.Tiep theo san chu j cac khoi chirc uang dupc tich hop san trong VDK, cac chuan giao tip bn trong. Sau cung chu y dn bo nhi chuong trinh ma VDK cho php.Ngoai ra, moi thong tin v lua chpn VDK PIC co th duoc tim thay trong cuon sach Select PIC guide do nha san xuat Microchip cung cap.

1.5 NGON NGO L ,AP TRINH CHO PIC

Ngon ngfr lap trinh cho PIC rat da dang. Ngon ngu lap trinh cap thap co MPLAB (dwpc cung cap mienphi boi nha san xuat Microchip). Ciic ngon ngfi lap trinh cap cao hon co C, VB, Pascal,. . . ngoai ra con ci trinh duoc phat trin danh cho PIC nhu PICBasic, MikroBasic,

1.6 MACH NAP PIC

Day cung la mot dong san pham rat da dang dang cho VDK PIC. Co th su dung cac mach nap duoc nha san xuat Microchip cung cap nhu: PICSTART plus, MPLAB lCD 2, MPLAB PM 3, PRO MATE II. Co th dung cac san pham my d nap cho VDK thong qua chuong trinh MPLAB. Dong s:in pham chinh thong n:iy co uu diem la nap dirpc cho tat ca cac VDK PIC, tuy nhin gia thanh cao vii g*ap nhieu kho khan trong qua trinh mua san pham.Ngoai ra do tinh uang cho php nhiu che d nap khac nhau, con co rat nhiu mach nap duoc thiet k diinh cho VDK PIC. Ci the so lirpc mot so reach nap PIC sau:JDM Programmer: mach nap my dung chuong trinh nap ICprog cho php nap cac vi dieu khin PIC co ho tro tinh uang nap chuong trinh din ap thap ICSP (In circuit Serial Programming). Hau ht mach nap du ho tro tinh uang nap chuong trinh my.WARP- 13A va MCB-USB: hat reach nap n:iy'n vi PICSTART plus do nha san xuat Microchipcung cap, tirong thich voi trinh bin dich MPLAB, nghla la ta co th dung tiirc tip MPLAB d nap cho vi diu khin PIC ma khong cn su dung mot chuong trinh nap khac, chang han nhu Icprog.P I 6PRO40: mach nap nay do Nigel thiet k va cung kha noi ting. Ong con thiet k cii chuong trinh nap, tuy nhin ta co the sir dung chuong trinh nap Icprog.Mach nap Universal ciia Williem: day khong ph:ii la reach nap chuyen dung cho PIC nhu PI 6PRO40. Cac mach nap k trn co uu dim rat ln la don gian, re tin, hoan to an co the tu lap nip de cling va moi thong tin v so do mach nap, cach thit k, thi cong, kim tra va chuong trinh nap du de dang tim duocva download min phi tir wang Internet. Tuy nhin cac reach nap tren co nhuoc diem la han che v so vi diii khin PIC dirpc ho tro. Bn canh do, mo i reach nap ciin dupc sir dung mot chuong trinh nap thich hop.

CHUONG 2: VI DIEU KHIEN PIC 16F887

2.1 SO DO CHAN VA HINH

RE3/MC L R/VPP1RA0/AN0/ U LPW U/C 12l N0-2RA1/AN 1/C12IN1- RA2/AN2/VREF /CVRE F C2IN + RA3/AN3/VREF+/C 1IN+ RA4/T0C K I/C 1OU TRAC/A N4/SS/C2OU TRE0/AN 5 RE1/AN6 RE2/AN7VDDVsS RA7/OSC 1/C L K IN RA6/OSC2/CLKOU T RC0/T1 OSO/T 1C K I RC 1/T1 OSI/C C P2 RC2/P 1A/CC P 1 RC3/SCK/SCLRDORD1

40RB7/IC SPDAT39RB6/ICSPC L K 38 RBS/AN 1 3/T1 G37 $ -- RB4/AN 1136 $RB3/AN9/PCM/C12IN2-35 ZRB2/AN834- RB1/AN 10/C12IN3-33RB0/AN 12/INT32VDD

30 Z -- RD7/P1 D29 $RD6/P1C

27 -- RD426 ZRC7/RX/D T25-- RC6/TX/C K24 RC5/SDO23 $ -- RC4/SDI/SDA22 $RD321-- RD2

Hinh 3. so do chan vi dun khin PIC 1 6F887

Hinh 4. hinh dang thc Ie cua vi diu khin PIC 1 6F887

6

2.2 MOT VAI THONG TIN VE VI DIEU KHIEN PIC16F887

Program

Device"'

Data Memory

EIJSARTI/ISSP Corparator TimersB16-bit

Day lit vi diu khien thuoc hp PIC 16xxxx voi tap Inh gore 35 lenh co d(o dai 14 bit. Moi Ienh den dupc thuc thi trong mot chu ky xung clock. Toc do hoat dcing Hi da cho php la 20Mhz voi mot chu ky lnh la 200ns. Bo nho flash chuong trinh la 8192 words va b(o nho dtr lieu la 368 bytes SRAM * 256 bytes EEPROM. So PORT I/O lii 5 voi 33 pin I/O.

C:ic d)ac tinh ngoai vi ban gm cac khfii chuc uang sau:

' co th thuc hin chuc uang dm dna vao xung clock ngoai vi ngay khi vi diu khin hoat dong o ch do sleep.-Timer2: bo dm 8 bit vi bp chia tan so, bo postcaler.-Hat bo Capture/ so s:inh/ dieu che' d(o rpng xung.-Cac chuan giao tiep noi tip SSP (Synchronuos Serial Port), ISP va I2C.-Chuan giao tip noi tiep USART voi 9 bit dia chi.-Cong giao tip song song PSP (Parallel Slave Port) voi cac chan diii khin RD, WR, CS o bn ngoai.

C:ie d*ac tinh Analog-14 knh chuyn dcii ADC 10 bit-2 b)o so sanhBn canh do la mot vat dac tinh khac ciia vi diu khin nhu:-Bo nho flash ci kha uang ghi xoa dupc 100 000 lan.-Bo nho EEPROM ci kha uang ghi xoa dupc 1 000 000 000 lan.-Dir liu bo nhi EEPROM co th luu trfr trn 40 mm.-Kha uang tu nap chuong trinh voi su diu khin ciia phan mm.-Nap dupc chuong trinh ngay trn mach din ICSP (In circuit Serial Programming) thong qua chan 2.-Watchdog Timer voi bo dao dong trong.-Chuc uang bao mat ma chuong trinh.-Ch do sleep.-Ci th hoat dong voi nhiu dang Oscillator khac nhau.

2.3 SO DO KHOI VI DIEU KHIEN PIC16F887

2.4 TO CHUC BO NHO

Cau trtic b)o nho cua vi diu khin PIC 16F887 bao gore b)o nho chuong trinh (Program memory) va b(o nho dir lieu (data memory).

2.4.1 B o nh chuong trinh

Bo nho chuong trinh cua vi diu khin PIC 16F887 lit bo nho flash, dung luong la 8 Kword (1 word = 14 bit) va duoc phan thanh nhiu trang (tii page0 den page3).Nhu vay bo nhi chuong trinh co kha uang chua dupc 8x1024 - 8192 lnh (vi moi lnh sau khi ma hia s ci dung luong 14 bit = I word).D run hoa dupc di.a chi ciia 8 Kword chuong trinh, bo dm chuong trlnh ci dung tuong 13 bit. Khi vi diu khin duoc reset bo dm chuong trinh se chi den dia chi 0000H (Reset vector). Khi co ngat xay ra, bo dem chuong trinh se chi dn dia chi 0004H (Interrupt vector).Bo nho chuong trinh khong bao gore bo nho stack va khong dupc dia chi hoa boi bo dim chuong trinh.

Do tin mon hoc 2:

Bo nho stack

cu th trong phan sau:

Interrupt VectorPage 0Page 1Rage 20000h

0004h0005h

On-Chio

o

9

Hinh 6. b)o nhi chuong trinh cua vi diu khin PIC 16F887

2.4.2 b(o nh dir lieu

Bo nho dir lieu cua PIC vii b(o nho EEPROM dupc Shia ra law nhiu bank. Doi voi vi diu khin PIC 16F887 thi bo nho dir liu duoc chia la 4 bank. Bank dupc chon phq thuoc vao bit RP I va RP0 (bit thir 6 va bit thir 5) cua thanh ghi trang thai status.

RPI : RPOBANK

Moi bank co dung luong 128 byte, bao gore ciic thanh ghi co chiuc uang dac bit SFR (Special Function Register) mm o 32 vi tri dau tin cua moi bank va cac thanh ghi muc dich chung CPR (General Purpose Reg ister)vi tri cuoi cung cua moi bank, dong vat tro nhu Static RAM.

Cac thanh ghi SFR thuong xuyn duoc sir dung (vi du nhu thanh ghi STATUS) se duoc dat ci tat cii ciic bank cua bo nho du lieu, giup thuan tin trong quit trinh truy xuat va law giam bet lnh chuong trinh. So do cu the cua b)o nho dir liii vi diu khin PIC 16F887 nhir sari:

80B/es80B/es

Hinh 7. cac bank thanh ghi trong b)o nho du li)eu cua vi diu khin PIC 1 6F887

2.4.3 C:ic cong ra van ciia PIC:

Port A: ci 6 bit (tuong ting voi 6 chan RA0 RAS) cac chan ciia cong A co tich hop motngoai vi, neu mot thiet bi ngoai vi dupc enable thi cong my s khong hoat dong nhu mot cong vao ra. Binh thuong Port A se la mot cong vao ra 2 chieu. Thanh ghi xac dinh chiu tuong ung cua cac chan Port A la thanh ghi TrisA. Cac bit o thanh ghi TrisA bang 1 se xac d]nh cac chan o Port A I:i dau vao va ngupc lai se la dau ra.Port B: r)ong 8 bit (tuong ring voi chan RB0 - RB7) la mot cong vao ra 2 chiu. Thanh ghi guy dinh chiu cua Port B I:i thanh ghi TrisB. Thit lap ciic thanh ghi TrisB bang 1 se law cho cong B la cong viio va ngupc lai se la cong ra.Port C: rong 8 bit (tuong ung voi cac chan RC0RC7), binh thuong no la mot cong vao ra 2 chiu. Thanh ghi guy dinh chiu cua cong my la thanh ghi TrisC. Cac chan RC3, RC4 ditng d kt rio, truyn nhau thong tin voi cac thit b| ngoai vi.Port E: rong 3 bit (RE0 RE2), dupc cau hlnh la dau ra hoac dau vao. Port E co th la dau vao diu khin I/O khi bit PSPSTATUS (TrisE.4) dupc xac lap.Port D: rong 8 bit ( RD0 RD7), no co th la cong vao hoac ra.

Thanh ghi diu khin xuat nhap la TRISD

R'W-1R.W- 1P.W-JP.W-1R W-1R W-1R.W- 1P.W- 1

TRISD7TRISD6TRISDSTRISD4TRISD3TRISD2TRISD1TRISDO

bit 7b 1 0

LegendsR = Readable bt-n = Value at POR

\Y = Writable bit 1 ' = Bit s set

U = Unimplemented bit. read as '0'0 = Bit is clearedx = Bit is un known

bit 7-0

TRISD), khi di gi:i tri thanh ghi TMR0 se tang theo tiing chu ky xung dong ho (tan so vao Timer0 = ? tan so oscillator). Khi gi:i tri Timer0 tu FFH trci v 00H, ngat Timer0 se xuat hin. Thanh ghi TMR0 cho php ghi va xoa duoc giup ta an dinh thii diem ngat Timer0 xuat hin mot cach linh dong.Muo Timer0 hoat dong o che do counter ta SET bit T0SC (OPTION RES < 5 >). Khi do xung t:ic d(ong len bo dm dupc lay tir chan RA4/TOCK1 . Bit T0SE (OPTION RES < 4 >) cho php lira chpn canh I:ic dong vao bo dm. Canh tac dong se la canh ln neu T0SE = 0 va se la canh xuong neu T0SE = 1.

Khi thanh ghi TMR0 bi trim, bit TMR0IF (INTCON < 2 >) s dupc SET. Day chinh la cci ngat cua Timer0. Cc ngat my phai duoc xoa bang chuong trinh truoc khi b)o dm bat dau thuc hin lai qua trinh dm. Ngat Timer0 khong the danh thuc vi diu khin tu ch do sleep.

14

Bo chia tan so (prescaler) dupc chia se giira Timer0 va WDT (Watchdog Timer), dieu do so nghla la neu prescaler duoc su dqng cho Timer0 thi WDT se khong co duoc su ho tro cua prescaler va nguoc lai. Prescaler duoc diu chinh boi thanh ghi OPTION REG. Bit PSA (OPTION REG3 >) xac dinh doi tuong tac dong cua prescaler. Ciic bit PS2:PS0 (OPTION REG) xac d|nh ty so chia tan so ciia prescaler. Xem lai thanh ghi OPTION REG d xiic d]nh lai mot such chi tit v cac bit diu khin trn.

Cac lenh tac dong ln gia tri thanh ghi TMR0 se xia ch do hoat dong cua prescaler. Khi doi tuong tac dong I:i Timer0, tac dong ln gia tri thanh ghi TMR0 se xoa prescaler nhung khong tain thay do i doi tuong tac dong cua prescaler. Khi d i twag tac dpng la WDT, lnh CLR WDT se xoa prescaler, dong thoi prescaler se ngung tac vu ho trp cho WDT.Cac thanh ghi diu khin lien quan dn Timer0 bao gore: TMR0 (dia chi 01H, 101H): chira gia tri dem ciia Timer0.INTCON (dia chi 0BH, 8BH, 10BH, 18BH): cho php ngat hoat dong (GIE va PEIE).OPTION REG (di.a chi 8 I H, 181H): diu khin prescaler.

LCD la gi?

Man hinh tinh the long (liquid crystal display, LCD) lit loai thie't bi hin thi cau tao bet c:ic t bao (c:ic dim anh) chua tinh the long co kha uang thay doi tinh phan cuc cua anh sang va do di thay doi cufing do anh sung truyn qua khi kt hop voi cac kinh loc phan cuc. Chung co uu dim la phang, cho hinh tinh sang, chan that va tit kim uang luong.

LCD la loai chi thi thu dong, tiu thi uang luong rat nho va co ti so tuong phan tot. Ngoai ra ci nhung tinh chat thong dung sau day:

Khong tu phat ra :inh sang v:i phii thu)oc viio anh sung xung quanh va tinh sung nen. Co anh sang khuch tan. Hoat dong o dang trong suot hoac phan chiu. Thong dung nhat la loai Neumatic (NLC), loai chat long my trong suot. Khi no dupc ap din trtrong lori se xuat hin nhirng ion di chuyen xu,yn qua pha vo cau truc thong thuong dang tinh the. Vi vay chat long duoc phan cuc tro nn chan sang, co mau den sam hon so voi xung quanh. Khi din trirfing mat di, chat long tro v dang tinh th cfi va tro nn trong suot tro lai. Cau tao cu the cua LCD gore co m)ot vat liu tinh th long NLC ci b day khoiing 10 mm dupc kep giira hai ming thiiy tinh. Mat thiiy tinh dupc phii mot lop wong kim loai (oxide thic) cho anh sang xuyn qua, dupc dung lain ban cuc mat truoc, ban cuc mat sau cung thuc hin nhu vay. Con loai LCD phiin chiu thi bun cuc mat sau cho phan chiu sung.

Lp vo boc LCD duoc ciich din va han kin lai.

Hinh 9. LCD

LCD c nhimg d)ac dim sau:

Di)en trung cn thit cho LCD hoat dong thong thucing 104 V/cm. Do do dien :ip I 0v cho LCD ci b day 10 mmVat liu NLC co din tro rat lori (1010 ohm) cho nn dong d cho LCD hoat dong rat nhci khoiing 1 0 mA/cm2 va cong suat hoat d)ong 10 mW/cm2LCD la thit bi hpat dong o toc d(o ch)am, thoi gran de dan vat mi li giiiy va tat vat chuc wilt guy.

Hi(n nay LCD (loai thong dqng c th giao tip dupc vi PIC) dun,c chia thiinh 2 loiji:

LCD graphic: dat dim loai my la toan bo man hinh dupc chia thanh cac dim anh, gia thanh tiiy thiipc vao d)o phan gi:ii va hang san xuat. Cac d)o phan gi:ii thong thucing lit: 240x64, 240x1 28, l60x64, 128x128, 128x64...v.v

LCD alphanumeric: Chi dung d hin th| chir cai va chu so. Voi loai my 1 ky tu hin thi trn mot ma tran 5x7 hoac 5xl0, nhu vay vii loai LCD 16x2 (co hat hang va moi hang co 16 ky tu) s co 32 ma tran xp trn hat hang. Hien nay co cac loai LCD thong alphanumeric thong dqng la: l4x2, 16x1, 20x2, 20x4.

16

TenChic uang

VssDat

VDDCuc + ciia nguon di)en

VEETuong phan (constrast)

4RSRegister Select (chon thanh ghi)

R/WRead/Write

6EEnable (cho php)

7D0B it 0 ciia dir lieu

8DIBit 1 cua dir liu

9D2B it 2 ciia dir lieu

10D3Bit 3 cua dir liu

I ID4B it 4 ciia dii lieu

12DSBit 5 cua dir liu

13D6Bit 6 cua dir liu

14D7Bit 7 cua dir liu

Mac dii theo so tay ky thu)at LCD thi cap nguon cho no lit SV DC (khoang viii mA) nhirng cung cap cho

ni 6VDC hay 4.5 VDC thi no van hoat d(ong tot va ngay c:i voi 3 VDC cling du cho m)ot quit la cac module LCD tiu thi uang luong it.

module.

Chan 3 la chan diu khin VEE ditng de thay doi do tuong phan ciia rniin hin thi. Ly tuong thi chan my nn not nguon dien :ip thay doi dupc, ngucii ta thuc hin bang cach gan mach chia :ip dung bien tro co dari ra thay doi dna vao chan nay; tuy nhin nn chu y la m)ot so module cn nguon din DC 7V. Don gran lii ngucri ta rio chan my voi 0V ( xuong dat).Chan 4 la RS (Resgister Select= chon thanh ghi) day la 1 trong 3 ngo vao diu khin lnh. Khi chan my d mirc thap thi cac du lieu dupc triiyn den LCD dirpc xfi 1y nhir cac menh lnh va c:ic dir liu dpc ra chi trang thai cua no. Bang cach dna duong RS nay ln muc cao thi dir liu ky tu co the xuat/nhap trn module my.Chan 5 lit duong R/W (read/write). Chan my dupc ko xuong mirc thap d ghi cac lnh hay du liu ky' tir vao module hoac duoc ko ln muc cao de dpc dir lieu ky tir hay thong tin trang thai tii cac thanh ghi ciia

Chan 6 lit duong E (enable), ngo my dung d khoi dong viec chuyn cac lenh hay dir lieu ky tu giua module va cac duong dir lieu. Khi ghi ra man hin thi LCD, dfi lieu chi dupc chuyen khi co canh xuong o tin hiu E my. Tuy nhin khi doc ra tii LCD thi dir liu kha dung sau khi co chuyen tip tii thap ln caova duy tri dir liu kha dung cho dn khi tin hiu xuong thap mot tan nira.Cac chan 7 dn 14 la 8 dung bus dir liu (D0 dn D7). Dir lieu co th dupc chuyn den va lay ra kho b(ohien th] LCD theo dang mot byte 8 bit hay dang ma byte 4 bit (nibble). Trong truong hpp sau chi co 4 duong dir lieu trn duoc su dung (4 bit cao: D4 den D7). Ch do 4 bit my thuan tin khi su dung vi xu ly, cm co it dudng xuat/nhap hon.D hien thi cac chir cai va cac con so chung ta gin cac ma ASCII ciia ciic chu cai tir A dn Z, a dn z vaciic so tir 0 9 dn ciic chan my khi b(at RS=1.

= 0 de kim tra bit co ban d xem LCD ci san sang nhau thong tin. Cc ban la bit D7 va co th duoc doc khi R/W va RS - 0 nhu sau:Nu R/W-1, RS-0 khi D7- 1 (cci ban) thi LCD ban bcii cac cong vic bn trong va se khong nhau bat ky thong tin moi nao. Khi D7=0 thi LCD san sang nhau thong tin moi. Lim y chiing ta nen kim tra co bantnroc khi ghi bat ky dtr lieu niio ten LCD Sau day la bang ma lnh cua LCD:

18

Ma (Hex)Lnh dn thanh ghi cfia LCD

Xoa man hinh hin thi

2Tro v dau dong

4Gi:inn con trc (dich con trc sang tr:ii)

6Tang con tro (dich con tro sang phiii)

5Dich hin th| sang ph:ii

Dich hin thi sang trai

8Tat hin thi, tat con trci

ATat hin thi, bat con tro

CBat hin thi, tat con trci

EBat hin thi, nhap nhay con tro

FTat hin thi, nhap nhay con trci

Dich vi tri con tro sang trai

4Dich vi tri con tro sang phat

Dich to an bo hin thi sang trai

Dich to an b)o hin thi sang phai

Ep con tro v dau dong thu nhat

Ep con tro v dau dong thu hai

Hat dong va ma tran 5x7

Diu khin LCD qua cac buoc:

Buoc 1: khoi tao cho LCD.Buoc 2: gan cac gia tri cho cac bit diu khin ciic chan RS, R/W, Echo phii hop voi ciic che d(o: hin thi cac ky tu ln LCD hay thuc hin mot lnh cua LCD.Buoc 3 : xuat byte du liu ra cong diu khin 8 bit dir liu ciia LCD. Buoc 4: kim tra co ban xem LCD san sang nhau du lieu moi chua.Buoc 5: quay vong lat buoc 1 .

C:ic lenh LCD cc b:in ii che do 8 bit:

LCD FIRST ROW: Dna con tro ve hang dau tin LCD SECOND ROW: Dna con trci v hang thu 2 LCD THIRD ROW: Dna con tro v hang thu 3 LCD FOURTH ROW: Dna con tro ve hang thu4 LCD CLEAR: Xoa rniin hinhLCD RETURN HOME: V v| tri dau dong

LCD CURSOR

OFF: Khong cho con tro hin thi

LCD UNDERLINE ON: Bat con tro hin thi dang dau gach duii19

LCD BLINK CURSOR ON: Bat con tro nhap nhay LCD MOVE CURSOR LEFT: Chuyn con tro sang traiLCD MOVE CURSOR RIGHT: Chuyn con tro sang phai

LCD SHIFT LEFT: Dich chuyn man hinh sang trai

LCD SHIFT RIGHT: D]ch chuyn man hinh sang phai

20

PHAN 2: THIET

A.SOD0NH0I

KHOI NUTNHAN

PIC16F887

KHOI HIEN THILCD

KHOI NGUON

21

B. SO DO NGUVEN LV

LCD1

RSR6RRR10R11R3

B4

22

Thit Le donu ho v licli din tu su dunu vi diu kliien I 6F887

KHOI VI DIEU KHIEN

U1

C1

KHOI PHIM HIEN TH{

LCD1LM016L

KHOI PHIM NHAN

RSR6R9R10R11R3

C. LUIJ DO GIAI THUAT

MAIN

KHOI TAO PIC VA LCD

GIAI MA TIME

HIEN TH{ TIME

UP TIME

24

Do tin mon hoc 2:

UP TIME

UP MIN = =0?

NO

YES

YES

TANG PHUT

UP HOUR'TANG GIS

NO

UP DAY = =0?

NO

UP DATE = =0?

NO

YES

YES

YES

TANG THE

TANG NGAY

UP MONTH = =TANG THANG

NO

UP YEAR = =0?

NO

YES

TANG NAM

25

CHUONG TINH NGAT

START

SECOND

MINUTE

HOUR

DAY, DATE

MONTH

YEAR

THOAT NGAT

THOAT NGAT

26

SECOND

SECOND > 59?

YES SECOND = 0

MINUTE

MINUTE

MINUTE

MINUTE 59?

YES MINUTE = 0

HOUR

NOTHOAT NGAT

NOTHOAT NGAT

27

HOUR

HOUR==

HOUR * 24?

YES

HOUR-0

DAY, DATE

MONTH

MONTH > 12?

YES MONTH - I

YEAR

NOTHOAT NGAT

NOTHOAT NGAT

28

DAY, DATE

DAY++, DATE++

YES

DAY=|

NO

MONTH = 2

YES

NONO

YEAR% 4=0?YES DATE > 28

YES

NOTHOAT NGAT

DATE > 29

YES

THOAT NGAT

MONTH = 4,6,9, 11

YES

DATE > 30

YES

NONOTHOAT NGAT

DATE > 31

NOTHOAT NGAT

DATE = I

YEAR

Do tin mon hoc 2:

YEAR * 99?

THOAT NGAT

NOTHOAT NGAT

..D. UP TRINH

O pham vi do tin my, chung em su dung ngon ngiu lap trinh C voi trinh bin dich PCW CCS C.

code chuong trinh:

#include #use delay(c1ock=4000000)#byte portb = 0x6#byte portc = 0x7#byte portd = 0x8#bit rsportc.0#bit en= portc. 1#bit up1 = portb.2//chinh gio#bit iip2portb.3//chinh phut#bit iip3portb.4//chinh ngay#bit up4 = portb.5//chinh thang#bit up5portb.6nam#bit iip6portb.7//chinh thuint8 sec, min, hour, day, date, month, year, dem;int8 ch sec, ch min, ch hour, ch date, ch month, ch year;int8 dv sec, dv min, dv hour, dv date, dv month, dv year;

30

#int TIMER0

void TIMER0 isr(void)

dem++;if(dem== 15)

dem-0; sec*+;if(sec>59)

sec-0;

if(min>59)

min-0; hour**; if(hour>23)

hour-0;day*+;if(day>7) {day=l ;} date++;if(month==1 month3 |month==5||month==7| month==8| |month==l 0| month== 12)

if(date>3 1) {date=1; month**;if(month>12) {month=1;year**;} } else if(month==4| month6| |month==9| month==1 1)if(date>30) {date=1; month**;if(month>12) {month=1;year**;} }

else

if((year%4)0)

if(date>29) {date=1; month+=;if(month>12) {month=1 ;year==;} }

else

if(date>28) {date=1; month+=;if(month>12) {month=1 ;year==;} }

void|cd wi4ec(int8 conmnand)

rs - 0;portd = command; en = I ;en - 0;delay ins(10);void lcd writed(int8 data) rs - 1 ;portd = data; en = I ;en - 0;delay ins(10);

void lcd start()

lcd writec(0x38); lcd writec(0x0c); lcd writec(0x06); lcd writec(0x01);

vo id lcd clear()

lcd writec(0x0l);

vo id lcd cursor(int8 hang, int8 cot)

int8 vitri; switch(hang)

case I : vitricot + 0x80; break;case 2: vitri = cot + 0xc0;break;

lcd writec(vitri);

vo id hienthi()

lcd cursor(I ,0);lcd writed('T');lcd writed(':');lcd writed(' ');lcd writed(ch hour);

32

lcd writed(dv hour); lcd writed(':');lcd writed(ch min); lcd writed(dv min); lcd writed(':');lcd writed(ch sec); lcd writed(dv sec); lcd writed(' ');lcd writed(' ');lcd writed('2');lcd writed('4');lcd writed('h'); lcd cursor(2,0); lcd writed('D');lcd writed(':');lcd writed(' '); switch(day)

case 1 :lcd writed('S');lcd writed('u');lcd writed('n');break;case 2:lcd writed('M');lcd writed('o');lcd writed('n');break;case 3:lcd writed('T');lcd writed('u');lcd writed('e');break;

case 4:lcd writed('W'); lcd writed('e');lcd writed('d'); break;case 5:lcd writed('T');lcd writed('h');lcd writed('u'); break;

case 6:lcd writed('F');lcd writed('r');lcd writed('i');break;case 7:lcd writed('S');lcd writed('a');lcd writed('I');

break;

lcd writed(' ');lcd writed(' ');lcd writed(ch month);lcd writed(dv month); lcd writed('/');lcd writed(ch date); lcd writed(dv date); lcd writed('/');lcd writed(ch year); lcd writed(dv year);

void giaima()

ch sec = sec/10 * 0x30; ch min - min/10 + 0x30; ch hour = hour/100x30; ch date = date/ 100x30;ch monthmonth/I 00x30; ch year - year/100x30;dv sec = sec% 10 * 0x30;dv min min%l 0 * 0x30; dv hour hour% 10 0x30; dv date = date% 10 0x30;dv month = month%10 + 0x30;dv yearyear%l 00x30; void up hour()delay ins(300); hour++;if(hour >23) hour = 0;

vo id up min()

delay ins(300);min+*;if(min > 59) min 0;void up day() delay ins(300);day++;if(day>7) day = I ;

34

void up date()

delay ins(300);

date**;

day++;if(day>7) {day-1 ;}

if(month==1month==3 |month==5month==7month8month==10|| month==12)

if(date>31) date - 1;

if(month==4month==6 | month==9month==11) if(date>30) date - 1;if(month==2) if((year%4)--0)if(date>29) date=1; elseif(date>28) date=1 ;

vo id up month()

delay ins(300);month**;if(month> 12)monthI ;void up year() delay ins(300);year++;if(year>99)year = 0;

setup timer 0(RTCC INTERNAL|RTCC DIV 256);enable interrupts(INT TIMER0); enable interrupts(GLOBAL);set tris a(0x00);

set tris b(0xff); set tris c(0x00); set tris d(0x00); lcd start(); dem=0;sec=5 ; min-57; hour-20; date=27; month=2; day-1 ; year-3 ; while(1)giaima(); hienthi();if(up l==0) {up hour();}if(up2--0) {up min();}if(up3==0) {up date();}if(up4==0) {up month();}if(up5==0) {up year();}if(up6--0) {up day();}

PHAN 3: MO PHONG BANG PROTEUS

PHAN 4: TAI LI U THAM KHAO

Gi:to trinh Vi Xir Ly Th.S Ho Tning My, NXB Dat hoc Quoc gia Tp.HCMTai liu vi diu khien PIC l6F877A Nguyen Van Tinh, Truing Si quan chi huy ky thu:it thong tin. Cac trang website:

www.google.com.vn www.picvietnam.com www.dienvietnam.net www.hoiquandientu.com

36