اطلاعیه

Collapse
No announcement yet.

کمک نشان دادن چند حرف در تابلو روان (codevision)

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

    کمک نشان دادن چند حرف در تابلو روان (codevision)

    سلام
    من اکثر مقالات این سایت و سایت مهندس لاچینی در مورد تابلو روان را خوندم.
    اما اکثرا به زبان بیسیک هستن. :cry:
    من خودم یه برنامه نوشتم که حروف را توی دو تا ماتریس 8در8 نشون میده.
    همه ی حروف انگلیسی و فارسی رو هم طراحی کردم.

    حالا فقط موندم چطوری میتونم دو حرف و بیشتر (یک کلمه،یا جمله) رو نشون بدم. :eek: :angry:

    اگه میشه کمکم کنین. برنامه ساده و گویا نوشته شده. اما اگه جاییش رو نفهمیدین بگین تا توضیح بدم. :nerd:
    فایل های پروژه و شماتیک رو میتونین از اینجا دانلود کنین:
    دانلود از 4shared.com:
    http://www.4shared.com/file/elQuCuxa/Matrix.html
    http://www.4shared.com/photo/4DouqoxD/Schematic_fo_matrix.html

    دانلود از persiangig.com:
    http://santooristan.persiangig.com/پ...ی/Matrix.rar
    http://santooristan.persiangig.com/%...o%20matrix.jpg
    این هم عکس شماتیک توی همین جا!!!:




    این کد به زبان C:

    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V2.03.9 Standard
    Automatic Program Generator
    © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 12/5/2010
    Author : Roohi
    Company :
    Comments:


    Chip type : ATmega32
    Program type : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 512
    ************************************************** ***/

    #include <mega32.h>
    #include <delay.h>

    unsigned char satr[8]={0x00, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x3C, 0x18};


    char row[8]={0};
    int i,j,k,maxspeed=100,speed=90;
    unsigned char b=0;


    void left(void){
    PORTD.0=1;
    PORTD.1=0;
    }

    void right(void){
    PORTD.0=0;
    PORTD.1=1;
    }

    void clear(void){
    PORTB=0xFF;
    }

    void show(void){
    b=0x01;
    for(i=0;i<8;i++){
    PORTA=row[i];
    PORTB=~b;
    b=b<<1;
    delay_us(300);
    clear();
    }


    }

    void shift(int a){
    for(i=0;i<8;i++)
    row[i]=a<0?satr[i]>>-a:satr[i]<<a;
    }

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTA=0x00;
    DDRA=0xFF;

    // Port B initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTB=0x00;
    DDRB=0xFF;

    // Port C initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTC=0x00;
    DDRC=0xFF;

    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTD=0x00;
    DDRD=0xFF;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    clear();
    while (1)
    {
    for(j=-8;j<16;j++){
    if(j<1){
    right();
    for(k=0;k<(maxspeed-speed);k++){
    shift(j);
    show();
    delay_us(700);
    }
    }
    if (j>0){
    for(k=0;k<((maxspeed-speed)/2);k++){


    right();
    for(i=0;i<8;i++)
    shift(j);
    show();
    clear();
    delay_us(700);



    left();
    shift(j-8);
    show();
    clear();
    delay_us(700);
    }
    }
    }

    };
    }

    اگه میشه کمکم کنین. این پروژه کارشناسیمه.
    ممنون
    هستم اگر می روم گر نروم نیستم

    #2
    پاسخ : کمک نشان دادن چند حرف در تابلو روان (codevision)

    کسی نمیتونه کمک کنه؟
    هستم اگر می روم گر نروم نیستم

    دیدگاه


      #3
      پاسخ : کمک نشان دادن چند حرف در تابلو روان (codevision)

      تو رو خدا یکی کمک کنه دیگه
      هستم اگر می روم گر نروم نیستم

      دیدگاه


        #4
        پاسخ : کمک نشان دادن چند حرف در تابلو روان (codevision)

        سلام داداش!!
        تا اینجا که من فهمیدم حروفو طراحی کردی و میتونی تک تک نشون بدی، فقط موندی چه جوری یه کلمه بسازی!درسته؟
        خوب باید بیای حروف طراحی شده رو به عنوان فونت تعریف کنی(با پسوند .h) و بریزی تو فولدر inc تو فولدر نصب برنامه کدویژن و اول برنامت فراخوانیش کنی. اکی؟
        بعدش باید یه دستور واسه نوشتن کلمه بنویسی که مثلا رشته ای رو بگیره(کلمه)، طول رشته رو حساب کنه(تعداد حروف کلمه)، بعد بره تو یه حلقه for , و به اندازه طول رشته(تعداد حروف)، بره سراغ فونت تعریف شده و کاراکتر مربوطه رو با یه حساب کتابایی پیدا کنه و بیاره بنویسه ، به این ترتیب تک تک کاراکترات رو که آورد پشت سر هم ، یا با فاصله ای که براش تعریف میکنی بذاره.همین.
        اما اینکه با گرفتن هر کاراکتر چجوری از فونت های طراحی شده استفاده کنه؟
        میتونی از کد اسکی هر کاراکتر استفاده کنی، یعنی با گرفتن هر کاراکتر عضو معادل شماره اونو تو فونت ها، که ماتریسش هست، برداره بیاره نشون بده!
        یه تلاشی بکن و برنامه شو بذار تا چک کنیم.
        موفق باشی :nice:

        دیدگاه


          #5
          پاسخ : کمک نشان دادن چند حرف در تابلو روان (codevision)

          ممنون که جواب دادی
          راستش الان می تونم حرف ها رو چندتایی نشون بدم(یک کلمه یا جمله رو نشون بدم)
          البته با کمک مقالات eca
          برنامه رو هم طوری نوشتم که به راحتی قابل گسترشه

          ولی الان یه مشکلی دارم
          تعداد حروفی که طراحی کردم زیاده و توی حافظه ی فلش میکرو جا نمیشه
          فکر کنم باید از یه حافظه ی خارجی استفاده کنم
          فعلا که توی فرجه های قبل امتحان هام
          واسه یه مدت بیخیال پروژه میشم
          بعدش میام روی این چیزایی که گفتی مانور میدم تا ببینم چیکار میتونم بکنم
          احتمالا به اضافه کردن افکت های مختلف هم فکر کنم.
          سر آخر اگه بتونم صفحه کلید رو بهش اضافه می کنم که یه پروژه ی کامل بشه.

          این هم کل فایل های پروژه تا الان:
          تقدیم به بروبچ گل eca.ir که وقت میزارن و علمشون رو تقسیم می کنن.

          http://www.4shared.com/file/Uf6_JK7b/LED_Sign_board.html


          پسورد : www.eca.ir
          هستم اگر می روم گر نروم نیستم

          دیدگاه


            #6
            پاسخ : کمک نشان دادن چند حرف در تابلو روان (codevision)

            خوبه! فعلا برو درساتو بخون تا بعد!
            اضافه کردن صفحه کلید کار سختی نیست!

            دیدگاه

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