加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

51單片機簡易電阻電感電容RLC測量儀仿真設計

09/05 09:13
1889
服務支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
    • 51單片機最小系統(tǒng)的相關(guān)知識
    • 演示視頻:
    • 1.本設計主要功能
    • 2.仿真
    • 3. 程序
    • 4.百度云網(wǎng)盤資源
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

51單片機簡易電阻電感電容RLC測量儀仿真( proteus仿真+程序+講解視頻)

仿真圖proteus7.8及以上

程序編譯器:keil 4/keil 5

編程語言:C語言

設計編號:S0040

51單片機最小系統(tǒng)的相關(guān)知識

單片機最小系統(tǒng),或者稱為 最小應用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng)。對51系列單片機來說,最小系統(tǒng)一般應該包括:單片機、晶振電路、復位電路。下面給出一個51單片機的最小系統(tǒng)電路圖。

img

復位電路:

一、復位電路的用途:單片機復位電路就好比電腦的重啟部分,當電腦在使用中出現(xiàn)死機,按下重啟按鈕電腦內(nèi)部的程序從頭開始執(zhí)行。單片機也一樣,當單片機系統(tǒng)在運行中,受到環(huán)境干擾出現(xiàn)程序跑飛的時候,按下復位按鈕內(nèi)部的程序自動從頭開始執(zhí)行。單片機復位電路如下圖:

二、復位電路的工作原理在書本上有介紹,51單片機要復位只需要在第9引腳接個高電平持續(xù)2US就可以實現(xiàn),那這個過程是如何實現(xiàn)的呢?在單片機系統(tǒng)中,系統(tǒng)上電啟動的時候復位一次,當按鍵按下的時候系統(tǒng)再次復位,如果釋放后再按下,系統(tǒng)還會復位。所以可以通過按鍵的斷開和閉合在運行的系統(tǒng)中控制其復位。

開機的時候為什么會復位:在電路圖中,電容的的大小是10uF,電阻的大小是10k。所以根據(jù)公式,可以算出電容充電到電源電壓的0.7倍(單片機的電源是5V,所以充電到0.7倍即為3.5V),需要的時間是10K*10UF=0.1S。也就是說在單片機啟動的0.1S內(nèi),電容兩端的電壓時在03.5V增加。這個時候10K電阻兩端的電壓為從51.5V減少(串聯(lián)電路各處電壓之和為總電壓)。所以在0.1S內(nèi),RST引腳所接收到的電壓是5V~1.5V。在5V正常工作的51單片機中小于1.5V的電壓信號為低電平信號,而大于1.5V的電壓信號為高電平信號。所以在開機0.1S內(nèi),單片機系統(tǒng)自動復位(RST引腳接收到的高電平信號時間為0.1S左右)。

按鍵按下的時候為什么會復位:在單片機啟動0.1S后,電容C兩端的電壓持續(xù)充電為5V,這是時候10K電阻兩端的電壓接近于0V,RST處于低電平所以系統(tǒng)正常工作。當按鍵按下的時候,開關(guān)導通,這個時候電容兩端形成了一個回路,電容被短路,所以在按鍵按下的這個過程中,電容開始釋放之前充的電量。隨著時間的推移,電容的電壓在0.1S內(nèi),從5V釋放到變?yōu)榱?.5V,甚至更小。根據(jù)串聯(lián)電路電壓為各處之和,這個時候10K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機系統(tǒng)自動復位。

晶振電路:

晶振電路:晶振是晶體振蕩器的簡稱 在電氣上它可以等效成一個電容和一個電阻并聯(lián)再串聯(lián)一個電容的二端網(wǎng)絡 電工學上這個網(wǎng)絡有兩個諧振點 以頻率的高低分其中較低的頻率是串聯(lián)諧振 較高的頻率是并聯(lián)諧振 由于晶體自身的特性致使這兩個頻率的距離相當?shù)慕咏?在這個極窄的頻率范圍內(nèi) 晶振等效為一個電感 所以只要晶振的兩端并聯(lián)上合適的電容它就會組成并聯(lián)諧振電路 這個并聯(lián)諧振電路加到一個負反饋電路中就可以構(gòu)成正弦波振蕩電路 由于晶振等效為電感的頻率范圍很窄 所以即使其他元件的參數(shù)變化很大 這個振蕩器的頻率也不會有很大的變化

晶振有一個重要的參數(shù) 那就是負載電容值 選擇與負載電容值相等的并聯(lián)電容 就可以得到晶振標稱的諧振頻率

一般的晶振振蕩電路都是在一個反相放大器(注意是放大器不是反相器)的兩端接入晶振 再有兩個電容分別接到晶振的兩端 每個電容的另一端再接到地 這兩個電容串聯(lián)的容量值就應該等于負載電容 請注意一般IC的引腳都有等效輸入電容 這個不能忽略

一般的晶振的負載電容為15pF或12.5pF 如果再考慮元件引腳的等效輸入電容 則兩個22pF的電容構(gòu)成晶振的振蕩電路就是比較好的選擇

如上圖:晶振是給單片機提供工作信號脈沖的 這個脈沖就是單片機的工作速度 比如 12M晶振 單片機工作速度就是每秒12M 當然 單片機的工作頻率是有范圍的 不能太大 一般24M就不上去了 不然不穩(wěn)定

晶振與單片機的腳XTAL0和腳XTAL1構(gòu)成的振蕩電路中會產(chǎn)生偕波(也就是不希望存在的其他頻率的波) 這個波對電路的影響不大 但會降低電路的時鐘振蕩器的穩(wěn)定性 為了電路的穩(wěn)定性起見 ATMEL公司只是建議在晶振的兩引腳處接入兩個10pf-50pf的瓷片電容接地來削減偕波對電路的穩(wěn)定性的影響 所以晶振所配的電容在10pf-50pf之間都可以的 沒有什么計算公式

P0口的上拉電阻:

P0口作為I/O口輸出的時候時 輸出低電平為0 輸出高電平為高組態(tài)(并非5V,相當于

懸空狀態(tài))。也就是說P0 口不能真正的輸出高電平,給所接的負載提供電流,因此必須接上拉電阻(一電阻連接到VCC),由電源通過這個上拉電阻給負載提供電流。 由于P0口內(nèi)部沒有上拉電阻,是開漏的,不管它的驅(qū)動能力多大,相當于它是沒有電源的,需要外部的電路提供,絕大多數(shù)情況下P0口是必需加上拉電阻的。

1.一般51單片機的P0口在作為地址/數(shù)據(jù)復用時不接上拉電阻。

2.作為一般的I/O口時用時,由于內(nèi)部沒有上拉電阻,故要接上上拉電阻??!

3.當p0口用來驅(qū)動PNP管子的時候,就不需要上拉電阻,因為此時的低電平有效; 4.當P0口用來驅(qū)動NPN管子的時候,就需要上拉電阻的,因為此時只有當P0為1時候,才能夠使后級端導通。

31腳EA/Vpp接電源:

STC89C51/52或其他51系列兼容單片機特別注意:對于31腳(EA/Vpp),當接高電平時,單片機在復位后從內(nèi)部ROM的0000H開始執(zhí)行,當接低電平時,復位后直接從外部ROM的0000H開始執(zhí)行,這一點是初學者容易忽略的。

演示視頻:


基于51單片機簡易電阻電感電容RLC測量儀仿真( proteus仿真+程序+講解視頻)

1.本設計主要功能

運用所學知識,制作一個51單片機電阻電感電容測量儀

1、測量范圍:電阻 100Ω-100KΩ;

電容 1000pF-1uF;

電感 1mH-1000mH。

2、測量精度:5%。

3、制作1602液晶顯示器,顯示測量數(shù)值,通過開關(guān)選擇測量類型。

以下為本設計資料展示圖:

2.仿真

開始仿真

開始仿真后可以通過滑動變阻器改變測了電阻值,改動后長按測量按鍵顯示。

測量電阻10000Ω測量值10156Ω

測量電感100mH測量值86mH

測量電容5016pF測量值5000pF
電阻測量

電容電感測量

3. 程序

img

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^6;
sbit RW=P2^5;
sbit E=P2^7;
sbit R=P1^0;
sbit C=P1^1;
sbit L=P1^2;
sbit A1=P1^3;
sbit A0=P1^4;

#define LCD_data P0
uchar code table1[10]={“R= R”};
uchar code table2[10]={“C= pF”};
uchar code table3[10]={“L= mH”};

uchar code f_table[88]={13,14,15,16,17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100};
uchar code f_correct[88]={9,10, 11, 12, 12, 12, 13, 14, 15, 16, 17, 18, 18, 18, 19, 20, 21, 21, 22, 23, 24, 25, 25, 26, 26, 27, 28, 29, 29, 30, 30, 31, 32, 33, 33, 34, 35, 35, 36, 37, 38, 38, 39, 40, 41, 41, 42, 42, 43, 44, 45, 45, 46, 47, 48, 49, 49, 50, 51, 51, 52, 53, 54, 54, 55, 55, 56, 57, 57, 58, 59, 60, 60, 62, 62, 63, 64, 64, 65, 66, 66, 67, 67, 68, 69, 70, 71, 71,};

uchar a6,a5,a4,a3,a2,a1;
uchar flag;
unsigned long cnt,cnt1;
uchar f_cnt;

/********************************/

void delay_us(); //18us
void delay_ms(uint);
void lcd_init();
void lcd_write_com(uchar com);
void lcd_write_dat(uchar dat);
void lcd_init();
void lcd_display(uchar add,uchar dat);
/***********************************/

void delay_us()
{
uchar x;
for(x=0;x<5;x++);
}

void delay_ms(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<123;y++);
}
void lcd_write_com(uchar com)
{
E=0;
RS=0;
RW=0;
delay_us();
LCD_data=com;
E=1; //高脈沖寫入數(shù)據(jù)
delay_us();
E=0;
}
void lcd_write_dat(uchar dat)
{
E=0;
RS=1;
RW=0;
delay_us();
LCD_data=dat;
E=1; //高脈沖寫入數(shù)據(jù)
delay_us();
E=0;
}
void lcd_init() //lcd初始化
{
delay_ms(15);
lcd_write_com(0x38);
delay_ms(10);
lcd_write_com(0x0c);
lcd_write_com(0x06);
lcd_write_com(0x01);
delay_ms(2);

}
void timer_init(void) //定時器初始化
{
TMOD=0X51;
PT0=1; /中斷優(yōu)先/
TH0=0x3c;
TL0=0xb0;
TH1=0;
TL1=0;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
}
void lcd_display(uchar add,uchar dat) //lcd顯示(地址,數(shù)據(jù))
{
lcd_write_com(add);
lcd_write_dat(dat);
delay_us();

}
void real_display(void) //LCD顯示
{
if(!R)
{
// while(!R);
A1=A0=0;
lcd_display(0x80,table1[0]);
lcd_display(0x80+1,table1[1]);
lcd_display(0x80+8,table1[8]);
lcd_display(0x80+9,table1[9]);
}
else if(!C)
{
A0=0;A1=1;
lcd_display(0x80,table2[0]);
lcd_display(0x80+1,table2[1]);
lcd_display(0x80+8,table2[8]);
lcd_display(0x80+9,table2[9]);
}
else if(!L)
{
A0=1;A1=0;
lcd_display(0x80,table3[0]);
lcd_display(0x80+1,table3[1]);
lcd_display(0x80+8,table3[8]);
lcd_display(0x80+9,table3[9]);
}
if(a6)
lcd_display(0x80+2,0x30+a6);
else
lcd_display(0x80+2,’ ');

		if(a6||a5)
		lcd_display(0x80+3,0x30+a5);
		else
		 	lcd_display(0x80+3,' ');


		if(a6||a5||a4)
		lcd_display(0x80+4,0x30+a4);	
		else
	   lcd_display(0x80+4,' ');


		if(a6||a5||a4||a3)
		lcd_display(0x80+5,0x30+a3);	
		else
	    lcd_display(0x80+5,' ');


		if(a6||a5||a4||a3||a2)
		lcd_display(0x80+6,0x30+a2);
		else
		lcd_display(0x80+6,' ');

		
		lcd_display(0x80+7,0x30+a1);

}

void correct(void) //誤差修正函數(shù)
{
uchar i,k;
unsigned long wucha;
if(cnt<100000) //100KHz以內(nèi)的修正
{
if(cnt>980&&cnt<2100) cnt-=1;
if(cnt>=2100&&cnt<3900) cnt-=2;
if(cnt>=3900&&cnt<4800) cnt-=3;
if(cnt>=4800&&cnt<5700) cnt-=4;
if(cnt>=5700&&cnt<8000) cnt-=5;
if(cnt>=8000&&cnt<9100) cnt-=6;
if(cnt>=9100&&cnt<10900) cnt-=7;
if(cnt>=10900&&cnt<11900) cnt-=8;
if(cnt>=11900&&cnt<13000) cnt-=9;
if(cnt>=13000&&cnt<=100000)
{
k=cnt/1000;
for(i=0;i<88;i++)
{
if(k==f_table[i])
{
cnt-=f_correct[i];
}
}
}

}
if(cnt>100000)	 
{
	wucha=(cnt/1000)*73065/100000;
	cnt-=wucha;
}

}

void main()
{

timer_init();
lcd_init();
while(1)
{		
	   if(flag==1)
	   {
		real_display();
		flag=0;
		}
	

}

}
void timer0() interrupt 1
{
uchar timer0;

TH0=0x3c;	  //50ms
TL0=0xb0;
timer0++;
if(timer0==20)	 //一秒測試一次
{
	TR1=0;	  //關(guān)閉的計數(shù)器
	EA=0;
	cnt=TL1+TH1*256+f_cnt*65536; 
	correct();
    //cnt1=(1e+9)/(2*0.693 *cnt)-20000/2;
	if(!R)						   //測量電阻
	{

// while(!R);
cnt1=1000000/(0.20.693cnt)-165;
}
else if(!C) //測量電容
{
cnt1=1000000000/(0.6933510cnt);
}
else if(!L)
{
cnt1=(1e+9)/(4
3.143.14cntcnt0.05); //測量電感
}
timer0=0;

	a6=cnt1%10000000/100000;
	a5=cnt1%100000/10000;
	a4=cnt1%10000/1000;
	a3=cnt1%1000/100;
	a2=cnt1%100/10;
	a1=cnt1%10;  
	flag=1;
 	        TH1=0;
	TL1=0;
	TH0=0x3c;
 	        TL0=0xb0;
	cnt=0;
	f_cnt=0;
	EA=1;
	TR1=1;	   //打開計數(shù)器


}

}

void int1() interrupt 3
{
f_cnt++;
}

4.百度云網(wǎng)盤資源

下載方式見文章開頭視頻或下方

img

百度云分享鏈接

  • 設計資料獲取聯(lián)系方式.doc

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
TJA1055T/C,518 1 NXP Semiconductors TJA1055 - Enhanced fault-tolerant CAN transceiver SOIC 14-Pin
$2.67 查看
CAT24C256WI-GT3 1 onsemi EEPROM Serial 256-Kb I2C, SOIC 8, 150 mils, 3000-REEL

ECAD模型

下載ECAD模型
$0.44 查看
PLR135/T2 1 Everlight Electronics Co Ltd Receiver, 16Mbps, Surface Mount,
暫無數(shù)據(jù) 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜