Upload
thu-phung
View
31
Download
1
Embed Size (px)
Citation preview
Câu lạc bộ Nghiên cứu Khoa học Khoa Điện – Điện tử
16 columns 2 rows0 1 2 15
0
1
40 41 42 55
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
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
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
After being powered
LCD displays like this:
// 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);
// Noteslcd_functions’ names are defined in lcd.hlcd_functions’ source code are written in lcd.c
/* 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
/* 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
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
Case study 1:Display your name on LCD & Make it ‘blinky’
Case study 2:Make your name ‘run form left to right’
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
#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’
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
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