先看基礎(chǔ)部分第一問(wèn),首先經(jīng)過(guò)測(cè)試,我的共射放大電路的放大倍數(shù)是280左右(分立元件每個(gè)人都不一樣),選擇放大倍數(shù)越小的三極管越好做(1)中有作解釋。
基礎(chǔ)部分硬件
輸入電阻
DDS輸出的正弦波幅值為1.1v,經(jīng)過(guò)分壓后,串聯(lián)一個(gè)電阻,根據(jù)公式計(jì)算即可得出。電路圖如下:
? ? ? ? 上面那一路是分壓十分之一,底下是百分之一,先說(shuō)上面的作用,可以看到,上面是DDS接跟隨后,經(jīng)過(guò)隔直,再經(jīng)過(guò)跟隨后串聯(lián)電阻,因?yàn)轭}目要求做的是輸入電阻1K-50K,范圍跨度比較大,所以在輸入電阻比較大時(shí)串聯(lián)大電阻,比較小時(shí)串聯(lián)小電阻。
因?yàn)樵趯?shí)際過(guò)程中,AD對(duì)波形峰值判斷不準(zhǔn)(我也不懂為什么,我的學(xué)長(zhǎng)也是同樣的情況),加了算法以后效果不是特別理想,所以采用AD637峰值檢波模塊,這里介紹一下AD637,也算是記錄一下這個(gè)芯片性能,以免忘掉。
AD637?是一款完整的高精度、單芯片均方根直流轉(zhuǎn)換器,可計(jì)算任何復(fù)雜波形的真均方根值。它提供集成電路均方根直流轉(zhuǎn)換器前所未有的性能,精度、帶寬和動(dòng)態(tài)范圍與分立和模塊式設(shè)計(jì)相當(dāng)。AD637 提供波峰因數(shù)補(bǔ)償方案,允許以最高為 10 的波峰因數(shù)測(cè)量信號(hào),額外誤差小于 1%。寬帶寬允許測(cè)量 200 mV 均方根、頻率最高達(dá) 600 kHz 的輸入信號(hào)以及 1V 均方根以上、頻率最高達(dá) 8 MHz 的輸入信號(hào)。
中文資料網(wǎng)上都有,這里就不啰嗦了
原理圖
當(dāng)±5V供電時(shí),輸入有效值電壓范圍:0 ~ 3 V,當(dāng)±15V供電時(shí),輸入有效值電壓范圍:0 ~ 6 V
所以直接將檢出來(lái)的值接給AD,誤差非常小并且非常穩(wěn)定。
輸出電阻與輸入電阻非常類似,就不再詳細(xì)展開說(shuō)明了。
放大倍數(shù)
放大倍數(shù)是輸入放大電路的Ui和帶載的Uo,不可以直接拿DDS輸出或者分壓的輸出算,必須是進(jìn)入放大電路的Ui,直接用32AD兩個(gè)通道采集峰值檢波的值就一除就可以了。
幅頻特性曲線
幅頻特性曲線(1)中說(shuō)過(guò),要保證DDS在變頻時(shí),幅值變化不大,不然需要重新采集輸入,會(huì)消耗時(shí)間,題目是有時(shí)間規(guī)定的,超時(shí)扣分。
(1)中提到過(guò),可以用示波器或者掃頻儀先測(cè)量出0.707倍時(shí)對(duì)應(yīng)的頻率,方便代碼編寫DDS輸出頻率
經(jīng)測(cè)量我手頭9850在100HZ-20M幅值都是1.1V,故不需要采集輸入,因?yàn)檩斎攵斯潭ú蛔儭y(cè)量后上下限頻率分別是260HZ到十幾MHZ,用DDS變一次頻率就算一次放大倍數(shù),最后將其顯示在stm32lcd屏幕上。
需要注意的是:
一在放大倍數(shù)有變化的端可以多采集一些點(diǎn),在中間放大倍數(shù)很固定的點(diǎn)可以少采集一點(diǎn),這樣曲線就會(huì)很平滑,不會(huì)像一次函數(shù)一樣非常直。
二電阻分壓噪聲還是有些大,用運(yùn)放會(huì)好一點(diǎn)。
基礎(chǔ)部分硬件到這里就結(jié)束了,基礎(chǔ)分是很好拿的,幾乎沒(méi)有難度很流暢。
代碼
?#include "adc.h"
?#include "delay.h"
?#include "stdio.h"
?#include "math.h"
?#include "lcd.h"
?#include "led.h"
?#include "ad9850.h"
u8?? ?Res_select=0;?? ? ??
u32?? ?large_Res=20000;
u32?? ?little_Res=3000;?? ?
u32?? ?ui1=55; ? //DDS_OUT直接用萬(wàn)用表測(cè)量解寫入代碼(單位:mv)
//DDS輸出1.1v ?經(jīng)過(guò)分壓后值是可知的不需要用ad或者峰值檢波測(cè)量
//但為了誤差小數(shù)據(jù)精確 ?用臺(tái)式萬(wàn)用表測(cè)量寫入代碼
//初始化ADC
//這里我們僅以規(guī)則通道為例
//我們默認(rèn)將開啟通道0~3?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? ??
void ?Adc1_Init(void)
{ ?? ?
?? ?ADC_InitTypeDef ADC_InitStructure;?
?? ?GPIO_InitTypeDef GPIO_InitStructure;
?? ?RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1?? ?, ENABLE );?? ? ?//使能ADC1通道時(shí)鐘
?
?? ?RCC_ADCCLKConfig(RCC_PCLK2_Div6); ? //設(shè)置ADC分頻因子6 72M/6=12,ADC最大時(shí)間不能超過(guò)14M
?? ?//PA1 作為模擬通道輸入引腳 ? ? ? ? ? ? ? ? ? ? ? ??
?? ?GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_3;
?? ?GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;?? ??? ?//模擬輸入引腳
?? ?GPIO_Init(GPIOC, &GPIO_InitStructure);?? ?
?? ?
?? ?GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
?? ?GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;?? ??? ?//模擬輸入引腳
?? ?GPIO_Init(GPIOA, &GPIO_InitStructure);?? ?
?? ?ADC_DeInit(ADC1); ?//復(fù)位ADC1,將外設(shè) ADC1 的全部寄存器重設(shè)為缺省值
?? ?ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;?? ?//ADC工作模式:ADC1和ADC2工作在獨(dú)立模式
?? ?ADC_InitStructure.ADC_ScanConvMode = DISABLE;?? ?//模數(shù)轉(zhuǎn)換工作在單通道模式
?? ?ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;?? ?//模數(shù)轉(zhuǎn)換工作在單次轉(zhuǎn)換模式
?? ?ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;?? ?//轉(zhuǎn)換由軟件而不是外部觸發(fā)啟動(dòng)
?? ?ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;?? ?//ADC數(shù)據(jù)右對(duì)齊
?? ?ADC_InitStructure.ADC_NbrOfChannel = 3;?? ?//順序進(jìn)行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目
?? ?ADC_Init(ADC1, &ADC_InitStructure);?? ?//根據(jù)ADC_InitStruct中指定的參數(shù)初始化外設(shè)ADCx的寄存器 ??
?? ?//設(shè)置指定ADC的規(guī)則組通道,一個(gè)序列,采樣時(shí)間
?? ?//ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_239Cycles5 );?? ?//ADC1,ADC通道,采樣時(shí)間為239.5周期?? ??
?? ?//ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 2, ADC_SampleTime_239Cycles5 );?? ?//ADC1,ADC通道,采樣時(shí)間為239.5周期?? ??
?? ?//ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 3, ADC_SampleTime_239Cycles5 );?? ?//ADC1,ADC通道,采樣時(shí)間為239.5周期?? ??
?? ?ADC_Cmd(ADC1, ENABLE);?? ?//使能指定的ADC1
?? ?
?? ?ADC_ResetCalibration(ADC1);?? ?//使能復(fù)位校準(zhǔn) ?
?? ??
?? ?while(ADC_GetResetCalibrationStatus(ADC1));?? ?//等待復(fù)位校準(zhǔn)結(jié)束
?? ?
?? ?ADC_StartCalibration(ADC1);?? ? //開啟AD校準(zhǔn)
?
?? ?while(ADC_GetCalibrationStatus(ADC1));?? ? //等待校準(zhǔn)結(jié)束
?? ?
?? ?
?? ?
//?? ?ADC_SoftwareStartConvCmd(ADC1, ENABLE);?? ??? ?//使能指定的ADC1的軟件轉(zhuǎn)換啟動(dòng)功能
}?? ??? ??? ??? ? ?
//獲得ADC值
//ch:通道值 0~3
u16 Get_Adc1(u8 ch) ??
{
// ??? ?//設(shè)置指定ADC的規(guī)則組通道,一個(gè)序列,采樣時(shí)間
?? ?ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );?? ?//ADC1,ADC通道,采樣時(shí)間為239.5周期?? ? ??? ??? ??? ? ? ?
??
?? ?ADC_SoftwareStartConvCmd(ADC1, ENABLE);?? ??? ?//使能指定的ADC1的軟件轉(zhuǎn)換啟動(dòng)功能?? ?
?? ??
?? ?while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待轉(zhuǎn)換結(jié)束
?? ?return ADC_GetConversionValue(ADC1);?? ?//返回最近一次ADC1規(guī)則組的轉(zhuǎn)換結(jié)果
}
u16 Get_Adc_Average1(u8 ch,u8 times)
{
?? ?u32 temp_val=0;
?? ?u8 t;
?? ?for(t=0;t<times;t++)
?? ?{
?? ??? ?temp_val+=Get_Adc1(ch);
?? ??? ?delay_ms(5);
?? ?}
?? ?return temp_val/times;
} ?? ??
/*
//可以采用此函數(shù)計(jì)算波形峰值 ? 但ad采不準(zhǔn)?? ?故我采用的方案為峰值檢波
//用ad直接采集峰值檢波口的波形幅值比較精確
#define N 50
u16 filter(u8 ch,u8 times) ?
{
?? ?char count,i,j;
?? ?u32 Value_buf[N];
?? ?u32 temp;
?? ?u32 sum=0;
?? ?for(count=0;count<N;count++)
?? ??? ?Value_buf[count]= 0;
?? ?for(count=0;count<N;count++)
?? ??? ?Value_buf[count]= Get_Adc1(ch);
?? ?for(j=0;j<(N-1);j++)
?? ??? ?for(i=0;i<(N-j);i++)
?? ??? ??? ?if(Value_buf[i]>Value_buf[i+1])
?? ??? ??? ?{
?? ??? ??? ??? ? temp = Value_buf[i];
?? ??? ??? ??? ? Value_buf[i]= Value_buf[i+1];
?? ??? ??? ??? ? ?Value_buf[i+1]=temp;
?? ??? ??? ?}
?? ??? ??? ?for(count =1;count<N-1;count++)
?? ??? ??? ??? ?sum += Value_buf[count];
?? ??? ??? ?return (u16)(sum/(N-2));
}
void?? ?adc_ch_data(u8 Channel)
{
?? ?u32?? ?adcx[128];
?? ?u16 i;
?? ?for(i=0;i<128;i++)
?? ?{
?? ??? ?adcx[i] = Get_Adc_Average1(Channel,10);?? ? // 檢測(cè)通道1的電壓
?? ??? ?printf("%d\r\n",adcx[i]);
?? ?}
}
*/
void?? ?get_resin(void)
{
?? ?float?? ?res_in=0;
?? ?float?? ?adc_ch10=0;
?? ?
?? ?
?? ?float?? ?adc_ch10_v=0;
?? ?jidianqi7=0;
?? ?delay_ms(200);
?? ?adc_ch10 = Get_Adc_Average1(ADC_Channel_10,10);?? ? ? //采集通道1 的adc數(shù)值
?? ?
?? ?
?? ?
?? ?//Y1=0.6715X-1.2403
?? ?//adc_ch10_v=((((adc_ch10+1.2403)/0.6715)*2)/80);
?? ?adc_ch10_v=((((adc_ch10+1.2403)/0.6715)*2)/110);?? ?
?? ??? ??? ?//將其轉(zhuǎn)換為電壓
?? ?//將其反算回去以后乘2的目的是使用峰峰值
?? ?//除100的目的是 ? 因?yàn)檫@個(gè)值比較小 實(shí)際測(cè)量中只有4mv
?? ?//所以我在4mv輸出后加了一級(jí)放大倍數(shù)為80倍的同相比例放大
?? ?//故要在代碼中除100 ?? ?若不加放大則不需要除這100
?? ?//不加放大測(cè)量結(jié)果正確?? ?但是因?yàn)榉当容^小 采集不穩(wěn)定 ?值跳變的厲害 ?但有正確的結(jié)果
?? ?
?? ?
?? ?delay_ms(200);
?? ?
?? ?if(Res_select==1)
?? ?{
?? ??? ?res_in=(adc_ch10_v*large_Res)/(ui1-adc_ch10_v);
?? ?//輸入電阻計(jì)算公式: ?? ?(Ui2*R)/(Ui1-Ui2)
?? ??? ?
?? ?}
?? ?else
?? ?{
?? ??? ?res_in=(adc_ch10_v*little_Res)/(ui1-adc_ch10_v);?? ?
?? ?}
?? ?printf("%f\r\n",res_in);
?? ?//res_in=res_in/1000;
?? ?LCD_ShowxNum(100,0, res_in,5,24,0);//顯示ADC的值
?? ?LCD_ShowxNum(100,120, adc_ch10_v,5,24,0);//顯示ADC的值
?? ?//printf("%f\r\n",res_in);
}
void?? ?get_resout(void)
{?? ?
?? ?
?? ?float?? ?res_out=0;
?? ?float?? ?adc_ch11=0;
?? ?float?? ?adc_ch11_1=0;
?? ?float?? ?adc_ch11_v1=0;
?? ?float?? ?adc_ch11_v2=0;
?? ?jidianqi6=1; ? ? ?//空載
?? ?//Y1=0.6715X-1.2403
?? ?adc_ch11 = Get_Adc_Average1(ADC_Channel_12,10);?? ? ? //采集通道11 的adc數(shù)值
?? ?//adc_ch11_v1=(((adc_ch11+1.2403)/0.6715)*2)+1.1;?? ?//將其轉(zhuǎn)換為電壓
?? ?
?? ?//adc_ch11_v1=adc_ch11*3.3/4096;
?? ?
?? ?//jidianqi閉合 ?低電平
?? ?jidianqi6=0;?? ??? ?//帶載
?? ?LCD_ShowxNum(100,150, adc_ch11_v1,5,24,0);//顯示ADC的值
?? ?
?? ?delay_ms(500);
?? ?adc_ch11_1 = Get_Adc_Average1(ADC_Channel_12,10);?? ? ? //采集通道11 的adc數(shù)值
?? ?//adc_ch11_v2=adc_ch11_1*3.3/4096;
?? ?
?? ?//adc_ch11_v2=(((adc_ch11_1+1.2403)/0.6715)*2);
?? ?//輸出電阻測(cè)量?? ??? ?Ro=(Uo1-Uo2)*R/Uo2?? ?R:帶載阻值?? ?
?? ?
?? ?LCD_ShowxNum(100,180, adc_ch11_v2,5,24,0);//顯示ADC的值
?? ?
?? ?//res_out=((adc_ch11_v1-adc_ch11_v2)*2000)/adc_ch11_v2;
?? ?res_out=((adc_ch11-adc_ch11_1)*2000)/adc_ch11_1;
?? ?//res_out=((adc_ch11-adc_ch11_1)*2000)/adc_ch11_1;
?? ?
?? ?delay_ms(2);
?? ?//res_out=res_out/1000;
?? ?//printf("%f\r\n",res_out);
?? ?LCD_ShowxNum(100,30, res_out,5,24,0);//顯示ADC的值
}
void ?? ?get_Au(void)//增益
{
?? ?
?? ?u16?? ?Au=0;
?? ?float?? ?Uo=0;//經(jīng)過(guò)放大電路以后并未通過(guò)繼電器的波形峰值
?? ?//輸出的波形峰值需要將直流量減掉?? ?再進(jìn)行峰值檢波
?? ?float?? ?Ui_v=0;
?? ?float?? ?Uo_v=0;
?? ?float?? ?Ui=0;//輸入放大電路的波形峰值
?? ?Ui= Get_Adc_Average1(ADC_Channel_10,10);
?? ?Ui_v=((((Ui+1.2403)/0.6715)*2)/100);?? ?
?? ?delay_ms(200);
?? ?Uo= Get_Adc_Average1(ADC_Channel_12,10);
?? ?
?? ?Uo_v=(((Uo+0.12)*4)-6.35)*2;
?? ?//Uo_v=(((Uo+1.2403)/0.6715)*2);?? ?
?? ?delay_ms(10);
?? ?Au=Uo_v/Ui_v;
?? ?//printf("%d\r\n",Au);
?? ?LCD_ShowxNum(100,60, Au,5,24,0);//顯示ADC的值
?? ?
}
輸入電阻、輸出電阻、放大倍數(shù)都封裝成了函數(shù),在主函數(shù)中直接調(diào)就可以了。
幅頻特性曲線坐標(biāo)顯示:
void zuobiao(void)
{
?? ??? ?POINT_COLOR = RED;
? ? ? ? LCD_Display_Dir(0);
? ? ? ? LCD_ShowString(30,0,210,24,24,"Ri = ? ? ? ?");?
?? ??? ?LCD_ShowString(30,30,210,24,24,"R0 = ? ? ? ");
//?? ??? ?LCD_ShowString(30,60,210,24,24,"fL = "); ? ? ??? ??? ??? ??? ??? ??
//?? ??? ?LCD_ShowString(30,90,210,24,24,"fH = ");
? ? ?? ?LCD_ShowString(30,60,210,24,24,"Au = ");
? ? ? ? LCD_DrawLine(0,305,240,305); ? ? ? ?
? ? ? ? LCD_DrawLine(15,140,15,320); ?//x軸y軸
? ??
? ? ? ? LCD_DrawLine(240,305,230,315); ??
? ? ? ? LCD_DrawLine(240,305,230,295); //箭頭
? ??
? ? ? ? LCD_DrawLine(15,140,5,150); ? ?
? ? ? ? LCD_DrawLine(15,140,25,150); ? //箭頭
? ? ?
? ? ? ? LCD_DrawLine(40,305,40,300);
? ? ? ? LCD_DrawLine(65,305,65,300);
? ? ? ? LCD_DrawLine(90,305,90,300);
? ? ? ? LCD_DrawLine(115,305,115,300); ? ?
? ? ? ? LCD_DrawLine(140,305,140,300); ? ?
? ? ? ? LCD_DrawLine(165,305,165,300); ? ?
? ? ? ? LCD_DrawLine(195,305,195,300);
? ? ? ??
? ? ? ? LCD_DrawLine(15,275,20,275);
? ? ? ? LCD_DrawLine(15,245,20,245);
? ? ? ? LCD_DrawLine(15,215,20,215);
? ? ? ? LCD_DrawLine(15,185,20,185); ? ?
? ? ? ??
? ? ? ? LCD_ShowString(220,307,200,12,12,"Hz");?
? ? ? ? LCD_ShowString(20,307,200,12,12,"100");
? ? ? ? LCD_ShowString(40,307,200,12,12,"200");
? ? ? ? LCD_ShowString(60,307,200,12,12,"1K");
? ? ? ? LCD_ShowString(80,307,200,12,12,"1.5K");
? ? ? ? LCD_ShowString(100,307,200,12,12,"10K");
? ? ? ? LCD_ShowString(120,307,200,12,12,"50K");
? ? ? ? LCD_ShowString(140,307,200,12,12,"100K");
?? ??? ?LCD_ShowString(160,307,200,12,12,"150K");
?? ??? ?LCD_ShowString(180,307,200,12,12,"170K");
? ? ? ? LCD_ShowString(2,270,200,12,12,"80");
? ? ? ? LCD_ShowString(2,240,200,12,12,"10O");
? ? ? ? LCD_ShowString(2,210,200,12,12,"12O");
? ? ? ? LCD_ShowString(2,180,200,12,12,"14O");
? ? ? ? LCD_ShowString(7,307,200,12,12,"O"); ? ? ? ??
? ? ? ? LCD_Display_Dir(1);
? ? ? ? LCD_ShowString(145,0,200,12,12,"Gain");?
? ? ? ? LCD_Display_Dir(0);
}
幅頻特性曲線的顯示:
//因?yàn)槲沂诸^的AD9850在變頻率的時(shí)候不會(huì)變幅值
//9854在變頻率的時(shí)候會(huì)改變幅值
//測(cè)量幅頻特性曲線的時(shí)候 需要測(cè)量增益 若是DDS輸出不變則不需要每次變頻率采輸入幅值
//同理若是變頻率掃頻時(shí) 幅值會(huì)變 則每變一次頻率就應(yīng)該采集一次輸入 代碼工作量比較大
//幅頻特性曲線顯示
float?? ?signal[11]={100,200,500,1000,10000,50000,100000,150000,170000};//DDS輸出頻率
void boxin(void)?? ?
{
?? ?u32?? ?Ui1=55; ? //DDS_OUT直接用萬(wàn)用表測(cè)量解寫入代碼(單位:mv)
//DDS輸出1.1v ?經(jīng)過(guò)分壓后值是可知的不需要用ad或者峰值檢波測(cè)量
//但為了誤差小數(shù)據(jù)精確 ?用臺(tái)式萬(wàn)用表測(cè)量寫入代碼
? ? u8 Au[9]={0,0,0,0,0,0,0,0,0};
?? ?u8 i;
???
?? ?float?? ?adc_ch11_1=0;
?? ?float?? ?adc_ch11_v2=0;
?? ?for(i=0;i<11;i++)
?? ?{
?? ??? ?ad9850_wr_serial(0x00,(double)signal[i]);//DDS輸出信號(hào)
?? ??? ?adc_ch11_1 = Get_Adc_Average1(ADC_Channel_12,10);?? ? ? //采集通道11 的adc數(shù)值
?? ??? ?adc_ch11_v2=(((adc_ch11_1+1.2403)/0.6715)*2)+1.1;?? ??? ??? ?//將其轉(zhuǎn)換為電壓
?? ??? ?Au[i]=adc_ch11_v2/Ui1;
?? ?}? ? ??
//?? ?for(i=0;i<8;i++)
//?? ?{
//?? ??? ? au[i]=Au[i];
//?? ?}
//?? ?au[5]=au[4]-30;
//?? ?au[6]=au[4]-60;
//?? ?au[7]=au[4]-100;
? ? ? ?
? ? ? ? LCD_DrawPoint(20,305-Au[0]/20*30);
? ? ? ? LCD_DrawPoint(40,305-Au[1]/20*30);
? ? ? ? LCD_DrawPoint(60,305-Au[2]/20*30);
? ? ? ? LCD_DrawPoint(80,305-Au[3]/20*30); ? ?
? ? ? ? LCD_DrawPoint(100,305-Au[4]/20*30); ? ?
? ? ? ? LCD_DrawPoint(120,305-Au[5]/20*30); ? ?
? ? ? ? LCD_DrawPoint(140,305-Au[6]/20*30);
?? ??? ?LCD_DrawPoint(160,305-Au[7]/20*30); ? ?
? ? ? ? LCD_DrawPoint(180,305-Au[8]/20*30);文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-621103.html
? ? LCD_DrawLine(20,305-Au[0]/20*30,40,305-Au[1]/20*30);
? ? LCD_DrawLine(40,305-Au[1]/20*30,60,305-Au[2]/20*30);
? ? LCD_DrawLine(60,305-Au[2]/20*30,80,305-Au[3]/20*30);
? ? LCD_DrawLine(80,305-Au[3]/20*30,100,305-Au[4]/20*30);
?? ?LCD_DrawLine(100,305-Au[4]/20*30,120,305-Au[5]/20*30);
? ? LCD_DrawLine(120,305-Au[5]/20*30,140,305-Au[6]/20*30);
?? ?LCD_DrawLine(140,305-Au[6]/20*30,160,305-Au[7]/20*30);
?? ?LCD_DrawLine(160,305-Au[7]/20*30,180,305-Au[8]/20*30);? ?
// ? ?LCD_DrawLine(65,305-Au[1]*t,70,305-Au[1]*t+k2*5-4);
// ? ?LCD_DrawLine(70,305-Au[1]*t+k2*5-4,75,305-Au[1]*t+k2*10-5);
// ? ?LCD_DrawLine(75,305-Au[1]*t-5+k2*10,80,305-Au[1]*t+k2*15-4);
// ? ?LCD_DrawLine(80,305-Au[1]*t-4+k2*15,85,305-Au[1]*t+k2*20-3);
// ? ?LCD_DrawLine(85,305-Au[1]*t-3+k2*20,90,305-Au[2]*t);
?
// ? ?LCD_DrawLine(40,305-Au[0]*t,65,305-Au[1]*t);
// ? ?LCD_DrawLine(65,305-Au[1]*t,90,305-Au[2]*t);
// ? ?LCD_DrawLine(90,305-Au[2]*t,115,305-Au[3]*t);
// ? ?LCD_DrawLine(115,305-Au[3]*t,140,305-Au[4]*t);
// ? ?LCD_DrawLine(140,305-Au[4]*t,148,305-Au[5]*t);
// ? ?LCD_DrawLine(148,305-Au[5]*t,156,305-Au[6]*t);
//?? ?LCD_DrawLine(156,305-Au[6]*t,165,305-Au[7]*t);
//?? ?LCD_DrawLine(165,305-Au[7]*t,195,305-Au[8]*t);
}
上面就是基礎(chǔ)部分的全部了,都是已經(jīng)測(cè)試完畢了的,沒(méi)有問(wèn)題。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-621103.html
到了這里,關(guān)于2019年全國(guó)大學(xué)生電子設(shè)計(jì)大學(xué)(D 題)簡(jiǎn)易電路特性測(cè)試儀(2)基礎(chǔ)部分電路與代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!