Bài này chúng ta sẽ hiện thị 8 led 7 đoạn bằng vi điều khiển PIC 16F877A các bạn có thể dùng PIC 16F887 cũng được.Các bạn có thể xem lại bài:

Hiển thị Led 7 đoạn với vi điều khiển PIC - Bài 2 để biết thêm cơ bản về led 7 đoạn .

 

led7doan

Ví dụ này có 4 chế độ hoạt động :

1. Hiển thị các LED từ 1 đến 8 khi sw1=0 và sw2=0

2. Đếm lên từ 0 đến 2000 sw1=0 và sw2=1

3. Chạy chữ EPIC sw1=1 và sw2=0

4. Nhập giá trị từ cổng COM rồi hiển thị sw1=1 và sw2=1

Nguyên lý quét LED :

Lần lượt cấp nguồn cho từng LED7, đối với LED7 thứ n, xuất dữ liệu của LED7 thứ n (có dữ liệu 1byte tương ứng với 8 led đơn a,b,c,d,e,f,g,dp) tại một thời điểm chỉ có 1 LED7 sáng với dữ liệu của nó. Delay một khoảng thời gian, sau đó chuyển sang LED7 khác.
Theo nguyên lý lưu ảnh 24h/s  thì nều có hình ảnh của 24 hình xuất hiện trong 1 giây thì dường như vật đó luôn xuất hiện ta sẽ thấy giá trị của từng LED7.

Ở bài tập này mình dùng hàm delay_us() để làm delay cho việc hiển thị LED,các bạn có thể tham khảo bài Các hàm xử lý số, xử lý bit, delay trong CCS tuy nhiên cách này có nhược điểm là khi hiển thị thì không làm được việc gì khác do dùng hàm delay_us(). Ở bài sau mình sẽ hướng dẫn các bạn quét LED 7 đoạn dùng Timer thì chương trình sẽ linh hoạt hơn. Quét LED 7 đoạn dùng timer

Với hàm delay_us(2500) tức là mỗi LED sẽ có thời gian sáng là 2.5ms do đó 8 LED thời gian sẽ là 8*2.5=20ms. Như vậy trong 1s=1000ms sẽ có 1000/20=50 hình/s. Vì trong thực tế nếu để 24 hình/s thì LED sẽ bị nhấp nháy.

Ví dụ có sử dụng IC 74HC138 để giải mã quét LED vớ mục đích tiết kiệm PIN. Trong ví dụ này thì có vẻ như không cần thiết, nhưng đối với những thiết kế lớn sử dụng nhiều chân thì rất cần.

Lưu ý khi mô phỏng bằng Proteus các bạn điều khiển switch để chạy hết 4 chế độ. Trong ví dụ này các bạn có thể học được cách lập bảng mã hex cho các số từ 0--9 và các kí tự khác như mình là chữ EPIC. Các bạn cũng có thể học cách chạy chữ và làm cho chữ nhấp nháy.

Trong chế độ thứ 4. Nhập chữ số từ cổng COM để hiển thị trên LED 7 đoạn các bạn có thể học được cách khai báo để sử dụng cổng RS232 như mình dùng là :

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

các hàm kbhit() và getc()  Trong bài truyền thông nối tiếp giao tiếp với máy tính qua công RS232 mình sẽ đề cập nhiều hơn.

 

Các bạn có thể download project tại đây : Hiển thị quét LED 7 đoạn vi điều khiển PIC - Bài 3

Xem vi deo mô phỏng quét led 7 đoạn của epicviet.com

Nếu bạn thấy hay hãy đăng ký , chia sẻ giúp tôi nhé chúng tôi sẽ thường xuyên cập nhật kiến thức mới về vi điều khiển PIC tại đây