Đã đượ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
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++;
}
}
Sang viết
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.
admin viết
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é!
admin viết
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/