1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Code mô hình bộ đếm sản phẩm phân loại theo màu sắc sử dụng PIC 16F887

5 994 14

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 22,42 KB
File đính kèm Code đồ án.rar (19 KB)

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

Nội dung

Code dùng cho mô hình đếm và phân loại sản phẩm theo màu sắc lập trình cho con PIC 16F887 .Code dùng cho mô hình đếm và phân loại sản phẩm theo màu sắc lập trình cho con PIC 16F887 .Code dùng cho mô hình đếm và phân loại sản phẩm theo màu sắc lập trình cho con PIC 16F887 .Code dùng cho mô hình đếm và phân loại sản phẩm theo màu sắc lập trình cho con PIC 16F887 .

Trang 1

#include <16f887.h>

#include <DEF_16F887.h>

#fuses HS, NOWDT, NOPROTECT, NOLVP, NOBROWNOUT

#use delay(clock=20000000)

//khai bao cac port su dung

#use fast_io(a)

#use fast_io(b)

#use fast_io(c)

#use fast_io(d)

#use fast_io(e)

//khai bao dia chi port

#byte porta=0x05

#byte portb=0x06

#byte portc=0x07

#byte portd=0x08

#byte porte=0x09

//khai bao cac thu vien su dung

#include <math.h>

#include <string.h>

#include <stdlib.h>

#include <stdio.h>

#bit bt1 = portd.7

#bit bt2 = portd.6

#bit bt3 = portd.5

#bit relay = portd.3

#bit sv_r = porte.0

#bit sv_g = porte.1

#bit sv_b = porte.2

#bit data = portc.2

#bit stcp = portc.1

#bit shcp = portc.0

#bit s2 = portb.1

#bit s3 = portb.2

#bit s1 = portb.3

#bit s0 = portb.4

#bit led = portb.5

unsigned char Code7Seg[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; unsigned int16 pulse=0, pulse_r=0, pulse_g=0, pulse_b=0;

unsigned int val_r=0, val_g=0, val_b=0;

unsigned int step=0, color=0;

Trang 2

void ngat()

{

pulse++;

}

#INT_TIMER1

void ngat_time()

{

step++;

switch(step)

{

case 1: //1.5ms

sv_r=1; sv_g=1; sv_b=1;

set_timer1(59535);

break;

case 2: //0.3ms

switch(color)

{

case 1:

sv_r=0;

break;

case 2:

sv_g=0;

break;

case 3:

sv_b=0;

break;

default:

break;

}

set_timer1(63035);

break;

case 3: //8.2ms

sv_r=0; sv_g=0; sv_b=0;

set_timer1(24535);

break;

case 4: //10ms

Trang 3

sv_r=0; sv_g=0; sv_b=0;

set_timer1(15535);

step=0;

break;

default:

break;

}

}

void IC_74hc595(int val)

{

unsigned char i;

shcp = 0;

for(i=0;i<=7;i++)

{

if((val & 0x80)==0) data=0;

else data=1;

val=val<<1;

shcp=1;

shcp=0;

}

}

void show_led(unsigned int val1, unsigned int val2, unsigned int val3)

{

IC_74hc595(Code7Seg[val1]);

IC_74hc595(Code7Seg[val2]);

IC_74hc595(Code7Seg[val3]);

stcp=0;

delay_us(5);

stcp=1;

stcp=0;

}

void read_color()

{

s2=0; s3=0; pulse=0; delay_ms(10); pulse_r = pulse; // doc tin ieu mau do

s2=1; s3=1; pulse=0; delay_ms(10); pulse_g = pulse; // doc tin ieu mau xanh la s2=0; s3=1; pulse=0; delay_ms(10); pulse_b = pulse; // doc tin ieu mau xanh duong

if((pulse_r>pulse_g)&&(pulse_r>pulse_b)&&(pulse_r>100))

{

if(val_r++>9) val_r=0;

write_eeprom(0x00, val_r);

Trang 4

show_led(val_b,val_g,val_r);

color=1;

delay_ms(8000);

}

if((pulse_g>pulse_r)&&(pulse_g>pulse_b)&&(pulse_g>50)) {

if(val_g++>9) val_g=0;

write_eeprom(0x01, val_g);

show_led(val_b,val_g,val_r);

color=2;

delay_ms(10000);

}

if((pulse_b>pulse_g)&&(pulse_b>pulse_r)&&(pulse_b>100)) {

if(val_b++>9) val_b=0;

write_eeprom(0x02, val_b);

show_led(val_b,val_g,val_r);

color=3;

delay_ms(12000);

}

if((pulse_r<100)&&(pulse_g<100)&&(pulse_b<100))

{

color=0;

}

}

void pulsh_button()

{

if(bt1==0)

{

delay_ms(1000);

relay =~ relay;

while(bt1==0){};

}

if(bt2==0)

{

delay_ms(100);

val_r=0; val_g=0; val_b=0;

write_eeprom(0x00, val_r);

write_eeprom(0x01, val_g);

write_eeprom(0x02, val_b);

Trang 5

show_led(val_b,val_g,val_r);

while(bt2==0){};

}

}

void main()

{

set_tris_a(0b000110);

set_tris_b(0b00000001);

set_tris_d(0b11100000);

set_tris_c(0b10000000);

set_tris_e(0b000);

setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); enable_interrupts(INT_EXT);

enable_interrupts(GLOBAL);

set_timer1(55035);

enable_interrupts(INT_TIMER1);

s0=1; s1=0; //f=100%

led=1;

val_r = read_eeprom(0x00);

val_g = read_eeprom(0x01);

val_b = read_eeprom(0x02);

show_led(val_b,val_g,val_r);

while(TRUE)

{

read_color();

pulsh_button();

}

}

Ngày đăng: 27/02/2017, 10:03

TỪ KHÓA LIÊN QUAN

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

w