You are on page 1of 16

LCD 16x2

Mr. NgocAnh
Trần Thị Thiêm
Thiết lập
phần cứng
- D0  D7: RD0  RD7
- RS, RW, RE: RE0  RE2
- VSS : GND
- VDD : Power
- VEE : POT-HG
Lập trình cho LCD
- Thư viện: #include<tv_lcd.c>
- Các lệnh thường dùng:
+ LCD_SETUP(); //thiết lập lcd (phải có trong main)
+ LCD_COMMAND (); //lựa chọn vị trí xuất trên lcd
+ LCD_DATA (); //xuất chuỗi, kí tự
LCD 16x2
Mr. Bình
Trần Thị Thiêm
Thiết lập
phần cứng
- D4  D7 : RD4  RD7
- E : RD0
- RS : RD1
- RW : RD2
- VSS : GND
- VDD : Power
- VEE : POT-HG
Lập trình cho LCD

- Thư viện: #include<lcd.c>


- Các lệnh thường dùng:
+ lcd_init(); //khởi tạo lcd (phải có trong main)
+ lcd_gotoxy(x,y); //lựa chọn vị trí xuất trên lcd (x: cột, y: hàng)
+ printf(lcd_putc,“Hello”); //xuất chuỗi, kí tự
+ lcd_putc(); //xuất kí tự
Giải mã LCD – Mr. Ngọc Anh
Void GM_LCD()
{ 0x30: số 0 trong mã ASCII

DV = GT%10 + 0x30;
CH = GT/10 + 0x30;
if(CH==0x30) CH=0x20;
} 0x20: khoảng trắng
Hiển thị LCD – Mr. Ngọc Anh
Void HT_LCD()
{
lcd_command(0x80); //hàng 1
lcd_data(“Gia tri la: “);
lcd_command(0xC0); //hàng 2
lcd_data(CH);lcd_data(DV);
}
Hiển thị LCD – Mr. Bình
Vd: Xuất giá trị biến Dem ở đầu hàng đầu tiên
Unsigned int8 Dem;

Lcd_gotoxy(1,1);
Printf(lcd_putc, “%u”, Dem);
Các kí tự đặc biệt
⁰C: 0xDF  lcd_putc(0xDF);
%: 0x25  lcd_putc(0x25);
VD
VD1: Viết chương trình đếm giây (không chính xác) hiển thị ở
giữa hàng đầu của LCD.

VD2: Hãy vẽ mạch nguyên lý và viết chương trình cho nút nhấn
gắn ở C2 điều khiển biến đếm (0-9). Xuất giá trị đếm ra Led 7
đoạn gắn ở Port B và hiển thị trên LCD như sau:
//Hàng 1: Dem = (đầu hàng)
//Hàng 2: X (X là giá trị biến đếm – cuối hàng)
Bài tập
BT1: Hãy vẽ mạch nguyên lý và viết chương trình cho nút Up,
Down gắn ở C0, C1 điều khiển biến đếm lên, xuống (0-25).
Xuất dữ liệu lên LCD như sau:
//Hàng 1: Gia tri = XX (Đầu hàng, XX là gtri Dem)
//Hàng 2: High/Low (Đầu hàng, Dem>10: High,
Dem<=10: Low)
Bài tập
BT2: Hãy vẽ mạch nguyên lý và viết chương trình cho nút Up,
Down, On/Off gắn ở C0, C1, C2 điều khiển biến đếm lên,
xuống (0-25) và sáng/tắt LCD. Khi On, xuất dữ liệu lên LCD
như sau:
//Hàng 1: Gia tri = XX (Đầu hàng, XX là gtri Dem)
//Hàng 2: ON (Đầu hàng)
Nếu Off, Hàng 1 không hiển thị gì. Hàng 2 hiển thị OFF
ADC
- 14 kênh Analog (AN0 – AN13)
- Module ADC 10bit  #device ADC=10
- Unsigned int16 ND;
- setup_adc(ADC_CLOCK_INTERNAL);
- setup_adc(ADC_CLOCK_DIV_32);
- setup_adc_ports(sAN4|sAN11|VSS_VDD);
- set_adc_channel(4);
- LM35  Tỷ lệ chênh lệch = 2.046  ND = read_adc()/2.046;
- POT-HG  Tỷ lệ chênh lệch = 10.231  ND= read_adc()/10.231;
Bài tập
1. Xét ứng dụng PIC 16F887 sử dụng dao động 8MHz.
Led 7 đoạn hiển thị Mode = 0, 1, 2 (gắn ở Port A) khi chỉnh bằng nút Select gắn ở RB0.
Mode = 0: Mặc định đo liên tục 2 kênh 1 (AN5) và kênh 2 (AN6); tắt cảnh báo ở led 7
đoạn Level
Mode = 1: Chỉ đo kênh 1
Mode = 2: Chỉ đo kênh 2
Hiển thị nhiệt độ lên LCD 16x2 gắn ở Port D như sau: T1 = 37⁰C
T2 = OFF
- Kênh nào không đo thì hiển thị OFF trên LCD.
- Nhiệt độ kênh nào > 50⁰C thì hiển thị H, ngược lại L trên led 7 đoạn Level gắn ở
Port C.
- Nhấn nút ON/OFF (RB1) để tắt hết LCD.
Bài tập

You might also like