- Trước tiên mình sẽ tách các số hàng nghìn,trăm,chục,đơn vị ra trước.
nghin=dem/1000;
tram = (dem - nghin*1000)/100;
chuc=(dem - nghin*1000 - tram*100)/10;
donvi=dem - nghin*1000 - tram*100 - chuc*10;
Code của chúng ta như trên mục đính của việc này là xác định xem ld nào là led nghìn led trăm led chục led đơn vị để chúng ta hiển thị nó lên led 7 đoạn.
- Tiếp theo là phần hiển thị.
output_d(0x0F); // Turn off all displays
output_b(maled[nghin]); // Send ones digit
output_d(0x07); // Turn on display for ones
delay_ms(2);
output_d(0x0F); // Turn off all displays
output_b(maled[tram]); // Send tens digit
output_d(0x0B); // Turn on display for tens
delay_ms(2);
output_d(0x0F); // Turn off all displays
output_b(maled[chuc]); // Send hundreds digit
output_d(0x0D); // Turn on display for hundreds
delay_ms(2);
output_d(0x0F); // Turn off all displays
output_b(maled[donvi]); // Send thousands digit
output_d(0x0E); // Turn on display for thousands
delay_ms(2);
Code chúng ta như sao thay vì trong bài trước chúng cho xuất ra port_b là giá trị mà chúng ta muốn hiển thị thì bài này chúng ta cũng làm như vậy như khác ở chô là có thêm biến đếm biến đếm này sẽ thay đổi liên tục.
- Cuối cùng là điền kiện của chúng ta như chúng ta biết trong bài này chỉ sử dụng 4 led nên chỉ đếm tối đa được từ 0 - 9999 nên điều kiện chung ta phải nằm trong khoảng này.
if(dem==1500)
{
dem=0;
}
}
Với điều kiện trên các bạn có thể thay đổi giá trị tùy thích nha !
Code chương trình chúng ta đơn giản vậy thôi không có gì phức tạm cả.
- Đây là ảnh mô phonger chương trình.
- Link download project : Click here
2 nhận xét
Write nhận xétAD ơi, cho e xin tài liệu con PIC18f4550 này với ạ, em cảm ơn ad nhiều!!!
Reply#fuses NOMCLR INTRC_IO
Replysetup_oscillator(OSC_8MHZ);
2 hàm trên có nghĩa gì thế bạn?
EmoticonEmoticon