EngineersGarage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise
You are here: Home / Topics / help me convert 8 bit LCD to 4 LCD

help me convert 8 bit LCD to 4 LCD

|

Microcontroller › AVR › help me convert 8 bit LCD to 4 LCD

  • This topic has 3 replies, 2 voices, and was last updated 12 years, 11 months ago by AJISH ALFRED.
Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • May 22, 2013 at 1:41 pm #2429
    alagbari88
    Participant

    this is my all code if any one have how to convert tell me ,this code write for arduino

     

     

    /*
     * AAGT_Spectrophotometer.c
     *
     * Created: 02/09/2013 10:19:50 ?
     *  Author:  alagbari88
     */ 
     
    # define F_CPU 1000000UL 
    #include <avr/io.h>
    #include <util/delay.h>
    #include <string.h>
    #include <avr/interrupt.h>
     
     
     
     
    #define lcd PORTB
    #define rs PD5
    #define rw PD6
    #define en PD7
    void lcdstring (char *string);
    void init_ports(void);
    void init_interrupts (void);
    void adc_init(void);
    unsigned int adc_read(void);
    void adc_conversion(uint16_t);
    void lcd_init(void);
    void lcdcmd(unsigned char);
    void lcddata(unsigned char);
    void lcddata1(unsigned char);
    void lcdcmd1(unsigned char);
    uint16_t adc_out;
     
    int main(void)
    {
     
     
    init_ports();
    lcd_init();
     
    lcdcmd(0x01);
    lcdcmd(0x81);
    lcdcmd(0x0C);
    lcdcmd(0x0E); // cursor ON
    lcdstring(“><AAGT”);
    lcdcmd(0x0C);
    lcdcmd(0x88);
    lcdstring(“BIOMEDICAL><“);
    lcdcmd(0x0C);
    lcdcmd(0xC5);
    lcdstring(“Inexpensive”);
    lcdcmd(0x96);
    lcdstring(“Spectrophotometer”);
    lcdcmd(0xD4);
    lcdstring(“ver1.1.2”);
    lcdcmd(0xE1);
    lcdstring(“sep2013”);
    _delay_ms(2000);
    lcdcmd(0x01);
    lcdcmd(0x80);
    lcdstring(“Please select a test”);
    lcdcmd(0xC0);
    lcdstring(“(1)HBC”);
    lcdcmd(0x9A);
    lcdstring(“(2)RBC”);
    init_interrupts();
    while(1)
    {
     
     
     
    }
     
    }
     
    void init_ports(void)
    {
     
    DDRD= 0xE0;
    DDRB= 0xFF;
    DDRC= 0x30;
    PORTC= 0x00;
    }
     
    void init_interrupts()
    {
    cli();
     
    EICRA=0x0A;
    EIMSK=0x03;
    EIFR=0x03;
     
    sei();
    }
    ISR (INT0_vect)
    {
    PORTC= 0x10;
    //_delay_ms(2000);
    lcdcmd(0x01);
    lcdcmd(0xC5);
    lcdstring(“HBC Test”);
    lcdcmd(0x97);
    lcdstring(“Initializing”);
    _delay_ms(300);
    lcdcmd(0xA3);
    lcdstring(“>”);
    _delay_ms(300);
    lcdcmd(0xA4);
    lcdstring(“>”);
    _delay_ms(300);
    lcdcmd(0xA5);
    lcdstring(“>”);
    _delay_ms(300);
    lcdcmd(0xA6);
    lcdstring(“>”);
    _delay_ms(300);
    lcdcmd(0xA7);
    lcdstring(“>”);
    _delay_ms(300);
    lcdcmd(0x01);
    lcdcmd(0x83);
    lcdstring(“**Test Result**”);
    lcdcmd(0xC3);
     
     
     
    while ((PORTC=0x10))
    {
    adc_init();
    ADMUX=PORTC;
     
    /* Configure timer0*/
    ADMUX=(1<<REFS0);
    //ADMUX=PORTA1;
    //ADCSRA=(1<<ADEN)|(1<<ADSC);
    //ADMUX=1;ADCSRA=(1<<ADPS0)|(1<<ADIE)|(1<<ADATE);
    TCCR0A=(5<<CS00);
    TIMSK0=(1<<TOIE0);
    ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS0)|(1<<ADIE)|(1<<ADATE);
    PORTC=0x00;
    DDRB &= ~(1 << DDRC); // TURN OFF LED
    sei();
     
     
    }
     
     
    }
    /***** interrupt service routine for INT1 ******/
    ISR (INT1_vect)
    {
     
    PORTC= 0x20;
    //_delay_ms(2000);
    lcdcmd(0x01);
    lcdcmd(0xC5);
    lcdstring(“RBC Test”);
    lcdcmd(0x97);
    lcdstring(“Initializing”);
    _delay_ms(300);
    lcdcmd(0xA3);
    lcdstring(“>”);
    _delay_ms(300);
    lcdcmd(0xA4);
    lcdstring(“>”);
    _delay_ms(300);
    lcdcmd(0xA5);
    lcdstring(“>”);
    _delay_ms(300);
    lcdcmd(0xA6);
    lcdstring(“>”);
    _delay_ms(300);
    lcdcmd(0xA7);
    lcdstring(“>”);
    _delay_ms(300);
    lcdcmd(0x01);
    lcdcmd(0x83);
    lcdstring(“**Test Result**”);
    lcdcmd(0xC3);
    lcdstring(“RBC=”);
     
     
    while ((PORTC=0x20))
    {
    adc_init();
    ADMUX=PORTC1;
     
    /* Configure timer0*/
    ADMUX=(1<<REFS0);
    //ADMUX=PORTA1;
    //ADCSRA=(1<<ADEN)|(1<<ADSC);
    //ADMUX=1;ADCSRA=(1<<ADPS0)|(1<<ADIE)|(1<<ADATE);
    TCCR0A=(5<<CS00);
    TIMSK0=(1<<TOIE0);
    ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS0)|(1<<ADIE)|(1<<ADATE)|(1<<ADTS0);
    PORTC= 0x00;
    DDRB &= ~(1 << DDRC); // TURN OFF LED
    sei();
     
    }
     
    }
     
     
    void adc_init() // ADC configuration
    {
    //ADMUX=1;
    //Vref=AVcc
    // ADSC=1 ADC Enable
    // ADPS[2:0]=111, prescaler=128
    // ADIE=1, ADC interrupt Enable
    //ADATE=1, ADC Auto Triggering Enable
    TCCR0A=(5<<CS00);
    TIMSK0=(1<<TOIE0);
     
    //ADTS[2:0]= 100 , Timer0 overflow select as trigger source
     
    }
    ISR(ADC_vect)
    {
     
    adc_conversion((ADC));
     
    }
    ISR(TIMER0_OVF_vect)
    {
     
    }
    void adc_conversion(uint16_t adc_out)
    {
     
     
     
    unsigned int adc_out1;
    int i=0;
     
    char position=0xCB;
    for(i=0;i<=3;i++)
    {
     
    adc_out1=adc_out%10;
    adc_out=adc_out/10;
    lcdcmd1(position);
    lcddata1(48+adc_out1);
    position–;
    }
    lcdcmd(0xCC);
    lcdstring(” ug/mL”);
    lcdcmd(0xD4);
    lcdstring(“for menu press RESET”);
     
     
    }
    void lcd_init() // fuction for LCD initialization
    {
    lcdcmd(0x38);
    lcdcmd(0x0C);
    lcdcmd(0x01);
    lcdcmd(0x06);
    lcdcmd(0x80);
    }
     
    void lcdcmd(unsigned char cmd)
    {
    lcd=cmd;
    PORTD=(0<<rs)|(0<<rw)|(1<<en);
    _delay_ms(50);
    PORTD=(0<<rs)|(0<<rw)|(0<<en);
     
    }
     
     
    void lcddata(unsigned char data)
    {
    lcd=data;
    PORTD=(1<<rs)|(0<<rw)|(1<<en);
    _delay_ms(50);
    PORTD=(1<<rs)|(0<<rw)|(0<<en);
    }
     
    void lcdcmd1(unsigned char cmd)
    {
    lcd=cmd;
    PORTD=(0<<rs)|(0<<rw)|(1<<en);
    _delay_ms(5);
    PORTD=(0<<rs)|(0<<rw)|(0<<en);
     
    }
     
     
    void lcddata1(unsigned char data)
    {
    lcd=data;
    PORTD=(1<<rs)|(0<<rw)|(1<<en);
    _delay_ms(5);
    PORTD=(1<<rs)|(0<<rw)|(0<<en);
    }
    void lcdstring (char *string)
    {
    lcdcmd(0x0C);
    while (*string)
    lcddata(*string++);
    }
    May 22, 2013 at 4:49 pm #9810
    AJISH ALFRED
    Participant

    Hi,

    Your question is not so clear, are you looking for a 4-bit lcd code for arduino? The code which you’ve posted is defenitely not written for arduino.

    May 22, 2013 at 10:00 pm #9813
    alagbari88
    Participant

    i will tell u , this code for lcd 8 bit , i need to convert 8 bit lcd to 4 bit lcd this 

    this code function for lcd 8 bit i need to 4 bit for 328p 

     

    void lcd_init() // fuction for LCD initialization
    {
    lcdcmd(0x38);
    lcdcmd(0x0C);
    lcdcmd(0x01);
    lcdcmd(0x06);
    lcdcmd(0x80);
    }
     
    void lcdcmd(unsigned char cmd)
    {
    lcd=cmd;
    PORTD=(0<<rs)|(0<<rw)|(1<<en);
    _delay_ms(50);
    PORTD=(0<<rs)|(0<<rw)|(0<<en);
     
    }
     
     
    void lcddata(unsigned char data)
    {
    lcd=data;
    PORTD=(1<<rs)|(0<<rw)|(1<<en);
    _delay_ms(50);
    PORTD=(1<<rs)|(0<<rw)|(0<<en);
    }
     
    void lcdcmd1(unsigned char cmd)
    {
    lcd=cmd;
    PORTD=(0<<rs)|(0<<rw)|(1<<en);
    _delay_ms(5);
    PORTD=(0<<rs)|(0<<rw)|(0<<en);
     
    }
     
     
    void lcddata1(unsigned char data)
    {
    lcd=data;
    PORTD=(1<<rs)|(0<<rw)|(1<<en);
    _delay_ms(5);
    PORTD=(1<<rs)|(0<<rw)|(0<<en);
    }
    void lcdstring (char *string)
    {
    lcdcmd(0x0C);
    while (*string)
    lcddata(*string++);
    }
     

     

    May 24, 2013 at 3:02 am #9819
    AJISH ALFRED
    Participant

    Hi,

    Just download the arduino IDE. In the examples there is a code for 4 bit LCD interfacing. Conversion of one code to another dosen’t sounds good, better you write a new code.

  • Author
    Posts
Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.
Log In

RSS Recent Posts

  • compile errors April 22, 2026
  • Quick Tip: Handling CH340 Driver Issues on Uno SMD Clones April 22, 2026
  • My Advanced Realistic Humanoid Robots Project April 22, 2026
  • Getting into an LED bulb April 21, 2026
  • understanding of resonance in time domain April 21, 2026

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2026 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy | Advertising | About Us

Search Engineers Garage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise