NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3349 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 3 از 3

موضوع: مشکل با ارتباط lcd ts1620a-21 و stm 32f0discovery

  1. #1
    تازه وارد
    تاریخ عضویت
    Feb 2015
    نوشته ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    Exclamation مشکل با ارتباط lcd ts1620a-21 و stm 32f0discovery

    #include "stm32f0xx.h"

    uint32_t TickValue=0;

    #define BSRR_VAL 0x0300
    #define RS GPIO_BRR_BR_13 // RS is named as Port 13
    #define RW GPIO_BRR_BR_14 // RW is named as Port 14
    #define EN GPIO_BRR_BR_15 // EN is named as Port 15

    void delay (int a);


    void initgpio()
    {

    RCC->AHBENR |= RCC_AHBENR_GPIOCEN ;
    RCC->AHBENR |= RCC_AHBENR_GPIOAEN;


    GPIOC->MODER |= (GPIO_MODER_MODER13_0 | GPIO_MODER_MODER14_0 | GPIO_MODER_MODER15_0) ;
    GPIOC->OSPEEDR |= (GPIO_OSPEEDER_OSPEEDR13 | GPIO_OSPEEDER_OSPEEDR14 | GPIO_OSPEEDER_OSPEEDR15);
    GPIOC->OTYPER &= ~(GPIO_OTYPER_OT_13 | GPIO_OTYPER_OT_14 | GPIO_OTYPER_OT_15) ;

    GPIOA->MODER |= (GPIO_MODER_MODER0_0 | GPIO_MODER_MODER1_0 | GPIO_MODER_MODER2_0 |
    GPIO_MODER_MODER3_0 | GPIO_MODER_MODER4_0 | GPIO_MODER_MODER5_0 | GPIO_MODER_MODER6_0 | GPIO_MODER_MODER7_0) ;
    GPIOA->OSPEEDR |= (GPIO_OSPEEDER_OSPEEDR0 | GPIO_OSPEEDER_OSPEEDR1 | GPIO_OSPEEDER_OSPEEDR2 |
    GPIO_OSPEEDER_OSPEEDR3 | GPIO_OSPEEDER_OSPEEDR4 | GPIO_OSPEEDER_OSPEEDR5 | GPIO_OSPEEDER_OSPEEDR6 | GPIO_OSPEEDER_OSPEEDR7);
    GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_0 | GPIO_OTYPER_OT_1 | GPIO_OTYPER_OT_2 | GPIO_OTYPER_OT_3 |
    GPIO_OTYPER_OT_4 | GPIO_OTYPER_OT_5 | GPIO_OTYPER_OT_6 | GPIO_OTYPER_OT_7) ;
    }

    void s_init()
    {
    GPIOC->BRR=RS;
    GPIOC->BRR=RW;
    }

    void s_data()
    {
    GPIOC->BSRR=RS;
    GPIOC->BRR=RW;
    }

    void delay (int a)
    {
    volatile int i,j;

    for (i=0 ; i < a ; i++)
    {
    j++;
    }

    return;
    }


    void delay_ms(uint32_t n_ms)
    {
    SysTick_Config(8000*3 - 30);
    TickValue = n_ms;
    while(TickValue == n_ms)
    ;
    SysTick_Config(8000*3);
    while(TickValue != 0)
    ;
    }

    void s_latch()
    {
    GPIOC->BSRR=EN;
    delay_ms(10);
    GPIOC->BRR=EN;
    delay_ms(10);
    }


    void TimingDelay_Decrement(void)
    {
    TickValue--;
    }






    int main(void)
    {
    int k=0;
    char a[]="WWW.EEHERALD.COM";
    char b[]="EMBEDDED SYSTEMS";


    initgpio();


    GPIOC->BRR=RS; //Initialize RS=0 for selecting instruction Send
    GPIOC->BRR=RW; // Select RW=0 to write Instruction/data on LCD
    GPIOC->BSRR=EN; // EN=1 for unlatch. (used at initial condition)

    delay_ms(10);

    s_init(); //Call Instruction Select routine
    GPIOA->ODR=0x0001; // Clear Display, Cursor to Home
    s_latch(); //Latch the above instruction
    GPIOA->ODR=0x0038; // Display Function (2 rows for 8-bit data; small)
    s_latch(); //Latch this above instruction 4 times
    s_latch();
    s_latch();
    s_latch();
    GPIOA->ODR=0x000E; // Display and Cursor on, Cursor Blink off
    s_latch(); //Latch the above instruction
    GPIOA->ODR=0x0010; // Cursor shift left
    s_latch(); //Latch the above instruction
    GPIOA->ODR=0x0006; // Cursor Increment, Shift off
    s_data(); //Change the input type to Data.(before it was instruction input)
    s_latch(); //Latch the above instruction

    for(k=0;a[k];k++)
    {
    GPIOA->ODR=a[k]; //It will send a[0]='P' as = '0x0050' on Port A.
    s_latch(); //Latch the above instruction only once. Or it will clone each character twice if you latch twice.
    }
    GPIOC->BRR=RS; //Initialize RS=0 for selecting instruction Send
    GPIOC->BRR=RW; // Select RW=0 to write Instruction/data on LCD
    GPIOC->BSRR=EN; // EN=1 for unlatch. (used at initial condition)

    delay_ms(10);
    GPIOA->ODR=0x00C0; // Move cursor to beginning of second row
    s_latch(); //Latch the above instruction
    s_data(); //Change the input type to Data.(before it was instruction input)
    for(k=0;b[k];k++)
    {
    GPIOA->ODR=b[k]; //It will send b[0]='E' as = '0x0044' on Port A.
    s_latch();//Latch the above instruction only once. Or it will clone each character twice if you latch twice.
    }
    s_init();
    }


    اقا کمک کنید من خیلی تازه کارم ...

    برنامه کامپایل میشه ولی هیچ اتفاقی نمی افته
    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 20150226_132139[1].jpg
مشاهده: 21
حجم: 149.7 کیلو بایت  

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    تازه وارد
    تاریخ عضویت
    Feb 2015
    نوشته ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض کمک

    مدیر لطفا کمک کنید من فکر میکنم آن درسته خط به خط چک کردم
    در مورد اتصال هم پایه 15 و 16 به تغذیه و همچنین پایه 1و2و3 به تغدیه
    وپایه های 4و 5و6 به پورت C پین 13/14/15 وصل کردم
    و 7-14 به پورت a پین 0-7 وصل کردم
    ....فقط مقاومت 10 اهمی برای پایه 3 نداشتم (چون نداشتم )

  4. #3
    کاربر فعال rozeh آواتار ها
    تاریخ عضویت
    Mar 2013
    نوشته ها
    198
    تشکر
    27
    تشکر شده 176 بار در 104 پست

    پیش فرض

    برنامه تون رو نگاه نکردم ولی کلا وصل کردن یه نمایگر که با سطح منطق 5ولت کار میکنه به یه میکرو که با سطح منطق 3.3 کار میکنه اصولی نیست(فکر کنم 3.3 سطح آستانه هستش برای 5). بخاطر همینه که از مبدل ها(لاجیک کانورتر) استفاده میشه. مثل این:

    مبدل سطح ولتاژ TXS0108E دو طرفه 8 بیتی

    با ترانزیستورش(FETها) هم توی نت گیرمیاد(توی همین فروم خودمون راجبش صحبت کردیم قبلا) و می تونی بسازی.
    برنامه تون رو هم که اینجوری گذاشتید فکر نکنم کسی دوست داشته باشه بهش نگاه کنه. چون با تگ مخصوص کد نذاشتید. اصلا معلوم نیست چطوریه. از کتابخونه خاصی استفاده کردید؟ شاید بهتر باشه همه چیز رو توضیح بدید.

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •