#include <16F877.h>
#fuses HS,NOWDT,BROWNOUT,PUT,NOLVP
#use delay(clock=40000000)
#include <lcd.c>
#define use_portb_kbd
#include <kbd.c>
//======================================
void main()
{
char k;
set_tris_b(0xFF); //keypad_port_b
set_tris_c(0); // led_port_c
lcd_init(); //lcd_port_d
kbd_init();
port_b_pullups(TRUE); // Need to pull up the keypad row pins //keyped_port _b เชื่อมต่อกับ lcd
output_low(PIN_C1); ดวงที่1 สีเขียวเติดเมื่อกดคำตอบถูก(กดปุ่มตามที่กำหนดเช่น รอการกดเลข4ไฟติดเมื่อกดเลข4) // เริ่มต้นให้ไฟ3ดวงดับ
output_low(PIN_C2); ดวงที่2(ไฟดวงนี้ติดถ้าไม่ได้กกดเลข4 คือไฟสีแดงติดเพราะกดคำตอบผิด)
output_low(PIN_C3); ดวงที่3 (ไฟสีเหลือง ติดทุกที่ที่กดปุ่มทุกปุ่ม)
lcd_putc(k);
lcd_gotoxy(4,1);
lcd_putc("\fwelcome..."); // เริ่มต้นให้มันแสดงว่ายินดีต้อนรับ
delay_ms(20);
lcd_putc("\f"); //ลบคำยินดีต้อบรับออกไป
lcd_gotoxy(2,1);
lcd_putc("2 3 4 5 6 7"); //แสดงแม่เลข แม่2-แม่12
lcd_gotoxy(2,3);
lcd_putc("8 9 10 11 12");
while(TRUE)
{
k=kbd_getc();
//////////
if ( k!=0) //ถ้าปุ่มถูกกดไฟดวงที่3ติดเสมอ
{
output_high(PIN_C3);
delay_ms(5);
output_low(PIN_C3);
}
if(k=='2') //เมื่อขึ้นแม่ที่ต้องการแล้ว (ในที่นี้เลือกแม่ 2)กดปุ่ม2
{
lcd_putc('\f');
lcd_putc("2*2"); // ให้โชตัวเลขแม่2เป็น2*2
}
else if((k>='2'|| k=='1')) // ถ้ากดตัวเลขที่ไม่ใช่เลข2ที่กำหนดไว้ให้ไฟสีแดงติด ถือว่าผิด
{
output_high(PIN_C2);
delay_ms(5);
output_low(PIN_C2);
}
//ปัญหาคือ... บันทัดตรงนี้ผมต้องการรอการกดคำตอบคือเลข4 เขียนอย่างไรคับ ผมเขียนแบบนี้while(k=='4');แต่มันไม่ได้ ช่วยแก่ให้หน่อยได้ไหม่คับว่าเขียนอย่างไรคับ
ส่วนตรงนี้ผมอยากให้ ให้lcdโช2*2แล้วรอการกดคำตอบ แล้วต้องสร้างตัวแปรให้lcdไหม่คับ สร้างเหมือนกับตัวแปรคีย์ เช่น b=lcd_putc();แบบนี้ไม่ เมื่อได้แล้วรอการกดคีย์เหมือนเดิมอีกเขียนอย่างไรคับ ช่วยแก้ให้หน่อยได้ไหม่ครับ
ผมติดตร้งนี้มาหลายวันแล้วครับ กลัวว่าโปรเจคผมจะไม่ทันคับ ขอช่วยหน่อยครับ ขอบคุณมากครับ...
}
}
ช่วยแก้ให้หน่อยครับ
#fuses HS,NOWDT,BROWNOUT,PUT,NOLVP
#use delay(clock=40000000)
#include <lcd.c>
#define use_portb_kbd
#include <kbd.c>
//======================================
void main()
{
char k;
set_tris_b(0xFF); //keypad_port_b
set_tris_c(0); // led_port_c
lcd_init(); //lcd_port_d
kbd_init();
port_b_pullups(TRUE); // Need to pull up the keypad row pins //keyped_port _b เชื่อมต่อกับ lcd
output_low(PIN_C1); ดวงที่1 สีเขียวเติดเมื่อกดคำตอบถูก(กดปุ่มตามที่กำหนดเช่น รอการกดเลข4ไฟติดเมื่อกดเลข4) // เริ่มต้นให้ไฟ3ดวงดับ
output_low(PIN_C2); ดวงที่2(ไฟดวงนี้ติดถ้าไม่ได้กกดเลข4 คือไฟสีแดงติดเพราะกดคำตอบผิด)
output_low(PIN_C3); ดวงที่3 (ไฟสีเหลือง ติดทุกที่ที่กดปุ่มทุกปุ่ม)
lcd_putc(k);
lcd_gotoxy(4,1);
lcd_putc("\fwelcome..."); // เริ่มต้นให้มันแสดงว่ายินดีต้อนรับ
delay_ms(20);
lcd_putc("\f"); //ลบคำยินดีต้อบรับออกไป
lcd_gotoxy(2,1);
lcd_putc("2 3 4 5 6 7"); //แสดงแม่เลข แม่2-แม่12
lcd_gotoxy(2,3);
lcd_putc("8 9 10 11 12");
while(TRUE)
{
k=kbd_getc();
//////////
if ( k!=0) //ถ้าปุ่มถูกกดไฟดวงที่3ติดเสมอ
{
output_high(PIN_C3);
delay_ms(5);
output_low(PIN_C3);
}
if(k=='2') //เมื่อขึ้นแม่ที่ต้องการแล้ว (ในที่นี้เลือกแม่ 2)กดปุ่ม2
{
lcd_putc('\f');
lcd_putc("2*2"); // ให้โชตัวเลขแม่2เป็น2*2
}
else if((k>='2'|| k=='1')) // ถ้ากดตัวเลขที่ไม่ใช่เลข2ที่กำหนดไว้ให้ไฟสีแดงติด ถือว่าผิด
{
output_high(PIN_C2);
delay_ms(5);
output_low(PIN_C2);
}
//ปัญหาคือ... บันทัดตรงนี้ผมต้องการรอการกดคำตอบคือเลข4 เขียนอย่างไรคับ ผมเขียนแบบนี้while(k=='4');แต่มันไม่ได้ ช่วยแก่ให้หน่อยได้ไหม่คับว่าเขียนอย่างไรคับ
ส่วนตรงนี้ผมอยากให้ ให้lcdโช2*2แล้วรอการกดคำตอบ แล้วต้องสร้างตัวแปรให้lcdไหม่คับ สร้างเหมือนกับตัวแปรคีย์ เช่น b=lcd_putc();แบบนี้ไม่ เมื่อได้แล้วรอการกดคีย์เหมือนเดิมอีกเขียนอย่างไรคับ ช่วยแก้ให้หน่อยได้ไหม่ครับ
ผมติดตร้งนี้มาหลายวันแล้วครับ กลัวว่าโปรเจคผมจะไม่ทันคับ ขอช่วยหน่อยครับ ขอบคุณมากครับ...
}
}