📄 main.c
字号:
#define ENABLE_BIT_DEFINITIONS
#include "includes.h"
//#define Vref 50000
void init_adc(void);
void WDR(void);
void WDT_init(void);
//unsigned char adc_mux = 0x01; //通道选择
unsigned char RSend;
unsigned char RS_buf[10];
unsigned char RS_flag;
void main(void)
{
float j;
int count;
// unsigned char *test = "The Voltage is: ";
unsigned char *value = "00";
// unsigned char *value = "0.000 V 0.000 V 0.000 V ";
unsigned char *RS;
/* value[7]=0x0d;
value[8]=0x0a;
value[16]=0x0d;
value[17]=0x0a;
value[25]=0x0d;
value[26]=0x0a;*/
RS = RS_buf;
RS_flag = 0;
//dataport=0xff;
OSCCAL=0Xab;//系统时钟校准,不同的芯片和不的频率,
init_adc();
InitSerial();
init_timer0();
init_timer2();
// Init_LCD();
// WDT_init();
// DDRD=DDRD|0xf0;
// PORTD=PIND|0x0f;
// LCD_DisplayString(1,1,test);
// LCD_DisplayString(2,1,value);
put_string(value);
// put_char(0x0d);
// put_char(0x0a);
while(1)
{
if(AD_refrash)
{
AD_cal();
// j = (float)(((float)((Vref/1023)))*(ADCH*256+ADCL))/1000.00;
j = PowerMeter.Va;//(float)(((float)((Vref/1023)))*( ADC&0X3FF))/1000.00;
count = j;//j*100;
value[0] = PowerMeter.Va>>8;//count /1000+0x30;
//count = count %1000;
value[1] = PowerMeter.Va;//count /100+0x30;
/*count = count %100;
value[3] = count /10 + 0x30;
value[4] = count %10 + 0x30;*/
/* j = PowerMeter.Vb;//(float)(((float)((Vref/1023)))*( ADC&0X3FF))/1000.00;
count = j*100;
value[9] = count /1000+0x30;
count = count %1000;
value[11] = count /100+0x30;
count = count %100;
value[12] = count /10 + 0x30;
value[13] = count %10 + 0x30;
j = PowerMeter.Vc;//(float)(((float)((Vref/1023)))*( ADC&0X3FF))/1000.00;
count = j*100;
value[18] = count /1000+0x30;
count = count %1000;
value[20] = count /100+0x30;
count = count %100;
value[21] = count /10 + 0x30;
value[22] = count %10 + 0x30; */
// LCD_Cursor(0,1);
// LCD_DisplayString(2,1,value);
put_string(value);
// put_char(0x0d);
// put_char(0x0a);
// Next_ADchanle;
if(RS_flag)
{
LCD_DisplayString(2,10,RS);
RS_flag = 0;
}
clr_adrefrash;
}
}
}
#pragma vector = USART_RXC_vect
__interrupt void usart_isr( void )
{
SREG &= !(1<<7);
RS_flag = 1;
RSend++;
RS_buf[RSend] = UDR;
put_char(RS_buf[RSend]);
if(RSend>=10)
{
RSend = 0;
}
SREG |= (1<<7);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -