📄 current_temp_lcd_avr.c
字号:
/*****************************************************
Project :
Version :
Date : 25/5/2008
Author : siva jogi naidu
Company :
Comments:
Chip type : ATmega8
Program type : Application
Clock frequency : 8.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include <math.h>
//-----------------------------------------
#define E PD3
#define RS PD2
//////////////////////////////////////////////////
void LCDWrite(int LCDData, char RSValue)
{PORTD = LCDData & 0xF0;
PORTD |= _BV(RSValue);
PORTD |= _BV(E);
PORTD |= ~_BV(E);
PORTD = (LCDData<<4) & 0xF0;
PORTD |= _BV(RSValue);
PORTD |= _BV(E);
PORTD |= ~_BV(E);
_delay_ms(5);
} // End LCDWrite
//----------------------------------
void lcd_puts(unsigned char *s)
{ while(*s)
LCDWrite(*s++,1);
}
//----------------------------------
void LINE1()
{LCDWrite(0X80, 0);
}
//----------------------------------
void LINE2()
{LCDWrite(0XC0, 0);
}
//----------------------------------
void LCD_CLEAR()
{LCDWrite(0X01, 0);
}
//----------------------------------
void lcd_init()
{ PORTD = 0;
_delay_ms(40);
PORTD = 0X30;
PORTD |= _BV(E);
PORTD |= ~_BV(E);
_delay_ms(5);
PORTD |= _BV(E);
PORTD |= ~_BV(E);
_delay_ms(1);
PORTD |= _BV(E);
PORTD |= ~_BV(E);
_delay_ms(1);
PORTD = 0X20;
PORTD |= _BV(E);
PORTD |= ~_BV(E);
_delay_ms(1);
LCDWrite(0X28, 0);
LCDWrite(0X08, 0);
LCDWrite(0X01, 0);
LCDWrite(0X06, 0);
LCDWrite(0X0F, 0);
LCDWrite(0X80, 0);
lcd_puts("RUPANAGUDI POWER");
lcd_puts(" SYSTEMS ");
}
//-------------------------------------------
unsigned char i,j,k,n,Value,key,buffer[16];// Use Global Variables
char in_flag;
//----------------------------------------------------
#define ADC_VREF_TYPE 0x00
#define INPUT 1
#define OUTPUT 0
#define NOLOAD 2
#define _MAX_CYCLE 168
//-------------------------------------------
static unsigned long SumL1;
volatile unsigned int UL1,UL2,vin,vout;
char flag = 0;
//-------------------------------------------
void TIMER1_OVF_vect(void)
{
}
//--------------------------------------------------
int main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0xF0;
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x01;
TCNT1H=0xE2;
TCNT1L=0x72;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x04;
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x86;
asm("sei");
lcd_init();
while (1)
{
_delay_ms(5000);
LCD_CLEAR();
LINE1();
lcd_puts("no load current ");
LINE2();
lcd_puts("measurement jig ");
_delay_ms(5000);
if(flag)
{flag = 0;
if(++i == 10)
{LCD_CLEAR();
LINE1();
sprintf(buffer,"vin %d Volts ",vin);
lcd_puts(buffer);
in_flag = 1;
}
if(i == 20)
{i = 0;
LCD_CLEAR();
LINE2();
sprintf(buffer,"vout %d Volts ",vin);
lcd_puts(buffer);
in_flag = 0;
}
}
};
return(0);
}
//