[H17] LCD16X2



 
Trang ChínhTrang Chính  GalleryGallery  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Thành viênThành viên  NhómNhóm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  
News & Announcements
  • Gallery & Others
Trang ChínhTrang Chính  GalleryGallery  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Thành viênThành viên  NhómNhóm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  


[H17] LCD16X2Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down
November 5th 2011, 4:04 pm
avatar
[Thành viên] - RikikudoLoveTukimiri


Tổng số bài gửi : 674
Số lần được cảm ơn. : 91
Join date : 22/04/2011
Age : 25
Đến từ : HaNam Province

Bài gửiTiêu đề: [H17] LCD16X2
Xem lý lịch thành viên

Nội Dung Bài Viết:
<<<----------------------------->>>
Chào các bạn hôm nay mình chuyển sang bài điều khiển LCD 16X 2 nha ! Trông có vẻ phức tạp nhưng quét LCD có khi dễn hơn matrix rất nhiều . Chúng ta mới tìm hiểu LCD 8 bit đã , xuất 4 bit để sau.



Chúng ta đi tìm hiểu một chút về LCD 16x2 :
Đây là loại gồm 16 ký tự x2 dòng ,mỗi ký tự được tạo ra từ một ma trận điểm sáng kích cỡ 5x7 hoặc 5x10
Sơ đồ chân:



Chân 15 và chân 16: ghi là A và K. Nó là anot và katot của một con led dùng để sáng LCD trong bóng tối, chúng ta có thể k nối , nếu sử dụng nối chân 15 với trở 220 or 330 ôm lên VCC , chân 16 nối đất.

Để mạch hoạt động chúng ta mắc theo sơ đồ sau đây:



Trên là sơ đồ theo ví dụ của mình , các bạn có thể mắc bất kỳ đâu tùy ứng dụng của bạn..Thường chân dữ liệu dùng Port 0 hoặc Port 2 VĐK , thiết kế mạch in nên để IC dưới gầm LCD cho nhỏ gọn .

* Nguyên lý hoạt động

-Các chân 1,2,3 là các chân VSS , VDD, VEE trong đó VSS chân nối đất , VEE chân chọn độ tương phản chân này dc chọn qua 1 biến trở 5K một đầu nối VCC , một đầu nối mát . Chân VDD nối dương nguồn .

- Chân chọn thanh ghi RS (Register Select): Có hai thanh ghi trong LCD, chân RS(Register Select) được dùng để chọn thanh ghi, như sau:
Nếu RS = 0 ở chế độ ghi lệnh như xóa màn hình , bật tắt con trỏ...
Nếu RS =1 ở chế độ ghi dữ liệu như hiển thị ký tự , chữ số lên màn hình .

-Chân đọc/ ghi (R/W): Đầu vào đọc/ ghi cho phép người dùng ghi thông tin lên LCD khi R/W = 0 hoặc đọc thông tin LCD khi
R/W = 1.

-Chân cho phép E (Enable): Chân cho phép E được sử dụng bởi LCD để chốt dữ liệu của nó. Khi dữ liệu được đến chân dữ liệu thì cần có 1 xung từ mức cao xuống mức thấp ở chân này để LCD chốt dữ liệu , xung này phải có độ rộng tối thiểu 450ns.

Chân D0 - D7: Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trong
LCD. Để hiển thị các chữ cái và các con số chúng ta gửi các mã ASCII của các chữ cái và các con số tương ứng đến các chân này khi bật RS =1;

* Bảng mã lệnh trong LCD 16x2 :



Điều khiển LCD qua các bước sau :

-Chỉnh độ tương phản LCD cho thích hợp , nhiều trường hợp k chú ý LCD để tương phản quá thấp k nhìn thấy gì => đổi lỗi cho mạch hỏng.
-Khởi tạo LCD set số dòng , bật tắt con trỏ...
- Gán giá trị thích hợp cho các chân điều khiển RS, RW ,E với các chế độ
- Xuất dữ liệu vào POrt data-
- Kiểm tra LCD có bận k để tiến hành xuất tiếp.
-Quay lại bước 1.

Chúng ta đi vào ví dụ cụ thể . Ở đây mình sẽ xuất chữ [You must be registered and logged in to see this link.] lên 2 dòng của LCD



Code :
Trích dẫn
#include "REGX52.H"
#include "stdio.H"

//------------Khoi tao bien va cac gia tri gan-------------//
sbit RS_LCD = P2^5;
sbit RW_LCD = P2^6;
sbit E_LCD = P2^7;

//---------------Sau day la cac chuong trinh con------------//

//--------------Ham tre khoang thoi gian rat ngan phuc vu viec kiem tr co ban---------------//
void delay_short()
{
unsigned int i;
for(i=0;i<3;i++);
}//--------------****------------------//

//------------Ham tre 2---------------//
void delay(unsigned int time) // Thoi gian time ms
{
TMOD = 0x01; // Timer 0 che do 1
while (time--)
{
TH0 = -1000/256;
TL0 = -1000%256;
TR0 = 1;
while (!TF0);
TR0 = 0;
TF0 = 0;
}
}
//-----------------******----------------//

//--------------Ham kiem tra co ban (busy_flag)--------------??
void kt_ban()
{
unsigned char x;
P0 = 0xff;
RS_LCD = 0;
RW_LCD = 1;
do
{
E_LCD = 1;
delay(50);
E_LCD = 0;
x=P0;
x=x&0x80;
}
while(x!=0x80);
}//-----------*******--------------------//

//---------------Ham ghi lenh giao tiep voi LCD---------------//
void ghi_lenh(unsigned char lenh)
{
kt_ban();
delay(50);
P0 = lenh;
RS_LCD = 0; // Chon thanh ghi lenh
RW_LCD = 0; // Chon che do ghi du lieu tu 8051 vao LCD
E_LCD = 1;
delay_short();
E_LCD = 0;
}//------------*******-----------------//

//-----------Ham ghi ky tu ra LCD------------//
void ghi_kytu(unsigned char kytu)
{
kt_ban();
delay(50);
P0 = kytu;
RS_LCD = 1; // Chon che do doc du lieu tu 8051
RW_LCD = 0;
E_LCD =1;
delay_short();
E_LCD = 0;
}//------------*******-----------------//

//-----------Ham ghi nhanh ky tu ra LCD------------//
void ghi_nhanh ( unsigned char kytu)
{
delay_short();
P0 = kytu;
RS_LCD = 1;
RW_LCD = 0;
E_LCD = 1;
delay_short();
E_LCD = 0;
}//--------------***********-------------//

//-----------Ham ghi chuoi ky tu ra LCD------------//
void ghi_chuoi(char *str)
{
while(*str)
{
delay(50);
ghi_kytu(*str);
str++;

}
}//-----------********------------//

//-----------Ham ghi nhanh chuoi ky tu ra LCD------------//
void ghi_nhanh_chuoi(char *str)
{
while(*str){
ghi_nhanh(*str);
str++;
}
}
//-----------************------------//

//-----------Ham ghi so nguyen ra LCD------------//
void ghi_so_nguyen(unsigned char so)
{
unsigned char a,b,c;
a=so/100; // Lay phan tram
b=(so-100*a)/10; // Lay phan chuc
c=(so-100*a-10*b); // Lay phan don vi
ghi_nhanh(a+48); // Doi ra hang tram, ma ascii
ghi_nhanh(b+48); // Doi ra hang chuc, ma ascii
ghi_nhanh(c+48); // Doi ra hang don vi, ma ascii
}
//-----------***********------------//

//-----------Ham khoi tao LCD------------//
void setting_LCD()
{
ghi_lenh(0x38);
ghi_lenh(0x01); // Xoa man hinh
ghi_lenh(0x0f); // Co dich hien thi
}
//-----------**********------------//

/*********************************/
/* CON DAY LA CHUONG TRINH CHINH */
/* ----------??????--------------*/
/*********************************/

void main()
{
setting_LCD();
ghi_lenh(0x01);
ghi_lenh(0x0c);
ghi_chuoi("http://");
ghi_lenh(0xc0);
ghi_lenh(0x0c);
ghi_chuoi("machdientu.net");
delay(300);
while(1);
}


Bạn có thể down ví dụ tại link sau:

[You must be registered and logged in to see this link.]

Các ứng dụng mình sử dụng LCD :




_________________

TĐH2 - K5 2010-2014
Hiếu==| | | ==๑۩۞۩๑----- ♥️♥️Hiếu♥️Bích♥️♥️™️ -----๑۩۞۩๑==| | |==Bích
Thấy hay thì THANK cho cái


Chiều buồn ngồi xé 500
Xé nhầm năm chục buồn ơi là buồn Crying or Very sad

Wondering? Between numerrous of waves and storm . only dream winged by diligence can be fly Nghiện game

Copy đường link dưới đây gửi đến nick yahoo bạn bè!



November 6th 2011, 2:21 pm
avatar
[Thành viên] - halai10


Tổng số bài gửi : 68
Số lần được cảm ơn. : 3
Join date : 06/06/2011
Age : 25
Đến từ : thanh hoa

Bài gửiTiêu đề: Re: [H17] LCD16X2
Xem lý lịch thành viên

Nội Dung Bài Viết:
<<<----------------------------->>>
cũng lằng nhằng nhỉ.


Copy đường link dưới đây gửi đến nick yahoo bạn bè!



November 6th 2011, 2:22 pm
avatar
[Thành viên] - halai10


Tổng số bài gửi : 68
Số lần được cảm ơn. : 3
Join date : 06/06/2011
Age : 25
Đến từ : thanh hoa

Bài gửiTiêu đề: Re: [H17] LCD16X2
Xem lý lịch thành viên

Nội Dung Bài Viết:
<<<----------------------------->>>


Copy đường link dưới đây gửi đến nick yahoo bạn bè!



February 22nd 2012, 11:52 pm
avatar
[Thành viên] - nguyenhieu192scorpio


Tổng số bài gửi : 96
Số lần được cảm ơn. : 3
Join date : 05/06/2011
Age : 25
Đến từ : Bắc Ninh

Bài gửiTiêu đề: Re: [H17] LCD16X2
Xem lý lịch thành viên http://www.facebook.com

Nội Dung Bài Viết:
<<<----------------------------->>>
choáng rồi


Copy đường link dưới đây gửi đến nick yahoo bạn bè!



February 23rd 2012, 12:04 am
avatar
[Thành viên] - RikikudoLoveTukimiri


Tổng số bài gửi : 674
Số lần được cảm ơn. : 91
Join date : 22/04/2011
Age : 25
Đến từ : HaNam Province

Bài gửiTiêu đề: Re: [H17] LCD16X2
Xem lý lịch thành viên

Nội Dung Bài Viết:
<<<----------------------------->>>
cái LCD này khi bạn học đến môn vi điều khiển thì sẽ hết choáng.
hình như kì 2 năm 3 sẽ học


_________________

TĐH2 - K5 2010-2014
Hiếu==| | | ==๑۩۞۩๑----- ♥️♥️Hiếu♥️Bích♥️♥️™️ -----๑۩۞۩๑==| | |==Bích
Thấy hay thì THANK cho cái


Chiều buồn ngồi xé 500
Xé nhầm năm chục buồn ơi là buồn Crying or Very sad

Wondering? Between numerrous of waves and storm . only dream winged by diligence can be fly Nghiện game

Copy đường link dưới đây gửi đến nick yahoo bạn bè!



March 2nd 2012, 1:40 pm
avatar
[Thành viên] - duythai510n


Tổng số bài gửi : 92
Số lần được cảm ơn. : 2
Join date : 27/05/2011
Age : 25
Đến từ : hà nội

Bài gửiTiêu đề: Re: [H17] LCD16X2
Xem lý lịch thành viên https://www.facebook.com/duythai510n

Nội Dung Bài Viết:
<<<----------------------------->>>
haizz


Copy đường link dưới đây gửi đến nick yahoo bạn bè!



March 5th 2012, 8:37 pm
avatar
[Thành viên] - ngohungquang


Tổng số bài gửi : 185
Số lần được cảm ơn. : 11
Join date : 29/05/2011
Age : 27
Đến từ : nghe an

Bài gửiTiêu đề: Re: [H17] LCD16X2
Xem lý lịch thành viên

Nội Dung Bài Viết:
<<<----------------------------->>>
mấy cái này khó hiểu quá
anh em đến nhà thằng hiếu nó chỉ cho


Copy đường link dưới đây gửi đến nick yahoo bạn bè!



[Thành viên] - Sponsored content


Bài gửiTiêu đề: Re: [H17] LCD16X2

Nội Dung Bài Viết:
<<<----------------------------->>>


Copy đường link dưới đây gửi đến nick yahoo bạn bè!



[H17] LCD16X2

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang
Trang 1 trong tổng số 1 trang
* Viết tiếng Việt có dấu, là tôn trọng người đọc.
* Chia sẻ bài sưu tầm có ghi rỏ nguồn, là tôn trọng người viết.
* Thực hiện những điều trên, là tôn trọng chính mình.
-Nếu chèn smilies có vấn đề thì bấm A/a trên phải khung viết bài
YÊU CẦU VIẾT TIẾNG VIỆT CÓ DẤU

Permissions in this forum:Bạn không có quyền trả lời bài viết
 :: GIAO LƯU - CHIA SẺ KIẾN THỨC :: CHIA SẺ KIẾN THỨC CÙNG NHAU-
/* Số lượt truy cập */