- MỚI TẬP TÀNH NÊN CHƯA RÀNH LẮM, MONG ĐƯỢC CÁC A GIÚP ĐỠ NHIỆT TÌNH VỚI
CHẢ LÀ E LẬP TRÌNH GIAO TIẾP DÙNG NGẮT RB0, DÙNG 4 NÚT BẤM: TĂNG, GIẢM, QUAY THUẬN, QUAY NGỊCH
-KHI BẤM THUẬN THÌ LCD HIỆN: QUAY THUẬN GIÁ TRỊ: X (BIẾN) => ĐÃ LÀM ĐƯỢC
-KHI BẤM NGỊCH LCD HIỆN: QUAY NGHỊCH GIÁ TRỊ: X (BIẾN) => ĐÃ LÀM ĐƯỢC
- VẤN ĐỀ LÀ KHI E BẤM TĂNG HOẶC GIẢM THÌ BIẾN X PHẢI THAY ĐỔI NHƯ LÀ: QUAY THUẬN GIÁ TRỊ: 1 HAY 2 , 3, 4, 5. E ĐANG BÓ TAY PHẦN NÀY.
E ĐÃ CÓ TÌM HIỂU QUA LÀ MUỐN HIỆN THỊ LCD THÌ PHẢI ĐƯA MÃ ASCII VÀO LCD. NHƯNG KO BIẾT CHUYỂN GIÁ TRỊ LƯU TRONG BIẾN X THÀNH MÃ ASCII RỒI CÂU LỆNH VIẾT NHƯ THẾ NÀO CẢ.
MONG CÁC A VIẾT HỘ E ĐOẠN CODE CHỖ TĂNG GIẢM HIỆN LCD VỚI, E XIN CẢM ƠN RẤT NHÌU.
E GỬI CODE VÀ MÔ PHỎNG PROTUES ĐỂ CÁC A XEM HỘ.
PHẦN RB6 RB7 IN ĐẬM E KO BIẾT VIẾT THẾ NÀO.
#include <16F877A.h>
#include <DEFS_16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#define RS RB3
#define RW RB2
#define E RB1
#define LCD PORTD
#use fast_io(b)
#byte portb=0x06
#byte intcon=0x000B
int x=0;
/*Ham yeu cau goi lenh dieu khien LCD*/
void comnwrt(void)
{
RS = 0;
RW = 0;
E = 1;
E = 0;
delay_ms(1);
}
/*Ham yeu cau goi du lieu hien thi len LCD*/
void datawrt(void)
{
RS = 1;
RW = 0;
E = 1;
E = 0;
delay_ms(1);
}
// Chuong trinh ngat
#int_RB
void ngat_RB()
{
if((RBIF)&&(RBIE))
{
//Kiem tra sw1
{ if(RB4==0)
{
LCD = 0x01; // Xoa man hinh hien thi
comnwrt();
delay_ms(10);
LCD = 0x83; // Vi tri hang 1,cot 3
comnwrt();
delay_ms(1);
LCD = 'Q'; // Xuat dong chu "QUAY THUAN" ra LCD
datawrt();
LCD = 'U';
datawrt();
LCD = 'A';
datawrt();
LCD = 'Y';
datawrt();
LCD = ' ';
datawrt();
LCD = 'T';
datawrt();
LCD = 'H';
datawrt();
LCD = 'U';
datawrt();
LCD = 'A';
datawrt();
LCD = 'N';
datawrt();
LCD = 0xC0; // Vi tri hang 2,cot 0
comnwrt();
LCD = 'G'; // Xuat dong chu "GIA TRI:" ra LCD
datawrt();
LCD = 'I';
datawrt();
LCD = 'A';
datawrt();
LCD = ' ';
datawrt();
LCD = 'T';
datawrt();
LCD = 'R';
datawrt();
LCD = 'I';
datawrt();
LCD = ':';
datawrt();
}
}
//Kiem tra sw2
{
if(RB5==0)
{
LCD = 0x01; // Xoa man hinh hien thi
comnwrt();
delay_ms(10);
LCD = 0x83; // Vi tri hang 1,cot 3
comnwrt();
delay_ms(1);
LCD = 'Q'; // Xuat dong chu "QUAY NGICH" ra LCD
datawrt();
LCD = 'U';
datawrt();
LCD = 'A';
datawrt();
LCD = 'Y';
datawrt();
LCD = ' ';
datawrt();
LCD = 'N';
datawrt();
LCD = 'G';
datawrt();
LCD = 'I';
datawrt();
LCD = 'C';
datawrt();
LCD = 'H';
datawrt();
LCD = 0xC0; // Vi tri hang 2,cot 0
comnwrt();
LCD = 'G'; // Xuat dong chu "GIA TRI:" ra LCD
datawrt();
LCD = 'I';
datawrt();
LCD = 'A';
datawrt();
LCD = ' ';
datawrt();
LCD = 'T';
datawrt();
LCD = 'R';
datawrt();
LCD = 'I';
datawrt();
LCD = ':';
datawrt();
}
}
//Kiem tra sw3
{
if(RB6==0)
{
++x;
LCD = 0x01; // Xoa man hinh hien thi
comnwrt();
LCD = 0xC8; // Vi tri hang 2,cot 8
comnwrt();
delay_ms(100);
LCD='x';
datawrt();
delay_ms(100);
}
}
//Kiem tra sw4
{
if(RB7==0)
{
}
}
RBIF=0; //Xoa co ngat RB
}
}
/*Ham main*/
void main(void)
{
set_tris_B(0b11110000);
set_tris_D(0);
enable_interrupts(global); // Cho phep ngat toan cuc
enable_interrupts(int_RB); // Cho phep ngat RB
ext_int_edge(H_to_L); // Ngat khi co xung cao xuong thap
delay_ms(100); // Tao tre 100ms cho LCD khoi dong
LCD = 0x38; // Hai hang, ma tran dot 5*7, 8 bit interface
comnwrt();
LCD = 0x0C; // Bat hien thi, tat con tro
comnwrt();
LCD = 0x82; // Vi tri hang 1,cot 3
comnwrt();
LCD = 'C'; // Xuat dong chu "CHUONG TRINH" ra LCD
datawrt();
LCD = 'H';
datawrt();
LCD = 'U';
datawrt();
LCD = 'O';
datawrt();
LCD = 'N';
datawrt();
LCD = 'G';
datawrt();
LCD = ' ';
datawrt();
LCD = 'T';
datawrt();
LCD = 'R';
datawrt();
LCD = 'I';
datawrt();
LCD = 'N';
datawrt();
LCD = 'H';
datawrt();
LCD = 0xC4; // Vi tri hang 2,cot 5
comnwrt();
LCD = 'S'; // Xuat dong chu "SAN SANG" ra LCD
datawrt();
LCD = 'A';
datawrt();
LCD = 'N';
datawrt();
LCD = ' ';
datawrt();
LCD = 'S';
datawrt();
LCD = 'A';
datawrt();
LCD = 'N';
datawrt();
LCD = 'G';
datawrt();
While(true)
{
}
}
CHẢ LÀ E LẬP TRÌNH GIAO TIẾP DÙNG NGẮT RB0, DÙNG 4 NÚT BẤM: TĂNG, GIẢM, QUAY THUẬN, QUAY NGỊCH
-KHI BẤM THUẬN THÌ LCD HIỆN: QUAY THUẬN GIÁ TRỊ: X (BIẾN) => ĐÃ LÀM ĐƯỢC
-KHI BẤM NGỊCH LCD HIỆN: QUAY NGHỊCH GIÁ TRỊ: X (BIẾN) => ĐÃ LÀM ĐƯỢC
- VẤN ĐỀ LÀ KHI E BẤM TĂNG HOẶC GIẢM THÌ BIẾN X PHẢI THAY ĐỔI NHƯ LÀ: QUAY THUẬN GIÁ TRỊ: 1 HAY 2 , 3, 4, 5. E ĐANG BÓ TAY PHẦN NÀY.
E ĐÃ CÓ TÌM HIỂU QUA LÀ MUỐN HIỆN THỊ LCD THÌ PHẢI ĐƯA MÃ ASCII VÀO LCD. NHƯNG KO BIẾT CHUYỂN GIÁ TRỊ LƯU TRONG BIẾN X THÀNH MÃ ASCII RỒI CÂU LỆNH VIẾT NHƯ THẾ NÀO CẢ.
MONG CÁC A VIẾT HỘ E ĐOẠN CODE CHỖ TĂNG GIẢM HIỆN LCD VỚI, E XIN CẢM ƠN RẤT NHÌU.
E GỬI CODE VÀ MÔ PHỎNG PROTUES ĐỂ CÁC A XEM HỘ.
PHẦN RB6 RB7 IN ĐẬM E KO BIẾT VIẾT THẾ NÀO.
#include <16F877A.h>
#include <DEFS_16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#define RS RB3
#define RW RB2
#define E RB1
#define LCD PORTD
#use fast_io(b)
#byte portb=0x06
#byte intcon=0x000B
int x=0;
/*Ham yeu cau goi lenh dieu khien LCD*/
void comnwrt(void)
{
RS = 0;
RW = 0;
E = 1;
E = 0;
delay_ms(1);
}
/*Ham yeu cau goi du lieu hien thi len LCD*/
void datawrt(void)
{
RS = 1;
RW = 0;
E = 1;
E = 0;
delay_ms(1);
}
// Chuong trinh ngat
#int_RB
void ngat_RB()
{
if((RBIF)&&(RBIE))
{
//Kiem tra sw1
{ if(RB4==0)
{
LCD = 0x01; // Xoa man hinh hien thi
comnwrt();
delay_ms(10);
LCD = 0x83; // Vi tri hang 1,cot 3
comnwrt();
delay_ms(1);
LCD = 'Q'; // Xuat dong chu "QUAY THUAN" ra LCD
datawrt();
LCD = 'U';
datawrt();
LCD = 'A';
datawrt();
LCD = 'Y';
datawrt();
LCD = ' ';
datawrt();
LCD = 'T';
datawrt();
LCD = 'H';
datawrt();
LCD = 'U';
datawrt();
LCD = 'A';
datawrt();
LCD = 'N';
datawrt();
LCD = 0xC0; // Vi tri hang 2,cot 0
comnwrt();
LCD = 'G'; // Xuat dong chu "GIA TRI:" ra LCD
datawrt();
LCD = 'I';
datawrt();
LCD = 'A';
datawrt();
LCD = ' ';
datawrt();
LCD = 'T';
datawrt();
LCD = 'R';
datawrt();
LCD = 'I';
datawrt();
LCD = ':';
datawrt();
}
}
//Kiem tra sw2
{
if(RB5==0)
{
LCD = 0x01; // Xoa man hinh hien thi
comnwrt();
delay_ms(10);
LCD = 0x83; // Vi tri hang 1,cot 3
comnwrt();
delay_ms(1);
LCD = 'Q'; // Xuat dong chu "QUAY NGICH" ra LCD
datawrt();
LCD = 'U';
datawrt();
LCD = 'A';
datawrt();
LCD = 'Y';
datawrt();
LCD = ' ';
datawrt();
LCD = 'N';
datawrt();
LCD = 'G';
datawrt();
LCD = 'I';
datawrt();
LCD = 'C';
datawrt();
LCD = 'H';
datawrt();
LCD = 0xC0; // Vi tri hang 2,cot 0
comnwrt();
LCD = 'G'; // Xuat dong chu "GIA TRI:" ra LCD
datawrt();
LCD = 'I';
datawrt();
LCD = 'A';
datawrt();
LCD = ' ';
datawrt();
LCD = 'T';
datawrt();
LCD = 'R';
datawrt();
LCD = 'I';
datawrt();
LCD = ':';
datawrt();
}
}
//Kiem tra sw3
{
if(RB6==0)
{
++x;
LCD = 0x01; // Xoa man hinh hien thi
comnwrt();
LCD = 0xC8; // Vi tri hang 2,cot 8
comnwrt();
delay_ms(100);
LCD='x';
datawrt();
delay_ms(100);
}
}
//Kiem tra sw4
{
if(RB7==0)
{
}
}
RBIF=0; //Xoa co ngat RB
}
}
/*Ham main*/
void main(void)
{
set_tris_B(0b11110000);
set_tris_D(0);
enable_interrupts(global); // Cho phep ngat toan cuc
enable_interrupts(int_RB); // Cho phep ngat RB
ext_int_edge(H_to_L); // Ngat khi co xung cao xuong thap
delay_ms(100); // Tao tre 100ms cho LCD khoi dong
LCD = 0x38; // Hai hang, ma tran dot 5*7, 8 bit interface
comnwrt();
LCD = 0x0C; // Bat hien thi, tat con tro
comnwrt();
LCD = 0x82; // Vi tri hang 1,cot 3
comnwrt();
LCD = 'C'; // Xuat dong chu "CHUONG TRINH" ra LCD
datawrt();
LCD = 'H';
datawrt();
LCD = 'U';
datawrt();
LCD = 'O';
datawrt();
LCD = 'N';
datawrt();
LCD = 'G';
datawrt();
LCD = ' ';
datawrt();
LCD = 'T';
datawrt();
LCD = 'R';
datawrt();
LCD = 'I';
datawrt();
LCD = 'N';
datawrt();
LCD = 'H';
datawrt();
LCD = 0xC4; // Vi tri hang 2,cot 5
comnwrt();
LCD = 'S'; // Xuat dong chu "SAN SANG" ra LCD
datawrt();
LCD = 'A';
datawrt();
LCD = 'N';
datawrt();
LCD = ' ';
datawrt();
LCD = 'S';
datawrt();
LCD = 'A';
datawrt();
LCD = 'N';
datawrt();
LCD = 'G';
datawrt();
While(true)
{
}
}
Comment