⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 current_temp_lcd_avr.c

📁 milli amps meter using atmega8
💻 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);
}

//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -