About the author

  • Ananda

    I am eagerly waiting for the tutorial “Interrupts in LPC214x” since after GPIO I have started programming on interrupts. Please post it soon, else please reply me with some links which I can go through until you post interrupt article.

    Also is it true that Fast Interrupt requests will work only on those MCUs having speed > 60MHz.

    Thank you.

  • Rogerio

    I don’t understand. The CD4050 is a high-to-low level shifter. The CD4050 VIH (HIGH level input voltage) is 3.15V to 4.5V suply. Identical to JHD162A the input VIH is 0.7VCC.


    • Hi Rogerio πŸ˜€ , If I am not wrong then as per the datasheet we can use CD4050B/HCF4050B as CMOS to TTL convertor which is the way I have used them. The Min value for VIH when Vdd=5V is 3.5V and for VOH when Vdd=5V is 4.95V. But it still works when VIH=3.3V and converts it to 5V(4.95V). For JHD162A the VIH is 0.7*Vdd which is 3.5V when Vdd=5V but then it doesn’t seem to work for me πŸ™ , I guess JHD162As which I’ve used are expecting VIH to be a bit more than 3.5V around 3.8V to 4V I guess…

      I may be wrong .. please correct me if I am πŸ™‚

      The datasheets which I’ve used are reference are :
      1) http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00002641.pdf
      2) http://www.fairchildsemi.com/ds/CD/CD4049UBC.pdf


  • sir, tried with 1st lcd coding i got output as p p with some symbol.
    p’ls help me to solve the issues asap.

    • Hi Sethupathy , Which development board are you using ? Are you getting a blinking cursor after initializing the module ? I need some more details from your side to pin down the root cause of error.


  • Gopi M


    this is the tutorial link of oc freaks lcd 16X2 interface program with ARM lpc2148 , i follow this program …

    Interfacing 16X2 LCD with LPC2148 tutorial : OCFreaks!

    first i followed the oc freaks program for interfacing of lcd 16X2 with ARM lpc2148. i can understand the coding and successfully execute the program in my ARM lpc2148 development board. what the program in oc freak tutorial followed is they using port 1 (RS = P1.16 & EN = P1.17) for control pins and port 0 for data pins( D0 t0 D7 ….. P0.0 to P0.7 respectively ) but what i am trying to implement is i want to configure both data pins and control pin in port one itself( port 0) . i wrote program for that task but what the problem i faced is , the command is clearly executing , i saw the cursor in the LCD display but the letter are displayed like junk values.

    so here i mention what all the pins i used and my program.

    Register Select = P0.10
    Enable = P0.13

    D0 = P0.16
    D1 = P0.17
    D2 = P0.18
    D3 = P0.19
    D4 = P0.20
    D5 = P0.21
    D6 = P0.22
    D7 = P0.23

    void initLCD(void);
    void enable(void);
    void LCD_WriteChar(char c);
    void LCD_WriteString( char * string);
    void LCD_Cmd(unsigned int cmd);
    void delay(void);
    #define RS (1<<10)
    #define EN (1<<13)
    int main(void)
    LCD_WriteString("GOPI EINSTEIN");

    void initLCD(void)
    IO0PIN = 0x00;

    void enable(void)
    IO0PIN |=EN;
    IO0PIN &=~EN;

    void LCD_WriteChar(char c)
    IO0PIN |=RS;
    IO0PIN |=(((int)c)<<16);

    void LCD_WriteString ( char * string)
    while (* string)
    LCD_WriteChar(* string++);

    void LCD_Cmd(unsigned int cmd)
    IO0PIN =0x0;
    IO0PIN |= (cmd<<16);

    void delay(void)
    int i=0;
    for(i=0; i<19999; i++);


    this is the program, what a wrote.

    please clear my doubt……

  • Actually when i started studying with ARM, i felt that it is too tough .
    But when i undergone your tutorials named as ,
    am really feeling good and i understood lot of things ,Thank you very much for your guidance

    • I am really Glad that my tutorials helped you πŸ™‚

  • Abhishek Jain

    Good job man! You made this easy. Thanks a loooooootttt. ??

  • pallavi

    Thank u Umang sir. Now it’s easy to understand ARM.:):) I joined embedded training but I refer your tutorial.