اطلاعیه

Collapse
No announcement yet.

کمک فوری GLCD و موس

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کمک فوری GLCD و موس

    با عرض سلام وخسته نباشید خدمت کاربران عزیز
    من دو برنامه GLCD و راه اندازی موس در زیر آوردم که میخوام با استفاده از این دو برنامه و توابع فرعی آنها:
    1- برنامه ای که port b را بخونه و به ازای عدد ورودی نموداری روی GLCD بالا وپایین شود
    نمودار شامل ستون های 30 تا 38 شود.
    2- برنامه ای که با استفاده از زیربرنامه های موس یک ستون روی GLCD از وسط به ازای حرکت موس به بالا . بالا وبه ازای حرکت موس به پایین . پایین رود.
    لطفا کمکم کنید خیلی روشون کار کردم ولی نتونستم انجام بدم

    1- برنامه GLCD

    #include <mega16.h>

    void command (unsigned char);
    void display (unsigned char);
    void ready (void);
    void lcd_clr (void);
    void main(void) {
    unsigned char x;
    PORTA = 0x00;
    DDRA = 0xFF;
    PORTB = 0x00;
    DDRB = 0x00;
    PORTC = 0xFF;
    DDRC = 0xFF;
    PORTD = 0x00;
    DDRD = 0x00;
    // LCD module initialization
    command(0x3F);
    command(0xB8);
    command(0x42);
    command(0xC0);
    lcd_clr();
    while (1) {
    x = PIND;
    x = x | 0xB8;
    x = x & 0xBF;
    command(x);
    command(0x42);
    display(PINB);
    };
    }
    void command(unsigned char x) {
    ready();
    PORTA = x;
    PORTC.0 = 0;
    PORTC.1 = 0;
    PORTC.2 = 1;
    PORTC.2 = 0;
    }
    void display(unsigned char x) {
    ready();
    PORTA = x;
    PORTC.0 = 1;
    PORTC.1 = 0;
    PORTC.2 = 1;
    PORTC.2 = 0;
    }
    void ready(void) {
    DDRA = 0x7F;
    PORTC.0 = 0;
    PORTC.1 = 1;
    do {
    PORTC.2 = 1;
    PORTC.2 = 0;
    }
    while (PINA.7 == 1);
    DDRA = 0xFF;
    }
    void lcd_clr (void) {
    unsigned char i, j;
    for (i=0; i<8; i++)
    for (j=0; j<64; j++) {
    command(0xB8 + i);
    command(0x40 + j);
    display(0x00);
    };
    }


    2- برنامه موس

    #include <mega16.h>
    #include <delay.h>
    unsigned char mouse_r (void);
    void mouse_w (unsigned char);
    void mouse_on (void);
    void main(void) {
    unsigned char y, x, s, ch;
    PORTA = 0x00;
    DDRA = 0xFF;
    PORTB = 0x00;
    DDRB = 0x00;
    PORTC = 0x00;
    DDRC = 0x00;
    PORTD = 0x00;
    DDRD = 0x00;
    mouse_on( );
    while (1) {
    s = mouse_r( ) ;
    x = mouse_r( ) ;
    y = mouse_r( ) ;
    PORTA = 0x00;
    ch = s;
    ch &= 0xC0;
    if (ch == 0) {
    ch = s;
    ch &= 0x10;
    if (ch!=0) {
    x = 255 - x;
    if (x != 0) PORTA.0 = 1;
    else PORTA.0 = 0;
    }
    else
    if ( x!= 0) PORTA.1 = 1;
    else PORTA.1 = 0;

    ch = s;
    ch &= 0x20;
    if (ch != 0) {
    y = 255 - y;
    if (y != 0) PORTA.2 = 1;
    else PORTA.2 = 0;
    }
    else
    if (y != 0) PORTA.3 = 1;
    else PORTA.3 = 0;
    //key check
    ch = s;
    ch &= 0x02;
    if (ch != 0) PORTA.4 = 1;
    ch = s;
    ch &= 0x01;
    if (ch != 0) PORTA.6 = 1;
    ch = s;
    ch &= 0x04;
    if (ch != 0) PORTA.5 = 1;
    };
    };
    }
    unsigned char mouse_r (void) {
    unsigned char c, a, i = 0;
    DDRB = 0x00;
    while (PINB.0 == 0 & PINB.1 == 0);
    while (PINB.0 == 1 & PINB.1 == 1);
    while (PINB.0 == 0);
    while (PINB.0 == 1);
    for (i=0; i<8; i++) {
    c = PINB;
    c = c << 6;
    c = c & 0x80;
    a = a >> 1;
    a = a ^ c;
    while (PINB.0 == 0);
    while (PINB.0 == 1);
    };
    while (PINB.0 == 0 & PINB.1 == 0);
    return a ;
    }
    void mouse_w (unsigned char x) {
    unsigned char i, c, p = 0;
    PORTB = 0x03;
    DDRB = 0x03;
    while (PINB.0 == 0 & PINB.1 == 0);
    PORTB.0 = 0;
    delay_us(100);
    PORTB.1 = 0;
    PORTB.0 = 1;
    DDRB = 0x02;
    while (PINB.0 == 1);
    for (i=0; i<8; i++) {
    c = x;
    c = c & 0x01;
    x = x >> 1;
    PORTB.1 = c;
    if (c == 1) p += 1;
    while (PINB.0 == 0);
    while (PINB.0 == 1);
    };
    p = p%2;
    if (p == 0) PORTB.1 = 1;
    else PORTB.1 = 0;
    while (PINB.0 == 0);
    while (PINB.0 == 1);
    PORTB.1 = 1;
    DDRB = 0x00;
    while (PINB.0 == 1 & PINB.1 == 1);
    while (PINB.0 == 0 & PINB.1 == 0);
    }
    void mouse_on ( ) {
    unsigned char y;
    mouse_w(0xFF);
    y = mouse_r( );
    y = mouse_r( );
    mouse_w(0xEA);
    y = mouse_r( );
    mouse_w(0xE8);
    y = mouse_r( );
    mouse_w(0x01);
    y = mouse_r( );
    mouse_w(0xF3);
    y = mouse_r( );
    mouse_w(0x0A);
    y = mouse_r( );
    mouse_w(0xF4);
    y = mouse_r( );
    }

    :bye

    #2
    پاسخ : کمک فوری GLCD و موس

    سلام اگر این برنامه رو خودت نوشتی خوب میگم احسنت ولی اگر از یک کتاب نوشتی باید بگم این برنامه جواب نمیده .واگر راهنمایی خواستی در خدمتم

    دیدگاه

    لطفا صبر کنید...