Top Banner
17
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 2: LCD

Câu lạc bộ Nghiên cứu Khoa học Khoa Điện – Điện tử

Page 3: LCD

16 columns 2 rows0 1 2 15

0

1

40 41 42 55

Page 4: LCD

2DEATH

VSSVDDVEEVEERSR/WEDOD1D2D3D4D5D6D7AK

L C D 1 6 X2

123456789

1 01 11 21 31 41 51 6

No. Name Function

1 VSS GND

2 VDD + 5V

3 VEE Constract

No. Name Function

4 RS

Enable pins5 R/W

6 E

No. Name Function

11-14 D4 - D7 Data No. Name Function

15,16 A, K Blacklight

Page 5: LCD

2DEATH

VSSVDDVEEVEERSR/WEDOD1D2D3D4D5D6D7AK

L C D 1 6 X2

123456789

1 01 11 21 31 41 51 6

Where to go

To Source

Where to go

To 3 I/O pins of PIC

Where to go

To 4 I/O pins of PIC

Where to go

A VCC, K GND

Page 6: LCD

L 1 2

L 9

132

R v _ lc d 1 0 K

L 6

L 4

M A L E

BU

S 2

MC

U

1234567891 01 11 21 3

L 1 1

2DEATH

VSSVDDVEEVEERSR/WEDOD1D2D3D4D5D6D7AK

L C D 1 6 X2

123456789

1 01 11 21 31 41 51 6

L 7

G N DL 1 5

V C C

R_A

K10

V C C

L 1 3

SW

_A

K

12

G N D

L 3

L 5

L 1 0

L 1 4

L 8

Page 7: LCD

After being powered

LCD displays like this:

Page 8: LCD

// initialization LCD modulevoid lcd_init();

// clear text, move cursor to (0,0)void lcd_clear();

// LCD busy or not?unsigned char lcd_busy();

// move cursor to (x,y)void lcd_gotoxy(unsigned char col, unsigned char row);

// put 1 character on LCDvoid lcd_putc(char c);

// Put a string on LCDvoid lcd_puts(const char* s);

Page 9: LCD

// Noteslcd_functions’ names are defined in lcd.hlcd_functions’ source code are written in lcd.c

Page 10: LCD

/* Pins mapping */#ifndef LCD_RS#define LCD_RS RD1#define LCD_RW RD2#define LCD_EN RD3#define LCD_DATA4 RD4#define LCD_DATA5 RD5#define LCD_DATA6 RD6#define LCD_DATA7 RD7

#define LCD_RS_TRIS TRISD1#define LCD_RW_TRIS TRISD2#define LCD_EN_TRIS TRISD3#define LCD_DATA4_TRIS TRISD4#define LCD_DATA5_TRIS TRISD5#define LCD_DATA6_TRIS TRISD6#define LCD_DATA7_TRIS TRISD7#endif

Enable

Data

lcd.h

Use portD to control

LCD

Page 11: LCD

/* Pins mapping */#ifndef LCD_RS#define LCD_RS RC1#define LCD_RW RC2#define LCD_EN RC3#define LCD_DATA4 RC4#define LCD_DATA5 RC5#define LCD_DATA6 RC6#define LCD_DATA7 RC7

#define LCD_RS_TRIS TRISC1#define LCD_RW_TRIS TRISC2#define LCD_EN_TRIS TRISC3#define LCD_DATA4_TRIS TRISC4#define LCD_DATA5_TRIS TRISC5#define LCD_DATA6_TRIS TRISC6#define LCD_DATA7_TRIS TRISC7#endif

Enable

Data

lcd.h

Use portC to control

LCD

Page 12: LCD

L 1 2

L 9

132

R v _ lc d 1 0 K

L 6

L 4

M A L E

BU

S 2

MC

U

1234567891 01 11 21 3

L 1 1

2DEATH

VSSVDDVEEVEERSR/WEDOD1D2D3D4D5D6D7AK

L C D 1 6 X2

123456789

1 01 11 21 31 41 51 6

L 7

G N DL 1 5

V C C

R_A

K10

V C C

L 1 3

SW

_A

K

12

G N D

L 3

L 5

L 1 0

L 1 4

L 8

1: GND2: VCC

3: RD14: RD25: RD3

10: RD411: RD512: RD613: RD7

Page 13: LCD

Case study 1:Display your name on LCD & Make it ‘blinky’

Case study 2:Make your name ‘run form left to right’

Page 14: LCD

Case study 3:How to display a variable on LCD?

Hints: LCD chỉ hiển thị được các dữ liệu dạng “kí tự” (text) theo bảng mã ASCII, vì vậy để hiển thị giá trị 1 biến lên LCD ta phải làm một vài thao tác chuyển đổi: -Tách riêng các chữ số của biến (tách hàng ngàn, trăm, chục, đơn vị riêng)-Đối với mỗi chữ số, phải cộng thêm 1 lượng bằng 0x30 để có được mã ASCII tương ứng.-Hiển thị lần lượt từng “kí tự” lên LCD

Page 15: LCD

#include <htc.h>#include "lcd.h"

__CONFIG(XT & WDTDIS & PWRTEN & MCLREN & UNPROTECT & SWBOREN & IESODIS & FCMDIS & LVPDIS & DEBUGDIS);__CONFIG(BORV21);

#define _XTAL_FREQ 4000000

Please view full code in file lcd_1_main.c

Case study 1 – Sample CodeDisplay your name on LCD & Make it ‘blinky’

Page 16: LCD

Case study 1 – Sample CodeDisplay your name on LCD & Make it ‘blinky’

void main(void){

lcd_init();__delay_ms(100);while (1){

lcd_clear();delay_1s();lcd_puts("Name"); //Put "Name" on row 0lcd_gotoxy(0,1); //Go to column 0, row 1lcd_puts("4050xxxx"); //Put Student ID on row 1delay_1s();

};} Please view full code in file lcd_1_main.c

Page 17: LCD

1. Bài tập Timer1 + LCD: giả lập đồng hồ số- Module thạch anh 32.768khz, 2 tụ 22p Clock cho timer 1- Chu kì của timer 1 là 1ms 1000 T1 = 1s- hiển thị trên LCD: Hàng 1 “23 : 59”Hàng 2 “60 s”- Cứ 1s đếm lùi 1 đơn vị, dấu “:” nhấp nháy- Sau 60s hiển thị “00:00”

“MUNG NAM MOI”+ LEDs nhấp nháy