BÀI 4 : GIAO TIẾP VỚI NÚT NHẤN PIC16F877A CCS (P2)

Lập trình PIC Menu Lập trình PIC CCS PIC16F877A CCS BÀI 4 : GIAO TIẾP VỚI NÚT NHẤN PIC16F877A CCS (P2) BÀI 4 : GIAO TIẾP VỚI NÚT NHẤN PIC16F877A CCS (P2) 7:07:00 AM CCS PIC16F877A CCS Chào các bạn trong bài 3 mình đã giới thiệu với các bạn về cách giao tiếp với nút nhấn rồi bạn nào chưa xem thì xem lại tại đây để hiểu rõ hơn về cấu tạo và phân loại của nó nha ! Còn trong bài đăng này mình sẽ hướng dẫn các bạn thêm 1 phần nữa cũng là giao tiếp với nhút nhấn nhưng nó sẽ khó hơn bài trước vì trong bài trước chúng ta chỉ dùng lại ở việc giao tiếp thôi còn trong bài này thì chúng ta sẽ ứng dụng nó vào bài này để chuyển đổi hiệu ứng LED dùng 1 nút nhấn cụ thể là khi chúng ta không nhấn nút thì chương trình sẽ chạy bình thường còn nếu chúng ta nhấn nút thì nó sẽ chuyển sang hiệu ứng khác cho chúng ta ngay lập tức ! Chúng ta sẽ có đoạn chương trình như sau ! unsigned char KiemTraPhim() { unsigned char i; for(i=0;i<50;i++) { delay_ms(10); if(input(pin_a0)==0) { if(check == 0) { check = 1; return 1; } } else { check = 0; } } return 0; } - Đoạn chương trình trên dùng để delay và kiểm tra nút nhấn của chúng ta cụ thể là khi nhấn nút thì nó sẽ kiểm tra cái bit check của chúng ta nếu mà bit check = 1 thì có nghĩa nút nhấn của chúng ta được nhấn nó sẽ return 1 còn nếu không nhấn thì nó sẽ return 0 . Và đoạn chương trình trong void main (void) được viết như sau : while(true) { LED = 0x00; for(i=0;i<20;i++) { if(KiemTraPhim()) break; delay_ms(1000); LED = ~LED; } LED = 0x55; for(i=0;i<20;i++) { if(KiemTraPhim()) break; delay_ms(1000); LED = ~LED; } LED = 0x0F; for(i=0;i<20;i++) { if(KiemTraPhim()) break; delay_ms(1000); LED = ~LED; } } - Giải thích đoạn chương trình trên như sau : Mỗi hiệu ứng LED bình thường chúng ta sẽ cho nó chạy 20 lần nếu như chúng ta nút nhấn nó sẽ lặp tức thoát khỏi chương trình đang thực thi và nhảy vào chương trình tiếp theo ! - Ảnh mô phỏng protues. giao tiếp nút nhấn pic16f877a ccs - Đây là code chương trình đầy đủ. #include <16f877a.h> #include <def_877a.h> #use delay(clock=800000) #fuses HS,NOWDT #byte portb=0x06 #define LED portb int kiemtra; #bit check = kiemtra.0 unsigned char i; unsigned char KiemTraPhim() { unsigned char i; for(i=0;i<50;i++) { delay_ms(10); if(input(pin_a0)==0) { if(check == 0) { check = 1; return 1; } } else { check = 0; } } return 0; } void main(void) { trisa = 0xff; TRISB = 0X00; while(true) { LED = 0x00; for(i=0;i<20;i++) { if(KiemTraPhim()) break; delay_ms(1000); LED = ~LED; } LED = 0x55; for(i=0;i<20;i++) { if(KiemTraPhim()) break; delay_ms(1000); LED = ~LED; } LED = 0x0F; for(i=0;i<20;i++) { if(KiemTraPhim()) break; delay_ms(1000); LED = ~LED; } } } - Link download project Click here

Share this

Huỳnh Ngọc Lâm

Author : Huỳnh Ngọc Lâm

Related Posts

Next « Prev Post Previous Next Post »

3 nhận xét

Write nhận xét TheBestVersion October 16, 2016 at 6:08 AM delete

Anh cho em hỏi sao phải quét kiểm tra phím dùng vòng for tới 50 lần vậy ạ .

Reply avatar Unknown October 16, 2016 at 6:37 AM delete

Đó là thời gian cần thiết để nó kiểm tra nút nhấn của chúng ta ak ? nếu nhanh quá thì cũng không được mà lâu quá thì cũng không được !

Reply avatar TheBestVersion October 18, 2016 at 6:22 AM delete

Thanks anh .

Reply avatar

EmoticonEmoticon

Subscribe to: Post Comments (Atom)

LIKE FANPAGE

Follow us

GOOGLE +

THÀNH VIÊN

PROJECT

  • PIC16F877A CCS 51
  • PIC16F877A XC8 40
  • PIC16F887 30
  • PIC18F4431 9
  • PIC18F452 7
  • PIC18F4550 XC8 7
  • ARDUINO 6
  • IC THÔNG DỤNG 6
  • PIC16F628A 6
  • PIC16F84A 6
  • PIC18F4550 CCS 5
  • ĐIỆN TỬ CĂN BẢN 5
  • LINH KIỆN 4
  • Protues 4
  • VI XỬ LÝ 4
  • MPLAB XC8 2
  • PIC C 2
  • TÀI LIỆU PLC 2
  • 8051 1
  • AUTOCARD 1
  • Arduino IDE 1
  • CẢM BIẾN QUANG 1
  • CẢM BIẾN TIỆM CẬN ĐIỆN DUNG 1
  • CẢM BIẾN TIỆN CẬN ĐIỆN CẢM 1
  • CẢM BIẾN TỪ 1
  • Keil C 1

XEM NHIỀU

  • HƯỚNG DẪN ĐỌC GIÁ TRỊ ĐIỆN TRỞ 1 Giới thiệu. a) Hình dáng và ký hiệu :  Trong thiết bị điện tử  điện trở là một linh kiện quan trọng , chúng được làm từ hợp chất cacbon v...
  • BÀI 11 : TIMER 1 PIC16F877A CCS Chào các bạn trong bài đăng trước mình đã hướng dẫn các bạn về timer0 và trong bài đăng này mình sẽ tiếp tục hướng dẫn các ban về timer1 c...
  • BÀI 4 : GIAO TIẾP VỚI NÚT NHẤN PIC16F877A CCS (P2) Chào các bạn trong bài 3 mình đã giới thiệu với các bạn về cách giao tiếp với nút nhấn rồi bạn nào chưa xem thì xem lại  tại đây   để hiểu ...
  • BÀI 30 : PWM VÀ L298 PIC16F877A CCS 1 .IC L298. IC L298 là một IC tích hợp nguyên khối gồm 2 mạch cầu H bên trong. Với điện áp làm tăng công suất đầu ra từ 5V – 47V , dòng l...
  • BÀI 7 : ĐẾM TỪ 0 ĐẾN 99 PIC16F877A CCS Chào các bạn trong bài đăng trước mình đã hướng dẫn các bạn giao tiếp với LED 7 SEG cụ thể là đếm từ 0 đến 9 còn trong bài đăng này mình s...

THỐNG KÊ

Từ khóa » Code Nút Nhấn Ccs