اطلاعیه

Collapse
No announcement yet.

کمک درباره lcd کاراکتری

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

    کمک درباره lcd کاراکتری

    سلام من یه برنامه با avr و codevision نوشتم که روی lcd فارسی بنویسه و لی اگه از 9 کاراکتر بیشتر تعریف کنم به کاراکترها 9تا شیفت میده مثلا اگه بخوام کاراکتر 2 نشان بدهم کاراکتر 10 روی lcd ظاهر میشه یا اگر بخوام کاراکنر 20 را نشان بدم با دستورsprintf(w,"\12\"lcd_puts(w); کاراکتر 1نشان میده با عدد 2 اگه میشه یکی کمک کنه اینم برنامه
    #include <mega16.h>
    #include <delay.h>
    // Alphanumeric LCD Module functions
    #asm
    .equ __lcd_port=0x15
    #endasm
    #include <lcd.h>
    #include<stdio.h>

    // Declare your global variables here
    unsigned char w[100];
    flash unsigned char char0 [8] = { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,0x10 };//a
    flash unsigned char char1 [8] = { 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1,0x1 };
    flash unsigned char char2 [8] = { 0x0, 0x0, 0x1, 0x1, 0x1F, 0x0, 0x4,0x0 };//b
    flash unsigned char char3 [8] = { 0x0, 0x0, 0x0, 0x11, 0x1F, 0x0, 0x4,0x0 };//B
    flash unsigned char char4 [8] = { 0x0, 0xC, 0x1, 0x1, 0x1F, 0x0, 0x0,0x0 };//t
    flash unsigned char char5 [8] = { 0x0, 0x7, 0x9, 0x1, 0x1F, 0x0, 0x0,0x0 };//\h
    flash unsigned char char6 [8] = { 0x0, 0x8, 0x4, 0x2, 0xE, 0x0, 0x0,0x0 };//\\d
    flash unsigned char char7 [8] = { 0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x0,0x0 };//\\r
    flash unsigned char char8 [8] = { 0x2, 0x0, 0x2, 0x2, 0x4, 0x8, 0x10,0x0 };//\\z
    flash unsigned char char9 [8] = { 0x0, 0x0, 0x1, 0x7, 0x4, 0xA, 0x10,0x0 };//\\bar
    flash unsigned char char10[8] = { 0x0, 0x0, 0x15, 0x15, 0x1F, 0x0, 0x0,0x0 };//\\s
    flash unsigned char char11[8] = { 0x0, 0x0, 0x17, 0x15, 0x1F, 0x0, 0x0,0x0 };//\//\sad
    flash unsigned char char12[8] = { 0x8, 0x8, 0x8, 0x8, 0xB, 0xD, 0x1F,0x0 };//\\zad
    flash unsigned char char13[8] = { 0x0, 0x2, 0x0, 0x7, 0x5, 0x1F, 0x0,0x0 };//\\F
    flash unsigned char char14[8] = { 0x0, 0x4, 0x0, 0xE, 0xA, 0x1F, 0x0,0x0 };//\\f
    flash unsigned char char15[8] = { 0x1, 0x2, 0x4, 0x8, 0x8, 0x8, 0x18,0x0 };//\\k
    flash unsigned char char16[8] = { 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1F,0x0 };//\//\l
    flash unsigned char char17[8] = { 0x2, 0x2, 0x2, 0x2, 0x12, 0x12, 0x1E,0x0 };//\\L
    flash unsigned char char18[8] = { 0x8, 0x8, 0x8, 0x8, 0x8, 0xF, 0x3,0x0 };//\\ma
    flash unsigned char char19[8] = { 0x0, 0x1F, 0x16, 0x16, 0x10, 0x10, 0x10,0x0 };//\\m
    flash unsigned char char20[8] = { 0x0, 0x0, 0x4, 0x1, 0x1, 0xF, 0x0,0x0 };//\\n
    flash unsigned char char21[8] = { 0x0, 0x0, 0x15, 0x11, 0x11, 0x11, 0x1F,0x0 };//\\N
    flash unsigned char char22[8] = { 0x0, 0x0, 0x1C, 0x14, 0x1C, 0x4, 0x7,0x0 };//\\h
    flash unsigned char char23[8] = { 0x0, 0x0, 0x2, 0x2, 0x1F, 0x0, 0x14,0x0 };//\\i
    flash unsigned char char24[8] = { 0x0, 0x0, 0x7, 0x4, 0x17, 0x11, 0x1F,0x0 };//\\I
    void define_char(unsigned char flash *pc,unsigned char char_code);
    void main(void)
    {




    lcd_init(16);
    _lcd_ready();
    lcd_clear();
    lcd_gotoxy(0,0);
    _lcd_write_data(0x28);


    define_char(char0,0);
    define_char(char1,1);
    define_char(char2,2);
    define_char(char3,3);
    define_char(char4,4);
    define_char(char5,5);
    define_char(char6,6);
    define_char(char7,7);
    define_char(char8,8);
    define_char(char9,9);
    define_char(char10,10);
    define_char(char11,11);
    define_char(char12,12);
    define_char(char13,13);
    define_char(char14,14);
    define_char(char15,15);



    while (1)
    {

    lcd_clear();

    sprintf(w,"\20"
    lcd_puts(w);

    delay_ms(300);

    }

    }
    void define_char(unsigned char flash *pc,unsigned char char_code)
    {
    unsigned char i,a;
    a=(char_code<<3)|0x40;
    for(i=0;i<8;i++)
    lcd_write_byte(a++,*pc++);
    }
    http://www.eca.ir/forum2/index.php/topic,10159.0.html
    Engineering is the art of making what you want from things you can get.
    اموزش DSP ...........................
    http://www.eca.ir/forum2/index.php?topic=29824.0
    http://www.eca.ir/forum2/index.php?topic=32324.0

    #2
    پاسخ : کمک درباره lcd کاراکتری

    سلام

    اگه lcd کاراکتری استفاده می کنی نمی تونی بیشتر از هفت کاراکتر فارسی بنویسی. اگه می خوای بیشتر از هفت کاراکتر بنویسی برو lcd گرافیکی کار کن.
    :nice: :nice: :nice: :nice: :nice:

    دیدگاه


      #3
      پاسخ : کمک درباره lcd کاراکتری

      اینجوری خیلی اذیت میشی اونیم که میخوای نمیشه.
      وقتت رو بزار رو LCD گرافیکی
      خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

      دیدگاه


        #4
        پاسخ : کمک درباره lcd کاراکتری

        ببخشید چون right allignment
        کردین نوشته هاتون قاطی شده میشه کد برنامه رو دوباره بنویسید منم می خوام همین کارو بکنم ولی با pic و c18
        تا یه جاهایی هم پیش رفتم
        بهتون پیشنهاد میکنم هر دفعه فقط 8 کاراکتری رو که لازم دارین تعریف کنین یعنی متغیرهاتون global نباشن بلکه local باشن

        دیدگاه

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