اطلاعیه

Collapse
No announcement yet.

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

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

    مشکل با ارتباط 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(); 
     }

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

    #2
    پاسخ : مشکل با ارتباط lcd ts1620a-21 و stm 32f0discovery

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

    دیدگاه

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