小型溫度測(cè)控系統(tǒng)
前言
此小型測(cè)控系統(tǒng)的主要功能是對(duì)外環(huán)境溫度的實(shí)時(shí)測(cè)量,并按照預(yù)先設(shè)定好的溫度,對(duì)外環(huán)境溫度進(jìn)行調(diào)節(jié),使其保持在預(yù)先設(shè)定的溫度。制作過程中,主要是實(shí)現(xiàn)單片機(jī)模塊和顯示模塊的功能。通過該系統(tǒng)的制作,使制作者具備電路簡(jiǎn)單設(shè)計(jì)與制作,程序編寫與調(diào)試,系統(tǒng)調(diào)試與完善等系統(tǒng)開發(fā)的基本技能和知識(shí)。同時(shí)培養(yǎng)制作者的團(tuán)隊(duì)合作精神。
本次培訓(xùn)的任務(wù):
1. 設(shè)計(jì)一款溫度測(cè)量和控制的小系統(tǒng),測(cè)量范圍為:-5~45℃
2. 要求顯示部分可以顯示一位小數(shù)及負(fù)號(hào)。
3. 片選地址更改。
目錄
摘要………………………………………………………………………4
課題背景…………………………………………………………………4
系統(tǒng)整體框架……………………………………………………………4
電路及元件選擇…………………………………………………………5
系統(tǒng)主要模塊的具體實(shí)現(xiàn)………………………………………………6
系統(tǒng)模塊的調(diào)試程序 …………………………………………………12
心得與體會(huì) ……………………………………………………………19
摘要: 本系統(tǒng)主要由LM35溫度傳感器、AT89S52單片機(jī)、變送器、AD轉(zhuǎn)換、
DA轉(zhuǎn)換、穩(wěn)壓電源、鍵盤輸入及數(shù)碼管顯示模塊組成。
溫度傳感器的作用是采集溫度,并進(jìn)行判斷和顯示。由于此次設(shè)計(jì)所使
用的是溫度傳感器為L(zhǎng)M35,其檢測(cè)到的信號(hào)是模擬電壓信號(hào),需要進(jìn)行 A/D轉(zhuǎn)換變成二進(jìn)制數(shù)字信號(hào),以便單片機(jī)處理。
單片機(jī)主要是讀取溫度傳感器的溫度檢測(cè)的電壓值,并把該信號(hào)轉(zhuǎn)化成
溫度值用數(shù)碼管顯示出來。由于AT89系列單片機(jī)與MCS一51系列單片機(jī)兼容,所以,本系統(tǒng)中的單片機(jī)選用AT89S52。
變送器、D/A轉(zhuǎn)換和A/D轉(zhuǎn)換模塊對(duì)信號(hào)進(jìn)行轉(zhuǎn)換;鍵盤輸入模塊輔助
參數(shù)的設(shè)定,數(shù)碼管顯示模塊同步顯示系統(tǒng)的狀態(tài),共同完成系統(tǒng)的人機(jī)交互。
關(guān)鍵字:?jiǎn)纹瑱C(jī) 電壓信號(hào) 溫度傳感器 數(shù)碼管顯示 鍵盤輸入
課題背景
在人類的生活環(huán)境中,溫度扮演著極其重要的角色。無論你生活在哪里,從事什么工作,無時(shí)無刻不在與溫度打著交道。今天,我們的生活環(huán)境和工作環(huán)境有越來越多稱之為單片機(jī)的小電腦在為我們服務(wù)。單片機(jī)在工業(yè)控制、尖端武器、通信設(shè)備、信息處理、家用電器等各測(cè)控領(lǐng)域的應(yīng)用中獨(dú)占鰲頭。時(shí)下,家用電器和辦公設(shè)備的智能化、遙控化模糊控制化已成為世界潮流,而這些高性能無一不是靠單片機(jī)來實(shí)現(xiàn)的。采用單片機(jī)來對(duì)溫度進(jìn)行測(cè)量和控制,不僅具有控制方便、組態(tài)簡(jiǎn)單和靈活性大等優(yōu)點(diǎn),而且可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。單片機(jī)以其功能強(qiáng)、體積小、可靠性高、造價(jià)低和開發(fā)周期短等優(yōu)點(diǎn),成為自動(dòng)化和各個(gè)測(cè)控領(lǐng)域中必不可少且廣泛應(yīng)用的器件,尤其在日常生活中也發(fā)揮越來越大的作用。因此,單片機(jī)對(duì)溫度的測(cè)控問題是一個(gè)工農(nóng)業(yè)生產(chǎn)中經(jīng)常會(huì)遇到的問題。
電路及元件選擇
1.電源電路
• 集成線性穩(wěn)壓電路
紋波、噪聲小、效率低、實(shí)現(xiàn)電路相對(duì)簡(jiǎn)單、成本低
• 集成開關(guān)穩(wěn)壓電路
紋波、噪聲大、效率高、實(shí)現(xiàn)電路相對(duì)復(fù)雜,成本較高
交流供電電壓低,輸出功率較小。從實(shí)現(xiàn)電路簡(jiǎn)單,低成本的角度考慮應(yīng)選擇集成線性穩(wěn)壓電路的實(shí)現(xiàn)方案。
2.溫度傳感器
• 熱電偶靈敏度低,溫度與輸出為非線性關(guān)系,信號(hào)調(diào)理電路復(fù)雜,適合寬溫范圍測(cè)溫。
• 鉑電阻溫度與輸出非理想線性關(guān)系,需作電抗到電壓的轉(zhuǎn)換,電路復(fù)雜,適合寬溫范圍測(cè)溫。
• DS1820 采用一線串行數(shù)字控制,操作過程復(fù)雜,初學(xué)者不易掌握。
• LM35具有很高的工作精度和較寬的線性工作范圍,該器件輸出電壓與攝氏溫度線性成比例。無需外部校準(zhǔn)或微調(diào),可以提供±1/4℃的常用的室溫精度。為首選測(cè)溫傳感器。
綜上,選擇LM35。
3.單片機(jī)
MCS-51系列單片機(jī)有眾多性能優(yōu)異的兼容產(chǎn)品、成熟的開發(fā)環(huán)境、世界上最大的單片機(jī)客戶群、高性價(jià)比、暢通的供貨渠道,是初學(xué)者的首選機(jī)型。
8031是MCS-51系列單片機(jī)早期產(chǎn)品之一,其最小系統(tǒng)需要在外部擴(kuò)展程序存儲(chǔ)器,成本高、性能差,現(xiàn)已退出市場(chǎng)。
8051也是MCS-51系列單片機(jī)早期產(chǎn)品之一,內(nèi)建一次性可編程只讀存儲(chǔ)器 ( PROM ) ,只需要很少的外圍元件即可組成最小系統(tǒng)?,F(xiàn)已有內(nèi)建 Flash存儲(chǔ)器的兼容產(chǎn)品,8051已經(jīng)被使用上更為方便的AT89C51 AT89S52等單片機(jī)產(chǎn)品所代替。
綜上,選擇AT89S52。
4.地址譯碼電路
·全地址譯碼
全部地址參與譯碼,產(chǎn)生的控制信號(hào)對(duì)應(yīng)唯一地址。
·部分地址譯碼
部分地址參與譯碼,產(chǎn)生的控制信號(hào)對(duì)應(yīng)某一地址區(qū)域,而不是唯一地址。
·直接選擇
直接使用地址線作為讀/寫訪問控制信號(hào)線。該方案的片選信號(hào)與地址之間不是線性關(guān)系,使用該方案需要熟練掌握片選信號(hào)與地址之間的關(guān)系計(jì)算。
綜合分析,選擇部分地址譯碼、帶有總線驅(qū)動(dòng)電路。
5.D/A、A/D轉(zhuǎn)換
DAC0832是8 位乘算型電流輸出的典型產(chǎn)品,具有MCU兼容接口,使用方便,價(jià)格低,能滿足設(shè)計(jì)要求。
ADC0804是8 位逐次比較(逐次逼近)型典型產(chǎn)品,具有MCU 兼容接口,使用方便;分辯率和轉(zhuǎn)換速度都能夠滿足設(shè)計(jì)要求,且價(jià)格低廉。
6.顯示控制電路
動(dòng)態(tài)顯示電路方案:電路簡(jiǎn)單,成本低,控制程序復(fù)雜,適用于顯示位數(shù)較多的場(chǎng)合。
靜態(tài)顯示電路方案:使用的元件多,成本相對(duì)較高。每位獨(dú)立控制,程序設(shè)計(jì)比較簡(jiǎn)單,適用于顯示位數(shù)較少的場(chǎng)合。采用此方案。
7.鍵盤電路
直讀鍵盤電路方案:按鍵較多時(shí),成本高,控制程序較簡(jiǎn)單,適用于按鍵較少的場(chǎng)合。
矩陣鍵盤電路方案:按鍵較多時(shí),成本低,控制程序較直讀電路復(fù)雜,適用于顯示位數(shù)較多的場(chǎng)合。采用此方案。
系統(tǒng)主要模塊的具體實(shí)現(xiàn)
一、電源模塊
首先,用一個(gè)變壓器將220V的交流電變成9V和14V的交流電。然后使其通過整流橋?qū)⒔涣麟娮兂芍绷麟?。再?jīng)過LM7805、LM7812、LM7912這三個(gè)芯片使其最終變成+5V、+12V和-12V的直流電。
注意:連接完畢后,打開調(diào)試臺(tái)電源遠(yuǎn)離電源板1-2分鐘,觀察電路板有無異味或異常響動(dòng),如果一切正??梢蚤_始進(jìn)一步的測(cè)試;如果整流橋短路就會(huì)燒掉保險(xiǎn)絲。電路連接不正常可能會(huì)引起電容爆裂等現(xiàn)象。這次培訓(xùn)就有一位同學(xué)的電容爆裂,有多位同學(xué)的保險(xiǎn)絲燒掉。應(yīng)特別小心!
二、單片機(jī)模塊
AT89S52器件圖
AT89S52管腳說明
VCC:供電電壓。
GND:接地。
P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。
P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(TLL)這是由于上拉的緣故。
P3的特有復(fù)用功能
引腳 | 復(fù)用功能 |
P3.0 | RXD(串行口輸入) |
P3.1 | TXD(串行口輸出) |
P3.2 | (外部中斷0) |
P3.3 | (外部中斷1) |
P3.4 | T0(定時(shí)器0外部輸入) |
P3.5 | T1(定時(shí)器1外部輸出) |
P3.6 | (外部數(shù)據(jù)儲(chǔ)存器寫信號(hào)) |
P3.7 | (外部數(shù)據(jù)儲(chǔ)存器讀信號(hào)) |
表2-9
RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的 信號(hào)將不出現(xiàn)。 /VPP:當(dāng) 保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí), 將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。
原理圖
單片機(jī)電路的組成
1.單片機(jī)最小系統(tǒng)
單片機(jī)最小系統(tǒng)由一個(gè)STC89C51系列單片機(jī),一個(gè)晶振和若干電容組成。(如右圖)
2.數(shù)據(jù)/地址分離電路設(shè)計(jì)
由于本系統(tǒng)采用的是數(shù)據(jù)地址總線共線,所以使用了一個(gè)74LS373鎖存器來實(shí)現(xiàn)數(shù)據(jù)和地址的分離,單片機(jī)通過ALE口產(chǎn)生的時(shí)序脈沖信號(hào)來控制74LS373鎖存器的使能端LE口,從而將地址信號(hào)在一段時(shí)間內(nèi)分離出來。本電路中低四位即能決定地址。其電路如下(圖中P0口為數(shù)據(jù)地址總線):
3.地址譯碼電路設(shè)計(jì)
一次譯碼采用138譯碼器,通過控制A B C輸入可得到C口上的片選信號(hào)。(圖示如下)
4.驅(qū)動(dòng)電路
單片機(jī)所接負(fù)載超出其負(fù)載能力時(shí)需要設(shè)計(jì)總線驅(qū)動(dòng)電路,本系統(tǒng)采用在數(shù)據(jù)總線上接一塊74LS245來實(shí)現(xiàn)電流的放大。(電路圖如下)
三、顯示模塊
1.數(shù)碼管顯示電路
本系統(tǒng)采用的是共陰數(shù)碼管,陽極接到一塊74LS273鎖存器上,并與地址總線相連。四塊鎖存器的使能端CLK與二次譯碼電路相連,實(shí)現(xiàn)不同蕊片的選通。
2.二次譯碼電路
本系統(tǒng)仍然采用138譯碼器,輸入信號(hào)為一次譯碼產(chǎn)生的各地址信號(hào)。實(shí)現(xiàn)對(duì)不同數(shù)碼管的選通。
系統(tǒng)模塊的調(diào)試程序
C口:
#include<reg51.h>
#include<absacc.h>
#define C1 XBYTE[0x1000]
#define C2 XBYTE[0x3000]
#define C3 XBYTE[0x5000]
#define C4 XBYTE[0x7000]
void main(void)
{ while(1)
{C1=0;C2=0;C3=0;C4=0;}
}。
A口:
#include<reg51.h>
#include<absacc.h>
void main(void)
{ while(1)
{
XBYTE[0x1055]=0;
XBYTE[0x10aa]=0;
}
}。
#include<reg51.h>
#include<absacc.h>
#define DP1 XBYTE[0x1000]
#define DP2 XBYTE[0x1001]
#define DP3 XBYTE[0x1002]
#define DP4 XBYTE[0x1003]
#define TIMER 0xff00
unsigned char table[]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void delay(void);
//void display(unsigned char x,y);
void main(void)
{ unsigned char i=0,num=0;
DP1=DP2=DP3=DP4=!i;
while(1)
{ for(num=0;num<10;++num) // 一
{ DP1=DP2=DP3=DP4=table[num]; // 同
delay( );} //
} // 顯
} // 示
/* { for(num=0;num<10;++num) //逐個(gè)顯示
{ i++;
if(i<=4) display(i,num);
else { i=1; display(i,num);}
delay( );
}
}
}
void display(unsigned char x,y)
{ if (x==1)
{ DP1=table[y]; }
else if(x==2)
{DP2=table[y];}
else if(x==3)
{DP3=table[y];}
else
{DP4=table[y];}
} */ //逐個(gè)顯示
void delay(void)
{ unsigned int i;
for(i=0;i<TIMER;++i);
}。
D/A轉(zhuǎn)換:
#include<regx51.h>
#include<absacc.h>
#include<ctype.h>
#define ADC XBYTE[0x3000]
#define DP1 XBYTE[0x1001]
#define DP2 XBYTE[0x1002]
#define DP0 XBYTE[0x1000]
#define DP3 XBYTE[0x1003]
#define TIMER 0xffff
unsigned char table[]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void delay(void); //延時(shí)函數(shù)
void display(unsigned char x,y); //?
void main(void)
{ unsigned char x=0,y=0,z=0,num=0;
DP1=DP2=!x;
DP0=DP3=0;
while(1)
{
ADC=x;
delay( ); //延時(shí)函數(shù)
x=ADC;y=x%10; num=1; display(num,y);
z=x/10; num=2; display(num,z);
}
}
void display(unsigned char x,y) {
if (x==1) DP1=table[y];
else DP2=table[y];
}
void delay(void) //延時(shí)函數(shù)
{ unsigned int i;
for(i=0;i<TIMER;++i);
}
A/D轉(zhuǎn)換:
#include<reg51.h>
#include<absacc.h>
#include<ctype.h>
#define ADC XBYTE[0x2000]
//#define DP1 XBYTE[0x0000]
//#define DP2 XBYTE[0x0001]
//#define DP3 XBYTE[0x0002]
//#define DP4 XBYTE[0x0003]
#define DP1 XBYTE[0x1003]
#define DP2 XBYTE[0x1002]
#define DP3 XBYTE[0x1001]
#define DP4 XBYTE[0x1000]
#define TIMER 0x8000
unsigned char table[ ]={0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F};
void delay(void);
void display(unsigned char x,y);
void main(void)
{ unsigned char x=0,y=0,z=0,w=0,num=0;
DP1=0x40;
// delay( );
while(1)
{
ADC=x;
delay( );
x=ADC;
w=x/100;
DP2=table[w];
// delay( );
y=x/10-w*10;
DP3=table[y];
// delay( );
z=x%10;
DP4=table[z];
// delay( );
}
}
/*void display(unsigned char x,y)
{
if (x=1) DP1=table[y];
else DP2=table[y];
}
*/
void delay(void)
{
unsigned int i;
for(i=0;i<TIMER;++i);
}
測(cè)溫總程序
/*********************************header files********************************/
#include<reg51.h>
#include<absacc.h>
#include<ctype.h>
/*********************************macroinstruction********************************/
#define ADC XBYTE[0x2000]
#define DAC XBYTE[0x3000]
#define DP1 XBYTE[0x1000]
#define DP2 XBYTE[0x1001]
#define DP3 XBYTE[0x1002]
#define DP4 XBYTE[0x1003]
#define KEY_line1 XBYTE[0x1004]
#define KEY_line2 XBYTE[0x1005]
#define KEY_line3 XBYTE[0x1006]
#define KEY_line4 XBYTE[0x1007]
#define TIMER 0x8000
#define TIMER1 0x0050
/**************************Digitron TABLE***********************/
Unsigned char table1[ ]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,
0x87,0xFF,0xEF}; //OPTO
unsigned char table[ ]={0x3F,0x06,0x5B,0x4F,0x66, 0x6D,
0x7D,0x07,0x7F,0x6F};
unsigned char option=0;
void display_AND_option(unsigned char x,y);
void keybord(void);
void delay(void);
void key_delay(void);
void ADC_Module(void);
void main(void)
{
DP1=DP4=0x00;
while(1)
{
option=0;
keybord();
if(option==1)
ADC_Module();
}
}
void delay(void)
{
unsigned int i;
for(i=0;i<TIMER;++i);
}
void key_delay(void)
{
unsigned int i;
for(i=0;i<TIMER1;++i);
}
void keybord(void)
{
unsigned char l_val,t=0;
while(1){
t=0;
l_val=KEY_line1;
key_delay();
if(l_val!=0x00){
key_delay();
if(l_val!=0x00)
switch(l_val){
case 0xf7:display_AND_option(1,1); break;
case 0xfb:display_AND_option(1,2);break;
case 0xfd:display_AND_option(1,3); break;
case 0xfe:display_AND_option(1,4);}
key_delay();
}
l_val=KEY_line2;
key_delay();
if(l_val!=0x00){
key_delay();
if(l_val!=0x00)
switch(l_val){
case 0xf7:display_AND_option(2,1); break;
case 0xfb:display_AND_option(2,2);break;
case 0xfd:display_AND_option(2,3); break;
case 0xfe:display_AND_option(2,4);}
key_delay();
}
l_val=KEY_line3;
key_delay();
if(l_val!=0x00){
key_delay();
if(l_val!=0x00)
switch(l_val){
case 0xf7:display_AND_option(3,1); break;
case 0xfb:display_AND_option(3,2);break;
case 0xfd:display_AND_option(3,3); break;
case 0xfe:display_AND_option(3,4);}
key_delay();
}
l_val=KEY_line4;
key_delay();
if(l_val!=0x00){
key_delay();
if(l_val!=0x00)
switch(l_val){
case 0xf7:display_AND_option(4,1); break;
case 0xfb:display_AND_option(4,2);break;
case 0xfd:display_AND_option(4,3); break;
case 0xfe:display_AND_option(4,4);}
key_delay();
}
if(option!=t)
break;
// else
}
}
void ADC_Module(void)
{
unsigned char x=0,y=0,z=0,w=0,m=0,num=0,n=0;
unsigned int i,j;
DP1=DP2=DP3=DP4=0x76;
delay( );
delay( );
for(i=0;i<TIMER;i++)
{
for(j=0;j<TIMER;j++)
{
ADC=x;
delay( );
x=ADC;
m=x*3.9;
if(m<0){
DP1=0x40;
}
else DP1=0x00;
y=m/100;
DP2=table[y];
z=m/10-y*10;
DP3=table1[z];
n=m%10;
DP4=table[n];
delay( );
}
if(i==(TIMER-1))DP1=DP2=DP3=DP4=0x00;
}
}
void display_AND_option(unsigned char x,y)
{
unsigned char t1=0,t2=0;
option=4*(x-1)+y;
t1=option%10;DP3=table[t1];
t2=option/10;DP2=table[t2];
}
心得與體會(huì)
很早就聽說我們協(xié)會(huì)今年寒假要搞培訓(xùn),由于去年我沒能參加寒假培訓(xùn)我很后悔,所以我今年就一直等著培訓(xùn)的消息。培訓(xùn)的通知?jiǎng)偝鰜砦揖蛨?bào)了名,同時(shí)還介紹了班上的同學(xué)參加。我要好好把握這次機(jī)會(huì),提高自己電子設(shè)計(jì)與制作上的能力。在剛過了年的初八我就從家里出發(fā)了。
培訓(xùn)的課程對(duì)于我們來說,還是很有難度的。在前三天的時(shí)間里,老師給我們講了課。我感覺到自己知識(shí)的匱乏,老師的講課我有很多都聽不懂,很多知識(shí)和名詞都不是很清楚起含義。于是我就通過查資料,看書和問的途徑,盡可能的弄懂這些內(nèi)容。雖然有些知識(shí)我還是不太懂,但現(xiàn)在我已經(jīng)知道個(gè)大概了。
培訓(xùn)的重頭戲有兩個(gè):一個(gè)是各個(gè)模塊的硬件制作;一個(gè)是程序的調(diào)試。在硬件的制作中,我們遇到了很多的問題。比如:各集成芯片的引腳功能和分布不清楚,二極管,三極管的極性不是特別熟悉。我和其他同學(xué),分工合作,查資料,每個(gè)人查找一部分的集成芯片的功能和引腳圖。查到資料并看懂了之后,我們就知道了如何去完成電路的焊接。還有每個(gè)模塊都采用萬能板焊接,使得整個(gè)的布線也有些不合理,使得我的各個(gè)模塊連接在一起之后看起來很復(fù)雜,到處都是線。這樣不利于查錯(cuò),所以當(dāng)我有的地方錯(cuò)了之后我要用很多時(shí)間去查錯(cuò)。當(dāng)我把單片機(jī)接好后,通電源時(shí)結(jié)果單片機(jī)發(fā)熱了,我趕緊取下來一看,原來是太激動(dòng)了,把單片機(jī)安反了。在連接溫度傳感器LM35時(shí),由于沒看對(duì)LM35的特性,將其接反燒掉一個(gè)。在程序的調(diào)試過程中,我的A1、A2所出來的波形跟課件上的也有些不同,多出了一條縫。結(jié)果看其他同學(xué)的也是這樣,才知道不是我焊接的問題,而是其他地方出了問題。在調(diào)試過程中,我對(duì)原理有了更清楚的理解。通過老師的講解,同學(xué)間的交流和自己的學(xué)習(xí),對(duì)單片機(jī)等集成模塊有了更深的理解,知道了其功能和使用方法。在調(diào)試的過程中發(fā)現(xiàn)了更多問題。首先是調(diào)試單片機(jī)板。我們把程序中的錯(cuò)誤進(jìn)行了修改,尤其是地址,并且確定無誤后,燒入單片機(jī)。在模數(shù)的調(diào)試過程中,我一直出不了結(jié)果我花了整整兩天去檢查沒弄出來,我重新焊了一個(gè),結(jié)果還是不行,最后才發(fā)現(xiàn)我的74LS245與74LS138兩個(gè)芯片一起壞了。當(dāng)換了兩個(gè)芯片后一下就好了。
這次的培訓(xùn),我還學(xué)會(huì)了示波器,知道怎樣調(diào)波形了。同時(shí)我也學(xué)習(xí)了Keil μvison、AVR fighter等軟件和硬件工具的使用,對(duì)單片機(jī)有了基本的運(yùn)用能力,在實(shí)踐方面也積累了不少經(jīng)驗(yàn),在電子設(shè)計(jì)方面,有了一定的基礎(chǔ),這次培訓(xùn)使我的興趣有了拓展,我們有了獲得新知的強(qiáng)烈渴望。
聯(lián)系客服