มินิโปรเจค สกอบอลนับแต้ม วอเลย์บอล
รูปจาก 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
ความคิดเห็น
แสดงความคิดเห็น