CodeCCS.Barcode

mail@pastecode.io avatar
unknown
plain_text
2 years ago
4.2 kB
3
Indexable
Never
#include <Barcode_CCS.h>
#use delay(clock = 4000000)
//#use fast_io(D)
#use rs232(baud=9600, parity=N, xmit=PIN_C6, rcv=PIN_C7, bits=8)
// khai bao thu vien LCD
#define LCD_ENABLE_PIN PIN_C3
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D0
#define LCD_DATA4 PIN_D2
#define LCD_DATA5 PIN_D3
#define LCD_DATA6 PIN_C4
#define LCD_DATA7 PIN_C5
#include <lcd.c>
// LED
#define LED1 PIN_D6
#define LED2 PIN_D7

// Cam Bien
#define CB1 PIN_A0
#define CB2 PIN_A1
#define CB3 PIN_A2
// Dong co servo
#define SERVO1 PIN_B4
#define SERVO2 PIN_B5

// L298
#define IN1 PIN_C1
#define IN2 PIN_C2

// Cac bien
int demsp1=0, demsp2=0, demsp3=0;// bien dem so luong san pham


// Kiem tra hoat dong mach
void hdmach()
{
   output_high(LED1);
   output_high(LED2);
}

// Chay bang tai - Dong co DC
void chaybangtai()
{
      output_low(PIN_C2); // cho phep dong co quay
      output_low(PIN_C0); // dong co quay thuan 1 chieu
      output_high(PIN_C1);
      set_pwm1_duty(125);
}

// nhan du lieu tu may tinh

void nhandata()
{
   
   char c = getch();
   if (c=="0")          // nhan start o VS chay bang tai
      {
         chaybangtai();
      }
   if (c=="1")          // nhan stop o VS dung bang tai
      {
         output_low(IN1);
         output_low(IN2);
      }
   if (c=="2")          // cam bien tai 1
      {
         demsp1++;
         output_high(SERVO1);  // mo servo o 1 ra 90 do
         delay_us(1500);
         output_low(SERVO1);
         delay_us(18500);
         
         lcd_init();       // hien thi len LCD
         lcd_putc("\f");
         delay_ms(200);
         lcd_gotoxy(1,1);
         lcd_putc(" SAN PHAM LOAI 1" );
         lcd_gotoxy(1,2);
         printf(LCD_PUTC, "SO LUONG = %u",demsp1);

      }
   if (c=="3")          // cam bien tai 2
      {
         demsp2++;
         output_high(SERVO2);  // mo servo o 2 ra 90 do
         delay_us(1500);
         output_low(SERVO2);
         delay_us(18500);
         
         lcd_init();       // hien thi len LCD
         lcd_putc("\f");
         delay_ms(200);
         lcd_gotoxy(1,1);
         lcd_putc(" SAN PHAM LOAI 2" );
         lcd_gotoxy(1,2);
         printf(LCD_PUTC, "SO LUONG = %u",demsp2);
      }
   if (c=="4")          // o khung loi
      {
         demsp3++;
         
         lcd_init();       // hien thi len LCD
         lcd_putc("\f");
         delay_ms(200);
         lcd_gotoxy(1,1);
         lcd_putc(" SAN PHAM LOI" );
         lcd_gotoxy(1,2);
         printf(LCD_PUTC, "SO LUONG = %u",demsp3);
      }
}

void cambien()
   {
      if (input(CB1) == 0)
      {
         output_low(PIN_C0);
         output_low(PIN_C1);
         delay_ms(1000);
         output_high(PIN_C0);
         output_high(PIN_C1);
      }
      if (input(CB2) == 0)
      {
         delay_ms(500);
         output_high(SERVO1);  // dong servo ve 0 do
         delay_us(1000);
         output_low(SERVO1);
         delay_us(19000);
      }
      if (input(CB3) == 0)
      {
         output_high(SERVO2);  // dong servo ve 0 do
         delay_us(1000);
         output_low(SERVO2);
         delay_us(19000);
      }
   }

void main()
{
   setup_timer_2(T2_DIV_BY_4,250,1);   // dung timer2 bo chia truoc 4, gia tri dinh 250, bo chia sau 1
//   set_timer2(1);
   setup_ccp1(CCP_PWM);    // bam xung dieu khien toc do dong co
   set_pwm1_duty(125);     // tam thoi set up chay 50%
   
   set_tris_a(0x07);       // set chan A0 A1 A2 la chan nhan tin hieu vao
   set_tris_b(0xcf);       // set chan B4 B5 xuat tin hieu ra con lai nhan tin hieu vao
   set_tris_c(0x00);       // set toan bo port C xuat tin hieu ra
   set_tris_d(0x00);       // set toan bo port D xuat tin hieu ra
   set_tris_e(0x00);       // set toan bo port E xuat tin hieu ra
   
   port_b_pullups(1);      // kich hoat dien tro noi
   
   while(TRUE)
   {
     lcd_init();       // hien thi len LCD
     lcd_putc("\f");
     delay_ms(200);
     lcd_gotoxy(1,1);
     lcd_putc(" DO AN VI DIEU KHIEN" );
     lcd_gotoxy(1,2);
     lcd_putc(" PHAN LOAI SAN PHAM" );
     
     hdmach();
     nhandata();
     cambien();
     
   }

}