PIC16F877A Lab Manual

25
Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai 32 Phone No: 044 43358483/84, www.tridenttechlabs.com PIC16F877A Lab Manual

description

complete lab manual on PIC16F877a

Transcript of PIC16F877A Lab Manual

Page 1: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

PIC16F877A Lab Manual

Page 2: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

MPLAB Program

What is MPLAB? MPLAB is a software program that runs on your PC to provide a development

environment for your embedded system design. In other words it is a Windows program

package that makes writing and developing a program easier. It could best be described as

developing environment for a standard program language that is intended for

programming microcontrollers.

• Get started to MPLAB

1. Open the program by double clicking on its icon on the desktop.

2. From the project menu choose project wizard.

3. Choose PIC 16F84A.

4. Brows and name the project.

5. From view menu choose project; to view the project.

6. Then add a file to the source files by right clicking on source files, and

7.choose add files and then name the file anyName.c.

Blinking Led

/********************************************************************************************

* ¹¦ ÄÜ£ºLEDÇý¶¯ÊµÑé³ÌÐò

* CPUÐͺŠ£ºPIC16F877A

* ¾§Õñ£º 4MHz

* ˵Ã÷:

* ×÷ ÕߣºMCU2000

* ÈÕ ÆÚ£º2012Äê10ÔÂ19ÈÕ

Page 3: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

±¾Àý³ÌÔÚ<<BK300 PICʵÑé°å>>Éϵ÷ÊÔͨ¹ý

*********************************************************************************************/

#include <pic.h> //°üº¬PICÍ·Îļþ Èí¼þ×Ô´øµÄÍ·Îļþ¿ÉÒÔÓÃ< >

#include "BoardConfig.h" //°üº¬¿ª·¢°åÓ²¼þ³õʼ»¯Í·Îļþ ×ÔÒÑдµÄÍ·ÎļþÓÃ" "

·ñ²âPICC±àÒë»á³ö´í

__CONFIG(0x3F32); //оƬÅäÖÃ×Ö

void delay(uchar a,uchar i); //ÑÓʱ×Óº¯ÊýÉùÃ÷

void main (void)

{

uchar timer;

uchar temp=0xff;

Board_init(); //µ÷Óÿª·¢°åÓ²¼þ³õʼ»¯º¯Êý

RC5=1;

//ÉèÖÃU5²»Ëø´æ£¬Êä³öËæÊäÈë¶Ë±ä»¯LEDÊÜPORTD¿Ú¿ØÖÆʹPORTD¿ÉÒÔ¿ØÖÆLED

while(1)

{

temp=0xFF;

for(timer=0;timer<9;timer++)

{

PORTD=temp; //tempµÄÖµËÍLEDÏÔʾ

delay(20,200); //µ÷ÓÃÑÓʱ

temp>>=1; //×óÒÆһλ

}

}

Page 4: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

}

////////////ÑÓʱ×Óº¯Êý/////////////////

void delay(uchar a,uchar i)

{

uchar s;

while(--a)

while(--i)

{

s=10;

while(s--);

}

}

Seven Segment Display

/********************************************************************************************

* ʵÑéÈý: ÊýÂë¹ÜÇý¶¯ÊµÑé

* CPUÐͺţº PIC16F877A

* ¾§Õñ£º 4MHz

* ˵Ã÷: ËÄλÊýÂë¹ÜʵÏÖ0-9999¼ÆÊý

* ×÷ ÕߣºMCU2000

* ÈÕ ÆÚ£º2012Äê10ÔÂ19ÈÕ

±¾Àý³ÌÔÚ<<BK300 PICʵÑé°å>>Éϵ÷ÊÔͨ¹ý

*********************************************************************************************/

Page 5: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

#include <pic.h> //°üº¬PICÍ·Îļþ Èí¼þ×Ô´øµÄÍ·Îļþ¿ÉÒÔÓÃ< >

#include "BoardConfig.h" //°üº¬¿ª·¢°åÓ²¼þ³õʼ»¯Í·Îļþ ×ÔÒÑдµÄÍ·ÎļþÓÃ" "

·ñ²âPICC±àÒë»á³ö´í

__CONFIG(0x3F32); //оƬÅäÖÃ×Ö

#define uchar unsigned char

#define uint unsigned int

void LED_DISPLAY(void);

void delay(uchar a,uchar i);

//¹²ÑôÊýÂë¹ÜÏÔʾ´úÂë

uchar LED_DIS[]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,0xff};

uchar DIS_NUM[4]; //ÊýÂë¹ÜλÂë¼Ä´æÆ÷

void main (void)

{

uint counter;

Board_init(); //µ÷Óÿª·¢°åÓ²¼þ³õʼ»¯º¯Êý

while(1)

{

for(counter=0;counter<9999;counter++)

{

DIS_NUM[0]=(uchar)(counter/1000); //¼ÆËãÊýÖµµÄǧλ

DIS_NUM[1]=(uchar)((counter%1000)/100); //°Ùλ

Page 6: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

DIS_NUM[2]=(uchar)((counter%100)/10); //ʮλ

DIS_NUM[3]=(uchar)(counter%10); //¸öλ

LED_DISPLAY(); //µ÷ÓÃÊýÂë¹ÜÏÔʾ

}

}

}

//ÊýÂë¹ÜÏÔʾ×Óº¯Êý

void LED_DISPLAY(void)

{

uchar i,TEMP,k;

RA3=0; //U3Êä³öʹÄÜ

for(k=0;k<50;k++)

for(TEMP=0X80,i=0;i<4;i++)

{

//****************ÊýÂë¹ÜλÂë****************************************************

RC4=1; //U3Ëø´æ¶ËÉèΪ¸ßµçƽÊä³ö¶ËµçƽËæÊäÈë¶Ë¶ø±ä»¯

PORTD=TEMP; //ËÍÊýÂë¹ÜλÂë

RC4=0; //U3Ëø´æ¶ËÉèΪµÍµçƽÊä³ö¶Ë²»±ä

//******************************************************************************

//****************ÊýÂë¹Ü¶ÎÂë****************************************************

RC3=1;

PORTD=LED_DIS[DIS_NUM[i]];

Page 7: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

RC3=0;

//******************************************************************************

TEMP>>=1; //ÓÒÒÆһλ׼±¸ÏÂһλÊýÂë¹ÜÏÔʾ

delay(10,10); //ÑÓʱһ»áÌá¸ßÊýÂë¹ÜÏÔʾÁÁ¶È

//****************¹Ø±ÕÊýÂë¹ÜÏÔʾ************************************************

RC4=1;

PORTD=0X00;

RC4=0;

delay(1,10);

//******************************************************************************

}

}

////////////ÑÓʱ×Óº¯Êý/////////////////

void delay(uchar a,uchar i)

{

while(--a)

while(--i);

}

Serial Communication

/********************************************************************************************

* ʵÑéÆß: RS232´®ÐÐͨѸʵÑé

* CPUÐͺţº PIC16F877A

Page 8: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

* ¾§Õñ£º 4MHz

* ˵Ã÷: ´®¿Úµ÷ÊÔÈí¼þ²¨ÌØÂÊÉèΪ9600

ͨ¹ý´®¿Úµ÷ÊÔÖúÊÖÏòµ¥Æ¬»ú·¢ËÍÊý¾Ý

µ¥Æ¬»ú»á·µ»ØÊý¾Ý¸ø¼ÆËã»ú

* ×÷ ÕߣºMCU2000

* ÈÕ ÆÚ£º2012Äê10ÔÂ19ÈÕ

±¾Àý³ÌÔÚ<<BK300 PICʵÑé°å>>Éϵ÷ÊÔͨ¹ý

*********************************************************************************************/

#include <pic.h> //°üº¬PICÍ·Îļþ Èí¼þ×Ô´øµÄÍ·Îļþ¿ÉÒÔÓÃ< >

#include "BoardConfig.h" //°üº¬¿ª·¢°åÓ²¼þ³õʼ»¯Í·Îļþ ×ÔÒÑдµÄÍ·ÎļþÓÃ" "

·ñ²âPICC±àÒë»á³ö´í

__CONFIG(0x3F32); //оƬÅäÖÃ×Ö

void main()

{

Board_init(); //µ÷Óÿª·¢°åÓ²¼þ³õʼ»¯º¯Êý

TRISC|=0XC0; //

SPBRG=0X19; //ÉèÖò¨ÌØÂÊΪ9600BPS

TXSTA=0X24; //ʹÄÜ´®¿Ú·¢ËÍ£¬Ñ¡Ôñ¸ßËÙ²¨ÌØÂÊ

RCSTA=0X90; //ʹÄÜ´®¿Ú¹¤×÷£¬Á¬Ðø½ÓÊÕ

RCIE=0X1; //ʹÄܽÓÊÕÖжÏ

GIE=0X1; //¿ª·ÅÈ«¾ÖÖжÏ

PEIE=0X1; //ʹÄÜÍⲿÖжÏ

while(1); //µÈ´ýÖжÏ

}

Page 9: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

//´®¿Ú½ÓÊÕÖжÏ

void interrupt usart(void)

{

if(RCIE&&RCIF) //ÅжÏÊÇ·ñΪ´®¿Ú½ÓÊÕÖжÏ

TXREG=RCREG; //°Ñ½ÓÊÕµ½µÄÊý¾Ý·¢ËÍ»ØÈ¥

}

Buzzer

/********************************************************************************************

* ʵÑéʮһ: Ä£Äⱨ¾¯Òô

* CPUÐͺţº PIC16F877A

* ¾§Õñ£º 4MHz

* ˵Ã÷: ·æÃùÆ÷Ä£Ä⾯µÑÉù

* ×÷ ÕߣºMCU2000

* ÈÕ ÆÚ£º2012Äê10ÔÂ19ÈÕ

±¾Àý³ÌÔÚ<<BK300 PICʵÑé°å>>Éϵ÷ÊÔͨ¹ý

*********************************************************************************************/

#include <pic.h> //°üº¬PICÍ·Îļþ Èí¼þ×Ô´øµÄÍ·Îļþ¿ÉÒÔÓÃ< >

#include "BoardConfig.h" //°üº¬¿ª·¢°åÓ²¼þ³õʼ»¯Í·Îļþ ×ÔÒÑдµÄÍ·ÎļþÓÃ" "

·ñ²âPICC±àÒë»á³ö´í

__CONFIG(0x3F32); //оƬÅäÖÃ×Ö

Page 10: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

#define SPEAK RE0

void delayUS(uchar i);

void delayMS(uchar a);

void baojing(void);

////////////Ö÷º¯Êý////////////////////////////////

void main(void)

{

Board_init(); //µ÷Óÿª·¢°åÓ²¼þ³õʼ»¯º¯Êý

ADCON1=0X07; //ÉèÖÃRE¿ÚΪÆÕͨÊý×ÖÊäÈëÊä³ö¶Ë¿Ú

while(1)

baojing();

}

////////////±¨¾¯×Óº¯Êý/////////////////////////

void baojing(void)

{

uint m=400;

while(--m){SPEAK=!SPEAK;delayUS(99);}m=200;

while(--m){SPEAK=!SPEAK;delayUS(199);}

Page 11: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

}

////////////10msÈ¥¶¶¶¯ÑÓʱ×Óº¯Êý//////////////////

void delayUS(uchar i)//US¼¶ÑÓʱ×Óº¯Êý

{

while(--i);

}

void delayMS(uchar a)//MS¼¶ÑÓʱ×Óº¯Êý

{

do

{delayUS(199);}while(--a);

}

PWM

/********************************************************************************************

* ʵÑéÊ®¶þ: PWM²¨ÐÎÊä³öʵÑé

* CPUÐͺţº PIC16F877A

* ¾§Õñ£º 4MHz

* ˵Ã÷: 1:PWMµ÷½ÚLEDÁÁ¶È

ʹÓð´¼üK18ºÍK19À´µ÷½ÚLED10µÄÁÁ¶È

¸ÃʵÀý³ÌÐòÒ²¿ÉÒÔÓÃÓÚµ÷½ÚÖ±Á÷µç»úתËÙ

2:PWM¿ØÖÆÖ±Á÷µç»úתËÙ

ÏȽ«¸Ã³ÌÐòÏÂÔص½µ¥Æ¬»ú£¬È»ºó½«Ö±Á÷µç»ú½Óµ½¿ª·¢

Page 12: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

°åµÄÓÒϽǵÄJ5²å×ù£¬°´K18ºÍK19¿É¿ØÖÆÖ±½Óµç»ú¼Ó¼õËÙ¡£

×¢Ò⣺ÐèÏÂÔØÍê³ÌÐòºóÔÙ½ÓÖ±Á÷µç»ú£¬ÒòΪµç»úºÄµçÁ¿±È½Ï

´ó·ÂÕæÆ÷»ò±à³ÌÆ÷¸ø¿ª·¢°åÌṩµÄµÄµçÔ´¿ÉÄܲ»¹»Óã¬

×öÖ±Á÷µç»ú»ò²½½øµç»úʵÑéʱÐèÁíÍâÓÃÒ»¸ùUSBÏ߸ø

¿ª·¢°å¹©µç¡£

* ×÷ ÕߣºMCU2000

* ÈÕ ÆÚ£º2012Äê10ÔÂ19ÈÕ

±¾Àý³ÌÔÚ<<BK300 PICʵÑé°å>>Éϵ÷ÊÔͨ¹ý

*********************************************************************************************/

#include <pic.h> //°üº¬PICÍ·Îļþ Èí¼þ×Ô´øµÄÍ·Îļþ¿ÉÒÔÓÃ< >

#include "BoardConfig.h" //°üº¬¿ª·¢°åÓ²¼þ³õʼ»¯Í·Îļþ ×ÔÒÑдµÄÍ·ÎļþÓÃ" "

·ñ²âPICC±àÒë»á³ö´í

__CONFIG(0x3F32); //оƬÅäÖÃ×Ö

#define u8 unsigned char

u8 a;

void CCP1INIT(void) ;

void delayUS(u8 i);

void delayMS(u8 a);

void anjian(void);

/*¸Ã³ÌÐòÓÃÓÚʹCCP1Ä£¿é²úÉú·Ö±æÂÊΪ10λµÄPWM²¨ÐΣ¬Õ¼¿Õ±ÈΪ50%*/

Page 13: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

/*CCP1Ä£¿éµÄPWM¹¤×÷·½Ê½³õʼ»¯×Ó³ÌÐò*/

/*Ö÷³ÌÐò*/

void main(void)

{

Board_init(); //µ÷Óÿª·¢°åÓ²¼þ³õʼ»¯º¯Êý

CCP1INIT(); /*CCP1Ä£¿éµÄPWM¹¤×÷·½Ê½³õʼ»¯*/

T2CON=0X04; /*´ò¿ªTMR2£¬ÇÒʹÆäÇ°·ÖƵΪ0£¬*/

/*ͬʱ¿ªÊ¼Êä³öPWM²¨ÐÎ*/

do

{

anjian();

}while(1); /*ϵͳ¿ªÊ¼Êä³öPWM²¨ÐÎ,Èç¹û*/

/*ϵͳÊǶàÈÎÎñµÄ,Ôò¿ÉÒÔÔÚ´ËÖ´ÐÐÆäËüÈÎÎñ,*/

/*¶ø²»»áÓ°ÏìPWM²¨ÐεIJúÉú*/

}

void CCP1INIT(void)

{

PORTB=0xff;

TRISB=0xff;

RBPU=0;

a=0XE0;

CCPR1L=a;

Page 14: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

CCPR2L=a;

CCP1CON=0X3C; /*ÉèÖÃCCP1Ä£¿éΪPWM¹¤×÷·½Ê½£¬ÇÒÆ乤×÷*/

/*Ñ»·µÄµÍ2λΪ11£¬¸ß8λΪ01111111=7F*/

CCP2CON=0X3C; /*ÉèÖÃCCP1Ä£¿éΪPWM¹¤×÷·½Ê½£¬ÇÒÆ乤×÷*/

/*Ñ»·µÄµÍ2λΪ11£¬¸ß8λΪ01111111=7F*/

INTCON=0X00; /*½ûÖ¹×ÜÖжϺÍÍâΧÖжÏ*/

PR2=0XFF; /*ÉèÖÃPWMµÄ¹¤×÷ÖÜÆÚ*/

TRISC=0XF8; /*ÉèÖÃCCP1 CCP2 RC1 RC2Òý½ÅΪÊä³ö·½Ê½*/

}

//ͨ¹ýK18 K19·Ö±ðµ÷´óºÍµ÷С(ͨ¹ýʾ²¨Æ÷¹Û¿´PWM²¨Ðεı仯)

//Èç¹ûÄãûÓÐʾ²¨Æ÷Ò²¿É°´K18ºÍK19°´¼üʱ¹Û¿´LED10ÁÁ¶ÈµÄ±ä»¯

void anjian(void)

{

TRISB=0xff;

if(RB1==0){delayMS(10);

if(RB1==0){a+=50;CCPR1L=a;CCPR2L=a;}

while(RB1==0);}

if(RB2==0){delayMS(10);

if(RB2==0){a-=50;CCPR1L=a;CCPR2L=a;}

while(RB2==0);}

}

////////////10msÈ¥¶¶¶¯ÑÓʱ×Óº¯Êý//////////////////

void delayUS(u8 i) //US¼¶ÑÓʱ×Óº¯Êý

Page 15: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

{ while(--i);}

void delayMS(u8 a) //MS¼¶ÑÓʱ×Óº¯Êý

{

do{delayUS(199);}while(--a);

}

LCD Display

/********************************************************************************************

* ʵÑéÊ®ËÄ: LCD1602ÏÔʾʵÑé

* CPUÐͺţº PIC16F877A

* ¾§Õñ£º 4MHz

* ˵Ã÷:

* ×÷ ÕߣºMCU2000

* ÈÕ ÆÚ£º2012Äê10ÔÂ19ÈÕ

±¾Àý³ÌÔÚ<<BK300 PICʵÑé°å>>Éϵ÷ÊÔͨ¹ý

*********************************************************************************************/

Page 16: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

#include <pic.h> //°üº¬PICÍ·Îļþ Èí¼þ×Ô´øµÄÍ·Îļþ¿ÉÒÔÓÃ< >

#include "BoardConfig.h" //°üº¬¿ª·¢°åÓ²¼þ³õʼ»¯Í·Îļþ ×ÔÒÑдµÄÍ·ÎļþÓÃ" "

·ñ²âPICC±àÒë»á³ö´í

__CONFIG(0x3F32); //оƬÅäÖÃ×Ö

#define ulint unsigned long int

#define LCD_DATA_PORT PORTD //¶¨ÒåLCDµÄD0-D7ËùÔڶ˿Ú

#define LCD_DATA_POUT TRISD=0x00 //¶¨ÒåLCDÊý¾Ý¶Ë¿ÚΪÊä³ö

#define LCD_DATA_PIN TRISD=0xFF //¶¨ÒåLCDÊý¾Ý¶Ë¿ÚΪÊäÈë(ÔÚ¶ÁLCD״̬ʱÓõ½)

#define LCD_Control_IN TRISC|=0XFF

#define LCD_Control_OUT TRISC&=0X00

#define LCD_EN_1 RC5=1

#define LCD_EN_0 RC5=0

//LCD¶Áд¿ØÖÆÒý½Å

#define LCD_RW_1 RC4=1

#define LCD_RW_0 RC4=0

//LCDÖ¸Áî»òÊý¾ÝÑ¡ÔñÒý½Å

#define LCD_RS_1 RC3=1

#define LCD_RS_0 RC3=0

void nus_delay(uint nus);

void nms_delay(uint nms);

Page 17: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

void lcd_init(void);

void LCD_en_write(void);

void wait_LCD_Ready(void);

void set_LCD_xy(uchar x, uchar y );

void LCD_write_onechar(uchar COMM,uchar DAT);

void LCD_write_string(uchar X,uchar Y,uchar *string);

/****************************************************

º¯ÊýÃû³Æ:main

¹¦ÄÜÃèÊö:Ö÷º¯Êý

Êä¡¡Èë: ÎÞ

Êä¡¡³ö: ÎÞ

ÈÕÆÚ£º2009-4-8

*****************************************************/

void main(void)

{

uchar START_DISPLAY1[]={" PIC BK300 "};

uchar START_DISPLAY2[]={" LCD162 TEST"};

Board_init(); //µ÷Óÿª·¢°åÓ²¼þ³õʼ»¯º¯Êý

RA3=1; //¹Ø±ÕLEDºÍÊýÂë¹ÜµÄÊä³ö

Page 18: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

lcd_init();

nms_delay(2);

while(1)

{

LCD_write_string(0,0,START_DISPLAY1);

LCD_write_string(0,1,START_DISPLAY2);

nms_delay(200);

}

}

/****************************************************

º¯ÊýÃû³Æ:lcd_init

¹¦ÄÜÃèÊö:LCD³õʼ»¯

Êä¡¡Èë: ÎÞ

Êä¡¡³ö: ÎÞ

ÈÕÆÚ£º2009-4-8

˵Ã÷:×¢Òâ³õʼ»¯¹ý³Ì²¢¼ÓÉÏÊʵ±ÑÓʱ

ºóÃæLCDµÄÏÔʾ·½Ê½¿É°´Êµ¼ÊÐèÒªÐÞ¸Ä

*****************************************************/

void lcd_init(void)

{

Page 19: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

nms_delay(15);

LCD_DATA_POUT;

LCD_Control_OUT;

LCD_write_onechar(0x38,0);

nms_delay(1);

LCD_write_onechar(0x38,0);

nms_delay(1);

LCD_write_onechar(0x38,0);

nms_delay(1);

LCD_write_onechar(0x38,0);

LCD_write_onechar(0x08,0); /*ÏÔʾ¹Ø±Õ*/

LCD_write_onechar(0x01,0); /*ÏÔʾÇåÆÁ*/

LCD_write_onechar(0x06,0); /*ÏÔʾ¹â±êÒƶ¯ÉèÖÃ*/

nms_delay(1);;

LCD_write_onechar(0x0C,0); /*ÏÔʾ¿ª¼°¹â±êÉèÖÃ*/

}

/****************************************************

º¯ÊýÃû³Æ:LCD_en_write

¹¦ÄÜÃèÊö:EN¶Ë²úÉúÒ»¸öÂö³å£¬Ð´LCD

Êä¡¡Èë: ÎÞ

Êä¡¡³ö: ÎÞ

ÈÕÆÚ£º2009-4-8

*****************************************************/

void LCD_en_write(void)

Page 20: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

{

LCD_EN_1;

nus_delay(150); //EÂö³åÖÜÆÚ×îС150ns

LCD_EN_0;

}

/****************************************************

º¯ÊýÃû³Æ:wait_LCD_Ready

¹¦ÄÜÃèÊö:ÅжÏLCDæ±êÖ¾

Êä¡¡Èë: ÎÞ

Êä¡¡³ö: ÎÞ

ÈÕÆÚ£º2009-4-8

*****************************************************/

void wait_LCD_Ready(void)

{

uchar temp1;

LCD_DATA_PORT=0XFF;

LCD_DATA_PIN; //D7ÉèΪÊäÈ룬׼±¸ÅжÏLCDæ±êÖ¾

//1Ϊæ 0Ϊ¿ÕÏÐ

LCD_RS_0;

LCD_RW_1; //¶Á

LCD_EN_1;

nus_delay(2);

while((temp1=PORTD & 0X80));

LCD_EN_0;

Page 21: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

LCD_RS_1;

LCD_DATA_POUT;

}

/****************************************************

º¯ÊýÃû³Æ:LCD_write_onechar

¹¦ÄÜÃèÊö:дһ¸ö×Ö½Úµ½LCD

Êä¡¡Èë: COMM(Ö¸Áî) DAT£¨ÏÔʾÊý¾Ý)

Êä¡¡³ö: ÎÞ

ÈÕÆÚ£º2009-4-8

*****************************************************/

void LCD_write_onechar(uchar COMM,uchar DAT)

{

wait_LCD_Ready(); //µÈ´ýLCD¿ÕÏÐ

LCD_RW_0; //д

//дÊý¾Ý

if(COMM==0)

{

LCD_RS_1; //RS¸ßµçƽÏòLCDдÊý¾Ý

LCD_DATA_PORT=DAT;

}

//дÃüÁî

else

{

Page 22: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

LCD_RS_0;

LCD_DATA_PORT=COMM;

}

LCD_en_write();

nus_delay(2);

LCD_RW_1;

LCD_RS_1;

}

/****************************************************

º¯ÊýÃû³Æ:LCD_write_string

¹¦ÄÜÃèÊö:LCD×Ö·û´®ÏÔʾº¯Êý

Êä¡¡Èë: x/y£¨XÓëY×ø±ê) *string£¨×Ö·û´®Ê×µØÖ·)

Êä¡¡³ö: ÎÞ

ÈÕÆÚ£º2009-4-8

*****************************************************/

void LCD_write_string(uchar X,uchar Y,uchar *string)

{

set_LCD_xy( X, Y ); //ÉèÖÃLCDÏÔʾ×ø±ê

while (*string)

{

LCD_write_onechar(0,*string );

string ++; //Ö¸ÏòÏÂÒ»ÏÔʾ×Ö·ûµØÖ·

}

}

Page 23: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

/****************************************************

º¯ÊýÃû³Æ:set_LCD_xy

¹¦ÄÜÃèÊö:ÉèÖÃÏÔʾ×ø±ê

Êä¡¡Èë: x/y£¨XÓëY×ø±ê)

Êä¡¡³ö: ÎÞ

ÈÕÆÚ£º2009-4-8

˵Ã÷: LMB1602µÚÒ»ÐÐÊ×µØַΪ0x80

µÚ¶þÐÐΪ0xC0

ÈÕÆÚ£º2009-4-7

*****************************************************/

void set_LCD_xy(uchar x, uchar y )

{

uchar DIS_address;

if (y == 0)

DIS_address = 0x80 + x; //µÚÒ»ÐÐXÁÐ

else

DIS_address = 0xc0 + x;

LCD_write_onechar( DIS_address, 0 ); //µÚ¶þÐÐXÁÐ

}

/****************************************************

º¯ÊýÃû³Æ:nus_delay

¹¦ÄÜÃèÊö:΢Ã뼶ÑÓʱ×Ó³ÌÐò

Êä¡¡Èë: ÎÞ

Page 24: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

Êä¡¡³ö: ÎÞ

ÈÕÆÚ£º2009-4-8

˵Ã÷:

¾§ÕñΪ11.0592Mʱ

ÈÕÆÚ£º2009-4-7

*****************************************************/

void nus_delay(uint nus)

{

int j=10;

while(nus--)

{

while(j--);

j=10;

}

}

/****************************************************

º¯ÊýÃû³Æ:nms_delay

¹¦ÄÜÃèÊö:ºÁÃ뼶ÑÓʱ×Ó³ÌÐò

Êä¡¡Èë: ÎÞ

Êä¡¡³ö: ÎÞ

ÈÕÆÚ£º2009-4-8

˵Ã÷:

¾§ÕñΪ4Mʱ

*****************************************************/

void nms_delay(uint nms)

Page 25: PIC16F877A Lab Manual

Trident Techlabs Pvt. Ltd., S7, Mamanji Center, Thiru Vi Ka Industrial Estate, Guindy, Chennai – 32 Phone No: 044 43358483/84, www.tridenttechlabs.com

{

while(nms--)

nus_delay(1000);

}