Cổng Kết Nối - Glong Electronic

Xin Chào!

Đây là trang đang thử nghiệm và hoàn thiện nội dung, mong các bạn thông cảm

Mọi thắc mắc và góp ý xin gửi về mail: Nglongbs@gmail.com

Xin chân thành cảm ơn!


 
CLB ĐIỆN TỬ
Công khai group · 94 thành viên
Tham gia nhóm
 

Các bài tập về hiển thị LCD 16x2

BT1: Hiển thị các ký tự trên 2 hàng

Sơ đồ mạch điện:

Cinque Terre

Yêu cầu:

- Hiển thị dòng chữ "TEST LCD 16X2" ở hàng thứ 1

- chờ 1s, sau đó hiển thị dòng chữ "cdn quy nhon" ở hàng thứ 2

- Chờ 1s rồi tắt tất cả 2 dòng chữ, lặp lại quá trình từ đầu

Mô phỏng yêu cầu:

Cinque Terre

Chương trình lập trình:

- Thư viện delay_us:


void delay_us(unsigned int t)
{
   unsigned int i;
   for(i=0;i<t;i++);
}
void delay_ms(unsigned int t){
	unsigned int i,j;
	for(i=0;i<t;i++)
	for(j=0;j<125;j++);
}
	

- Thư viện LCD


  #define LCD_RS   P2_2
  #define LCD_RW   P2_1
  #define LCD_EN   P2_0
  #define LCD_D4   P0_4
  #define LCD_D5   P0_5
  #define LCD_D6   P0_6         
  #define LCD_D7   P0_7

void LCD_Enable(void){
   LCD_EN =1;
   delay_us(3);
   LCD_EN=0;
   delay_us(50); 
}
//Ham Gui 4 Bit Du Lieu Ra LCD
void LCD_Send4Bit(unsigned char Data){
   LCD_D4=Data & 0x01;
   LCD_D5=(Data>>1)&1;
   LCD_D6=(Data>>2)&1;
   LCD_D7=(Data>>3)&1;
}
// Ham Gui 1 Lenh Cho LCD
void LCD_SendCommand(unsigned char command){
   LCD_Send4Bit(command >>4);/* Gui 4 bit cao */
   LCD_Enable();
   LCD_Send4Bit(command);   /* Gui 4 bit thap*/
   LCD_Enable();
}
void LCD_Clear(){// Ham Xoa Man Hinh LCD
    LCD_SendCommand(0x01);  
     delay_us(10);
}
// Ham Khoi Tao LCD
void LCD_Init(){
   LCD_Send4Bit(0x00);
   delay_ms(20);
   LCD_RS=0;
   //LCD_RW=0;
   LCD_Send4Bit(0x03);
   LCD_Enable();
   delay_ms(5);
   LCD_Enable();
   delay_us(100);
   LCD_Enable();
   LCD_Send4Bit(0x02);
   LCD_Enable();
   LCD_SendCommand( 0x28 ); // giao thuc 4 bit, hien thi 2 hang, ki tu 5x8
   LCD_SendCommand( 0x0c); // cho phep hien thi man hinh
   LCD_SendCommand( 0x06 ); // tang ID, khong dich khung hinh
   LCD_SendCommand(0x01); // xoa toan bo khung hinh
}
void LCD_Gotoxy(unsigned char x, unsigned char y)
///////////////////tro toi cot --->>> hang
{
   unsigned char address;
     if(!y)address=(0x80+x);
     else address=(0xc0+x);
     delay_us(1000);
     LCD_SendCommand(address);
     delay_us(50);
}
void LCD_PutChar(unsigned char Data){//Ham Gui 1 Ki Tu
    LCD_RS=1;
    LCD_SendCommand(Data);
    LCD_RS=0 ;
}
void LCD_Puts (char *s){//Ham gui 1 chuoi ky tu
      while (*s){
         LCD_PutChar(*s);
        s++;
      }
}
	

- Chương trình chính


#include <REGX52.H>
#include "delay_us.c"
#include "lcd16x2.c"
void main()
{
	char c=0;
	P2_3=0;			// bat led màn h́nh sáng
	P0=0x00;
  LCD_RW=0;
  LCD_Init();
while(1)
{
	 LCD_Gotoxy(0,0);
	 LCD_Puts ("TEST LCD 16X2");
	 delay_ms(500);
	 LCD_Gotoxy(0,1);
	 LCD_Puts("cdn quy nhon");
	 delay_ms(500);
	 LCD_Clear();
	 delay_ms(500);
	 c++;	
}
}
	

Hi vọng sau bài học này các bạn có được chút thu hoạch cho mình.

Cám ơn và hẹn gặp lại!