全國大學(xué)生電子設(shè)計大賽獲獎?wù)撐腳第1頁
全國大學(xué)生電子設(shè)計大賽獲獎?wù)撐腳第2頁
全國大學(xué)生電子設(shè)計大賽獲獎?wù)撐腳第3頁
全國大學(xué)生電子設(shè)計大賽獲獎?wù)撐腳第4頁
全國大學(xué)生電子設(shè)計大賽獲獎?wù)撐腳第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

計算出振蕩周期,即可得出電容2.6三極管放大倍數(shù)β測量電路如圖7所示,是三極管放大倍數(shù)β測量電路原理圖?!癟est1”為測試NPN型三極管,通過測量電壓Ue,根據(jù)公式Ie=UeR1,Ie=Ie-Ib,β=IcIb,,由單片機處理后,計算出β值,由LCD1602輸出測量結(jié)果。“2.7正弦波信號源電路如圖8所示,是正弦波信號源電路原理圖。正弦信號由專用芯片AD9850設(shè)計制作,可由單片機控制輸出頻率連續(xù)可調(diào)的正弦波及方波,后接集成運放芯片,降低輸出電阻,提高帶負(fù)載能力,并控制輸出峰峰值調(diào)節(jié)范圍。AD9850內(nèi)含可編程DDS系統(tǒng)和高速比較器。系統(tǒng)核心是相位累加器,它由一個加法器和一個N位寄存器組成。每來一個外部參考時鐘,相位寄存器便以步長M增加。相位寄存器沒過2N/M個外部參考時鐘后,返回到初始狀態(tài)一次,從而是整個DDS系統(tǒng)輸出一個正弦波。輸出正弦波周期T0=Tc2N/M,頻率fout=Mfc/2N。圖8正弦波信號源電路原理圖圖9AD采樣模塊電路圖2.8AD采樣模塊如圖9所示,是AD采樣模塊電路圖。為了進一步減小測量誤差,采用16位AD7705轉(zhuǎn)換器,實現(xiàn)了高精度測量。3系統(tǒng)軟件設(shè)計3.1主程序流程圖系統(tǒng)軟件采用C語言編程。如圖10所示,是主程序流程圖。圖10主程序流程框圖圖11系統(tǒng)自動休眠框圖3.2系統(tǒng)自動休眠設(shè)計如圖11所示,是系統(tǒng)自動休眠框圖。定時由單片機定時器完成,當(dāng)1分鐘沒有按鍵按下時,則自動進入休眠,此時按任意鍵則有單片機中斷喚醒,進入休眠期前狀態(tài)。4.測試方案和測試結(jié)果分析4.1直流電壓測量方法和測試結(jié)果1.測量儀器:(1)直流穩(wěn)壓電源:型號為MPS-3003L-3;(2)4位半數(shù)字萬用表:型號為MS80502.測量方法:用直流穩(wěn)壓電源輸入直流電壓,用4位半數(shù)字萬用表測量輸出電壓。二者比較,求出誤差。3.測試結(jié)果:測量數(shù)據(jù)如表1所示。表1直流電壓測量數(shù)據(jù)標(biāo)準(zhǔn)電壓Ui(V)0.0500.1000.1500.3001.0001.5003.000實測電壓Uo(V)0.0500.1000.1490.2091.0041.5063.00誤差δ(%)000.60.30.40.404.2交流電壓測量方法和測試結(jié)果1.測量儀器:(1)函數(shù)信號發(fā)生器:型號為F20;(2)數(shù)字示波器:型號為DS5152CA。2.測量方法:用函數(shù)信號發(fā)生器輸入交流電壓,用數(shù)字示波器測量輸出電壓,觀察波形,并讀取數(shù)值。二者比較,求出誤差。3.測試結(jié)果:測量數(shù)據(jù)如表2所示。表2交流電壓測試數(shù)據(jù)標(biāo)準(zhǔn)電壓ui(V)0.0500.1000.1500.3001.0001.5003.000標(biāo)準(zhǔn)頻率fi(Hz)501503005015030050實測電壓uo(V)0.0500.1000.1510.2081.0071.5093.01誤差δ(%)000.60.70.70.60.34.3電阻測量方法和測試結(jié)果1.測量儀器:RLC數(shù)字電橋:型號為YD2817B.2.測量方法:將電阻插到對應(yīng)測量插孔,讀取數(shù)值。再用RLC數(shù)字電橋的電阻檔,測量電阻,并記錄數(shù)值。二者比較,求出誤差。3.測試結(jié)果:測量數(shù)據(jù)如表3所示。表3電阻測量數(shù)據(jù)標(biāo)準(zhǔn)R10Ω100Ω150Ω0.51kΩ1kΩ1.5kΩ5.1kΩ實測R10.03Ω100.2Ω149.7Ω0.512kΩ1.003kΩ1.505kΩ5.10kΩ誤差δ(%)0.30.20.20.40.30.404.4電容測量方法和測試結(jié)果1.測量儀器:RLC數(shù)字電橋:型號為YD2817B。2.測量方法:將電容插到對應(yīng)測量插孔,讀取數(shù)值。再用RLC數(shù)字電橋的電容檔,測量電容,并記錄數(shù)值。二者比較,求出誤差。3.測試結(jié)果:測量數(shù)據(jù)如表4所示。表4電容測量數(shù)據(jù)標(biāo)準(zhǔn)C10nF33nF100nF0.1uF10uF47uF實測C10.21nF33.5nF100.2nF0.102uF10.03uF47.5uF誤差δ(%)2.11.52.02.03.01.04.5三極管放大倍數(shù)β測量方法和測試結(jié)果1.測量儀器:數(shù)字萬用表:型號為VC9808+。2.測量方法:分別將NPN型或PNP型三極管,插入E、B、C對應(yīng)的插孔,讀取β值。再用數(shù)字萬用表的hFE檔,分別將NPN型或PNP型三極管,插入數(shù)字萬用表E、B、C對應(yīng)的插孔,讀取數(shù)值。二者比較,求出誤差。3.測試結(jié)果:測量數(shù)據(jù)如表5所示。表5三極管放大倍數(shù)β測量數(shù)據(jù)三極管型號9013(NPN)8050(NPN)9012(PNP)8550(PNP)標(biāo)準(zhǔn)β(倍數(shù))380.2230.1140.1330.1實測β(倍數(shù))383228141333誤差δ(%)0.40.90.60.94.6正弦波信號源測量方法和測試結(jié)果1.測量儀器:數(shù)字示波器:型號為DS5152CA。2.測量方法:用數(shù)字示波器測量輸出電壓,觀察波形,并讀取數(shù)值。3.測試結(jié)果:測量數(shù)據(jù)如表6所示。表6正弦波信號源測試數(shù)據(jù)輸出電壓uo100.0mv300.0mv800.0mv1.500v3.000v4.500v5.300v頻率fi100kHz50kHz10kHz2kHz500Hz100Hz10Hz實測電壓uo99.0mv298mv796mv1.49v2.96v4.48v5.26v實測頻率fo100kHz50kHz10kHz2kHz500Hz100Hz10Hz誤差δ(%)1.000.670.500.671.330.440.754.7晶體管PN結(jié)電壓測量方法和測試結(jié)果1.測量儀器:數(shù)字萬用表:型號為VC9808+。2.測量方法:將二極管(或三極管),插入PN結(jié)測試插孔,讀取PN結(jié)電壓數(shù)值。再用數(shù)字萬用表的二極管檔,測量晶體管的PN結(jié)電壓,紅表筆接晶體管的P,黑表筆接晶體管的N。二極管、三極管都可以測PN結(jié)電壓。3.測試結(jié)果:測量數(shù)據(jù)如表7所示。表7晶體管的PN結(jié)電壓測量數(shù)據(jù)Ube(三極管、二極管型號)Ube(9014)Ube(8050)Ube(9013)Ueb(8550)1N4001LED高亮LED標(biāo)準(zhǔn)PN結(jié)電壓(v)0.6710.6720.6690.6710.5721.842.32實測PN結(jié)電壓(v)0.6780.6780.6640.6750.5681.832.32誤差δ(%)1.040.890.740.590.700.5405自由發(fā)揮部分自由發(fā)揮增加了2個測量功能,分別是:測晶體管PN結(jié)電壓和環(huán)境溫度。5.1測晶體管PN結(jié)電壓電路如圖12所示,測晶體管PN結(jié)電壓電路。圖12測PN結(jié)電壓原理圖圖13測溫度原理圖5.2溫度測量電路圖13是測溫度原理圖。因晶體管的PN結(jié)電壓隨溫度變化,溫度每升高1°C,PN結(jié)的結(jié)壓降下降2mV。這樣測量PN結(jié)的結(jié)壓更精確。如圖12所示,是溫度溫度測量電路原理圖。采用DS18B20實現(xiàn),測量范圍-25℃~125℃,將測量結(jié)果通過LCD1602顯示。用溫度計測量環(huán)境溫度,并讀取數(shù)值。6結(jié)論本設(shè)計按照題目要求完成了基本部分和發(fā)揮部分的全部功能,并自由發(fā)揮增加了晶體管PN結(jié)電壓測量和溫度測量的功能。本多功能表具有較高的測量精度,再加后期研發(fā)完善,可推廣作為數(shù)字萬用表使用。參考文獻(xiàn)[1]譚博學(xué),苗匯靜.集成電路原理及應(yīng)用(第2版)[M].北京:電子工業(yè)出版社,2008.[2]姜志海,趙艷蕾.單片機C語言程序設(shè)計[M].北京:電子工業(yè)出版社,2008.[3]段尚樞.運算放大器應(yīng)用基礎(chǔ)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1992.[4]黃智偉.全國電子設(shè)計競賽電路設(shè)計[M].北京:北京航空航天大學(xué)出版社,2006.[5]黃智偉.全國大學(xué)生電子設(shè)計競賽制作實訓(xùn)[M].北京:北京航空航天大學(xué)出版社,2007.[6]AD736.pdf[7]STC15F2k60S2.pdf[8]李朝青.單片機原理及接口技術(shù).北京航空航天大學(xué)出版社,2005.[9]謝自美,電子線路設(shè)計.華中科技大學(xué)出版社,2006.附錄1:系統(tǒng)電路原理總圖附錄2:部分程序清單Main.c:#include<STC12C5A#include<math.H>#include<setjmp.h>#include"mytypedef.h"#include"delay.h"#include"LCD1602.h"#include"keyscan.h"http://#include"sleep.h"#include"ads1232.h"http://#include"dds9850.h"#include"ad7705.h"http://常量定義#defineADDR_ADD6#defineMAIN_SLEEP_OPEN 0#defineCAP_SLEEP_OPEN 0#defineVOL_SLEEP_OPEN 0#defineMAIN_SLEEP 500000#defineCAP_SLEEP 200000#defineVOL_SLEEP 200000#defineln2(0.693147)#defineR1A(0)#defineR2A(198.33)#defineERROR1(22E-9)#defineR1B(0.936E6)#defineR2B(0.981E6)#defineERROR2(12E-12)//測量三級管常量定義#defineTRI_SLEEP_OPEN 0//自動休眠開關(guān)#defineTRI_SLEEP 200000//自動休眠計數(shù)#define Ib_NPN (10E-6)#define Re_NPN (10)#define Ib_PNP (10E-6)#define Rc_PNP (10)sbitLED0=P1^0;sbitsb_power=P3^2;sbitsb_CapFn=P0^4;//字符ASC定義u8codeChooseFnAsc[] ="ChooseFn:";u8codeCapFunctionAsc[] ="CapFn:";u8codeCap100uFAsc[] ="100uF";u8codeCap100nFAsc[] ="100nF";u8codeCapnFAsc[] ="nF";u8codeCappFAsc[] ="pF";u8codeCapuFAsc[] ="uF";u8codeVolFunctionAsc[] ="VolFn:";u8codeVol0_2Asc[] ="0.2V";u8codeVol2Asc[] ="2V";u8codeVol20Asc[] ="20V";u8codeVolmVAsc[] ="mV";u8codeVolVAsc[] ="V";u8codeTriFunctionAsc[] ="TriFn:";u8codeSleepNowAsc[] ="Sleeping";//全局變量定義u16g_uiTimer0;u32 g_u32Sleep=0;bitg_bCountOver;jmp_buf buf;u8 TH1Val=255,TL1Val=245;bitgb_sleepFlag=0;voidSleepNow();voidInitInterrupt(void){ g_uiTimer0=0; g_bCountOver=0;// PCON=0x30; TMOD=0x51; //0定時模式,工作方式1(16位定時),1計數(shù)模式,方式1(16位) ET0=1; //定時器0允許 TH0=0; TL0=0; ET1=1; //定時器1允許 TH1=255; TL1=255;// PT1=1; //定時器1高優(yōu)先級 TR1=1; //開定時器1// EA=1; //開總中斷}voidDisCapVal(u8addr,floatval){ if(val<1E-12)// <1pF { val*=1E12; Dis1602float1_3(addr,val); Dis1602Str(addr+ADDR_ADD,CappFAsc); } elseif((val>=1E-12)&&(val<1E-9))// 1pF--1nF { val*=1E12; if((val>=1)&&(val<10)) { Dis1602float1_3(addr,val); Dis1602Str(addr+ADDR_ADD,CappFAsc); } elseif((val>=10)&&(val<100)) { Dis1602float2_2(addr,val); Dis1602Str(addr+ADDR_ADD,CappFAsc); } elseif((val>=100)&&(val<1000)) { Dis1602float3_1(addr,val); Dis1602Str(addr+ADDR_ADD,CappFAsc); } else{} } elseif((val>=1E-9)&&(val<1E-6))// 1nF--1uF { val*=1E9; if((val>=1)&&(val<10)) { Dis1602float1_3(addr,val); Dis1602Str(addr+ADDR_ADD,CapnFAsc); } elseif((val>=10)&&(val<100)) { Dis1602float2_2(addr,val); Dis1602Str(addr+ADDR_ADD,CapnFAsc); } elseif((val>=100)&&(val<1000)) { Dis1602float3_1(addr,val); Dis1602Str(addr+ADDR_ADD,CapnFAsc); } else{} } elseif((val>=1E-6)&&(val<500E-6)) // 1uF--500uF { val*=1E6; if((val>=1)&&(val<10)) { Dis1602float1_3(addr,val); Dis1602Str(addr+ADDR_ADD,CapuFAsc); } elseif((val>=10)&&(val<100)) { Dis1602float2_2(addr,val); Dis1602Str(addr+ADDR_ADD,CapuFAsc); } elseif((val>=100)&&(val<500)) { Dis1602float3_1(addr,val); Dis1602Str(addr+ADDR_ADD,CapuFAsc); } else{} } else { Dis1602float1_3(addr,val);// Dis1602Str(addr+ADDR_ADD,CapuFAsc); } }voidCapFunction(void){ u8keyVal,range=1; floatfCapValue; floatfT;capBegin: Cle1602DDRAM(); Dis1602Str(LCD00,CapFunctionAsc); Dis1602Str(LCD0b,Cap100nFAsc); InitInterrupt(); sb_CapFn=0; while(1) { //休眠計數(shù),適當(dāng)修改常量CAP_SLEEP //g_u32只在鍵盤掃描函數(shù)中修改 g_u32Sleep++; if(g_u32Sleep>CAP_SLEEP) { g_u32Sleep=0; if(CAP_SLEEP_OPEN) { SleepNow(); } } //判斷休眠標(biāo)志位,若曾經(jīng)休眠過,則進行想關(guān)初始化 if(gb_sleepFlag==1) { gb_sleepFlag=0; LED0=~LED0; gotocapBegin; } //主要功能進行區(qū) keyVal=AloneKeyScan(); if(keyVal==1) { sb_CapFn=1; longjmp(buf,1); } elseif(keyVal==2) { SleepNow(); if(range==0) { range=1; Dis1602Str(LCD0b,Cap100nFAsc); } elseif(range==1) { range=0; Dis1602Str(LCD0b,Cap100uFAsc); } } if((g_bCountOver==1)&&(range==0)) { fT=(g_uiTimer0*65536+TH0*256+TL0+9)*1E-6; fCapValue= ( fT/(11*ln2*(R1A+2*R2A)) );//計算得出的電容值,單位f fCapValue-=ERROR1; if(fCapValue<0) { fCapValue*=(-1); } Dis1602float3_3(LCD19,fT); DisCapVal(LCD10,fCapValue); if((fT<100)&&(fT>=1)) { DelayXMs(200); } elseif(fT<1) { DelayXMs(300); } g_uiTimer0=0; TH0=0; TL0=0; TH1=255; TL1=255; g_bCountOver=0; TR1=1; } elseif((g_bCountOver==1)&&(range==1)) { fT=(g_uiTimer0*65536+TH0*256+TL0+9)*1E-6; fCapValue= ( fT/(11*ln2*(R1B+2*R2B)) );//計算得出的電容值,單位f fCapValue-=ERROR2; if(fCapValue<0) { fCapValue*=(-1); } DisCapVal(LCD10,fCapValue);// Dis1602float4_3(LCD10,fCapValue*1E12); if((fT<100)&&(fT>=1)) { DelayXMs(200); } elseif(fT<1) { DelayXMs(300); } g_uiTimer0=0; TH0=0; TL0=0; TH1=255; TL1=255; g_bCountOver=0; TR1=1; } }}voidDisVolVal(u8addr,floatval){ Dis1602float2_3(addr,val); Dis1602Str(addr+ADDR_ADD,VolVAsc); }voidVolFunction(void){ u8keyVal,range=0;//0:0.21:22:20 u16u16_ad1;volBegin: Cle1602DDRAM(); Dis1602Str(LCD00,VolFunctionAsc); Dis1602Str(LCD0b,Vol0_2Asc); while(1) { //休眠計數(shù),適當(dāng)修改常量VOL_SLEEP //g_u32只在鍵盤掃描函數(shù)中修改 g_u32Sleep++; if(g_u32Sleep>VOL_SLEEP) { g_u32Sleep=0; if(VOL_SLEEP_OPEN) { SleepNow(); } } //判斷休眠標(biāo)志位,若曾經(jīng)休眠過,則進行想關(guān)初始化 if(gb_sleepFlag==1) { gb_sleepFlag=0; gotovolBegin; } //主要功能進行區(qū) keyVal=AloneKeyScan(); if(keyVal==1) { longjmp(buf,1); } //切換量程 elseif(keyVal==2) { range++; if(range>2) { range=0; } if(range==0) { Dis1602Str(LCD0b,Vol0_2Asc); } elseif(range==1) { Dis1602Str(LCD0b,Vol2Asc); } elseif(range==2) { Dis1602Str(LCD0b,Vol20Asc); } } u16_ad1=ReADS1232(); DisVolVal(LCD10,u16_ad1/65535.0*2.5); }}voidTriFunction(void){ u8keyVal; bitmode=0; u16u16_ad1; float f_uTest; u16b;triBegin: Cle1602DDRAM(); Dis1602Str(LCD00,TriFunctionAsc); while(1) { //主要功能進行區(qū) keyVal=AloneKeyScan(); if(keyVal==1) { longjmp(buf,1); } elseif(keyVal==2) { mode=~mode; if(mode) { } else { } } if(mode) { u16_ad1=ReADS1232(); Dis1602int5(LCD19,u16_ad1); f_uTest=u16_ad1/65535.0*2.5; DisVolVal(LCD09,f_uTest); b=(f_uTest/Re_NPN-Ib_NPN)/Ib_NPN; Dis1602int3(LCD10,b); } else { u16_ad1=ReADS1232(); Dis1602int5(LCD19,u16_ad1); f_uTest=u16_ad1/65535.0*2.5; DisVolVal(LCD09,f_uTest); b=(f_uTest/Re_NPN-Ib_NPN)/Ib_NPN; Dis1602int3(LCD10,b); } //休眠計數(shù),適當(dāng)修改常量VOL_SLEEP //g_u32只在鍵盤掃描函數(shù)中修改 g_u32Sleep++; if(g_u32Sleep>TRI_SLEEP) { g_u32Sleep=0; if(TRI_SLEEP_OPEN) { SleepNow(); } } //判斷休眠標(biāo)志位,若曾經(jīng)休眠過,則進行相關(guān)初始化 if(gb_sleepFlag==1) { gb_sleepFlag=0; gototriBegin; } }}voidSleepNow(){ Cle1602DDRAM(); Dis1602Str(LCD00,SleepNowAsc); DelayXMs(500); Cle1602DDRAM(); IT0=0;//啟動喚醒功能 EX0=1; EA=1; gb_sleepFlag=1; PCON|=0x02;//休眠 }voidmain(void){ u8keyVal; u16ad; floatads; Init1602(); setjmp(buf);//全局跳轉(zhuǎn)函數(shù)進入點 InitInterrupt(); Cle1602DDRAM(); Dis1602Str(LCD00,ChooseFnAsc); while(1) { g_u32Sleep++; if(g_u32Sleep>MAIN_SLEEP&&MAIN_SLEEP_OPEN) { g_u32Sleep=0; SleepNow(); } if(gb_sleepFlag==1) { gb_sleepFlag=0; LED0=~LED0; longjmp(buf,1); } keyVal=AloneKeyScan(); if(keyVal==1) { TriFunction(); } elseif(keyVal==2) { SleepNow(); } elseif(keyVal==22) { zero(); VolFunction(); CapFunction(); ad=ReADS1232(); Dis1602int5(LCD0b,ad); ads=ad/65535.0*2.5; Dis1602float3_3(LCD10,ads); Dis1602float3_3(LCD18,10*ads/(2.5-ads)); DelayXMs(500); } } }voidINT0_Routine(void)interrupt0{// while(sb_power==0);// {// LED0=~LED0;// DelayXMs(1000);InitInterrupt();// longjmp(buf,1); // }}voidtimer0(void)interrupt1{ g_uiTimer0++;}voidcounter1(void)interrupt3{ if(TR0==0) { TR1=0; TH1=TH1Val; TL1=TL1Val; TR0=1; TR1=1; } elseif(TR0==1) { TR0=0; TR1=0; //關(guān)定時器0、1 g_bCountOver=1; //計數(shù)標(biāo)志置位 }}LCD1602.c:#include"lcd1602.h"u8codenumAsc[]="0123456789.:";voidBuzy1602(void){ sb_e1602=1; sb_rs1602=0; sb_rw1602=1; LCD1602IO=0xff; while(LCD1602IO&0x80) { _nop_(); }}voidWr1602Com(u8com){ Buzy1602();// DelayXMs(20); sb_rs1602=0; sb_rw1602=0; LCD1602IO=com; sb_e1602=1; _nop_(); sb_e1602=0;}voidWr1602Dat(u8dat){ Buzy1602();// DelayXMs(20); sb_rs1602=1; sb_rw1602=0; LCD1602IO=dat; sb_e1602=1; _nop_(); sb_e1602=0;}voidCle1602DDRAM(void){ Wr1602Com(0x01);//數(shù)據(jù)指針清零,所有顯示清零 }voidInit1602(void){ Wr1602Com(0x38);//設(shè)置2行顯示,5*7點陣,8位數(shù)據(jù)口 Wr1602Com(0x0c);//開顯示,顯示光標(biāo),光標(biāo)不閃爍 Wr1602Com(0x01);//數(shù)據(jù)指針清零,所有顯示清零 Wr1602Com(0x06);//當(dāng)讀或?qū)懸粋€字符后指針加一,光標(biāo)加一 }voidDis1602Str(u8addr,u8*str){ Wr1602Com(addr); while(*str!='\0') { Wr1602Dat(*str++); }}voidDis1602int2(u8addr,u8int2){ Wr1602Com(addr); if(int2<100) { addr=int2/10; Wr1602Dat(numAsc[addr]); addr=int2%10; Wr1602Dat(numAsc[addr]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); } }voidDis1602int3(u8addr,u16int3){ if(int3<1000) { Dis1602int2(addr,int3/10); Wr1602Dat(numAsc[int3%10]); } else { Dis1602Str(addr,"Err"); } }voidDis1602int4(u8addr,u16int4){ if(int4<10000) { Wr1602Com(addr); Wr1602Dat(numAsc[int4/1000]); Wr1602Dat(numAsc[int4/100%10]); Wr1602Dat(numAsc[int4/10%10]); Wr1602Dat(numAsc[int4%10]); } else { Dis1602Str(addr,"Err!"); } }voidDis1602int5(u8addr,u32int5){ if(int5<100000) { Dis1602int4(addr,int5/10); Wr1602Dat(numAsc[int5%10]); } else { Dis1602Str(addr,"Error"); } }voidDis1602int6(u8addr,u32int6){ if(int6<1000000) { Dis1602int5(addr,int6/10); Wr1602Dat(numAsc[int6%10]); } else { Dis1602Str(addr,"Error!"); } }voidDis1602float1_1(u8addr,floatf_dat){ u8dat; Wr1602Com(addr); if(f_dat<10) { dat=f_dat*10; Wr1602Dat(numAsc[dat/10]); Wr1602Dat(46);//小數(shù)點ASCII碼 Wr1602Dat(numAsc[dat%10]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(46);//小數(shù)點ASCII碼 Wr1602Dat(LCD_ERROR_ASC); } }voidDis1602float1_2(u8addr,floatf_dat){ u8dat; Wr1602Com(addr); if(f_dat<10) { dat=f_dat; Wr1602Dat(numAsc[dat]); Wr1602Dat(46);//小數(shù)點ASCII碼 dat=f_dat*10; dat%=10; Wr1602Dat(numAsc[dat]); dat=((u16)(f_dat*100))%10; Wr1602Dat(numAsc[dat]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(46);//小數(shù)點ASCII碼 Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); }}voidDis1602float1_3(u8addr,floatf_dat){ u8dat; Wr1602Com(addr); if(f_dat<10) { dat=f_dat; Wr1602Dat(numAsc[dat]); Wr1602Dat(46);//小數(shù)點ASCII碼 dat=f_dat*10; dat%=10; Wr1602Dat(numAsc[dat]); dat=((u16)(f_dat*100))%10; Wr1602Dat(numAsc[dat]); dat=((u16)(f_dat*1000))%10; Wr1602Dat(numAsc[dat]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(46);//小數(shù)點ASCII碼 Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); } }voidDis1602float2_1(u8addr,floatf_dat){ u8dat; Wr1602Com(addr); if(f_dat<100) { dat=f_dat; Wr1602Dat(numAsc[dat/10]); Wr1602Dat(numAsc[dat%10]); Wr1602Dat(46);//小數(shù)點ASCII碼 dat=((u16)(f_dat*10))%10; Wr1602Dat(numAsc[dat]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(46);//小數(shù)點ASCII碼 Wr1602Dat(LCD_ERROR_ASC); }}voidDis1602float2_2(u8addr,floatf_dat){ u16u16_dat; Wr1602Com(addr); if(f_dat<100) { u16_dat=f_dat; Wr1602Dat(numAsc[u16_dat/10]); Wr1602Dat(numAsc[u16_dat%10]); Wr1602Dat(46);//小數(shù)點ASCII碼 u16_dat=f_dat*100; Wr1602Dat(numAsc[u16_dat/10%10]); Wr1602Dat(numAsc[u16_dat%10]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(46);//小數(shù)點ASCII碼 Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); } }voidDis1602float2_3(u8addr,floatf_dat){ u32u32_dat; Wr1602Com(addr); if(f_dat<100) { u32_dat=f_dat; Wr1602Dat(numAsc[u32_dat/10]); Wr1602Dat(numAsc[u32_dat%10]); Wr1602Dat(46);//小數(shù)點ASCII碼 u32_dat=f_dat*1000; Wr1602Dat(numAsc[u32_dat/100%10]); Wr1602Dat(numAsc[u32_dat/10%10]); Wr1602Dat(numAsc[u32_dat%10]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(46);//小數(shù)點ASCII碼 Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); }}voidDis1602float3_1(u8addr,floatf_dat){ u16u16_dat; Wr1602Com(addr); if(f_dat<1000) { u16_dat=f_dat; Wr1602Dat(numAsc[u16_dat/100]); Wr1602Dat(numAsc[u16_dat/10%10]); Wr1602Dat(numAsc[u16_dat%10]); Wr1602Dat(46);//小數(shù)點ASCII碼 u16_dat=f_dat*10; Wr1602Dat(numAsc[u16_dat%10]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(46);//小數(shù)點ASCII碼 Wr1602Dat(LCD_ERROR_ASC); } }voidDis1602float3_2(u8addr,floatf_dat){ u32u32_dat; Wr1602Com(addr); if(f_dat<1000) { u32_dat=f_dat; Wr1602Dat(numAsc[u32_dat/100]); Wr1602Dat(numAsc[u32_dat/10%10]); Wr1602Dat(numAsc[u32_dat%10]); Wr1602Dat(46);//小數(shù)點ASCII碼 u32_dat=f_dat*100; Wr1602Dat(numAsc[u32_dat/10%10]); Wr1602Dat(numAsc[u32_dat%10]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(46);//小數(shù)點ASCII碼 Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); }}voidDis1602float3_3(u8addr,floatf_dat){ u32u32_dat; Wr1602Com(addr); if(f_dat<1000) { u32_dat=f_dat; Wr1602Dat(numAsc[u32_dat/100]); Wr1602Dat(numAsc[u32_dat/10%10]); Wr1602Dat(numAsc[u32_dat%10]); Wr1602Dat(46);//小數(shù)點ASCII碼 u32_dat=f_dat*1000; Wr1602Dat(numAsc[u32_dat/100%10]); Wr1602Dat(numAsc[u32_dat/10%10]); Wr1602Dat(numAsc[u32_dat%10]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(46);//小數(shù)點ASCII碼 Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); } }voidDis1602float4_1(u8addr,floatf_dat){ u32u32_dat; Wr1602Com(addr); if(f_dat<10000) { u32_dat=f_dat; Wr1602Dat(numAsc[u32_dat/1000%10]); Wr1602Dat(numAsc[u32_dat/100%10]); Wr1602Dat(numAsc[u32_dat/10%10]); Wr1602Dat(numAsc[u32_dat%10]); Wr1602Dat(46);//小數(shù)點ASCII碼 u32_dat=f_dat*10; Wr1602Dat(numAsc[u32_dat%10]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(46);//小數(shù)點ASCII碼 Wr1602Dat(LCD_ERROR_ASC); }}voidDis1602float4_2(u8addr,floatf_dat){ u32u32_dat; Wr1602Com(addr); if(f_dat<10000) { u32_dat=f_dat; Wr1602Dat(numAsc[u32_dat/1000%10]); Wr1602Dat(numAsc[u32_dat/100%10]); Wr1602Dat(numAsc[u32_dat/10%10]); Wr1602Dat(numAsc[u32_dat%10]); Wr1602Dat(46);//小數(shù)點ASCII碼 u32_dat=f_dat*100; Wr1602Dat(numAsc[u32_dat/10%10]); Wr1602Dat(numAsc[u32_dat%10]); } else { Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat(LCD_ERROR_ASC); Wr1602Dat

溫馨提示

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

評論

0/150

提交評論