Chào mừng đến với Câu Lạc Bộ Sáng Tạo
Chia sẻ kinh nghiệm
Kết nối đam mê
Đang cập nhật thời gian...
BÀI VIẾT NỔI BẬT
Xin chào! Tôi là Ếch Sáng Tạo :-)
Chia sẻ trang




Chuyên mục
Bài mới
Xem nhiều
Thống kê
  • Bài viết: 334/334
  • Thành viên: 10.084
  • Đang online: 17
  • Khách hôm nay: 2.787
  • Khách hôm qua: 2.269
  • Tổng khách: 16.108.850
Bài viết
BÀI 7 : ĐẾM TỪ 0 ĐẾN 99 PIC16F877A XC8 - SangTaoClub.Net
BÀI 7 : ĐẾM TỪ 0 ĐẾN 99 PIC16F877A XC8
Đăng bởi: lam3ngon - Thời gian: 14-01-2016, 18:52
Chuyên mục: MCU 8051, AVR, PIC - Lượt xem: 4.571

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ẽ hướng dẫn các bạn đếm từ 0 – 99 sử dụng PIC16F877A và trình biên dịch MPLAB XC8 để viết code.

Đếm từ 0 - 9 thì chỉ có 1 LED còn đếm từ 0 - 99 thì có 2 LED nên trong cùng 1 thời điểm PORTX của con PIC không thể xuất dữ liệu ra 2 LED được nên buộc chúng ta phải sử dụng 2 chân của LED để bật, tắt phù hợp để dữ liệu có thể xuất ra 2 LED của chúng ta.

Và giải thuật được viết như sau :

PORTAbits.RA0 = 0;

PORTC = Code7Seg[donvi];

__delay_ms(50);

PORTAbits.RA0 = 1;     

PORTAbits.RA1 = 0;

PORTC = Code7Seg[chuc];

__delay_ms(50);

PORTAbits.RA1 = 1; 

Và khi đếm chúng ta phải xác định LED nào là LED hàng đơn vị và LED nào là LED hàng chục và chúng ta có công thức tính như sau :

chuc = count/10;

donvi = count%10; 

Hai phần mình nói ở trên cũng chính là 2 phần quan trọng để các bạn làm được bài này và các bạn có thể phát triển PROJECT của mình lên từ 2 LED có thể lên 4 hoặc 6 LED.

- Đây là ảnh mô phỏng protues.

- Đây là code chương trình.

#include <xc.h>

#include <stdio.h>

#include <stdlib.h>

#define _XTAL_FREQ 8000000

// CONFIG

#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)

#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)

#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)

#pragma config BOREN = OFF      // Brown-out Reset Enable bit (BOR disabled)

#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)

#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)

#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)

#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

const unsigned char Code7Seg[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,0xF8, 0x80, 0x90};

unsigned int count=0;

unsigned int chuc,donvi;

void display(unsigned count);

void main (void)

{

    TRISC = 0X00;

    PORTC = 0XFF;

    TRISAbits.TRISA0 = 0;

    TRISAbits.TRISA1 = 0;

    ADCON1 = 0x07;

    while(1)

    {

        display(count);

        count++;

        if(count==100)

        {

            count = 0;

        }

    }

}

void display (unsigned int count)

{

        chuc = count/10;

        donvi = count%10;

        PORTAbits.RA0 = 0;

        PORTC = Code7Seg[donvi];

        __delay_ms(50);

        PORTAbits.RA0 = 1;

        PORTAbits.RA1 = 0;

        PORTC = Code7Seg[chuc];

        __delay_ms(50);

        PORTAbits.RA1 = 1;

}

- Link download project Click here

Xem thêm tại Blog Click here


Nguồn: Programming PIC
  • Bạn chưa đăng nhập, không thể viết bình luận!
    Bấm vào đây để Đăng nhập hoặc Đăng ký!

  • Bài viết cùng chuyên mục
    Cần giúp nút ấn với hiệu ứng 8051 Cần giúp nút ấn với hiệu ứng 8051
    Đăng bởi: phan_anh_17371 - Thời gian: 06-09-2018, 10:53
    Chuyên mục: MCU 8051, AVR, PIC - Lượt xem: 2.328
    [SHARE] Thư viện chơi nhạc bằng module DFPLayer Mini Library [SHARE] Thư viện chơi nhạc bằng module DFPLayer Mini Library
    Đăng bởi: Vũ Văn Thái - Thời gian: 05-04-2018, 15:15
    Chuyên mục: MCU 8051, AVR, PIC - Lượt xem: 5.126
    có bạn nào tìm hiểu về stm8 ko có bạn nào tìm hiểu về stm8 ko
    Đăng bởi: ngocsi - Thời gian: 13-03-2017, 12:16
    Chuyên mục: MCU 8051, AVR, PIC - Lượt xem: 3.134
    Mạch đo tốc độ và quãng đường xe đạp sử dụng cảm biến hall hiển thị lcd Mạch đo tốc độ và quãng đường xe đạp sử dụng cảm biến hall hiển thị lcd
    Đăng bởi: leacebach - Thời gian: 04-03-2017, 20:57
    Chuyên mục: MCU 8051, AVR, PIC - Lượt xem: 3.339
    ỨNG DỤNG LM35 PIC16F877A CODE CCS ỨNG DỤNG LM35 PIC16F877A CODE CCS
    Đăng bởi: lam3ngon - Thời gian: 05-06-2016, 21:35
    Chuyên mục: MCU 8051, AVR, PIC - Lượt xem: 5.643
    BÀI 13 : EEPROM PIC16F877A XC8 BÀI 13 : EEPROM PIC16F877A XC8
    Đăng bởi: lam3ngon - Thời gian: 17-05-2016, 10:56
    Chuyên mục: MCU 8051, AVR, PIC - Lượt xem: 4.571
    giao tiếp eeprom với pc qua 89s52 giao tiếp eeprom với pc qua 89s52
    Đăng bởi: quangmanhvk - Thời gian: 04-05-2016, 10:04
    Chuyên mục: MCU 8051, AVR, PIC - Lượt xem: 3.092
    Tạo delay dùng timer 8051 Tạo delay dùng timer 8051
    Đăng bởi: andipanda - Thời gian: 18-04-2016, 11:09
    Chuyên mục: MCU 8051, AVR, PIC - Lượt xem: 3.771
    Mạch Đếm lùi sử dụng ic AT89C52 hoậc AT89C51 Mạch Đếm lùi sử dụng ic AT89C52 hoậc AT89C51
    Đăng bởi: vanthang - Thời gian: 14-04-2016, 00:52
    Chuyên mục: MCU 8051, AVR, PIC - Lượt xem: 3.212
    Chia sẽ code đèn giao thông ngã tư PIC16F877A CCS ! Chia sẽ code đèn giao thông ngã tư PIC16F877A CCS !
    Đăng bởi: lam3ngon - Thời gian: 11-03-2016, 23:25
    Chuyên mục: MCU 8051, AVR, PIC - Lượt xem: 8.635
    
    Chào mừng Hungnguyen123 đã tham gia câu lạc bộ sáng tạo!
    Vũ Văn Thái - vuthai
    Hôm nay là sinh nhật của ngoisao_bang1016, nguyenngoctram, thaospkt2012, hugo_8x, baodtcn, thanhphong, nguyenphuongnam, Hoan123, Forget, ← Gửi tin nhắn chúc mừng
    Múi giờ: UTC+07:00 - Asia/Ho Chi Minh ***** IP của bạn: 44.204.117.57 ***** Thời gian xử lý trang: 0.089 giây - Cache: Sẵn sàng!