📄 main.c
字号:
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <twi.h>
#include <avr/pgmspace.h>
#include <string.h>
#include <stdio.h>
#include <deprecated.h>
#include <avr/eeprom.h>
#include <stdlib.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int
#define FREQ 8
//*************************************************
#define PowerPort PORTB
#define Open PB2
#define KeyPort PORTD
#define TEP 1
#define TIM_SIG 2
#define SELECT 4 //JIA
#define JIAN 8
#define JIA 16 //PRINT
#define PRINT 32 //CLEAR
#define CLEAR 64 //SELECT
//*************************************************
static uchar High2= 12;
static uchar H_Buf[2] = {0};
static double Low3 = 0;
static double Low3_Mid = 0;
static double ACD_BUF = 0;
static double ACD1_BUF = 0;
static uchar L_Buf[5] = {'0','0','0','0','0'};
static uchar Flag_New = 1;
static double DYB = 0.0048;
static uchar Huan_G = 1;
static uchar Fang_Ad = 0;
//*************************************************
struct Table {
uchar Gs;
uchar Flag;
double number;
};
struct Table Table1[13];
//*************************************************
void DelayMs(uint t)
{
uint i;
for(i =0;i<t;i++)
_delay_loop_2( 250*FREQ );
}
//************Table*******************
static uchar AA0[7] = {0x3C,0x42,0x42,0x3C,0x00,0x00,0x00}; //0
static uchar AA1[7] = {0x00,0x44,0x7C,0x40,0x00,0x00,0x00}; //1
static uchar AA2[7] = {0x00,0x66,0x52,0x4E,0x00,0x00,0x00}; //2
static uchar AA3[7] = {0x00,0x66,0x4A,0x76,0x00,0x00,0x00}; //3
static uchar AA4[7] = {0x18,0x24,0x7E,0x20,0x00,0x00,0x00}; //4
static uchar AA5[7] = {0x00,0x6E,0x4A,0x7A,0x00,0x00,0x00}; //5
static uchar AA6[7] = {0x3C,0x4A,0x4A,0x38,0x00,0x00,0x00}; //6
static uchar AA7[7] = {0x00,0x02,0x7A,0x06,0x00,0x00,0x00}; //7
static uchar AA8[7] = {0x36,0x4A,0x4A,0x76,0x00,0x00,0x00}; //8
static uchar AA9[7] = {0x1C,0x52,0x52,0x3C,0x00,0x00,0x00}; //9
static uchar BB1[8] = {0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x00}; //-
static uchar ZF_K[7] = {0x80,0xFF,0x88,0x94,0xA2,0xC1,0x80}; //K
static uchar ZF_F[7] = {0x80,0xFF,0x89,0x89,0x89,0x81,0x80}; //F
static uchar ZF_Z[7] = {0x80,0xE1,0xD1,0xC9,0xC5,0xC3,0x80}; //Z
static uchar ZF_d[7] = {0x80,0x80,0xE0,0xE0,0x80,0x80,0x80}; //.
static uchar ZF1[7] = {0x80,0x88,0x88,0x88,0x88,0x88,0x80}; //-
static uchar ZF_K1[7] ={0x80,0xFF,0x88,0x94,0xA2,0xC1,0x80}; //K
static uchar ZF_e[7] = {0x80,0xB8,0xD4,0xD4,0xD4,0x98,0x80}; //e
static uchar ZF_n[7] = {0x80,0xFC,0x88,0x84,0x84,0xF8,0x80}; //n
static uchar ZF_nn[7] ={0x80,0xFC,0x88,0x84,0x84,0xF8,0x80}; //n
static uchar ZF_z[7] = {0x80,0xC4,0xE4,0xD4,0xCC,0xC4,0x80}; //z
static uchar ZF_ee[7] ={0x80,0xB8,0xD4,0xD4,0xD4,0x98,0x80}; //e
static uchar ZF_i[7] = {0x00,0x48,0x7A,0x40,0x00,0x00,0x00}; //i
static uchar ZF_c[7] = {0x00,0xE0,0x90,0x90,0x00,0x00,0x00}; //c
static uchar ZF_h[7] = {0x42,0x7E,0x48,0x78,0x40,0x00,0x00}; //h
static uchar ZF_ee1[7] = {0x00,0x78,0x54,0x58,0x00,0x00,0x00}; //e
static uchar ZF_n1[7] = {0x00,0x78,0x08,0x78,0x00,0x00,0x00}; //n
static uchar ZF_21[7]= {0x01,0x01,0x01,0x01,0x01,0x01,0x01}; //' '
static uchar ZF_2K[7]= {0x7E,0x18,0x24,0x42,0x00,0x00,0x00}; //K
static uchar ZF_2i[7]= {0x00,0x48,0x7A,0x40,0x00,0x00,0x00}; //i
static uchar ZF_2l[7]= {0x00,0x84,0xFC,0x80,0x00,0x00,0x00}; //l
static uchar ZF_2o[7]= {0x38,0x44,0x44,0x44,0x38,0x00,0x00}; //o
static uchar ZF_2m[7]= {0x3C,0x04,0x3C,0x04,0x3C,0x00,0x00}; //m
static uchar ZF_2e[7]= {0x00,0x78,0x54,0x58,0x00,0x00,0x00}; //e
static uchar ZF_2t[7]= {0x00,0x08,0x3E,0x28,0x00,0x00,0x00}; //t
static uchar ZF_22e[7]= {0x00,0x78,0x54,0x58,0x00,0x00,0x00}; //e
static uchar ZF_2r[7]= {0x7E,0x18,0x0C,0x04,0x02,0x00,0x00}; //r
static uchar ZF_2s[7]= {0x58,0x54,0x54,0x34,0x00,0x00,0x00}; //s
static uchar ZF_22t[7]= {0x00,0x08,0x3E,0x28,0x00,0x00,0x00}; //t
static uchar ZF_2a[7]= {0x30,0x4A,0x4A,0x3C,0x00,0x00,0x00}; //a
static uchar ZF_2n[7]= {0x78,0x04,0x04,0x78,0x00,0x00,0x00}; //n
static uchar ZF_2d[7]= {0x30,0x48,0x48,0x7E,0x00,0x00,0x00}; //d
static uchar ZF_Z1[7] = {0x61,0x51,0x49,0x45,0x43,0x00,0x00}; //Z
static uchar ZF_y[7] = {0x46,0x28,0x18,0x06,0x00,0x00,0x00}; //y
static uchar ZF_l[7] = {0x00,0x41,0x7F,0x40,0x00,0x00,0x00}; //l
static uchar ZF_SD[7]= {0x00,0x60,0x60,0x00,0x00,0x00,0x00}; //.
static uchar ZF_B[7] = {0xFE,0x92,0x92,0x92,0x6C,0x00,0x00}; //B
static uchar ZF_4a[7]= {0x24,0x54,0x54,0x78,0x00,0x00,0x00}; //a
static uchar ZF_4r[7]= {0x7C,0x08,0x04,0x04,0x00,0x00,0x00}; //r
static uchar ZF_5D[7]= {0x7F,0x41,0x41,0x22,0x1C,0x00,0x00}; //D
static uchar ZF_5a[7] ={0x24,0x54,0x54,0x78,0x00,0x00,0x00}; //a
static uchar ZF_5t[7]= {0x00,0x08,0x3E,0x28,0x00,0x00,0x00}; //t
static uchar ZF_5u[7]= {0x78,0x80,0x80,0xF8,0x00,0x00,0x00}; //u
static uchar ZF_5m[7]= {0xF8,0x08,0xF0,0x08,0xF0,0x00,0x00}; //m
static uchar ZF_6U[7]= {0x7E,0x80,0x80,0x80,0x7E,0x00,0x00}; //U
static uchar ZF_6n[7]= {0xF8,0x04,0x04,0xF8,0x00,0x00,0x00}; //n
static uchar ZF_6t[7]= {0x00,0x08,0x3E,0x28,0x00,0x00,0x00}; //t
static uchar ZF_6e[7]= {0x70,0xA8,0xA8,0xB0,0x00,0x00,0x00}; //e
static uchar ZF_6r[7]= {0x7C,0x08,0x04,0x04,0x00,0x00,0x00}; //r
static uchar ZF_6s[7]= {0x90,0xA8,0xA8,0x48,0x00,0x00,0x00}; //s
static uchar ZF_6c[7]= {0x70,0x88,0x88,0x88,0x00,0x00,0x00}; //c
static uchar ZF_6h[7]= {0xFE,0x08,0x08,0xF0,0x00,0x00,0x00}; //h
static uchar ZF_61r[7]= {0x7C,0x08,0x04,0x04,0x00,0x00,0x00}; //r
static uchar ZF_6i[7]= {0x00,0x88,0xFA,0x80,0x00,0x00,0x00}; //i
static uchar ZF_6f[7]= {0x08,0xFC,0x0A,0x0A,0x00,0x00,0x00}; //f
static uchar ZF_61t[7]= {0x00,0x08,0x3E,0x28,0x00,0x00,0x00}; //t
static uchar ZF_DD[7] = {0x00,0x00,0x6C,0x6C,0x00,0x00,0x00}; //:
static uchar ZF_MM[7] = {0xFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};
static uchar ZF_dD[7] = {0x00,0x60,0x60,0x00,0x00,0x00,0x00}; //.
static uchar Print_Buf[5] = {0};
static uchar Print_Flag =0;
#define FALSE 0
#define TRUE (!FALSE)
#define COM0 0
#define COM1 1
#define COM2 2
#define COM3 3
#define SEG0 0
#define SEG1 1
#define SEG2 2
#define SEG3 3
#define SEG4 4
#define SEG5 5
#define SEG6 6
#define SEG7 7
#define SEG8 8
#define SEG9 9
char Wz;
// A B C D E F G
char A0[7] = {1,1,1,1,1,1,0}; // 0
char A1[7] = {0,1,1,0,0,0,0}; // 1
char A2[7] = {1,1,0,1,1,0,1}; // 2
char A3[7] = {1,1,1,1,0,0,1}; // 3
char A4[7] = {0,1,1,0,0,1,1}; // 4
char A5[7] = {1,0,1,1,0,1,1}; // 5
char A6[7] = {1,0,1,1,1,1,1}; // 6
char A7[7] = {1,1,1,0,0,0,0}; // 7
char A8[7] = {1,1,1,1,1,1,1}; // 8
char A9[7] = {1,1,1,1,0,1,1}; // 9
char *pA;
uchar CS1,CS2,CS3,CS4,CS5,CS6,CS7,S6,S5;
uchar Flag;
/*===================================*/
//char PIN[4][9]={0,0,0,0,0,0,0,0,0};
void Write_SEG(char X,char *p)
{
uchar i,j;
uchar x;
uchar Buf;
x = X;
for(i=0;i<7;i++)
{
Buf = *(p+i);
if(Buf>0)
{
if(i == 0) //A
{
CS4 |=(1<<(x*2-2));
}
if(i == 1) //B
{
CS3 |=(1<<(x*2-2));
}
if(i == 2) //C
{
CS2 |=(1<<(x*2-2));
}
if(i == 3) //D
{
CS1 |=(1<<(x*2-2));
}
if(i == 4) //E
{
if(x != 4)
{
CS2 |= (1<<(x*2-1));
}
else
CS5 = 1;
}
if(i == 5) //F
{
if(x !=4)
{
CS4 |= (1<<(x*2-1));
}
else
CS7 = 1;
}
if(i == 6) //G
{
if(x != 4)
{
CS3 |= (1<<(x*2-1));
}
else
CS6 = 1;
}
}
}
}
/*===================================*/
void Write_Dat(char X,char Date)
{
uchar i,j;
uchar Y=0;
uchar Buff;
if((X==0) && (Date!='0'))
{
CS4 |=0X80;
Flag = 1;
}
if(X > 0)
{
switch(Date)
{
case '0' : pA = A0;
break;
case '1' : pA = A1;
break;
case '2' : pA = A2;
break;
case '3' : pA = A3;
break;
case '4' : pA = A4;
break;
case '5' : pA = A5;
break;
case '6' : pA = A6;
break;
case '7' : pA = A7;
break;
case '8' : pA = A8;
break;
case '9' : pA = A9;
break;
}
}
if(X>0)
Y = 5-X;
switch(Y)
{
case 1 : {
Write_SEG(Y,pA);
break;
}
case 2 : {
if(Flag || Date > '0')
{
Write_SEG(Y,pA);
Flag = 1;
}
break;
}
case 3 : {
if(Flag || (Date>'0'))
{
Write_SEG(Y,pA);
Flag = 1;
}
break;
}
case 4 : {
if(Flag || (Date>'0'))
{
Write_SEG(Y,pA);
Flag =1;
}
break;
}
}
}
//***************************************************************
void Open_ADC0(void)
{
ADMUX = 0x00;
ADCSRA |= _BV(ADSC);
}
//*************************************************************
void Open_ADC1(void)
{
ADMUX = 0x01;
ADCSRA |= _BV(ADSC);
}
//**************************************************************
void Open_ADC2(void)
{
ADMUX = 0x02;
ADCSRA |= _BV(ADSC);
}
//***************************************************************
void ADC_Init(void)
{
ADMUX = 0x00;
ADCSRA = 0x87;
}
//***************************************************************
//SIGNAL(SIG_LCD)
//{
// uint b;
// b = 0;
// b = 1;
//}
//***************************************************************
uint ACD0_Data,ACD1_Data,ACD2_Data;
uchar ACD_Gs=0;
SIGNAL(SIG_OUTPUT_COMPARE0)
{
uint ret,ret1,ret2;
uchar a;
if ( Huan_G ==0)
{
ACD_Gs ++;
if( ACD_Gs < 51)
{
Open_ADC0();
while(ADCSRA & _BV(ADSC));
ret = ADCL;
ret |= (uint)( ADCH << 8 );
ACD0_Data += ret;
Open_ADC1();
while(ADCSRA & _BV(ADSC));
ret1 = ADCL;
ret1 |= (uint)( ADCH << 8);
ACD1_Data += ret1;
Open_ADC2();
while(ADCSRA & _BV(ADSC));
ret2 = ADCL;
ret2 |= (uint)(ADCH << 8);
ACD2_Data = ret2;
}
else
{
//ACD1_BUF = (ACD1_Data/ 50) * DYB;
//ACD_BUF = (ACD0_Data/ 50) * DYB;
//if ( ACD_BUF <= 2.45)//43)
// Low3 = 0;
// else
// if( ACD_BUF < 4.40)
// {
// Low3 = (ACD_BUF -2.45)/0.078;// 2.43)/0.078;
// }
// else
// {
// Low3 = (( ACD1_BUF-2.3)/0.0393)+25;//(ACD1_BUF-1.22)/0.041;
// }
//*************
ACD_BUF = ACD1_Data/50;
Low3_Mid= (ACD_BUF-250)/8.36;
//X if( Fang_Ad == 1)
//X {
if( Low3_Mid> Low3 )
Low3 = Low3_Mid;
if(Low3<1)
Low3 = 0;
//X }
//X else
//X {
//X Fang_Ad ++;
//X }
ACD_Gs = 0;
ACD0_Data = 0;
ACD1_Data = 0;
ACD2_Data = 0;
}
}
TCNT0 = 0x00;
}
//************TO 比较中断*****************************************
void Time0_Init(void)
{
TCCR0A = 0X0D;
OCR0A = 0x4E;
}
//************************************************************
void Open_Time0(void)
{
TIMSK0 |= _BV(OCIE0A);
}
//************************************************************
void Close_Time0(void)
{
TIMSK0 &= ~_BV(OCIE0A);
}
//***************************************************************
void LCD_Init (void)
{
LCDCRA = (1<<LCDEN) ;//|(1<<LCDIE);
LCDCRB = (1<<LCDMUX0) | (1<<LCDMUX1); //(1<<LCDCS) |
LCDFRR = (1<<LCDPS2) | (1<<LCDPS1) | (1<<LCDPS0 )|(1<<LCDCD1)|(1<<LCDCD0); //| (1<<LCDCD0); //32768 K=8 N=16 CKlcd = 64Hz
LCDCCR = (1<<LCDCC3);
}
uint Data=0;
uchar S[5]={0,0,0,0,0};
uchar Buff1;
//*******************************
void Open_Power(void)
{
sbi(PowerPort,Open);
}
//*******************************
void Close_Power(void)
{
cbi(PowerPort,Open);
}
//*******************************
void Clear_Cs(void)
{
CS1=0;
CS2=0;
CS3=0;
CS4=0;
CS5=0;
CS6=0;
CS7=0;
S5 =0 ;
S6 = 0;
Flag=0;
}
//*******************************
uchar Key(void)
{
uchar a;
a = PIND;
if( (a & TEP) == 0 )
{
do
{
a = PIND;
}while((a & TEP) == 0 );
return TEP;
}
//if( (a & TIM_SIG) == 0 )
// return TIM_SIG;
if( (a & JIA) == 0 )
{
do
{
a = PIND;
}while((a & JIA) == 0 );
return JIA;
}
if( (a & JIAN) == 0 )
{
do
{
a = PIND;
}while((a & JIAN) == 0 );
return JIAN;
}
if( (a & PRINT ) == 0 )
{
do
{
a = PIND;
}while((a & PRINT) == 0 );
return PRINT;
}
if( (a & CLEAR) == 0 )
{
do
{
a = PIND;
}while((a & CLEAR) == 0 );
return CLEAR;
}
if( (a & SELECT) == 0 )
{
do
{
a = PIND;
}while((a & SELECT) == 0 );
return SELECT;
}
else
return 0;
}
//************************************
void Display(void)
{
uchar i,j,len;
uchar Flag_Wz;
uchar Flag_Ydian=0;
uchar *P;
//****************缸数*************************
Clear_Cs();
itoa(High2,H_Buf,10);
len = strnlen(H_Buf,5);
if (len == 2 )
{
for(i=0;i<2;i++)
{
Buff1 = *(H_Buf+i);
Write_Dat(i,Buff1);
}
}
else
{
Buff1 = *(H_Buf);
Write_Dat(1,Buff1);
}
//******************************************
if( Flag_New == 0 )
{
dtostrf(Low3,2,1,L_Buf);
len = strnlen(L_Buf,10);
if( len >= 5 )
{
for(i=0;i<3;i++)
{
Buff1 = *(L_Buf+i);
Write_Dat(5-3+i,Buff1);
}
}
else
{
if( len == 4 )
{
S6 = 0x02;
L_Buf[2] = L_Buf[3];
for(i=0;i<3;i++)
{
Buff1 = *(L_Buf+i);
Write_Dat(5-3+i,Buff1);
}
}
if( len == 3 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -