dsp課程設計報告_第1頁
dsp課程設計報告_第2頁
dsp課程設計報告_第3頁
dsp課程設計報告_第4頁
dsp課程設計報告_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

年4月19日dsp課程設計報告文檔僅供參考,不當之處,請聯(lián)系改正。DSP課程設計總結(-第2學期)題目:數(shù)據(jù)采集處理和控制系統(tǒng)設計專業(yè)班級:電子1202學生姓名:李茹學號:12052203指導教師:李莉設計成績:年7月目錄一設計目的1二系統(tǒng)分析1設計要求1主要任務1三硬件設計2 3.1硬件總體結構23.2DSP模塊設計43.3電源模塊設計63.4時鐘模塊設計63.5存儲器模塊設計7四軟件設計9 4.1軟件總體流程9 4.2核心模塊及實現(xiàn)代碼9五課程設計總結29六參考文獻29一設計目的此設計結合硬件、軟件得到一個基于TMS320VC5416芯片,能完成數(shù)據(jù)采集、頻譜分析、濾波、LCD顯示的DSP系統(tǒng)。以此加強了對DSP功能的認識,復習了AltiumDesigner軟件的使用方法。并在此基礎上利用CCS軟件編程實現(xiàn)A/D采集,F(xiàn)FT變換處理,低通濾波,顯示濾波成分等功能的完整的小型數(shù)字處理系統(tǒng)。二系統(tǒng)分析1.1設計要求(1)硬件設計要求設計一個功能完備的,能夠獨立運行的精簡DSP硬件系統(tǒng),使用AltiumDesigner繪制出系統(tǒng)原理圖和PCB圖。(2)軟件設計要求利用實驗箱的模擬信號產(chǎn)生單元產(chǎn)生不同頻率的信號,或者產(chǎn)生兩個頻率的信號疊加。在DSP中采集信號,而且對信號進行頻譜分析,濾波等。經(jīng)過串口命令選擇算法功能,將計算的信號頻率或者濾波后的信號頻率在LCD上顯示。1.2主要任務(1)DSP硬件系統(tǒng)設計設計DSP基本結構并繪制單片機最小系統(tǒng)原理圖和PCB圖。(2)數(shù)據(jù)采集處理和控制系統(tǒng)設計利用CCS軟件編程實現(xiàn)數(shù)據(jù)采集x(n)→對數(shù)據(jù)FFT處理、分析頻率成分→根據(jù)頻率成分設計FIR低通濾波器h(n)→卷積x(n)*h(n)=y(n)得到濾波之后的信號→分析濾波之后y(n)的頻率成分→LCD顯示高頻,低頻和濾波器的截止頻率。三硬件設計 3.1硬件總體結構1FLASHWRFLASHWROEREADYRSDSP_R/WX2/CLKINA0-A19電源A0-A19電源D0-D15復位電路D0-D15復位電路JTAGJTAG晶振晶振圖1硬件總體結構本次實驗使用TMS320VC5416芯片作為主芯片。外圍電路包括:電源、復位電路、時鐘發(fā)生器(外接晶振或外接晶體)、、外部存儲器FLASH、仿真接口電路JTAG、外部中斷(不用:上拉)、I/O(不用:輸出懸空,輸入上拉)與主機通信的并行接口HPI(不用:懸空)。原理圖設計圖2單片機最小系統(tǒng)原理圖(2)PCB板設計圖3PCB圖(1)圖4PCB圖(2)如圖所示,由于其右上部分地址線和數(shù)據(jù)線較多,鋪銅不方便,因此Vcore層分布在TM320VC5416芯片的左下部分。+3.3V為頂層紅色部分,GND為底層藍色部分。3.2DSP模塊設計圖5DSP模塊(1)上圖為TMS320VC5416芯片的設計,該芯片不用的輸入引腳要拉高,輸出引腳懸空。①本設計用到了該芯片的數(shù)據(jù)信號線,初始化、中斷和復位線,部分存儲器控制信號線,部分振蕩器/定時信號線,串口信號線,電源引腳線和JTAG測試引腳線。②主CPU每個電源管腳旁邊都有一個0.1uF的去耦電容,去耦電容能夠提供較穩(wěn)定的電源,同時也能夠降低元件耦合到電源端的噪聲,間接能夠減少其它元件受此元件噪聲的影響。③CLKMOD1、CLKMOD2、CLKMOD3分別接1、1、0,表示鎖相環(huán)一倍頻圖6DSP模塊(2)圖6DSP模塊(3)3.3電源模塊設計圖7電源模塊73HD316為DC-DC轉換芯片,將+5V電壓轉換成Vcore和+3.3V電壓,電源和地之間要接濾波電容。Vcore為內核電壓,+3.3V為外設電壓,這樣能夠減小功耗。3.4時鐘模塊設計圖8時鐘模塊10MHZ晶振的輸出接到TM320VC5416芯片的X2/CLKIN管腳,芯片的X1懸空,即使用外部晶振。3.5存儲器模塊設計圖9存儲器模塊存儲器的數(shù)據(jù)線和地址線分別接CPU的數(shù)據(jù)線和地址線。DSP控制信號R/W_L接FLASH的WE_L和OE表示DSP向FLASH寫和從FLASH讀有效。當DSP從FLASH讀時,DSP輸出高電平,但FLASH的OE為低有效,應接一個非門。3.6復位電路設計圖10復位電路如圖所示有兩種復位方法:(1)上電復位,利用RC的延遲特性,剛開始上電,由于電容電壓不能突變,RESET處為低,直到電容充電完畢,變高,實現(xiàn)復位;(2)手動復位,S1閉合,電容放電,電平變低,斷開,電容充電過程與上電復位相同,實現(xiàn)復位。發(fā)光二極管用來表示DSP的工作狀態(tài)三個電源是否正常工作。3.7仿真接口電路設計圖11仿真接口電路JTAG仿真接口,用于將外部的程序、數(shù)據(jù)導入DSP內部,完成運算處理。是外部存儲器與DSP的一個媒介。四軟件設計系統(tǒng)各模塊初始化 4.1軟件總體流程系統(tǒng)各模塊初始化A/D采樣A/D采樣對采樣信號進行FFT運算,并求兩頻率值對采樣信號進行FFT運算,并求兩頻率值設計FIR低通濾波器設計FIR低通濾波器調用卷積算法對信號進行處理調用卷積算法對信號進行處理LCD顯示頻率值LCD顯示頻率值返回第二步返回第二步 4.2核心模塊及實現(xiàn)代碼(1)主要代碼//頭文件#include"DspRegDefine.h"http://VC5402寄存器定義#include"stdio.h"http://輸入輸出接口定義#include"math.h"http://數(shù)學計算定義///*******************宏定義****************************************************************************/#defineUCHAR unsignedchar#defineUINT16 unsignedint#defineUINT32 unsignedlong#defineTRUE 1#defineFALSE 0#defineLength256//FFT的點數(shù)////LCD指令//基本指令集RE=0#defineCLEAR0x0001//清除顯示#defineRESAC0x0002//位址歸位#defineSETPOINT0x0006//進入點設定,游標右移,DDRAM位址計數(shù)器(AC)加1#defineCURSOR0x000F//整體顯示,游標顯示,游標位置反白#defineMCURSOR0x0014//游標向右移動,AC=AC+1#defineFUCSET0x0030//功能設定,BITMPU控制界面,基本指令集,默認設置#defineCGRAMAC0x0040//設定CGRAM位址#defineDDRAMAC0x0080//設定DDRAM位址//第一行AC範圍為80H..8FH//第二行AC範圍為90H..9FH//第三行AC範圍為A0H..AFH//第四行AC範圍為B0H..BFH//#defineREADBFRS=0,RW=1,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0//BFAC6AC5AC4AC3AC2AC1AC0//讀取忙碌旗標(BF)和位址//就是讀取指令寄存器,PORT8006,BF=1,表示LCD忙碌//#defineWRITERAMRS=1,RW=0,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0//D7D6D5D4D3D2D1D0//寫入資料到RAM//就是寫數(shù)據(jù)寄存器:PORT8005//#defineREADRAMRS=1,RW=1,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0//D7D6D5D4D3D2D1D0//讀取RAM的值//就是從數(shù)據(jù)寄存器讀取資料,PORT8007//擴充指令集RE=1#defineIDLE0x01//待命模式#defineCGRAMSET0x02//捲動位址或RAM位址選擇#defineREVERSE0x04//反白選擇#defineSLEEP0x0c//脫離睡眠模式#defineEFUCSET0x66//擴充功能設定,8BITMPU控制界面,為擴充指令集動作,繪圖顯示ON#defineSISA0x40//設定IRAM位址或捲動位址#defineSETGDRAM0x80//設定繪圖RAM位址///*端口定義*///ioportUINT16port8002;//定義輸出AD端口為0x8002;ioportUINT16port8004;//寫指令寄存器ioportUINT16port8005;//寫數(shù)據(jù)寄存器ioportUINT16port8006;//讀指令寄存器ioportUINT16port8007;//讀數(shù)據(jù)寄存器///*全局變量定義*///intin_x[Length];//數(shù)據(jù)緩沖數(shù)組Lengthinti=0;ints,m=0;intintnum=0;intflag=0;//采集Length點的標志doublexavg;doublex[Length],mo[Length],mo2[Length],pr[Length],pi[Length];intn,l,il;intk=8;//k為Length相對于2的冪次doubledata_kfft[Length];//數(shù)據(jù)緩沖256個數(shù)組doubledata_re[Length];//數(shù)據(jù)緩沖256個數(shù)組doubledata_im[Length];//數(shù)據(jù)緩沖256個數(shù)組doubledata_buffim[Length];//數(shù)據(jù)緩沖256個數(shù)組doubledata_out[256];doubledata_temp[256];doubledata_out1[256];doubleh[51];intx1=0;intx2=0;doublefhz=0;doublef1;doublef2;doublewc=0;inti;UINT16temp;UCHARdata_buff1[10]="低頻:";UCHARdata_buff2[10]="高頻:";UCHARdata_buff3[10]="濾波:";UCHARdata_buff4[16]="liru12052203";UCHARnum[11]=".";inta;intb;intc;intd;/**************************************************************************************所使用的函數(shù)原型****************************************************************************************/voidcpu_init(void);//初始化CPUvoidDelay(UINT16numbers);//延遲voidxint2_init(void);//外部中斷2初始化子程序voidkfft(doublepr[Length],doublepi[Length],intn,intk,doublefr[Length],doublefi[Length],intl,intil);//基2快速傅立葉變換子程序interruptvoidExtInt2();//中斷2中斷子程序voidfirdes(doublenpass);//firvoidConvolveok(//卷積函數(shù)double*x, //原始輸入數(shù)據(jù)double*h, //沖擊響應double*y, //卷積輸出結果UINT16length, //序列長度UINT16fLen);externvoiddelay_100us(void);//100us延遲--指令之間的延遲externvoiddelay_1us(void);//1us延遲--時鐘之間的延遲voiddelay_50ms(void);//50ms延遲--復位延遲voiddelay_20ms(void);//20ms延遲--清屏延遲voidSendByte(UCHARdat);//串行發(fā)送一字節(jié)數(shù)據(jù)voidSendCMD(UCHARdat);//寫指令寄存器voidSendDat(UCHARdat);//寫顯示數(shù)據(jù)或單字節(jié)字符voidDisplay(UCHARx_add,UCHARdat1,UCHARdat2);//寫漢字到LCD指定的位置voidInitlcm(void);//初始化LCM///************************************************************************* ***********************函數(shù)定義*******************************************************************************************/////函數(shù)名稱:voidcpu_init(void)//函數(shù)說明:初始化CPU//輸入?yún)?shù):無//輸出參數(shù):無//voidcpu_init(void){asm("nop"); asm("nop"); asm("nop");// // *(unsignedint*)CLKMD=0x0;//switchtoDIVmodeclkout=1/2clkinwhile(((*(unsignedint*)CLKMD)&01)!=0);*(unsignedint*)CLKMD=0x77ff;//switchtoPLLX3mode///**/ *(unsignedint*)PMST=0x3FF2;// /**/ *(unsignedint*)SWWSR=0x7fff;//// *(unsignedint*)SWCR=0x0001;////*(unsignedint*)BSCR=0xf800;// asm("ssbxintm");//Disableallmaskinterrupts//// *(unsignedint*)IMR=0x0;///**/ *(unsignedint*)IFR=0xffff;//asm("nop"); asm("nop"); asm("nop"); }/************************************************************-函數(shù)名稱:voidDelay(intnumbers)-函數(shù)說明:延時-輸入?yún)?shù):numbers-輸出參數(shù):無************************************************************/voidDelay(UINT16numbers){ UINT16i,j; for(i=0;i<4000;i++) for(j=0;j<numbers;j++); }////函數(shù)名稱:voidxint2_init(void)//函數(shù)說明:初始化XINT2//輸入?yún)?shù):無//輸出參數(shù):無//voidxint2_init()//外部中斷2初始化子程序{*(unsignedint*)IMR=0x0004;//使能int2中斷/*bit151:XINT2flag--write"1"toclearbit14-30:reservedbit21:XINT2Polarity--"1"risingeagebit10:XINT2Priority--"0"Highprioritybit01:XINT2Enable--"1"Enableinterrupt*/asm("rsbxINTM");//開總中斷}////函數(shù)名稱:voidkfft(doublepr[Length],doublepi[Length],intn,intk,doublefr[Length],doublefi[Length],intl,intil)//函數(shù)說明:基2快速傅立葉變換子程序//輸入?yún)?shù)://輸出參數(shù):無//voidkfft(doublepr[Length],doublepi[Length],intn,intk,doublefr[Length],doublefi[Length],intl,intil){ intit,m,is,i,j,nv,l0;doublep,q,s,vr,vi,poddr,poddi;for(it=0;it<=n-1;it++){m=it;is=0;for(i=0;i<=k-1;i++){j=m/2;is=2*is+(m-2*j);m=j;}fr[it]=pr[is];fi[it]=pi[is];}pr[0]=1.0;pi[0]=0.0;p=6./(1.0*n);pr[1]=cos(p);pi[1]=-sin(p);if(l!=0)pi[1]=-pi[1];for(i=2;i<=n-1;i++){p=pr[i-1]*pr[1];q=pi[i-1]*pi[1];s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);pr[i]=p-q;pi[i]=s-p-q;}for(it=0;it<=n-2;it=it+2){vr=fr[it];vi=fi[it];fr[it]=vr+fr[it+1];fi[it]=vi+fi[it+1];fr[it+1]=vr-fr[it+1];fi[it+1]=vi-fi[it+1];}m=n/2;nv=2;for(l0=k-2;l0>=0;l0--){m=m/2;nv=2*nv;for(it=0;it<=(m-1)*nv;it=it+nv)for(j=0;j<=(nv/2)-1;j++){p=pr[m*j]*fr[it+j+nv/2];q=pi[m*j]*fi[it+j+nv/2];s=pr[m*j]+pi[m*j];s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);poddr=p-q;poddi=s-p-q;fr[it+j+nv/2]=fr[it+j]-poddr;fi[it+j+nv/2]=fi[it+j]-poddi;fr[it+j]=fr[it+j]+poddr;fi[it+j]=fi[it+j]+poddi;}}if(l!=0)for(i=0;i<=n-1;i++){fr[i]=fr[i]/(1.0*n);fi[i]=fi[i]/(1.0*n);}if(il!=0)for(i=0;i<=n-1;i++){pr[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);if(fabs(fr[i])<0.000001*fabs(fi[i])){if((fi[i]*fr[i])>0)pi[i]=90.0;elsepi[i]=-90.0;}elsepi[i]=atan(fi[i]/fr[i])*360.0/6.;}}voidfirdes(doublenpass)//fir濾波器,求出單位脈沖響應{intpi=3.14; intt; for(t=0;t<51;t++) { if(t==((51-1)/2)) { h[t]=2*npass; } else { h[t]=sin((t-(51-1)/2.0)*npass*pi*2)/(pi*(t-(51-1)/2.0));//fir濾波器的函數(shù) } }}voidConvolveok(//卷積函數(shù)double*x, //原始輸入數(shù)據(jù)double*h, //沖擊響應double*y, //卷積輸出結果UINT16length,//序列長度UINT16fLen){ UINT16m,p,j; doubler,rm; doublexmean=0.0; doublexmid[100]; h[0]=0.0; h[50]=0.0; for(m=0;m<fLen;m++) { xmid[m]=0.0; } for(m=0;m<length;m++) { xmean=x[m]+xmean; } xmean=1.0*xmean/length; for(m=0;m<length;m++) { x[m]=x[m]-xmean; } for(m=0;m<length;m++) { for(p=0;p<fLen;p++) { xmid[fLen-p-1]=xmid[fLen-p-2]; } xmid[0]=x[m]; r=0.0; rm=0.0; for(j=0;j<fLen;j++) { r=xmid[j]*h[j]; rm=rm+r; } y[m]=rm; }}////函數(shù)名稱:voiddelay_50ms(void)//函數(shù)說明:50ms延遲//輸入?yún)?shù):無//輸出參數(shù):無//voiddelay_50ms(){UINT16i,j;for(i=0;i<=1000;i++);for(j=0;j<=;j++);//延遲250*1000*CLKOUT=500000*CLKOUT//1/CLKOUT=0.2us}////函數(shù)名稱:voiddelay_20ms(void)//函數(shù)說明:20ms延遲//輸入?yún)?shù):無//輸出參數(shù):無//voiddelay_20ms(){UINT16i,j;for(i=0;i<=1000;i++);for(j=0;j<=400;j++);//延遲10*1000*CLKOUT=100000*CLKOUT//1/CLKOUT=0.2us}//函數(shù)名稱:voiddelay_100us(void)//函數(shù)說明:100us延遲//輸入?yún)?shù):無//輸出參數(shù):無//voiddelay_100us(){UINT16i,j;for(i=0;i<=1000;i++);for(j=0;j<=2;j++);//延遲10*1000*CLKOUT=100000*CLKOUT//1/CLKOUT=0.2us}//函數(shù)名稱:voiddelay_1us(void)//函數(shù)說明:1us延遲//輸入?yún)?shù):無//輸出參數(shù):無//voiddelay_1us(){UINT16i;for(i=0;i<=20;i++);//延遲10*1000*CLKOUT=100000*CLKOUT//1/CLKOUT=0.2us}////函數(shù)名稱:voidSendByte(UCHARdat)串行發(fā)送一字節(jié)數(shù)據(jù)//函數(shù)說明:串行發(fā)送一字節(jié)數(shù)據(jù),在時鐘的上升沿發(fā)送數(shù)據(jù),在時鐘為低電平時,數(shù)據(jù)變化//輸入?yún)?shù):發(fā)送的數(shù)據(jù)//輸出參數(shù):無//voidSendByte(UCHARdat){UCHARi;for(i=0;i<8;i++){temp=port8007;//讀IO8007SCLK="0";if(dat&0x0080)port8006=0;//寫IO8006SID="1",發(fā)送數(shù)據(jù)"1"MSB先發(fā)送elsetemp=port8006;//讀IO8006SID="0",發(fā)送數(shù)據(jù)"0"MSB先發(fā)送port8007=0;//寫IO8007SCLK="1";dat=dat<<1;//數(shù)據(jù)左移,移位到dat.7}temp=port8007;//讀IO8007SCLK="0";}////函數(shù)名稱:voidSendCMD(UCHARdat)寫指令寄存器//函數(shù)說明:寫指令寄存器//輸入?yún)?shù):輸入的命令字//輸出參數(shù):無//voidSendCMD(UCHARdat){SendByte(0x00F8);//11111,00,0RW=0,RS=0同步標志SendByte(dat&0x00F0);//高四位SendByte((dat&0x000F)<<4);//低四位}////函數(shù)名稱:voidSendDat(UCHARdat)寫顯示數(shù)據(jù)或單字節(jié)字符//函數(shù)說明:寫數(shù)據(jù)寄存器//輸入?yún)?shù):輸入的數(shù)據(jù)//輸出參數(shù):無//voidSendDat(UCHARdat){SendByte(0x00FA);//11111,01,0RW=0,RS=1SendByte(dat&0x00F0);//高四位SendByte((dat&0x000F)<<4);//低四位}////函數(shù)名稱:voiddisplay(UCHARx_add,UCHARdat1,UCHARdat2)寫漢字到LCD指定的位置//函數(shù)說明:x_add顯示RAM的地址,dat1/dat2顯示漢字編碼//輸入?yún)?shù):x_add,dat1/dat2//輸出參數(shù):無//voidDisplay(UCHARx_add,UCHARdat1,UCHARdat2){SendCMD(x_add);//1xxx,xxxx設定DDRAM7位地址xxx,xxxx到地址計數(shù)器ACSendDat(dat1);SendDat(dat2);}////函數(shù)名稱:voidInitlcm(void)//函數(shù)說明:初始化LCM//輸入?yún)?shù):無//輸出參數(shù):無//voidInitlcm(){asm("nop");delay_50ms();SendCMD(FUCSET);//功能設定,8BIT并口,基本指令集delay_100us();SendCMD(FUCSET);//功能設定,8BIT并口,基本指令集delay_100us();SendCMD(CURSOR);//整體顯示,游標顯示,游標位置反白delay_100us();SendCMD(CLEAR);//清除顯示delay_20ms();SendCMD(SETPOINT);//進入點設定,游標右移,DDRAM位址計數(shù)器(AC)加1delay_100us();}////函數(shù)名稱:voidExtInt2(void)//函數(shù)說明:中斷2的子程序//輸入?yún)?shù):無//輸出參數(shù):無//interruptvoidExtInt2()//中斷2中斷子程序{intj;inttemp1=0;inttemp2=0;*(unsignedint*)IFR=0xFFFF;//清除所有中斷標志,"寫1清0",這個語句能夠省略,響應中斷自動清除中斷標志//讀AD7822的轉換結果in_x[m]=port8002&0x00ff;m++;intnum=m;// if(intnum==Length)//采集到Length個點了嗎?是,進行FFT分析 { intnum=0; xavg=0.0; for(s=0;s<Length;s++) { xavg=in_x[s]+xavg;//歸一化處理 } xavg=xavg/Length; for(s=0;s<Length;s++) { x[s]=1.0*(in_x[s]-xavg);//即求出平均值(直流)后,減去直流 pr[s]=x[s];//輸入實部 pi[s]=0;//輸入虛部,如果虛部不賦值0為任意值 } for(j=0;j<256;j++)//初始化數(shù)組in_x[i]=0 { pi[j]=0; data_re[j]=0; data_im[j]=0; pr[j]=x[j]; } kfft(pr,pi,Length,k,data_re,data_im,0,1);//調用FFT分析程序 for(s=0;s<Length;s++) { mo[s]=sqrt(data_re[s]*data_re[s]+data_im[s]*data_im[s]);}//求輸出模值 temp1=mo[2];temp2=mo[50];for(j=3;j<40;j++){if(mo[j]>=temp1){temp1=mo[j];x1=j;}}//最大值,低頻for(j=40;j<128;j++){if(mo[j]>=temp2){temp2=mo[j];x2=j;}}//最大值,高頻 f1=x1*250.0/256.0;//低頻頻率,250為采樣頻率 f2=x2*250.0/256.0;//高頻頻率 fhz=(f1+f2)/500.0;//濾波器截止頻率,fhz=(f1+f2)/2/250 firdes(fhz);//調用fir函數(shù) for(j=0;j<256;j++)//初始化數(shù)組 { data_buffim[j]=0; data_re[j]=0; data_im[j]=0; data_out[j]=0; data_temp[j]=in_x[j]; }Convolveok(data_temp,h,data_out,256,51);//調用卷積函數(shù),輸出結果保存在data_out for(j=0;j<256;j++)//初始化數(shù)組 { data_buffim[j]=0; data_re[j]=0; data_im[j]=0; data_out1[j]=data_out[j]; } kfft(data_out1,data_buffim,256,8,data_re,data_im,0,1);for(s=0;s<Length;s++) { mo2[s]=sqrt(data_re[s]*data_re[s]+data_im[s]*data_im[s]);}//求輸出模值 data_buff1[5]=num[0];a=(int)(f1*10.0)/100;data_buff1[6]=num[a];b=(int)(f1*10.0)%100/10;data_buff1[7]=num[b];data_buff1[8]=num[10];c=(int)(f1*10.0)%10;data_buff1[9]=num[c];//SendCMD(0x0080);//設定DDRAM的地址在第一行82Hdelay_100us();for(i=0;i<10;i++){SendDat(data_buff1[i]);delay_100us();asm("nop");}asm("nop");d=(int)(f2)/100;data_buff2[5]=num[d];a=(int)(f2)%100/10;data_buff2[6]=num[a];b=(int)(f2)%10;data_buff2[7]=num[b];data_buff2[8]=num[10];c=(int)(f2*10.0)%10;data_buff2[9]=num[c];//SendCMD(0x0090);//設定DDRAM的地址在第二行92Hdelay_100us();for(i=0;i<10;i++){SendDat(data_buff2[i]);delay_100us();}asm("nop");fhz=(f1+f2)/2;d=(int)(fhz)/100;data_buff3[5]=num[d];a=(int)(fhz)%100/10;data_buff3[6]=num[a];b=(int)(fhz)%10;data_buff3[7]=num[b];data_buff3[8]=num[10];c=(int)(fhz*10.0)%10;data_buff3[9]=num[c];//SendCMD(0x0088);//設定DDRAM的地址在第三行8AHdelay_100us();for(i=0;i<10;i++){SendDat(data_buff3[i]);delay_100us();}asm("nop");//SendCMD(0x0098);//設定DDRAM的地址在第四行9AHdelay_100us();for(i=0;i<16;i++){SendDat(data_buff4[i]);delay_100us();}asm("nop");/*SendCMD(0x0080);//設定DDRAM的地址在第一行82Hdelay_100us();SendDat(data_buff1[1]);delay_100us();*/////delay_100us();Delay(500);//delay_100us();SendCMD(CLEAR);//清除顯示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論