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

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

51單片機(jī)簡(jiǎn)易電阻電感電容RLC測(cè)量?jī)x仿真設(shè)計(jì)

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

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

虛擬商品不可退

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

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

51單片機(jī)簡(jiǎn)易電阻電感電容RLC測(cè)量?jī)x仿真( proteus仿真+程序+講解視頻)

仿真圖proteus7.8及以上

程序編譯器:keil 4/keil 5

編程語言:C語言

設(shè)計(jì)編號(hào):S0040

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

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

img

復(fù)位電路:

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

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

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

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

晶振電路:

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

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

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

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

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

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

P0口的上拉電阻:

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

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

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

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

3.當(dāng)p0口用來驅(qū)動(dòng)PNP管子的時(shí)候,就不需要上拉電阻,因?yàn)榇藭r(shí)的低電平有效; 4.當(dāng)P0口用來驅(qū)動(dòng)NPN管子的時(shí)候,就需要上拉電阻的,因?yàn)榇藭r(shí)只有當(dāng)P0為1時(shí)候,才能夠使后級(jí)端導(dǎo)通。

31腳EA/Vpp接電源:

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

演示視頻:


基于51單片機(jī)簡(jiǎn)易電阻電感電容RLC測(cè)量?jī)x仿真( proteus仿真+程序+講解視頻)

1.本設(shè)計(jì)主要功能

運(yùn)用所學(xué)知識(shí),制作一個(gè)51單片機(jī)電阻電感電容測(cè)量?jī)x

1、測(cè)量范圍:電阻 100Ω-100KΩ;

電容 1000pF-1uF;

電感 1mH-1000mH。

2、測(cè)量精度:5%。

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

以下為本設(shè)計(jì)資料展示圖:

2.仿真

開始仿真

開始仿真后可以通過滑動(dòng)變阻器改變測(cè)了電阻值,改動(dòng)后長(zhǎng)按測(cè)量按鍵顯示。

測(cè)量電阻10000Ω測(cè)量值10156Ω

測(cè)量電感100mH測(cè)量值86mH

測(cè)量電容5016pF測(cè)量值5000pF
電阻測(cè)量

電容電感測(cè)量

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) //定時(shí)器初始化
{
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)	 //一秒測(cè)試一次
{
	TR1=0;	  //關(guān)閉的計(jì)數(shù)器
	EA=0;
	cnt=TL1+TH1*256+f_cnt*65536; 
	correct();
    //cnt1=(1e+9)/(2*0.693 *cnt)-20000/2;
	if(!R)						   //測(cè)量電阻
	{

// while(!R);
cnt1=1000000/(0.20.693cnt)-165;
}
else if(!C) //測(cè)量電容
{
cnt1=1000000000/(0.6933510cnt);
}
else if(!L)
{
cnt1=(1e+9)/(4
3.143.14cntcnt0.05); //測(cè)量電感
}
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;	   //打開計(jì)數(shù)器


}

}

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

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

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

img

百度云分享鏈接

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

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
XRCGB25M000F3A00R0 1 Murata Manufacturing Co Ltd Parallel - Fundamental Quartz Crystal, 25MHz Nom, ROHS AND REACH COMPLIANT, SMALL, SMD, 3 PIN

ECAD模型

下載ECAD模型
$0.34 查看
M25P05-AVMN6P 1 Rochester Electronics LLC 64KX8 FLASH 2.7V PROM, PDSO8, 0.150 INCH, ROHS COMPLIANT, PLASTIC, SOP-8
$0.79 查看
S29GL256P10FFI020 1 AMD Flash, 16MX16, 100ns, PBGA64,
$9.29 查看

相關(guān)推薦

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