![]() |
|
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 |
|
|
#8 | |
|
Nhập môn đệ tử
Tham gia ngày: Jul 2008
Nơi Cư Ngụ: HCM City
Bài gửi: 5
: |
Giải đáp!
Trích:
Nếu ADC của bạn 10 bit (tương tự cũng làm được trên ADC 8bit) Như vậy, led 7 đoạn anod chung ta có mã dp g f e d c b a mã thập phân 1 1 1 1 1 1 0 0 1 --> 249 2 1 0 1 0 0 1 0 0 --> 164 3 ............. 4 ............. 5 ............. 6 ............. 7 ............. 8 ............. 9 ............. //////////////////////////////////////////////////////////////////////////////////////////////////// PORTD ---------> du lieu cho led 7 doan (D.0 --> D.7 tương ứng với a --> dp) PORTC ---------> Quet cot (C.3 --> C0 tương ứng với led từ led 7 đoạn từ trái qua phải) Tham khảo đoạn code nha: (chỉ viết thuật toán tính, không viết đoạn cấu hình) unsigned char DATA[10]={249,164,...,...,...,...,...,...,...,...}; unsigned char ng, tr, ch, dv; unsigned int temp; .... .... temp = read_ADC(1);// Đọc ADC kênh 1 ng = temp/1000; tr = (temp - 1000*ng)/100; ch = (temp - (1000*ng + 100*tr))/10; dv = temp - (1000*ng + 100*tr + 10*ch); ////////////////////////////////////////////////////// Dùng biến ng,tr,ch,dv làm tham số truy xuất vào mảng DATA[] lấy dữ liệu xuất ra Led. PORTC = 0b1000; PORTD = DATA[ng]; delay_ms(10); PORTC = 0b0100; PORTD = DATA[tr]; delay_ms(10); PORTC = 0b0010; PORTD = DATA[ch]; delay_ms(10); PORTC = 0b0001; PORTD = DATA[dv]; delay_ms(10); Thế là xong. Lưu ý: Cách này đòi hỏi phải hiểu nguyên lý, và làm tạm thôi. Chạy tốt đã thử rồi, nhưng theo đánh giá thì không được tối ưu lắm. Nếu bạn có thời gian, trên cơ sở đó mà làm cái cho riêng mình nhé. Thân!
__________________
"Có bầu có bạn can chi tuổi, Cùng gió cùng mây thế mới vui" Lâm Văn Trường |
|
|
|
|