资讯详情

拉格朗日插值法曲线拟合--频谱图

#include #include #define uchar unsigned char #define uint unsigned int #define L240DAT P1 #define N 60 sbit L240CD=P3^2; sbit L240RD=P3^3; sbit L240WR=P3^4; sbit L240BC=P1^0; sbit L240BD=P1^1; sbit R =P3^5; uchar code dat0[61]={16,16,28,50,68,80,92,100,92,80,68,50,28,15,28,46,60,46,28,17,15,28,34,28,15,20,15,16,28,50,68, 80,92,100,92,80,68,50,28,15,28,46,60,46,28,17,15,28,34,28,15,20,15,16,18,20,27,38,49,62,80}; uchar dat1[5]; void Delay(int x) {int k,m; { for(m=0;m LCD_NOP(void) { unsigned char i; for(i=0;i<5;i++); } uchar l240rc(void) { uchar chk; L240DAT=0xff; L240RD=1; L240CD=1; L240RD=0; chk=L240DAT; L240RD=1; return chk; } void l240wcl(uchar dat1,uchar dat2,uchar com) { while((l240rc()&0x03)!=0x03); L240CD=0; L240DAT=dat1; L240WR=0; LCD_NOP(); L240WR=1; while((l240rc()&0x03)!=0x03); L240CD=0; L240DAT=dat2; L240WR=0; LCD_NOP(); L240WR=1; while((l240rc()&0x03)!=0x03); L240CD=1; L240DAT=com; L240WR=0; LCD_NOP(); L240WR=1; } void l240wc(uchar dat) { while((l240rc()&0x03)!=0x03); L240CD=1; L240DAT=dat; L240WR=0; LCD_NOP(); L240WR=1; } void l240wd(uchar dat) { while((l240rc()&0x03)!=0x03); L240CD=0; L240DAT=dat; L240WR=0; LCD_NOP(); L240WR=1; } void l240wdz(uchar dat) //进入自动读写模式时判忙函数 { while((l240rc()&0x08)!=0x08); L240CD=0; L240DAT=dat; L240WR=0; LCD_NOP(); L240WR=1; } void intl240(void) { L240CD=1; L240WR=1; L240RD=1; L240BC=1; L240BD=1; l240wcl(0x00,0x00,0x40);//初始化 l240wcl(0x20,0x00,0x41); l240wcl(0x00,0x08,0x42); l240wcl(0x20,0x00,0x43); l240wc(0xa7); l240wc(0x81); } void writepoint(uchar x,uchar y,uchar show) { uchar x_pt,y_pt; uint address; x_pt=x; if(show==1) y_pt=y+128; address=(y_pt&0x7f)*32+x_pt/8+0x0800; //计算显示存储器地址 l240wcl((uchar)(address),(uchar)(address>>8),0x24); //设置显示存储器地址 x_pt=(~(x_pt%8))&0x07; y_pt=((y_pt&0x80)>>4)|0xf0; l240wc(x_pt|y_pt); //写入数据 } //设置地址 void glcd_set_address(unsigned int addr){ l240wd((unsigned char)(addr)); l240wd(addr>>8); l240wc(0x24); //0x24为设定地址命令 } void clear_graph(void) // 图形清屏 { int i; glcd_set_address(0x800); // 设置地址为图形区基地址 for (i=0;i<3840*2;i++) // 必须为3840 { l240wd(0); // 写入数据0x00 则不显示 l240wc(0xc0); // 0xc0为数据写入、增加指针 命令 } } void clear_c(void) //清文本 { int m; l240wcl(0x00,0x00,0x24); l240wc(0xb0); for(m=0;m<0x0800;m++) { l240wdz(0x00); } l240wc(0xb2); } void line(int x1, int y1, int x2, int y2, unsigned char show) { int dy ; int dx ; int stepx, stepy, fraction; dy = y2 - y1; dx = x2 - x1; if (dy < 0) { dy = -dy; stepy = -1; } else { stepy = 1; } if (dx < 0) { dx = -dx; stepx = -1; } else { stepx = 1; } dy <<= 1; dx <<= 1; if((x2<240&x1>0)|(x1<240&x2>0)) {writepoint(x1,y1,show);} if (dx > dy) { fraction = dy - (dx >> 1); while (x1 != x2) { if (fraction >= 0) { y1 += stepy; fraction -= dx; } x1 += stepx; fraction += dy; if((x2<240&x1>0)|(x1<240&x2>0)) {writepoint(x1,y1,show); } } } else { fraction = dx - (dy >> 1); while (y1 != y2) { if (fraction >= 0) { x1 += stepx; fraction -= dy; } y1 += stepy; fraction += dx; if((x2<240&x1>0)|(x1<240&x2>0)) {writepoint(x1,y1,show);} } } if((x2<240&x1>0)|(x1<240&x2>0)) { writepoint(x1,y1,show); } } uchar nihe(int y0,int y1,int y2,int i) { float y; if (i==1) y=21*y0/32+y1*7/16-y2*3/32; else if(i==2) y=-y0/2+y1*4/3+y2/6; else y=-y0/3+y1+y2/3; return(y); } void quxian(void) { int i,j; uchar a; signed char dy; clear_graph(); line(1,0,1,127,1); line(1,127,239,127,1); for(i=0;i =0) {for(a=0;a -电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台