Showing posts with label LCD. Show all posts
Showing posts with label LCD. Show all posts

Saturday, September 19, 2015

Lập trình hiển thị LCD qua giao thức I2C trên pic 12f1840

Posted by dientudieukhien at 3:49 PM 0 Comments
    Việc lập trình với LCD trên mikroc mình đã post nhiều project, nó khá đơn giản vì mikroc đã hỗ trợ tất cả các thư viện, chỉ cần bạn kết nối đúng và khai báo port đúng là ok.

Lập trình LCD sử dụng giao thức I2C

Read More »

Tuesday, May 26, 2015

Học lập trình vi điều khiển pic qua 21 bài thực hành

Posted by dientudieukhien at 1:57 AM 0 Comments
Qua 21 bài thực hành lập trình vi điều khiển pic này sẽ giúp bạn nắm bắt được cách viết chương trình trong Mikroc và nhiều thuật toán khác nhau, từ các bài học cơ bản này sẽ giúp bạn nâng cao kỹ năng lập trình trên vi điều khiển từ đó tạo được nền tản cho nhiều project phức tạp hơn.


Bài 1. Flashing an led

   Trong bài thực hành này bạn sẽ lập trình cho một led nhấp nháy bằng cách đảo trạng tháy logic của port, truy cập trang>>      

Bài 2. Lập trình với Button

   Ở bài 2 này chúng ta làm quen với nút ấn và cách lập trình để đọc trạng thái của một port và xuất dữ liệu ra một port, truy cập trang>>      

Bài 3. Đếm số nhị phân

    Bài này giúp bạn làm quen với số nhị phận 4 bit, mỗi lần button được ấn thì số đếm tăng 1 đơn vị, hiển thị trạng thái của số nhị phân qua 4 led được kết nối ở portc của vi điều khiển 16f688, truy cập trang>>      

Bài 4. Lập trình hiển thị dòng text ra LCD 16x2

    Trong bài này giúp bạn hiểu được cách hiển thị một dòng text lên Lcd, truy cập trang>>

Bài 5. Chuyển đổi Analog sang Digital (ADC)

    Qua bài học này bạn sẽ biết cách lập trình chuyển tính hiệu từ Analog sang Digital, truy cập trang>>

Bài 6. Điều khiển led 7 đoạn

    Khi bạn học xong bài này, bạn sẽ biết cách hiển thị dữ liệu trên led 7 đoạn (7 segments), truy cập trang>>

Bài 7. Điều khiển led 7 đoạn

    Ở bài này bạn sẽ học ngắt interrupt khi tràn Timer0, truy cập trang>>

Bài 8. Giao tiếp máy tính qua cổng RS232

    Trong bài này bạn sẽ học được cách lập trình cho vi điều khiển giao tiếp với máy tính thông qua cổng RS232, truy cập trang>>

Bài 9. Điều chế độ rộng xung (PWM)

    Bài này sẽ hướng dẫn bạn cách sử dụng CCP module để điều chế độ rộng xung PWM, truy cập trang>>

Bài 10. Điều khiển DC motor

   Bạn sẽ học cách điều khiển cho motor quay thuận, quay ngược và dừng hẳn thông qua 3 button, truy cập trang>>

Bài 11. Hiển thị số đếm từ 1 đến 9999 trên led 7 đoạn 

   Quét led 7 đoạn hiển thị số đếm từ 0 đến 9999, truy cập trang>>


Bài 12. Điều khiển led matrix

   Lập trình hiển thị một ký tự trên led matrix, truy cập trang>>

Bài 13. Write, read internal EEPROOM

  Ghi dữ liệu vào eeproom và đọc dữ liệu đó xuất ra lcd, truy cập trang>>

Bài 14. Lập trình truyền dữ liệu với giao thức I2C

  Truyền dữ liệu giữa các thiết bị thông qua giao thức I2C, truy cập trang>>

Bài 15. Chạy dòng text trên nhiều led matrix

  Cũng giống như ở bài 12 nhưng ở đây ta lập trình cho dòng text có thể chạy trên nhiều led matrix được ghép lại với nhau, truy cập trang>>

Bài 16. Hiểu rõ hơn về ngắt INTERRUPT

  Qua bài thực hành này sẽ giải thích cặn kẽ về ngắt interrupt trong vi điều khiển, truy cập trang>>

Bài 17. Chế độ Sleep và Wake up trên vi điều khiển

  Hiểu rõ hơn về hai trạng thái sleep và wake up trên vi điều khiển, truy cập trang>>

Bài 18. Đọc bàn phím và hiển thị kết quả

  Làm việc với keypad, trong bài này ta đọc dữ liệu được nhập từ bàn phiếm và hiển thị kết quả ra lcd, truy cập trang>>

Bài 19. Sound

  Sử dụng thư viện âm thanh trong mikroc để tạo ra những hiệu ứng âm thanh khi ấn phím, truy cập trang>>

Bài 20. GLCD

 Lập trình xuất dữ liệu từ text hoặc hình ảnh ra Graphic LCD, truy cập trang>>

Bài 21. Điều khiển servo motor

 Lập trình điều khiển động cơ servo, truy cập trang>>
nguồn bài viết từ http://embedded-lab.com/ 
Read More »

Monday, May 25, 2015

Khóa cửa điện tử mở cửa bằng password sử dụng vi điều khiển pic 16f887

Posted by dientudieukhien at 10:39 AM 0 Comments
Thật thú vị với project khóa cửa điện tử, bảo vệ bằng password. Ở project này mình sử dụng một vi điều khiển pic 16f887, một LCD 16x2, một motor bước để thiết kế một hệ thống đóng-mở cửa, hệ thống này được cài đặt password bảo vệ. Sau đây là sơ đồ nguyên lý.
Hệ thống khóa cửa điện tử, bảo vệ bằng password
Hệ thống khóa cửa điện tử, bảo vệ bằng password

  • Mô tả hoạt động: Khi hệ thống khởi động, pass mặc định là 12345, sau đó bạn "press *" để đổi pass, bạn nhập pass mới vào (4 ký tự), nhấn # để hoàn tất việc đổi pass mới. Lần tiếp theo bạn muốn mở cửa thì nhập lại pass, nếu nhập sai pass thì hệ thống hiển thị thông báo và bạn phải nhập lại.
  • Video sau giúp bạn theo dõi quá trình đổi pass và thao tác đóng, mở cửa:

|| Tải project (Protues, code C)
Read More »

Friday, May 15, 2015

Hệ thống chiếu sắng bằng pin năng lượng mặt trời

Posted by dientudieukhien at 3:38 PM 0 Comments
Ánh sáng mặt trời là một nguồn năng lượng sạch quí giá và vô tận. Hiện nay, con người đã phát minh ra các thiết bị để biến đổi năng lượng ấy thành điện năng để chúng ta có thể sử dụng trong sinh hoạt.
Solar powered panel
Solar powered panel
Sau đây là một project mang tên solar powered home lighting system, giúp bạn xây dựng một hệ thống ánh sáng gồm: tấm pin năng lượng mặt trời, bình ác qui tích trữ điện, màng hình lcd hiển thị thông tin - xây dựng trên vi điều khiển pic 16f887a. Bạn quan sát sơ đồ nguyên lý sau đây:

Solar powered home lighting system
Hệ thống ánh sáng sử dụng pin năng lượng mặt trời - ảnh: electronicsforu.com
Chú thích các linh kiện và chức năng của chúng:

  1. BaTT1, BaTT2: 2 bình ắc qui loại 12v, 150 Ahm, hoặc 80 Ahm
  2. CON1: nơi kết nối tấm pin năng lượng mặt trời (ở đây sử dụng 2 tấm pin 80W)
  3. CON2: kết nối bình ắc qui để nạp cho Batt1, Batt2, khi tấm pin năng lượng không hoạt động
  4. CON3: kết nối tải để sử dụng
  5. Relay RL1, RL2: relay điều khiển nạp điện cho Batt1, Batt2 (thông qua sự điều khiển từ vi điều khiển 16f877a)
  6. Relay RL3: nếu hệ thống solar bị hư vi điều khiển sẽ điều khiển RL3 để Batt1, Batt2 được nạp điện từ ắc qui dự phòng.
  7. Relay RL4, RL5: vi điều khiển sẽ chọn Batt1 hoặc Batt2 sử dụng cho tải thông qua 2 Relay này.
  8. LCD1 16x2: Hiển thị thông tin của hệ thống như đang sử dụng Batt nào cho tải, Batt nào đang được sạc, mức năng lượng từng Batt và Solar
  9. Chú ý trước khi sử dụng: bạn kết nối nguồn 20v vào CON1 và chỉnh VR2 sao cho trên Pin  2 của IC1 là 5v. kết nối 15v vào CON4 và CON5 chỉnh VR3,VR4 sao cho trên Pin 3,5 của IC1 là 5v, sau đó bạn gở bỏ các điện thế này ra kết nối Solar, Batt1, Batt2, ac quy sạc dự phòng vào, vậy là hệ thống sẵn sàng hoạt động.
|| Bạn có thể đọc link bài gốc tại đây (english)
|| Tải code (ngôn ngữ C - biên dịch bằng HI-TECH C)
|| Link tải mediafire
Read More »

Wednesday, January 14, 2015

Điều khiển quạt-lò sưởi-giao diện Glcd-Pic16f887

Posted by dientudieukhien at 12:01 PM 0 Comments
Yêu cầu: ta có 2 thiết bị là quạt gió (motor) và lò sưởi (bóng đèn). Khi nhiệt độ của phòng trên mức nhiệt độ đặt trước  ( tem Ref) thì quạt gió hoạt động, lò sưởi tắt. Ngược lại thì quạt tắt và lò sưởi được mở. Giao diện người dùng được hiển thị trên GLCD. Mức nhiệt độ Ref được điều chỉnh qua 2 button được kết nối qua RB0, RB1, LM35 kết nối RA0, quạt kết nối RB6, lò sưởi RB7, GLCD kết nối với PORTD.

Sơ đồ nguyên lý vẽ trên protues:
Điều khiển quạt gió, lò sưởi, giao diện điều khiển GLCD, pic 16f887
Điều khiển quạt và lò sưởi
Read More »

Saturday, November 22, 2014

LM35 Sensor with pic 16f887 and LCD 16x2

Posted by dientudieukhien at 5:10 PM 0 Comments

Project đo và hiển thị nhiệt độ lên LCD 16x2, sử dụng cảm biến LM35 và vi điều khiển Pic 16f887.

Cách chuyển đổi giá trị Adc đọc từ cảm biến nhiệt LM35 sang độ C.
  • Ở đây ta sử dụng 1.5V làm Vref (ngõ ra cảm  biến LM35 tăng 10mv/1 độ C, nhiệt độ max 150 độ = 1500mv=1.5V)
  • ADCres = 1.5/1024 = 0.0014648 (do ADC 10bit nên 2^10=1024)
  • Tempc = value_adc*ADCres/0.01 = value_adc*0.14648
Sơ đồ nguyên lý khá đơn giản như sau:
Cảm biến nhiệt độ LM35 và LCD 16x2
LM35 with pic 16f887 and LCD 16x2
Code:
/*Project covert adc from sensor LM35, processing and display value on lcd.
 Author: Minh Trung
 Site: http://dientudieukhien.net
 */
//CONFIG LCD
sbit LCD_RS at RD4_bit;
sbit LCD_EN at RD5_bit;
sbit LCD_D7 at RD0_bit;
sbit LCD_D6 at RD1_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RD3_bit;

sbit LCD_RS_Direction at TRISD4_bit;
sbit LCD_EN_Direction at TRISD5_bit;
sbit LCD_D7_Direction at TRISD0_bit;
sbit LCD_D6_Direction at TRISD1_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISD3_bit;
//END CONFIG LCD
unsigned int value_adc=0;
unsigned float tempc;
char tex1[]="TEMPERATURE:";
char *tex2[15];

void main() {
Adc_Init();
Lcd_Init();
ANSEL=0b00001001;   //Config porta.b0, porta.b3 as analog
ANSELH=0x00;
ADCON1=0x30;        //Config porta.B3 as Vref+
TRISA.b0=1;         //porta.b0, porta.b3 as input
TRISA.b3=1;
C1ON_bit=0;         //disable compare
C2ON_bit=0;
TRISD=0x00;         //Portd as output
Lcd_out(1,1,tex1);
delay_ms(100);
while(1){
value_adc=Adc_read(0); //Get Adc value
delay_ms(100);
tempc=(float)(value_adc*0.14648); //Vref is 1.5V
floattostr(tempc,tex2);
Lcd_cmd(_LCD_CURSOR_OFF);
Lcd_chr(2,9,223);    // Display symbol "o" C
Lcd_out(2,10,"C");
Lcd_out(2,1,tex2);
delay_ms(100);
}
}

|| Download project in Miklroc and Proteus 
Read More »

Friday, November 21, 2014

use the function "inttosrt" convert numbers to letters displayed on the LCD

Posted by dientudieukhien at 10:22 AM 0 Comments

Sử dụng hàm "IntToStr' chuyển đổi một biến định dạng số sang ký tự để hiển thị lên LCD

Ví dụ mình có một biến "tempc" kiểu Int, gán cho tempc=115. Ta làm thế nào để hiển thị số 115 lên LCD. Trong Mikroc đã hổ trợ ta một số hàm chyển đổi để sử dụng trong các trường hợp như thế này.

Trước tiên ta sẽ chuyển số 115 từ kiểu Int sang kiểu Char chứa trong biến "tempc_txt" để hiển thị dược trên LCD, hàm chuyển như sau:
IntToStr(tempc,tempc_txt);

Như vậy chỉ cần một câu lệnh xuất LCD nữa là xong: LCD_Out(1,1,tempc_txt);
Sau đây là project ví dụ về dùng hàm "IntToStr" để xuất một số kiểu Int ra LCD.
IntToStr hàm chuyển đổi định số sang chuỗi text và hiển thị lcd
Display number on LCD use "IntToStr" function

Read More »

Tuesday, November 18, 2014

Read and compare 2 channel ADC, display result on LCD 20x4

Posted by dientudieukhien at 2:53 PM 0 Comments

Đọc và so sánh 2 kênh ADC, hiển thị kết quả trên màn hình LCD 20x4

Trong project này, vi điều khiển 16f887 sẽ đọc hai kênh adc, sau đó hiển thị ra lcd, khi nhấn buttom kết nối vào PortB.f0 sẽ hiển thị kết quả so sánh, xem hình sau:
compare 2 channel adc
|| Dowload code in mikroc + ISIS 
|| (pass: dientudieukhien.net)
source: libstock.com
Read More »

Sunday, November 2, 2014

Programming Menu and submenu on LCD 16x2 for on/off devices

Posted by dientudieukhien at 2:49 PM 0 Comments

Lập trình Menu và menu con trên màn hình LCD 16x2 để bật / tắt thiết bị.

Hôm nay, mình chia sẽ với các bạn một project mới mang tên như tiêu đề. Ở project này mình sẽ lập trình hiển thị 4 Menu trên trang màng hình đầu tiên của LCD, khi chọn một menu thì một Submenu xuất hiện , ở đây sẽ điều khiển các tác vụ khác - ở đây mình dùng điều khiển on/off các thiết bị, sau đây là tổng quang project.
Hình ảnh:
Lập trình submennu cho LCD
Giao diện trang màng hình đầu của project lcd menu for on/off device

Menu 3 được mở và điều khiển on/off led 2
Video:


|| Tải code in c và mô phỏng protues tại đây nguồn: dientudieukhien.net
Read More »

Saturday, October 18, 2014

Real Time Clock [DS1307 with Set Functions] & DS18B20

Posted by dientudieukhien at 10:11 PM 2 Comments

Features:
  • Real-Time Clock (RTC) Counts Seconds, Minutes, Hours, Date of the Month, Month, Day of the week, and Year with Leap-Year Compensation Valid Up to 2100.
  • 56-Byte, Battery-Backed, General-Purpose RAM with Unlimited Writes.
  •  I2C Serial Interface.
  • Programmable Square-Wave Output Signal.
  •  Automatic Power-Fail Detect and Switch Circuitry.
  • Consumes Less than 500nA in Battery-Backup Mode with Oscillator Running.
  •  Operating temperature range for commercial use only: 0°C to +70°C.
  • Optional Industrial Temperature Range: -40°C to +85°C.
  • Available in 8-Pin Plastic DIP or SO.


  • Diagram:
    Real time clock
    Read More »

    Friday, October 17, 2014

    WARNING AND AUTOMATIC WATER PUMP

    Posted by dientudieukhien at 9:57 PM 0 Comments

    Cảnh báo và tự động bơm nước vào hồ

    Hôm nay, mình rãnh nên ngồi viết ôn lại code bằng ngôn ngữ Mikroc, sẵn chia sẽ cùng các bạn.
    Mô tả project: tên project như ở tiêu đề, mục đích là khi nước trong hồ cạn thì báo hiệu trên LCD và một led màu đỏ sáng, đồng thời bật máy bơm để bơm nước (trong project này mình chia làm 2 mức nước - Full, Empty), Khi mực nước trong hồ cạn hơn mức empty-có nghĩa sensor3 không còn ngập trong nước (mức logic ngõ ra của sensor3 là 1) thì led Empty sáng đồng thời báo ra lcd "EMPTY", máy bơm bắt đầu bơm, khi mực nước đã nâng cao, sensor3 đã ngập trong nước (mức logic ngõ ra của sensor3 là 0) thì led EMPTY tắt nhưng máy bơm vẫn bơm, LCD vẫn báo Empty. Khi nước đã bơm đầy hồ, sensor1 bị ngập trong nước (mức logic ra của sensor1 là 0) thì máy bơm ngừng bơm, LCD xuất FULL, đèn led FULL sáng, khi nước vơi dần do ta sử dụng thì máy bơm vẫn không bơm và LCD vẫn báo FULL cho đến khi ta sử dụng cạn nước trong hồ đến mức sensor3 thì vòng lập sẽ thực hiện lại. Để làm được việc này mình sử dụng pic 16f887 làm xử lí trung tâm, một LCD 16x2, một relay điều khiển đóng mở máy bơm và các led báo hiệu, sau đây là hình ảnh của ý tưởng.
    Bạn nhìn hình trên: PortB0 đến B1 dùng để kết nối 3 sensor, PORTD dùng điều khiển LCD, PORTRD7 dùng điều khiển relay, PORTE0 đến E2 dùng điều khiển 3 led, các buton dùng để mô phỏng các sensor - khi SENSOR3 ở mức logic1 tức là mực nước đang Empty, SENSOR2 ở mức logic 0 tức nước đa được phân nửa bình, khi SENSOR1 ở mức logic0 tức mực nước đã đầy bình "FULL".

    Ảnh:
    Warning and automatic water pump
    level water
    Read More »

    Wednesday, October 15, 2014

    Display LCD interface with pic 12f683

    Posted by dientudieukhien at 9:16 PM 0 Comments

    LCD với pic 12f683

    Đối với các dòng pic với số lượng Port nhiều thì việc điều khiển LCD rất dễ dàng, trên trang dientudieukhien.net cũng đã giới thiệu khá nhiều bài hướng dẫn. Xong đối với các dòng pic với số lượng port hạn chế như các dòng pic 12f thì việc điều khiển một LCD hơi phức tạp hơn và cần phải thông qua một IC nữa thì mới điều khiển được, trong project này ta dùng Pic 12f638 (8 pin - Datasheet 12f638) và IC 74HC595 (datasheet 74HC595) để điều khiển LCD.

    Pic 12f683

    IC 74HC595

    Sau đây là sơ đồ khối kết nối giữa Pic12f638 với LCD 16x2
    Sơ đồ khối kết nối
    Sơ đồ nguyên lý:
    Các bạn kết nối: Clock, Data, Enable đến các Pin của Pic12f638 như hình trên, sử dụng thạch anh 4 Mhz

     /* 3-wire Serial LCD using 74HC595
    Rajendra Bhatt, Sep 6, 2010
    */

    sbit Data_Pin at GP5_bit;
    sbit Clk_Pin at GP1_bit;
    sbit Enable_Pin at GP2_bit;

    // Always mention this definition statement
    unsigned short Low_Nibble, High_Nibble, p, q,  Mask, N,t, RS, Flag, temp;

    void Delay_50ms(){
     Delay_ms(50);
    }

    void Write_LCD_Nibble(unsigned short N){
     Enable_Pin = 0;
     // ****** Write RS *********
     Clk_Pin = 0;
     Data_Pin = RS;
     Clk_Pin = 1;
     Clk_Pin = 0;
     // ****** End RS Write

     // Shift in 4 bits
     Mask = 8;
      for (t=0; t<4; t++){
       Flag = N & Mask;
       if(Flag==0) Data_Pin = 0;
       else Data_Pin = 1;
       Clk_Pin = 1;
       Clk_Pin = 0;
       Mask = Mask >> 1;
      }
      // One more clock because SC and ST clks are tied
      Clk_Pin = 1;
      Clk_Pin = 0;
      Data_Pin = 0;
      Enable_Pin = 1;
      Enable_Pin = 0;
    }
    // ******* Write Nibble Ends

     void Write_LCD_Data(unsigned short D){
     RS = 1; // It is Data, not command
     Low_Nibble = D & 15;
     High_Nibble = D/16;
     Write_LCD_Nibble(High_Nibble);
     Write_LCD_Nibble(Low_Nibble);
     }

    void Write_LCD_Cmd(unsigned short C){
     RS = 0; // It is command, not data
     Low_Nibble = C & 15;
     High_Nibble = C/16;
     Write_LCD_Nibble(High_Nibble);
     Write_LCD_Nibble(Low_Nibble);
    }

    void Initialize_LCD(){
     Delay_50ms();
     Write_LCD_Cmd(0x20); // Wake-Up Sequence
     Delay_50ms();
     Write_LCD_Cmd(0x20);
     Delay_50ms();
     Write_LCD_Cmd(0x20);
     Delay_50ms();
     Write_LCD_Cmd(0x28); // 4-bits, 2 lines, 5x7 font
     Delay_50ms();
     Write_LCD_Cmd(0x0C); // Display ON, No cursors
     Delay_50ms();
     Write_LCD_Cmd(0x06); // Entry mode- Auto-increment, No Display shifting
     Delay_50ms();
     Write_LCD_Cmd(0x01);
     Delay_50ms();
    }

    void Position_LCD(unsigned short x, unsigned short y){
     temp = 127 + y;
     if (x == 2) temp = temp + 64;
     Write_LCD_Cmd(temp);
    }

    void Write_LCD_Text(char *StrData){
     q = strlen(StrData);
     for (p = 0; p<q; p++){
      temp = StrData[p];
      Write_LCD_Data(temp);
     }

    }

    char Message1[] = "3-Wire LCD";
    char Message2[] = "using 74HC595";

    void main() {
    CMCON0 = 7;  // Disable Comparators
    TRISIO = 0b00001000;  // All Outputs except GP3
    ANSEL = 0x00; // No analog i/p

    Initialize_LCD();

    do {
     Position_LCD(1,4);
     Write_LCD_Text(Message1);
     Position_LCD(2,2);
     Write_LCD_Text(Message2);
     Delay_ms(1500);
     Write_LCD_Cmd(0x01);  // Clear LCD
     delay_ms(1000);
    } while(1);

    }



    || Tải code in mikroc và hex
    nguồn tham khảo: http://embedded-lab.com/
    Read More »

    Wednesday, August 27, 2014

    Lập trình hiển thị LCD 4bit trên vi điều khiển 8051

    Posted by dientudieukhien at 8:03 AM 0 Comments

    Lập trình hiển thị LCD 4bit trên vi điều khiển 8051

    Đây là một bài học về lập trình hiển thị trên LCD 4-bit, trong project này sử dụng vi điều khiển 8051, ngôn ngữ lập trình là C, trình biên dịch Mikroc Pro for 8051.

    Các hàm sử dụng trong project:
    • Lcd_Init
    • Lcd_Out
    • Lcd_Out_Cp
    • Lcd_Chr
    • Lcd_Chr_Cp
    • Lcd_Cmd

    Định nghĩa hàm và ví dụ:
    Prototype
    void Lcd_Out(char row, char column, char *text);
    Returns
    Nothing.
    Description
    Prints text on Lcd starting from specified position. Both string variables and literals can be passed as a text.
    Parameters :
    • row: starting position row number
    • column: starting position column number
    • text: text to be written
    Requires
    The Lcd module needs to be initialized. See Lcd_Init routine.
    Example
    // Write text "Hello!" on Lcd starting from row 1, column 3:
    Lcd_Out(1, 3, "Hello!");

    Lcd_Out_CP

    Prototype
    void Lcd_Out_Cp(char *text);
    Returns
    Nothing.
    Description
    Prints text on Lcd at current cursor position. Both string variables and literals can be passed as a text.
    Parameters :
    • text: text to be written
    Requires
    The Lcd module needs to be initialized. See Lcd_Init routine.
    Example
    // Write text "Here!" at current cursor position:
    Lcd_Out_CP("Here!");

    Lcd_Chr

    Prototype
    void Lcd_Chr(char row, char column, char out_char);
    Returns
    Nothing.
    Description
    Prints character on Lcd at specified position. Both variables and literals can be passed as a character.
    Parameters :
    • row: writing position row number
    • column: writing position column number
    • out_char: character to be written
    Requires
    The Lcd module needs to be initialized. See Lcd_Init routine.
    Example
    // Write character "i" at row 2, column 3:
    Lcd_Chr(2, 3, 'i');

    Lcd_Chr_CP

    Prototype
    void Lcd_Chr_Cp(char out_char);
    Returns
    Nothing.
    Description
    Prints character on Lcd at current cursor position. Both variables and literals can be passed as a character.
    Parameters :
    • out_char: character to be written
    Requires
    The Lcd module needs to be initialized. See Lcd_Init routine.
    Example
    // Write character "e" at current cursor position:
    Lcd_Chr_CP('e');

    Lcd_Cmd

    Prototype
    void Lcd_Cmd(char out_char);
    Returns
    Nothing.
    Description
    Sends command to Lcd.
    Parameters :
    • out_char: command to be sent
    Note: Predefined constants can be passed to the function, see Available Lcd Commands.
    Requires
    The Lcd module needs to be initialized. See Lcd_Init table.
    Example
    // Clear Lcd display:
    Lcd_Cmd(_LCD_CLEAR);

    Available Lcd Commands

    Lcd Command
    Purpose
    _LCD_FIRST_ROW
    Move cursor to the 1st row
    _LCD_SECOND_ROW
    Move cursor to the 2nd row
    _LCD_THIRD_ROW
    Move cursor to the 3rd row
    _LCD_FOURTH_ROW
    Move cursor to the 4th row
    _LCD_CLEAR
    Clear display
    _LCD_RETURN_HOME
    Return cursor to home position, returns a shifted display to its original position. Display data RAM is unaffected.
    _LCD_CURSOR_OFF
    Turn off cursor
    _LCD_UNDERLINE_ON
    Underline cursor on
    _LCD_BLINK_CURSOR_ON
    Blink cursor on
    _LCD_MOVE_CURSOR_LEFT
    Move cursor left without changing display data RAM
    _LCD_MOVE_CURSOR_RIGHT
    Move cursor right without changing display data RAM
    _LCD_TURN_ON
    Turn Lcd display on
    _LCD_TURN_OFF
    Turn Lcd display off
    _LCD_SHIFT_LEFT
    Shift display left without changing display data RAM
    _LCD_SHIFT_RIGHT
    Shift display right without changing display data RAM

    Sơ đồ nguyên lý:
    8051 LCD 
    Code:
    /*Share by dientudieukhien.net
       MikroC Pro for Pic*/
    // Lcd module connections
    sbit LCD_RS at P2_0_bit;
    sbit LCD_EN at P2_1_bit;

    sbit LCD_D4 at P2_2_bit;
    sbit LCD_D5 at P2_3_bit;
    sbit LCD_D6 at P2_4_bit;
    sbit LCD_D7 at P2_5_bit;
    // End Lcd module connections

    char txt1[] = "Embedded";
    char txt2[] = "Projects";
    char txt3[] = "Lcd 4 bit";
    char txt4[] = "Tutorial";

    char i;                              // Loop variable

    void Move_Delay() {                  // Function used for text moving
      Delay_ms(500);                     // You can change the moving speed here
    }

    void main(){

      Lcd_Init();                        // Initialize Lcd

      Lcd_Cmd(_LCD_CLEAR);               // Clear display
      Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
      Lcd_Out(1,6,txt3);                 // Write text in first row

      Lcd_Out(2,6,txt4);                 // Write text in second row
      Delay_ms(2000);
      Lcd_Cmd(_LCD_CLEAR);               // Clear display

      Lcd_Out(1,1,txt1);                 // Write text in first row
      Lcd_Out(2,5,txt2);                 // Write text in second row

      Delay_ms(2000);

      // Moving text
      for(i=0; i<4; i++) {               // Move text to the right 4 times
        Lcd_Cmd(_LCD_SHIFT_RIGHT);
        Move_Delay();
      }

      while(1) {                         // Endless loop
        for(i=0; i<8; i++) {             // Move text to the left 7 times
          Lcd_Cmd(_LCD_SHIFT_LEFT);
          Move_Delay();
        }

        for(i=0; i<8; i++) {             // Move text to the right 7 times
          Lcd_Cmd(_LCD_SHIFT_RIGHT);
          Move_Delay();
        }
      }



    nguồn: http://microcontrollerprojects00.blogspot.com
    Read More »

      tab

    back to top