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

📄 mcu2.i

📁 用atmega128单片机做的示波器
💻 I
📖 第 1 页 / 共 2 页
字号:
// CodeVisionAVR C Compiler
// (C) 1998-2004 Pavel Haiduc, HP InfoTech S.R.L.

// I/O registers definitions for the ATmega32


#pragma used+
sfrb TWBR=0;
sfrb TWSR=1;
sfrb TWAR=2;
sfrb TWDR=3;
sfrb ADCL=4;
sfrb ADCH=5;
sfrw ADCW=4;      // 16 bit access
sfrb ADCSRA=6;
sfrb ADCSR=6;     // for compatibility with older code
sfrb ADMUX=7;
sfrb ACSR=8;
sfrb UBRRL=9;
sfrb UCSRB=0xa;
sfrb UCSRA=0xb;
sfrb UDR=0xc;
sfrb SPCR=0xd;
sfrb SPSR=0xe;
sfrb SPDR=0xf;
sfrb PIND=0x10;
sfrb DDRD=0x11;
sfrb PORTD=0x12;
sfrb PINC=0x13;
sfrb DDRC=0x14;
sfrb PORTC=0x15;
sfrb PINB=0x16;
sfrb DDRB=0x17;
sfrb PORTB=0x18;
sfrb PINA=0x19;
sfrb DDRA=0x1a;
sfrb PORTA=0x1b;
sfrb EECR=0x1c;
sfrb EEDR=0x1d;
sfrb EEARL=0x1e;
sfrb EEARH=0x1f;
sfrw EEAR=0x1e;   // 16 bit access
sfrb UBRRH=0x20;
sfrb UCSRC=0X20;
sfrb WDTCR=0x21;
sfrb ASSR=0x22;
sfrb OCR2=0x23;
sfrb TCNT2=0x24;
sfrb TCCR2=0x25;
sfrb ICR1L=0x26;
sfrb ICR1H=0x27;
sfrb OCR1BL=0x28;
sfrb OCR1BH=0x29;
sfrw OCR1B=0x28;  // 16 bit access
sfrb OCR1AL=0x2a;
sfrb OCR1AH=0x2b;
sfrw OCR1A=0x2a;  // 16 bit access
sfrb TCNT1L=0x2c;
sfrb TCNT1H=0x2d;
sfrw TCNT1=0x2c;  // 16 bit access
sfrb TCCR1B=0x2e;
sfrb TCCR1A=0x2f;
sfrb SFIOR=0x30;
sfrb OSCCAL=0x31;
sfrb TCNT0=0x32;
sfrb TCCR0=0x33;
sfrb MCUCSR=0x34;
sfrb MCUCR=0x35;
sfrb TWCR=0x36;
sfrb SPMCR=0x37;
sfrb TIFR=0x38;
sfrb TIMSK=0x39;
sfrb GIFR=0x3a;
sfrb GICR=0x3b;
sfrb OCR0=0X3c;
sfrb SPL=0x3d;
sfrb SPH=0x3e;
sfrb SREG=0x3f;
#pragma used-

// Interrupt vectors definitions



// CodeVisionAVR C Compiler
// (C) 1998-2000 Pavel Haiduc, HP InfoTech S.R.L.


#pragma used+

void delay_us(unsigned int n);
void delay_ms(unsigned int n);

#pragma used-

// CodeVisionAVR C Compiler
// (C) 1998-2003 Pavel Haiduc, HP InfoTech S.R.L.

// Prototypes for standard I/O functions


// CodeVisionAVR C Compiler
// (C) 1998-2002 Pavel Haiduc, HP InfoTech S.R.L.

// Variable length argument list macros



typedef char *va_list;





#pragma used+

char getchar(void);
void putchar(char c);
void puts(char *str);
void putsf(char flash *str);


char *gets(char *str,unsigned int len);

void printf(char flash *fmtstr,...);
void sprintf(char *str, char flash *fmtstr,...);
void vprintf (char flash * fmtstr, va_list argptr);
void vsprintf (char *str, char flash * fmtstr, va_list argptr);
signed char scanf(char flash *fmtstr,...);
signed char sscanf(char *str, char flash *fmtstr,...);




                                   

            


#pragma used-

#pragma library stdio.lib


/*
CodeVisionAVR C Compiler
Prototypes for mathematical functions

Portions (C) 1998-2001 Pavel Haiduc, HP InfoTech S.R.L.
Portions (C) 2000-2001 Yuri G. Salov
*/



#pragma used+

unsigned char cabs(signed char x);
unsigned int abs(int x);
unsigned long labs(long x);
float fabs(float x);
signed char cmax(signed char a,signed char b);
int max(int a,int b);
long lmax(long a,long b);
float fmax(float a,float b);
signed char cmin(signed char a,signed char b);
int min(int a,int b);
long lmin(long a,long b);
float fmin(float a,float b);
signed char csign(signed char x);
signed char sign(int x);
signed char lsign(long x);
signed char fsign(float x);
unsigned char isqrt(unsigned int x);
unsigned int lsqrt(unsigned long x);
float sqrt(float x);
float floor(float x);
float ceil(float x);
float fmod(float x,float y);
float modf(float x,float *ipart);
float ldexp(float x,int expon);
float frexp(float x,int *expon);
float exp(float x);
float log(float x);
float log10(float x);
float pow(float x,float y);
float sin(float x);
float cos(float x);
float tan(float x);
float sinh(float x);
float cosh(float x);
float tanh(float x);
float asin(float x);
float acos(float x);
float atan(float x);
float atan2(float y,float x);

#pragma used-
#pragma library math.lib


//----------------------------   
unsigned char lcd_buffer[240],cdd[242],add[500]; 
unsigned char e,qqq,trigs[16]={0x00,0x00,0x0E,0x08,0x08,0x08,0x1C,0x2A,0x08,0x08,0x08,0x08,0x08,0x78,0x00,0x00}; 
unsigned char trigs2[16]={0x00,0x00,0x78,0x08,0x08,0x08,0x08,0x2A,0x1C,0x08,0x08,0x08,0x08,0x0E,0x00,0x00};
unsigned int c,ee; 
unsigned char i[9],j,eep,tri,hold,holdb,biao,zhi;
unsigned long m,freq;
//----------------------------
//写入寄存器地址或参数
//----------------------------
interrupt[13] void spi_isr(void)
{

 if(j!=9)
 {
 i[j]=SPDR;
 j++;
 }
}

void SdCmd(unsigned char  command)
{
PORTD = command;
PORTC.3 = 0;
PORTC.4 = 0;
PORTC.1 = 0;
PORTC.1 = 1;
PORTC.4 = 1;
PORTC.3 = 1;
}
//----------------------------
//写入数据
//----------------------------
void SdData(unsigned char  ddata)
{
PORTD = ddata;
PORTC.3 = 0;
PORTC.4 = 1;
PORTC.1 = 0;
PORTC.1 = 1;
PORTC.4 = 0;
PORTC.3 = 1;
}
//----------------------------
//显示文本
//----------------------------
void ShowText(unsigned char  *text)
{
while(*text>0)
{
SdData(*text);
text++;
delay_us(150);
}
} 
//----------------------------
//初始化
//----------------------------
void Init()
{
PORTC.5  = 0;
delay_ms(600);
PORTC.5  = 1;
delay_ms(100);
SdCmd(0x00);SdCmd(0xc5); //设置WLCR 寄存器
SdCmd(0x11);SdCmd(0x00); //设置DWLR 寄存器
SdCmd(0x81);SdCmd(0x40); //设置FRCA 寄存器
SdCmd(0xf0);SdCmd(0b10100000); //设置FNCR 寄存器
SdCmd(0x01);SdCmd(0xf0); //设置MISC 寄存
SdCmd(0x90);SdCmd(0x04); //设置SCCR 寄存器
SdCmd(0x20);SdCmd(0x27); //设置工作视窗
SdCmd(0x30);SdCmd(0xef);
SdCmd(0x40);SdCmd(0x00);
SdCmd(0x50);SdCmd(0x00);
SdCmd(0x21);SdCmd(0x27); //设置显示视窗
SdCmd(0x31);SdCmd(0xef);
SdCmd(0x41);SdCmd(0x00);
SdCmd(0x51);SdCmd(0x00);
SdCmd(0x10);SdCmd(0b00100000);
}
//----------------------------
//清屏
//----------------------------
void CleanScreen()
    {
       unsigned char  i,j;
       for(i=0;i<40;i++)
          {
             for(j=0;j<240;j++)
                { 
                SdCmd(0x60);SdCmd(i);
                SdCmd(0x70);SdCmd(j);
                SdData(0x00);
                }
          }
    }

void line()
{
unsigned char i,k;
   
for(i=0;i<240;i++)
{
SdCmd(0x60);SdCmd(0);
SdCmd(0x70);SdCmd(i); 
SdData(0x80); 
}
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(3);
SdCmd(0x70);SdCmd(i); 
SdData(0x02); 
}
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(7);
SdCmd(0x70);SdCmd(i); 
SdData(0x08); 
}
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(11);
SdCmd(0x70);SdCmd(i); 
SdData(0x20); 
} 
for(i=0;i<240;i++)
{
SdCmd(0x60);SdCmd(15);
SdCmd(0x70);SdCmd(i); 
SdData(0x80); 
} 
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(18);
SdCmd(0x70);SdCmd(i); 
SdData(0x02); 
}
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(22);
SdCmd(0x70);SdCmd(i); 
SdData(0x08); 
}
for(i=0;i<240;i+=2)
{
SdCmd(0x60);SdCmd(26);
SdCmd(0x70);SdCmd(i); 
SdData(0x20); 
}
for(i=0;i<240;i++)
{
SdCmd(0x60);SdCmd(30);
SdCmd(0x70);SdCmd(i); 
SdData(0x80); 
}

for(k=0;k<240;k+=30)
    {
     for(i=0;i<30;i++)
         {
           SdCmd(0x60);SdCmd(i);
           SdCmd(0x70);SdCmd(k);
           if(k==0||k==120)
              { 
                SdData(0xff); 
              }
           else
              {
                SdData(0xaa);
              }
          }
     }
for(i=0;i<30;i++)
     {
        SdCmd(0x60);SdCmd(i);
        SdCmd(0x70);SdCmd(239); 
        SdData(0xff); 
        }
     } 

void disp_volt()
{
SdCmd(0x00);SdCmd(0xcd); //设置WLCR 寄存器 
SdCmd(0xf1);SdCmd(0x1f); //字型水平、垂直方向各放大2 倍 
SdCmd(0x60);SdCmd(30);
SdCmd(0x70);SdCmd(50);
c=c*0.667;
                               switch(biao)//计算键值
				    {
					case 0:c=c*25;break;
					case 1:c=c*10;break;
					case 2:c=c*5;break;
					case 3:c=c*2.5;break;
					case 4:;break;
					case 5:c=c*0.5;break;
					case 6:c=c*0.25;break;
					case 7:c=c*0.1;break;
					case 8:c=c*0.05;break;
					default:break;
				    }
sprintf(lcd_buffer,"%3d.%02dVpp",c/100,c%100); 
ShowText(lcd_buffer); 
SdCmd(0xf1);SdCmd(0x0f); //字型水平、垂直方向各放大2 倍 
SdCmd(0x00);SdCmd(0xc5); //设置WLCR 寄存器  
} 

void trig()
{   
   unsigned char i; 
   SdCmd(0x10);SdCmd(0x59);  //字体反显示
    for(i=0;i<16;i++)
    {
    SdCmd(0x60);SdCmd(33);
    SdCmd(0x70);SdCmd(180+i);
    if(tri==0)
    {
    SdData(trigs[i]);
    }
    else
    {
    SdData(trigs2[i]);    
    }
    }
 SdCmd(0x10);SdCmd(0x79); 
}
void can()
 {
 SdCmd(0x00);SdCmd(0xcd); //设置WLCR 寄存器 
SdCmd(0x60);SdCmd(33); 
SdCmd(0x70);SdCmd(150);
SdCmd(0x10);SdCmd(0x59);  //字体反显示
sprintf(lcd_buffer," HOLD "); 
ShowText(lcd_buffer); 
SdCmd(0x10);SdCmd(0x79);
SdCmd(0x60);SdCmd(32); 
SdCmd(0x70);SdCmd(200);
SdCmd(0xf1);SdCmd(0x1f); //字型水平、垂直方向各放大2 倍 
sprintf(lcd_buffer,"Agilent"); 
ShowText(lcd_buffer);
SdCmd(0xf1);SdCmd(0x0f); //字型水平、垂直方向各放大2 倍 
SdCmd(0x00);SdCmd(0xc5); //设置WLCR 寄存器 
 }
void clr_hold()
{
 SdCmd(0x00);SdCmd(0xcd); //设置WLCR 寄存器 
SdCmd(0x60);SdCmd(33); 
SdCmd(0x70);SdCmd(150);
SdCmd(0x10);SdCmd(0x69);  //字体反显示
sprintf(lcd_buffer,"      "); 
ShowText(lcd_buffer); 
SdCmd(0x10);SdCmd(0x79);
SdCmd(0x60);SdCmd(31); 
SdCmd(0x70);SdCmd(200);
SdCmd(0xf1);SdCmd(0x1f); //字型水平、垂直方向各放大2 倍 
sprintf(lcd_buffer,"By Weikun"); 
ShowText(lcd_buffer);
SdCmd(0xf1);SdCmd(0x0f); //字型水平、垂直方向各放大2 倍 
SdCmd(0x00);SdCmd(0xc5); //设置WLCR 寄存器
}

void display()

⌨️ 快捷键说明

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