اطلاعیه

Collapse
No announcement yet.

راه اندازی lcd کارکتری در زبان c

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

    #16
    پاسخ : راه اندازی lcd کارکتری در زبان c

    نوشته اصلی توسط sajad12365
    سلام دوستان من میخوام lcd کارکتریو تو زبان c بدون کد ویزارت کدویژن مثل راه اندازی تو bascom و مشخص کردن تک تک پین ها راه اندازی کنم انقدر باهاش سرو کله زدم مخم تاب برداشت کلی تو اینترنت گشتم یهو خودمو ما بین دستورات اسمبلی زیاد و البته نامفهوم یافتم و بعد کلی سر کله زدن با هاشون یکشونو یاد گرفتم بعد فهمیدم اونم جز متغییری بیش نبوده :angry: تو bascom راحت میشه پورت ها رو معرفی کنی و توابع اماده برای کار باهاش داره ولی تو زبان c اینطور نیست ((ای کاش میشد دستورات بیسیک هم بینا بین دستورات c به کار برد :sad) حالا اگه میشه لطفا به من کمک کنید من فقط میخوام دانشمو بالا ببرم و از دست کد ویزارت و بسکام خلاص بشم .
    با تشکر که پست منو میخونین وبهش جواب میدین :smile:
    سلام
    از این لینک کتابخانه ای رو که گذاشتم رو دانلود کن .

    داخلش یه برنامه ی نمونه هم هست .

    و بعد باید توی فایل lcd.h یه تغییراتی بدی ، که مطابق با نیازت بشه. اینجا قسمتی از فایل lcd.h که باید تغییر روش صورت بگیره رو گذاشتم :

    [code=c]/**
    * @name Definitions for Display Size
    * Change these definitions to adapt setting to your display
    */
    #define LCD_LINES 2 /**< number of visible lines of the display */
    #define LCD_DISP_LENGTH 16 /**< visibles characters per line of the display */
    #define LCD_LINE_LENGTH 0x40 /**< internal line length of the display */
    #define LCD_START_LINE1 0x00 /**< DDRAM address of first char of line 1 */
    #define LCD_START_LINE2 0x40 /**< DDRAM address of first char of line 2 */
    #define LCD_START_LINE3 0x14 /**< DDRAM address of first char of line 3 */
    #define LCD_START_LINE4 0x54 /**< DDRAM address of first char of line 4 */
    #define LCD_WRAP_LINES 0 /**< 0: no wrap, 1: wrap at end of visibile line */


    #define LCD_IO_MODE 1 /**< 0: memory mapped mode, 1: IO port mode */
    #if LCD_IO_MODE
    /**
    * @name Definitions for 4-bit IO mode
    * Change LCD_PORT if you want to use a different port for the LCD pins.
    *
    * The four LCD data lines and the three control lines RS, RW, E can be on the
    * same port or on different ports.
    * Change LCD_RS_PORT, LCD_RW_PORT, LCD_E_PORT if you want the control lines on
    * different ports.
    *
    * Normally the four data lines should be mapped to bit 0..3 on one port, but it
    * is possible to connect these data lines in different order or even on different
    * ports by adapting the LCD_DATAx_PORT and LCD_DATAx_PIN definitions.
    *
    */
    #define LCD_PORT PORTA /**< port for the LCD lines */
    #define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */
    #define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */
    #define LCD_DATA2_PORT LCD_PORT /**< port for 4bit data bit 2 */
    #define LCD_DATA3_PORT LCD_PORT /**< port for 4bit data bit 3 */
    #define LCD_DATA0_PIN 0 /**< pin for 4bit data bit 0 */
    #define LCD_DATA1_PIN 1 /**< pin for 4bit data bit 1 */
    #define LCD_DATA2_PIN 2 /**< pin for 4bit data bit 2 */
    #define LCD_DATA3_PIN 3 /**< pin for 4bit data bit 3 */
    #define LCD_RS_PORT LCD_PORT /**< port for RS line */
    #define LCD_RS_PIN 4 /**< pin for RS line */
    #define LCD_RW_PORT LCD_PORT /**< port for RW line */
    #define LCD_RW_PIN 5 /**< pin for RW line */
    #define LCD_E_PORT LCD_PORT /**< port for Enable line */
    #define LCD_E_PIN 6 /**< pin for Enable line */[/code]

    همون طوری که میبینی باید تعداد سطر و ستون ها و پایه های کنترلی و پورت مورد استفاده رو مشخص کنی .

    البته من توی Atmel Studio ازش استفاده کردم.
    http://massoud68.persiangig.com/pict...1406891613.gif

    مشکلتون حل شده ؟؟؟
    پس روی "موضوع به نتیجه رسید" کلیک کنید !! :job:

    دیدگاه


      #17
      پاسخ : راه اندازی lcd کارکتری در زبان c

      اما حجمش بیشتر از کد بسکام میشه واین یه نقطه ضعفه
      dascom:
      کد:
      :10000000940C002A9518000095180000951800001F
      :10001000951800009518000095180000951800002C
      :10002000951800009518000095180000951800001C
      :10003000951800009518000095180000951800000C
      :1000400095180000951800009518000095180000FC
      :1000500095180000E58FBF8DE3C8E2E02E4EE088E2
      :10006000BF8EE0D8E0F82E5F95A8B7842E087F8772
      :10007000BF84E1882799BD81BD91EFEEE0F7E6A04E
      :10008000E0B02788938D9731F7E924669731F7F12F
      :0E00900095089468F862950894E8F86295085F
      :00000001FF
      c:
      کد:
      :080000000C9434000C94000084
      :100008000C9400000C9400000C9400000C94000068
      :100018000C9400000C9400000C9400000C94000058
      :100028000C9400000C9400000C9400000C94000048
      :100038000C9400000C9400000C9400000C94000038
      :100048000C9400000C9400000C94000001002D4E4C
      :10005800414E00494E460000010060015400000076
      :10006800F894EE27ECBBF1E0FBBFEBBFE5BFF8E18E
      :10007800F1BDE1BD8DE0A2E0BB27ED938A95E9F7DC
      :1000880080E094E0A0E6ED930197E9F7E0E6F0E080
      :1000980085919591009761F0A591B591059015907E
      :1000A800BF01F00105900D920197E1F7FB01F0CF38
      :1000B800EFE5EDBFE4E0EEBFC0E6D1E00C94BE0092
      :1000C800AA93E881E07811F0AD9A01C0AD98E88173
      :1000D800E07411F0AC9A01C0AC98E881E07211F0BC
      :1000E800AB9A01C0AB98E881E07111F0AA9A01C0FF
      :1000F800AA98A99AA998E881E87011F0AD9A01C068
      :10010800AD98E881E47011F0AC9A01C0AC98E88130
      :10011800E27011F0AB9A01C0AB98E881E17011F080
      :10012800AA9A01C0AA98A99AA9988BE68A95F1F784
      :1001380021960895A898AFE0B0E00E94CA00AA9A54
      :10014800AB9A0E94C400A99AA99888EC90E00197FC
      :10015800F1F70E94C400AA98A99AA9988BE68A95F3
      :10016800F1F7A8E2ADDFACE0ABDFA6E0A9DFA1E0E4
      :10017800A7DF0895E0E0E5BBEFEFE4BBDBDFFFCFEF
      :10018800A99AA998A5E0B0E00C94CA00109639F095
      :1001980080ED97E00197F1F7A8951197C9F70895B1
      :00000001FF
      سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

      دیدگاه


        #18
        پاسخ : راه اندازی lcd کارکتری در زبان c

        سلام به همه
        این متنی که مینویسم صرفا مختص LCD نبوده و مربوط به تمامی قطعات میشه

        1- چرا کدویزارد خوبه؟
        2- چرا نرم افزار های برنامه نویسی حرفه ای سراغ کدویزارد نمیرن؟
        دوستان عزیز شما برای کار کردن با LCD باید بتونین ابتدا رجیستر های اون رو مقدار دهی کنین بعد که آماده شد تازه میتونین باهاش کار کنین

        1- پاسخ اولی
        حالا کدویزارد چیکار میکنه؟
        کدویزارد میاد با توجه به تنظیمات شما رجیستر های LCD رو مقدار دهی میکنه و البته LCD کاراکتری قابلیت های دیگه ای هم داره که به دلیل استفاده از کدویزارد شما نمیتونین از اون ها استفاده کنین چون نمیتونین رجیستر هارو تغییر بدین

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

        2- پاسخ دومی
        چون سازنده های نرم افزار های حرفه ای این رو درک کردن که همچین ابزاری فقط باعث محدود شدن برنامه نویس میشه
        و هیچ برنامه نویس حرفه ای نه تنها دوست نداره در محدودیت برنامه بنویسه بلکه میخواه هرچه محدودیت هم هست کنار بزنه
        برای همین خیلی از افراد بعد از کلی کار کردن با زبان BASIC اون رو ترک میکنن و سراغ زبان C میرن و عده ای هم بعد از کلی زمان گذاشتن برای زبان C شروع به یادگیری زبان اسمبلی میکنن تا بتونن از هر دو زبان C و اسمبلی در پروژه هاشون استفاده کنن.
        نکته : زبان اسمبلی تقریبا هیچ محدودیتی برای برنامه نویس نمیزاره برای همین در کنار اکثر زبان ا شما این امکان رو هم دارین که همزمان از دستورات اسمبلی هم استفاده کنین.
        ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
        شهید دکتر مصطفی چمران
        اللهم صل علی محمد و ال محمد و عجل فرجهم
        ; C is not for children

        دیدگاه


          #19
          پاسخ : راه اندازی lcd کارکتری در زبان c

          با کمال شرمندگی نمیدونم اما یه دلیل بیارید که چرا کد هارو همینطوری بنویسیم و از کد ویزارد استفاده نکنیم؟
          دلیلش رو در پاسخ قبلیم گفتم

          اما من کاری به اینا ندارم یکم برنامه نویسی cیاد دارم از خود کد ویزاردش استفاده کن حالشو ببر تازه نسبت به اتمل استودیو هم بهینه تره
          نه اینطور که شما میگید نیست
          اگر به سایت رسمی کدویژن سربزنید میبینید که برای ماها آموزشی گذاشته که بتونیم برنامه نوشته شده در کدویژن رو توسط Atmel Studio کامپایل کنیم
          چرا ؟
          چون خروجی Atmel Studio بسیار بهینه تر از کدویژن هستش
          خوب با این اوصاف چرا اتفاق زیر رخ داده؟
          اما حجمش بیشتر از کد بسکام میشه واین یه نقطه ضعفه
          دلیل این اتفاق اینه که اکثر کتابخونه های بسکام و کدویژن به زبان اسمبلی و توسط تیم حرفه ای نوشته شده و تا جایی که تونستن کدشون رو سبک نوشتن اما کتابخونه هایی که توسط عموم نوشته میشه به حرفه ای بودن کتابخونه های همچین شرکت هایی نمیرسه
          اما تفاوت بین خروجی ها حتی برای یک برنامه کامل چند هزار خطی اونقدر چشمگیر نخواهد بود که باعث بشه شخصی مثلا از Atmel Studio یا IAR به سراغ کدویژن یا بسکام بره

          مطالبی رو که گذاشتم حدث یا تفکراتم نبوده بلکه تجربیاتم بوده
          بنده کتابخانه چند هزار خطی رو برای راه اندازی LCD کاراکتری نوشتم که حالات مختلف رو با BASCOM و کدویژن مقایسه کردم
          البته نگران این نباشید که اگر خودتون بخواید یه LCD راه بندازین اینهمه خط باید بنویسین نه اینطور نیست
          راه اندازی LCD کاراکتری چند خط بیشتر نمیشه
          این کتابخونه ای که من نوشتم اکثر LCD های رایج بازار ایران و اروپا رو ساپورت میکنه برای همین زیاد شد.
          ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
          شهید دکتر مصطفی چمران
          اللهم صل علی محمد و ال محمد و عجل فرجهم
          ; C is not for children

          دیدگاه


            #20
            پاسخ : راه اندازی lcd کارکتری در زبان c

            http://www.eca.ir/forum2/index.php?topic=90246.0
            استاد اسدی رو ببین ی برنامه نوشته با همه کامپایلر ها حالا دیه من چیزی ندارم بگم
            اما توی اونایی که نوشته کدویژن از همه بیشتر جواب داد
            http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

            دیدگاه

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