![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Jan 2010
Bài gửi: 4
: |
![]() - 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) { } } |
![]() |
![]() |
|
|