• 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/08/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 Mạch nguồn 0-30V 20A dùng LM338 »

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

Varistor hay Tụ chống sét là gì?

Varistor hay Tụ chống sét là gì?

20/08/2025

Ổn áp công suất lớn dùng IC họ 78xx

Ổn áp công suất lớn dùng IC họ 78xx

20/08/2025

Mạch cảm biến mức

Mạch cảm biến mức

20/08/2025

Thyristor là gì, cấu tạo nguyên lý hoạt động?

Thyristor là gì, cấu tạo nguyên lý hoạt động?

20/08/2025

Cuộn cảm

Cuộn cảm

20/08/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 (170)
    • Arduino (36)
    • Điện tử cơ bản (77)
    • Điện tử số (9)
    • IN 3D (9)
    • Nixie Tube (13)
    • PCB (18)
    • Raspberry Pi (10)
    • Vi điều khiển (16)

Footer

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

  • Varistor hay Tụ chống sét là gì?
  • Ổn áp công suất lớn dùng IC họ 78xx
  • Mạch cảm biến mức
  • Thyristor là gì, cấu tạo nguyên lý hoạt động?
  • Cuộn cảm
  • Mạch thắp đèn led bằng nguồn 220V

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

  • 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
  • Đặng phú Sơn. trong Cách thay thế transistor tương đương
  • admin trong Nguyên lý cảm biến siêu âm chống nước JSN-SR04T và sơ đồ mạch
  • Rohan trong Nguyên lý cảm biến siêu âm chống nước JSN-SR04T và sơ đồ mạch

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ả.