ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 3 از 3
  1. #1
    2010/04/07
    تهران
    855
    88

    کار نکردن تابعlcd define character

    سلام با میکروی stm32f103rcکار می کنم
    برای LCD کاراکتری از توابع آماده ای که قبلا ECA برای هدر برد lpc1768 ارائه داده بود استفاده کردم
    فقط بخش lcd_define_char کار نمی کنه
    وقتی این تابع رو فراخوانی می کنم فقط مکان نمای LCD جابه جا میشه و هیچ چیزی نمایش نمیده
    void lcd_define_char(const char *pc,char char_code)
    {
    unsigned char a , i;
    //a = ((char_code<<3)|0x80);// & 0xff;
    a=64;
    //lcd_command(0x80);
    clcd_Delay();
    for (i = 0; i < 8 ;i++)
    {
    lcd_command(a++);
    clcd_Delay();
    lcd_putchar(pc[i]);
    clcd_Delay();
    //clcd_Delay();
    }
    }
    به نظرتون اشکال از کجاست ؟؟
    کل هدر رو هم می گذارم

    دلیل: ادغام دو پست برای جلوگیری از اسپم

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    "stm32f10x.h"

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    "LCD.h"


    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    F_CPU 72000000

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    clcd_minDelay() cwait(F_CPU/48000)

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    clcd_Delay() cwait(F_CPU/4800)

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    clcd_maxDelay() cwait(F_CPU/72)


    //================================================== ==========================
    void cwait (volatile int t) {
    for (;t; t--);
    }
    // ================================================== ==========================
    void setD4567(char val)
    {
    GPIOB->ODR &=~0XF000;
    if (val & 0x80)
    GPIOB->ODR |=(1<<12);
    if (val & 0x40)
    GPIOB->ODR |=(1<<13);
    if (val & 0x20)
    GPIOB->ODR |=(1<<14);
    if (val & 0x10)
    GPIOB->ODR |=(1<<15);
    }
    // ================================================== ==========================
    void lcd_putchar(char ch)
    {
    GPIOC->ODR |=(1<<8); //LCD_RS
    setD4567(ch);
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_minDelay();
    setD4567(ch<<4);
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_Delay();
    }
    // ================================================== ==========================
    void lcd_command(char cmd) //Sends Command to LCD
    {
    GPIOC->ODR &=~(1<<8); //LCD_RS
    setD4567(cmd);
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_minDelay();
    setD4567(cmd<<4);
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_Delay();
    }
    // ================================================== ==========================
    void lcd_init()
    {
    GPIOB->CRH &=~0XFFFF0000;
    GPIOB->CRH |=0X11110000;
    GPIOC->CRL &=~0XFF000000;
    GPIOC->CRL |=0X11000000;
    GPIOC->CRH &=~0X0000000F;
    GPIOC->CRH |=0X00000001;

    GPIOC->ODR &=~(1<<7); //LCD_RW
    clcd_Delay();
    setD4567(0);
    setD4567((1<<5)|(1<<4));
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_Delay();
    setD4567((1<<5)|(1<<4));
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_Delay();
    setD4567((1<<5)|(1<<4));
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_Delay();
    setD4567(1<<5);
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_Delay();
    //
    setD4567(0);
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_Delay();
    //
    setD4567(1<<7);
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_Delay();
    //
    setD4567(0);
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_Delay();
    //
    setD4567(1<<4);
    GPIOC->ODR |=(1<<6); //LCD_EN
    clcd_minDelay();
    GPIOC->ODR &=~(1<<6); //LCD_EN
    clcd_Delay();
    //
    lcd_command(0x28);
    lcd_command(0x0f);
    clcd_Delay();
    }
    //================================================== ==========================
    void lcd_gotoxy(char y, char x) //Cursor to X Y position
    {
    char DDRAMAddr;
    x=x;
    switch(y)
    {
    case 0: DDRAMAddr = 0x00+x; break;
    case 1: DDRAMAddr = 0x40+x; break;
    case 2: DDRAMAddr = 0x14+x; break;
    case 3: DDRAMAddr = 0x54+x; break;
    default: DDRAMAddr = 0x00+x;
    }
    lcd_command(1<<7 | DDRAMAddr);
    clcd_Delay();
    }
    // ================================================== ==========================
    void lcd_define_char(const char *pc,char char_code)
    {
    unsigned char a , i;
    //a = ((char_code<<3)|0x80);// & 0xff;
    a=64;
    //lcd_command(0x80);
    clcd_Delay();
    for (i = 0; i < 8 ;i++)
    {
    lcd_command(a++);
    clcd_Delay();
    lcd_putchar(pc[i]);
    clcd_Delay();
    //clcd_Delay();
    }
    }
    //================================================== ===========================
    void lcd_clear(void) //Clears LCD
    {
    lcd_command(0x01);
    clcd_Delay();
    lcd_command(0x02);
    clcd_maxDelay();
    }
    //================================================== ===========================
    void lcd_shift_left(char n) //Scrol n of characters Right
    {
    char i;
    for (i = 0 ; i < n ; i++)
    {
    lcd_command(0x1E);
    clcd_Delay();
    }
    }
    //================================================== ===========================
    void lcd_shift_right(char n) //Scrol n of characters Left
    {
    char q;
    for (q = 0 ;q < n ; q++)
    {
    lcd_command(0x18);
    clcd_Delay();
    }
    }
    //================================================== ==========================
    void lcd_puts(int num)
    {
    int i1,j1;
    int p,f=0;
    char ch[5];
    for(i1=0;i1<5;i1++)
    {
    p=1;
    for(j1=4-i1;j1>0;j1--)
    p = p*10;
    ch[i1] = (num/p);
    if (num>=p && !f){
    f=1;
    }
    num =num - ch[i1] *p ;
    ch[i1] = ch[i1] +48;
    if(f) lcd_putchar(ch[i1]);
    }
    }
    // ================================================== ==========================
    void lcd_putsf(char* data) //Outputs string to LCD
    {
    char *p;
    p = data;
    if (!p)
    return;
    for(; *p ; )
    {
    lcd_putchar(*p);
    p++;
    }
    }
    //================================================== ===========================
    void Display_off(void)
    {
    lcd_command(0x08);
    clcd_Delay();
    }
    //================================================== ===========================
    void Display_on(void)
    {
    lcd_command(0x0C);
    clcd_Delay();
    }
    //================================================== ===========================
    void cursor_off(void)
    {
    lcd_command(0x0C);
    clcd_Delay();
    }
    //================================================== ===========================
    void cursor_on(void)
    {
    lcd_command(0x0E);
    clcd_Delay();
    }
    //================================================== ===========================
    void cursor_blink(void)
    {
    lcd_command(0x0F);
    clcd_Delay();
    }
  2. #2
    2010/04/07
    تهران
    855
    88

    پاسخ : کار نکردن تابعlcd define character

    کسی از دوستان نظری نداره ؟؟
    واقعا هیچ کس نمی دونه مشکل از کجاست ؟؟
  3. #3
    2009/12/08
    تهران
    269
    35

    پاسخ : کار نکردن تابعlcd define character

    یعنی از lpc1768 پورت کردی به stm32f103rc؟
نمایش نتایج: از 1 به 3 از 3

موضوعات مشابه

  1. فیلتر کردن کاراکتر های ذباله در Character LCD
    توسط abbas-h در انجمن مدار هاي ديجيتال
    پاسخ: 3
    آخرين نوشته: 2014/08/01, 01:10
  2. integer to character
    توسط ya_montazar در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 10
    آخرين نوشته: 2014/03/10, 14:49
  3. #define
    توسط adc در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2011/10/14, 12:52
  4. define# یعنی چی؟
    توسط Dr.j در انجمن C , C++ , C#
    پاسخ: 2
    آخرين نوشته: 2009/05/03, 21:03
  5. پاسخ: 15
    آخرين نوشته: 2008/10/18, 08:17

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

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

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