Microcontroller › AVR › help me convert 8 bit LCD to 4 LCD
- This topic has 3 replies, 2 voices, and was last updated 11 years, 8 months ago by AJISH ALFRED.
Viewing 4 posts - 1 through 4 (of 4 total)
-
AuthorPosts
-
May 22, 2013 at 1:41 pm #2429alagbari88Participant
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 PD7void 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 ONlcdstring(“><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 LEDsei();}}/***** 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 LEDsei();}}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 EnableTCCR0A=(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<;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 #9810AJISH ALFREDParticipantHi,
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 #9813alagbari88Participanti 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 #9819AJISH ALFREDParticipantHi,
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.
-
AuthorPosts
Viewing 4 posts - 1 through 4 (of 4 total)
- You must be logged in to reply to this topic.