มินิโปรเจค สกอบอลนับแต้ม วอเลย์บอล

รูปจาก Proteus 8




รูป


อุปกรณ์
1. pic16f628a           1ตัว
2. 7 Segman 4digit    1ตัว
3. ตัว R  220         7ตัว
4.  ตัวR   10k        3ตัว
5.   Button            3ตัว
6    Led                8 ตัว
7.  Crystal            1 ตัว
8.  คาปาซิสเตอร์  2 ตัว

Code
int num[] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F };
//ตัวเเปล num[] เก็บค่าข้อมูลตัวเลข 0-9                   

int X=0; int XX=0;         
int Y=0;  int YY=0;                                         
//ประกาศตัวเเปลจำนวนเต็ม เพื่อใช้เลื่อนข้อมูลเลขที่จะเเสดง

void main() {                                                 
     TRISB = 0b10000000;            //กำหนดขาRB0-7เป็นOUTPUTเเละ RB7เป็นINPUT
     TRISA = 0b11110000;            //กำหนดขาRA0-3เป็นOUTPUTเเละ RB4-7 เป็นINPUT

 while(1) {                                               
   int xi=PORTA.F4;                               //.ให้ xi เก็บค่าสถานะจากขา RA4
   int yo=PORTB.F7;                             // ให้ yo เก็บค่าสถานะจากขา RB7
 
   if(xi==0){X++;Delay_ms(200);}     //ตรวจสอบหาก xi=0 , Xจะมีค่า+1ทุกๆที่กด
         PORTB = ~num[X] ;                  //เขียนสถานะส่งออกที่ขา RB โดยใช้ข้อมูลจาก num[]
         PORTA = 0b1000;                      //เขียนสถานะส่งออก HIGH ที่ขา RA3 (เพื่อเปิดcommonD4)
         Delay_ms(5);                              //
         if(X==10){X=0;XX++;}            //เช็คค่าตัวเลขไม่ให้เกินเลข 9 เเละเพิ่มค่าขึ้นหลักสิบ
         ///////////////////
         PORTB =  ~num[XX];          //  เขียนสถานะส่งออกที่ขา RB โดยใช้ข้อมูลจาก num[]
         PORTA = 0b0100;                 //เขียนสถานะส่งออก HIGH ที่ขา RA3 (เพื่อเปิดcommonD3)
         Delay_ms(5);                         //
         if(XX==2&&X==5){XX=0;X=0;}      //เช็คค่าตัวเลขไม่ให้เเสดงเกินเลข 25
         ////////////////////////////// ///////////
     if(yo==0){Y++;Delay_ms(200);}      //
         PORTB =  ~num[Y];                          //
         PORTA = 0b0010;                             //
         Delay_ms(5);                                          //
         if(Y==10){Y=0;YY++;}                //
         ///////////////////
         PORTB =  ~num[YY];                    //
         PORTA = 0b0001;                         //
         Delay_ms(5);                                 //
         if(YY==2&&Y==5){YY=0;Y=0;}               //


  }
}

https://youtu.be/2IEPMszNEl4

ความคิดเห็น

บทความที่ได้รับความนิยม