led dotmatrix ควบคุมด้วยสวิตซ์ ทำไงอ่ะค่ะ

Started by newka123, May 21, 2013, 10:12:28 PM

Previous topic - Next topic

newka123



#define    left_sw      input(PIN_A0)
#define    right_sw     input(PIN_A1)
#define    up_sw        input(PIN_A2)
#define    down_sw      input(PIN_A3)


void main(void){

int i = 0;
int disp_buff[];


set_tris_b(0x00);
set_tris_d(0x00);

while(TRUE){

if(!left_sw){
    for(i=0;i<8;i++){
   
        disp_buff[i] <<= 1;
    }
        output_b(disp_buff[i]) ;     
   output_d(~(1 << i));       
   delay_ms(50);
   i++;
    }


if(!right_sw){
    for(i=0;i<8;i++){
        disp_buff[i] >>= 1;
    }
        output_b(disp_buff[i]) ;     
   output_d(~(1 << i));       
   delay_ms(50);
   i++;
   
}



if(!up_sw){
    for(i=0;i<8;i++){
        disp_buff[i] = disp_buff[(i+1)&7] ;
    }
        output_b(disp_buff[i]) ;     
   output_d(~(1 << i));        /
   delay_ms(50);
   i++;
   
}




if(!down_sw){
    for(i=0;i<8;i++){
        disp_buff[i] = disp_buff[(i-1)&7] ;
    }
        output_b(disp_buff[i]) ;     
   output_d(~(1 << i));       
   delay_ms(50);
   i++;
    }
   
}
}



ลองๆไปประมานนี้ค่ะ แต่ไม่ได้ หาตัวอย่างในเน็ตไม่เจออ่ะคะ เลยมาถามหน่อย( จะโดนมั้ยเนี่ย  :-[ )

shamanjum

ฮ่าๆ ผมก็ยังทำไม่ได้ กำลังศึกษาไปเรื่อยๆ = ="

ในเน็ตหายากมว้าก

RoLRoR

ใช้ กูเกิล ลองค้นหา "เป็นรูป" ก็จะง่ายขึ้นนะ
ลองพิมพ์คำค้นหา เปลี่ยนไปมา "16f877 led metrix" "16f877 led 8x8"
มีเยอะนะ

http://www.youtube.com/watch?feature=player_embedded&v=I5fp1eIqBMI
http://www.youtube.com/watch?feature=player_embedded&v=ICsi2mhrH94
http://www.youtube.com/watch?feature=player_embedded&v=1EewMswIQXc
http://www.youtube.com/watch?feature=player_embedded&v=Q_pF8WSTVGU
http://www.youtube.com/watch?feature=player_embedded&v=tIhrOQJ8j5g

http://www.freewebs.com/defxev/scroll.htm
http://www.picbasic.co.uk/forum/showthread.php?t=12674

เริ่มต้นลองเขียน โฟลวชาร์ต เรียงลำดับดู
ข้อมูลอยู่ในตัวแปร มี 8บิต และ วางเรียงกัน 8ชั้น
เหมือนถาดไข่ 8ช่อง วางขนานกัน 8อัน

จะย้ายข้อมูลไปซ้ายหรือขวา ก็เลื่อนบิต ที่ตัวแปรที่มีข้อมูลอยู่
จะเลื่อนข้อมูลขึ้นหรือลง ก็ก๊อบข้อมูล ไปตัวแปรถัดไป และเคลียร์ข้อมูลในตัวแปรเดิม

เพื่อนๆอยากช่วย แต่ไม่บอกการทำงานกดปุ่มไปทำอะไรกับข้อมูล วงจรอย่างไร เดาล้วนๆครับ
ถ้าเขียนโฟลวชาร์ตได้ เดี๋ยวช่วยกันเขียนตามการทำงานก็ได้ครับ.

***ลองเขียนโฟลวชาร์ตและโปรแกรมกดปุ่ม ให้ led เลื่อนไปซ้าย-ขวา
***ที่ led แถวเดียว 8หลอด ดูก่อน ดีกว่าครับ เข้าใจตั้งแต่แรกก่อน ไม่มีทางลัด


newka123

สงสัยตรง output มันหน่ะ ><" ขอบคุนคะ

RoLRoR

คำสั่ง output  หรือ ขา output  หรือวงจร output
สงสัยอะไรครับ?

Paekung

https://github.com/saintent/DisplayControl
ลองดัดแปลงจากโคดของผมดูครับ

โคดอยู่ใน at_command.c และ led.c ครับ
รับเขียนโปรแกรม ออกแบบวงจร ไปจนถึง PCB
ไมโคร : 8/16/32 bit  ทุกตระกูล
สนใจติดต่อ
saintentex@gmail.com
หรือ 081-1846590

newka123


RoLRoR

สงสัยอะไรเกี่ยวกับคำสั่ง คำสั่ง อินพุต เอาพุต หรือครับ เป็นเพียงนำค่าส่งออกพอร์ตหรือพินที่ต้องการ
รูปแบบก็แล้วแต่คอมไพเลอร์ และเป็นคำสั่งพื้นฐานที่ควรใช้งานได้อยู่แล้ว (เริ่มต้นโปรแกรมไฟกระพริบ)
เพราะใช้งานรับหรือส่งข้อมูลออกไปยังอุปกร์ต่อพ่วงด้านนอก
เป็นงานพิ้นฐานของไมโครอยู่แล้วนี่ครับ

ถามให้ชัดเจนดีกว่าครับ.
คุณ shamanjum ก็เคยแจ้งว่า ได้ทดสอบในส่วนไฟกระพริบแล้ว และปุ่มกดรับข้อมูล
ก็เคยทำแล้วนี่ครับ.