• HOME
  • DỰ ÁN & MẠCH ĐIỆN
    • Lập trình
      • ARDUINO PROJECT
      • ESP8266 PROJECT
      • ESP32 PROJECT
      • RASPBERRY PI PROJECT
      • Vi điều khiển
    • Điện tử ứng dụng
      • Audio / Amplifiers
      • Nguồn điện
      • Pin sạc/Acquy và mạch sạc
      • Biến đổi AC và DC
      • Robotic
      • Cảm biến
      • LED
      • LCD
      • Động cơ bước
      • Mạch linh tinh
      • Test & Measurement
      • RF – FM
    • Nixie Clock
    • HOME AUTOMATION
    • Dân dụng
    • Công nghiệp
  • KIẾN THỨC CĂN BẢN
    • Điện tử cơ bản
    • Điện tử số
    • PCB
    • Nixie Tube
    • Raspberry Pi
    • Vi điều khiển
    • Arduino
    • IN 3D
  • DOWNLOAD
    • Phần mềm điện tử
    • Giáo trình
      • Giáo trình Điện – Điện tử
      • Giáo trình Tự Động Hóa
      • Giáo trình Viễn thông
    • Đề tài
      • Đề tài – Điện – Điện Tử
      • Đề tài – Tự Động Hóa
      • Đề tài – Viễn thông
    • Điện tử ứng dụng
    • Tài liệu nước ngoài
    • Hướng dẫn, sửa chữa
    • Sơ đồ, nguyên lý thiết bị
    • Tiêu chuẩn – Đo lường – Thử nghiệm
    • Datasheet
  • LIÊN HỆ
  • SẢN PHẨM

Mạch Điện Lý Thú

Sơ đồ nguyên lý, PCB, đồ án, tài liệu, DIY

Trang chủ » Kiến thức căn bản » Vi điều khiển » Giao tiếp LCD16x2 chỉ với 3 chân của vi điều khiển

Giao tiếp LCD16x2 chỉ với 3 chân của vi điều khiển

08/10/2025 by admin 3 Bình luận

Đã được đăng vào 05/05/2017 @ 09:28

Giao tiếp LCD16x2 chỉ với 3 chân của vi điều khiển

Mục lục hiện
Giao tiếp LCD16x2 chỉ với 3 chân của vi điều khiển
Sơ đồ mạch
Viết trên phần mềm CCS
Viết trên MPLAB

Xem thêm:

  • Tổng quan LCD 16×2 và giao tiếp I2C LCD sử dụng Arduino
  • Hiển thị thời gian thực (RTC DS1307) lên LCD16x2 bằng giao tiếp I2C trong môi trường Arduino

Sơ đồ mạch

Mạch bao gồm 1 vi điều khiển PIC16F684 và thêm 2 IC 74595 để mở rộng

Còn về chương trình sau đây sẽ là đoạn chương trình giao tiếp với lcd16x2

Viết trên phần mềm CCS

#define clk PIN_C0
#define data PIN_C1
#define lat PIN_C2
int8 M[32];

void cmd(char a);
void truyen( char d)
{
int8 i;
char tg;
for(i=0;i<8;i++)
{
tg=d;
tg=tg&0x80;
if(tg==0x80)
output_high(data);
else
output_low(data);
output_high(clk);
output_low(clk);
d<<=1;
}
}

void init(void)
{
cmd(0x03);
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x01);
cmd(0x02);
}

void cmd(char a)
{
truyen(a);
truyen(0b00000100);
output_high(lat);
output_low(lat);
truyen(a);
truyen(0b00000000);
output_high(lat);
output_low(lat);
delay_ms ( 1 );
}

void data1(char a)
{
truyen(a);
truyen(0b00000101);
output_high(lat);
output_low(lat);
truyen(a);
truyen(0b00000001);
output_high(lat);
output_low(lat);
delay_ms ( 1 );
}

void str(char *str)
{
while(*str)
{
data1(*str);
str++;
}
}

Và đây là code Mplab dành cho những bạn quen viết Mplab

Viết trên MPLAB

#define data PORTDbits.RD0
#define clk PORTDbits.RD1
#define lat PORTDbits.RD2
void cmd(char a);
unsigned char M[32];

void truyen( char d)
{
unsigned char i;
unsigned char tg;
for(i=0;i<8;i++)
{
tg=d;
tg=tg&0x80;
if(tg==0x80)
data=1;
else
data=0;
d=d<<1;
clk=0;
clk=1;
}
}

void init(void)
{
cmd(0x03);
cmd(0x38);
cmd(0x0c);
cmd(0x06);
cmd(0x01);
cmd(0x02);
}

void cmd(char a)
{
truyen(a);
truyen(0b00000100);
lat=0;
lat=1;
lat=0;
truyen(a);
truyen(0b00000000);
lat=0;
lat=1;
lat=0;
Delay100TCYx(5);
}

void w_data(char a)
{
truyen(a);
truyen(0b00000101);
lat=0;
lat=1;
lat=0;
truyen(a);
truyen(0b00000001);
lat=0;
lat=1;
lat=0;
Delay100TCYx(5);
}

void str(char *str)
{
while(*str)
{
w_data(*str);
str++;
}
}
  • Chia sẻ lên Facebook
  • Chia sẻ lên Twitter
  • Chia sẻ lên LinkedIn

Thuộc chủ đề:Vi điều khiển Tag với:lcd, LCD1602, pic, Vi điều khiển, vidieukhien

Bài viết trước « Đồng hồ số hiển thị trên LED 7 đoạn dùng 89S52 và DS1307
Bài viết sau Game Tetris sử dụng LED matrix 8×16 và 8051 »

Reader Interactions

Bình luận

    Để lại một bình luận Hủy

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

  1. Sang viết

    19/08/2020 lúc 13:44

    Xin chào ad,mình đang là công nhân và rất thích điện tử nhưng ko có điều kiện đi học.Hôm trước mình có tìm trên mạng được sơ đồ nguyên lý của mạch tăng hạ áp đầu ra từ 0-40v (ko có tăng hạ dòng),nên ko ưng ý.Mình đã làm 1 mạch tăng hạ áp và dòng đầu ra,sử dụng LM317,IRF3205,Ic555,1 biến áp 220-40v,1 cầu chỉnh lưu,1 zener ổn áp 12v,2 biến trở 50k,vài con tụ phân cực và 1 vôn áp kế bán trên shopee để vọc và tự học.Nhưng khi cấp nguồn thì chẳng hoạt động.Mình tình cờ biết web này có chỉ cặn kẽ nguyên lý nên mình muốn xin ad vẽ giúp mình 1 sơ đồ nguyên lý mạch điều chỉnh dòng và áp đầu ra.Xin cảm ơn ad.

    Bình luận
    • admin viết

      19/08/2020 lúc 13:50

      Bạn hãy nêu rõ yêu cầu về điện áp – dòng điện bạn cần điều chỉnh. Mình sẽ tìm mạch thích hợp gửi cho bạn. Nếu muốn nhanh hơn, đừng ngại nhắn tin Zalo nhé!

      Bình luận
    • admin viết

      19/08/2020 lúc 15:38

      Nếu yêu thích DIY, bạn có thể tham khảo bài viết hướng dẫn làm bộ nguồn có điều chỉnh sau đây:
      https://machdienlythu.vn/tu-lam-bo-cap-nguon-ky-thuat-so-digital-don-gian-de-thu-mach/

      Bình luận

Sidebar chính

Zalo hỏi đáp 24/7

Theo dõi qua mạng xã hội

  • Facebook

Bạn đang tìm gì?

Bài viết mới nhất

Cách thay thế transistor tương đương

Cách thay thế transistor tương đương

21/10/2025

Tài liệu động cơ bước và mạch điều khiển động cơ bước

21/10/2025

Biến trở là gì?

Biến trở là gì?

21/10/2025

Dùng IC LM380 làm mạch khuếch đại 2 kênh cho thiết bị nghe cá nhân

Dùng IC LM380 làm mạch khuếch đại 2 kênh cho thiết bị nghe cá nhân

21/10/2025

Mạch khuếch đại cho loa Sub công suất lên tới 100W

Mạch khuếch đại cho loa Sub công suất lên tới 100W

21/10/2025

Danh mục

  • DỰ ÁN & MẠCH ĐIỆN (241)
    • Công nghiệp (16)
    • Dân dụng (29)
    • Điện tử ứng dụng (178)
      • Audio / Amplifiers (34)
      • Biến đổi AC và DC (24)
      • Cảm biến (40)
      • Động cơ bước (5)
      • Kiểm thử và đo đạc (23)
      • LCD (15)
      • LED (20)
      • Mạch linh tinh (27)
      • Nguồn điện (42)
      • Pin sạc/Acquy và mạch sạc (24)
      • RF – FM (5)
      • Robotic (2)
    • HOME AUTOMATION (23)
    • Lập trình (82)
      • ARDUINO PROJECT (39)
      • ESP32 PROJECT (6)
      • ESP8266 PROJECT (17)
      • RASPBERRY PI PROJECT (9)
      • Vi điều khiển (24)
    • Nixie Clock (3)
  • Kiến thức căn bản (168)
    • Arduino (36)
    • Điện tử cơ bản (77)
    • Điện tử số (9)
    • IN 3D (9)
    • Nixie Tube (13)
    • PCB (16)
    • Raspberry Pi (10)
    • Vi điều khiển (16)

Footer

Bài viết mới nhất

  • Cách thay thế transistor tương đương
  • Tài liệu động cơ bước và mạch điều khiển động cơ bước
  • Biến trở là gì?
  • Dùng IC LM380 làm mạch khuếch đại 2 kênh cho thiết bị nghe cá nhân
  • Mạch khuếch đại cho loa Sub công suất lên tới 100W
  • Dung lượng của Tụ bù bao nhiêu là đủ tính toán thế nào?

Bình luận mới nhất

  • admin trong Đĩa VCD 300 Game Điện Tử 4 Nút Chơi Trên Đầu Đĩa QISHENG
  • Dương trong Đĩa VCD 300 Game Điện Tử 4 Nút Chơi Trên Đầu Đĩa QISHENG
  • Đào Ngọc Hoàng trong Amply mạch Class D tiếng nhạc có hay không?
  • Hà Thêm Phát trong Đo cuộn cảm và tần số cộng hưởng mạch LC bằng Arduino

Tìm kiếm

Tất cả nội dung trên website chỉ dùng để tham khảo. Chúng tôi không chịu trách nhiệm về thông tin thành viên đăng tải lên website và xóa bài viết khi có vi phạm bản quyền tác giả.