1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Chương trình điều khiển các led đơn nối với PORTB nhấp nháy ppt

22 1,8K 22
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 285,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương trình đếm xung ngoài đưa tới chân RA4 hiển thị số đếm từ 0-99 trên 2 led 7 đoạn anode chung nối song song với PORTB... 9 Chương trình đếm xung ngoài đưa tới chân RB0 chân ngắt ngo

Trang 1

1 Chương trình điều khiển các led đơn nối với PORTB nhấp nháy

//Chuong trinh dieu khien cac led don noi voi PORTB nhap nhay

#include "16f877a.h" //file dinh nghia cac thanh ghi, cac hang so cua PIC

#fuses NOLVP, NOWDT //ko nap chuong trinh o dien the thap, khong su dung

#use delay(clock=4Mhz) //khai bao su dung tan so thach anh 4Mhz

void main(void) //bat dau chuong trinh chinh

{

set_tris_B(0x0); //xac lap PORT B la dau ra (thanh ghi TRISB)

//TRISB=0x0: dau ra, TRISB=0b11111111 dau vao

while(true)

{

output_B(0); //xuat ra cac chan cua PORTB muc 0

delay_ms(100); //tre mot khoang thoi gian de quan sat

output_B(0xff); //xuat muc 1 ra cac chan cua PORTB

delay_ms(100); //tre mot khoang thoi gian de quan sat

}

}

2.Chương trình điều khiển các led đơn nối với PORTB sáng dần

//sang dan bat dau tu RB0 den RB7

#include "16F877A.h"

#FUSES HS, NOWDT, NOLVP

//HS: su dung thach anh tan so cao >4Mhz

//NOWDT: khong su dung Watchdog

//NOLVP: khong su dung nap dien ap thap

#use delay(clock=4Mhz) //su dung thach anh tan so 12Mhz

Trang 2

void main(void)

{

unsigned int8 x=0; //khai bao bien x 8bit, khong dau

set_tris_B(0); //xac lap PORTB la dau ra

while(true)

{

x=0;

output_B(0); //tat het cac led noi voi PORTB

delay_ms(200); //tre mot khoang thoi gian de quan sat

lap:

x<<=1; //dich trai bien x mot bit

x|=1; //hoac muc bit bien x voi gia tri 1 (dua bit so 0 len

Trang 4

void hienthi(int8 so)

set_tris_b(0x00); //xac lap PORTB la dau ra

set_tris_a(0x0); //xac lap PORTA la dau ra

Trang 5

/*chuong trinh dem xung ngoai dua toi chan RA4 hien thi so demtren cac led don noi voi PORTC*/

set_tris_C(0); //xac lap PORTC la dau ra

TRISA4=1; //xac lap RA4 la dau vao

x=get_timer0(); //doc so dem cua counter

output_C(x); //xuat gia tri doc duoc ra PORTC

if(x>=201) set_timer0(0);

}

}

Trang 6

6 Chương trình đếm xung ngoài đưa tới chân RA4 hiển thị số đếm từ 0-99 trên 2 led 7 đoạn (anode chung) nối song song với PORTB Chân RA0 và RA1 lần lượt quét led hàng đơn vị và hàng chục

/*chuong trinh dem xung ngoai dua toi chan RA4 su dung counter0

cac chan a,b, ,f cua 2 led 7 doan (anode chung)noi song song

voi RB0,RB1 RB6

chan RA0 quet led hang don vi, RA1 quet led hang chuc

xung dua vao chan RA4*/

#include "16F877A.h"

#fuses NOWDT, NOLVP, XT

#use delay(clock=4Mhz)

//tich cuc muc thap

const char ma7doan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void hienthi(int8 chuc,int8 dv);

void main(void)

{

int8 x=0,chuc,dv;

set_tris_B(0); //xac lap PORTB la dau ra

output_drive(pin_A0); //xac lap RA0 la dau ra

Trang 7

output_drive(pin_A1); //xac lap RA1 la dau ra

output_float (pin_A4); //xac lap RA4 la dau vao

output_B(0xff); //tat het cac led (led anode chung)

setup_timer_0(T0_EXT_H_TO_L|T0_DIV_1); //xac lap cho timer0 la

bo dem xung ngoai

set_timer0(0); //xac lap cho timer0 dem xung tu 0

output_B(ma7doan[chuc]); //giai ma hang chuc va xuat ra portB

output_low(pin_A1); //cho led hang chuc dan

delay_ms(2);

output_high(pin_A1); //cam led hang chuc

output_B(ma7doan[dv]); //giai ma hang don vi va xuat ra portc

output_low(pin_A0); //cho led hang don vi dan

//Chuong trinh su dung timer0

//De tao thoi gian 0.05 giay timer can dem duoc (4*10^6/4)*0.05=5*10^4 so dem//Goi so dem trong 1 lan tran la x

//So lan tran la y

//Chia tan z thi x*y*z=50.000

//Chon z=16, x=125 thi y=25

unsigned int8 y=0;

output_drive(PIN_B0); //xac lap RB0 la dau ra

Trang 8

setup_timer_0(T0_internal|T0_DIV_16);//timer0 chuc nang timer, chia tan 16 set_timer0(-125); //xac lap so dem ban dau cua timer

// Chuong trinh su dung timer0

// De tao thoi gian 1 giay timer tuong duong voi 10^6 chu ky may

Trang 9

// Goi so dem trong 1 lan tran la x

// So lan tran la y

// Chia tan z thi x*y*z=1.000.000 chu ky may

// Chon z=64, x=125 thi y=125

Trang 10

9 Chương trình đếm xung ngoài đưa tới chân RB0 (chân ngắt ngoài) hiển thị số đếm

từ 0-99 trên các led đơn nối với PORTC

/*Chuong trinh dem xung ngoai dua toi chan RB0(chan ngat ngoai) Hien thi so dem

tu 0-99 tren cac led don noi voi cong C*/

#include "16f877a.h"

#include "def_16F877a.h"

static char i=0;

/*chuong trinh con phuc vu ngat ngoai*/

Trang 11

set_tris_C(0); //xac lap portc la dau ra

output_float(PIN_B0); //xac lap chan RB0 la dau vao

enable_interrupts(GLOBAL); //cho phep ngat

enable_interrupts(INT_EXT); //cho phep ngat ngoai

Trang 14

SET_ADC_CHANNEL(0);// CHON NGO VAO CU THE DELAY_US(800);// TAO TRE

Trang 16

{ E=1; //TAO XUNG KICH

RS=0; //BUS NOI THANH GHI IR

RW=0; //CHE DO GHI DU LIEU

E=0; //TAO XUNG KICH

SET_ADC_CHANNEL(0);

DELAY_US(800);

}

Trang 18

0b10000010,0b11111000,0b10000000,0b10010000};// ma led ung voi cac chan theo tuan tu

Trang 19

{

if (a==0)

{

output_C(led7doan[0]); output_D(0b10101010); }

else

if (a==1)

{

output_C(led7doan[1]); output_D(0b00001111); }

else if (a==2)

{

output_C(led7doan[2]); output_D(0b11110000); }

else if (a==3)

{

output_C(led7doan[3]); output_D(0b10101010); }

else if (a==4)

{

output_C(led7doan[4]); output_D(0b01010101); }

else if (a==5)

{

output_C(led7doan[5]); output_D(0b11100111); }

else if(a==6)

{

output_C(led7doan[6]); output_D(0b11000011); }

else if(a==7)

{

output_C(led7doan[7]); output_D(0b10000001); }

else if(a==8)

{

output_C(led7doan[8]);

Ngày đăng: 10/03/2014, 17:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w