里面只有仿真原理圖,不含程序,希望可以幫到大家
本系統(tǒng)以AT89C51單片機(jī)為核心,有按鍵控制電路,DS18B20溫度檢測(cè)電路,LCD1602顯示電路,加熱電路。DS18B20溫度傳感器實(shí)時(shí)檢測(cè)溫度并進(jìn)行轉(zhuǎn)化,檢測(cè)到的溫度值通過LCD1602液晶屏進(jìn)行實(shí)時(shí)顯示,并可以通過單片機(jī)AT89C51外部擴(kuò)展的按鍵電路來設(shè)定溫度值,通過加熱電路對(duì)水溫進(jìn)行控制,升溫時(shí)開啟加熱電路,降溫時(shí)關(guān)閉加熱電路,實(shí)現(xiàn)對(duì)溫度在0℃~100℃控制的自動(dòng)化。
主要技術(shù)指標(biāo)及要求:
1、單片機(jī)實(shí)現(xiàn)水溫度控制,水溫范圍為0~100℃,測(cè)量精度為1℃;
2、實(shí)時(shí)顯示當(dāng)前的溫度值;
3、具有溫度設(shè)定和加熱功能。
設(shè)計(jì)內(nèi)容:
1、分析設(shè)計(jì)要求,明確性能指標(biāo);查閱資料、設(shè)計(jì)方案分析對(duì)比。
2、論證并確定合理的總體設(shè)計(jì)方案,繪制總體結(jié)構(gòu)框圖,分析工作原理。
3、完成各單元具體電路的設(shè)計(jì):?jiǎn)纹瑱C(jī)最小系統(tǒng)、溫度測(cè)量與控制、按鍵、顯示等電路。包括元器件選擇、工作原理分析。
4、設(shè)計(jì)軟件流程圖及源程序,完成系統(tǒng)的Proteus仿真調(diào)試。
2.1核心電路設(shè)計(jì)與論證方案一:采用AT89C51單片機(jī)設(shè)計(jì)的水溫控制器,AT89C51運(yùn)算速度高,外圍擴(kuò)展電路容易,軟件編程簡(jiǎn)單容易,功耗低,體積小,成本低。 方案二:采用FPGA,它的名稱是現(xiàn)場(chǎng)可編程門列陣,它是集成度最高的一種電路,一些較為復(fù)雜的數(shù)學(xué)式子和邏輯運(yùn)算都可以通過它來完成,運(yùn)算精度高。可通過EDA軟件進(jìn)行仿真。 本系統(tǒng)選用方案一作為設(shè)計(jì)方案。在水溫控制系統(tǒng)中穩(wěn)定性好,且制作成本較低,符合設(shè)計(jì)要求。 2.2 顯示模塊論證方案一:用四位數(shù)碼管顯示,需要數(shù)碼管驅(qū)動(dòng)電路,需要占用8條數(shù)據(jù)線和4條地址線,共12個(gè)引腳。顯示內(nèi)容較少,而且需要選擇動(dòng)態(tài)掃描方式。 方案二:選用LCD1602顯示密碼。顯示內(nèi)容豐富,可以顯示字符,程序配套,易于編程,8條數(shù)據(jù)線和rw讀寫、en片選、rs數(shù)據(jù)/命令選擇線,共需11個(gè)引腳,無驅(qū)動(dòng)電路。 綜上所述,選擇方案二顯示。 2.3 溫度檢測(cè)電路模塊方案一:采用溫度傳感器AD590,AD590檢測(cè)輸出的信號(hào)是模擬信號(hào),因此需要變成數(shù)字信號(hào),需要A/D轉(zhuǎn)換電路。 方案二:采用DS18B20。DS18B20將半導(dǎo)體溫敏器件、A/D轉(zhuǎn)換器、存儲(chǔ)器等做在一個(gè)很小的集成電路芯片上。測(cè)溫范圍為-55℃~+125℃,測(cè)溫精度為士0.5℃。 方案二與方案一相比,設(shè)計(jì)電路簡(jiǎn)單,無需進(jìn)行A/D轉(zhuǎn)換,所以選擇方案二。 綜上,本文采用AT89C51單片機(jī)位主控元件,LCD1602液晶屏顯示方式,以溫度傳感器DS18B20為溫度檢測(cè)電路,加上按鍵電路對(duì)溫度值設(shè)定以及加熱電路,構(gòu)成一個(gè)安全可靠的水溫控制系統(tǒng)。
2.4總體設(shè)計(jì)本設(shè)計(jì)采用以AT89C51單片機(jī)控制方案。 利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性,不但能實(shí)現(xiàn)基本的溫度顯示與檢測(cè)功能,還能根據(jù)實(shí)際需要添加鍵盤控制電路、加熱功能。系統(tǒng)結(jié)構(gòu)框圖如圖2.1所示。
圖2.1系統(tǒng)結(jié)構(gòu)框圖
第3章 單元電路設(shè)計(jì)
3.1按鍵控制模塊本設(shè)計(jì)中共設(shè)置了3個(gè)按鍵,分別為溫度設(shè)置按鍵、加溫度按鍵、減溫度按鍵。如圖3.1所示,為按鍵控制電路。從上到下分別為按鍵K1、K2、K3 ,K1為溫度設(shè)置按鍵,K2為加溫度按鍵,K3為減溫度按鍵。通過溫度設(shè)置按鍵K1、K2、K3可以設(shè)置溫度,在液晶屏上顯示出來,并且可根據(jù)設(shè)置的溫度與實(shí)際溫度進(jìn)行大小比較,進(jìn)而控制加熱電路。
圖3.1 按鍵控制電路 3.2顯示模塊本設(shè)計(jì)采用LCD1602作為顯示裝置,LCD1602顯示屏具有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點(diǎn),因此,在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中得到越來越廣泛的應(yīng)用,現(xiàn)在字符型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。可以顯示兩行,每行16個(gè)字符,采用單+5V電源供電,外圍電路配置簡(jiǎn)單,價(jià)格便宜,具有很高的性價(jià)比。 如圖3.2所示,為L(zhǎng)CD1602液晶顯示電路。其中液晶屏的RS、RW、EN引腳分別接到單片機(jī)的2.2、2.1、2.0引腳,D0~D7引腳分別與單片機(jī)的P0.0~P0.7口相接。RP1為電阻排,上拉電壓。LCD1602在運(yùn)行時(shí)顯示兩行字,第一行顯示字為英文字母“Temperture”,第二行的顯示為溫度值。
圖3.2 顯示電路 3.3溫度檢測(cè)模塊連續(xù)3次輸入密碼錯(cuò)誤將產(chǎn)生報(bào)警,通過蜂鳴器來實(shí)現(xiàn)報(bào)警功能。每當(dāng)有按鍵按下時(shí),蜂鳴器都會(huì)鳴叫一聲。當(dāng)密碼輸入正確,順利開鎖時(shí),發(fā)光二極管就會(huì)被點(diǎn)亮,上鎖時(shí),二極管熄滅。電路圖如圖3.3所示。
圖3.3 溫度檢測(cè)電路 3.4加熱模塊當(dāng)設(shè)置溫度高于當(dāng)前溫度傳感器DS18B20檢測(cè)到的溫度時(shí),單片機(jī)AT89C51的P1.6引腳會(huì)輸出低電平,使繼電器開關(guān)閉合,加熱電路接通。加熱電路如圖3.4所示。
圖3.4 加熱電路 3.5單片機(jī)最小系統(tǒng)AT89C51 是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能 CMOS8 位微處理器,俗稱單片機(jī)。該器件采用 ATMEL 高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的 MCS-51 指令集和輸出管腳相兼容。由于將多功能 8位 CPU 和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL 的AT89C51 是一種高效微控制器。單片機(jī) XIAL1 和XIAL2 別接 30PF 的電容,中間再并聯(lián)一個(gè)12MHz的晶振,形成單片機(jī)的晶振電路。由AT89C51,晶振電路和復(fù)位電路共同組成了單片機(jī)最小系統(tǒng),如圖3.5所示,單片機(jī)最小系統(tǒng)電路圖。
圖3.5 單片機(jī)最小系統(tǒng)電路圖
第4章 系統(tǒng)軟件設(shè)計(jì)
4.1 主程序的設(shè)計(jì)本設(shè)計(jì)第一次進(jìn)入此系統(tǒng)的時(shí)候,開始會(huì)進(jìn)行初始化操作,首先由溫度傳感器DS18B20開始檢測(cè)溫度,然后在液晶屏LCD上顯示檢測(cè)到的溫度,當(dāng)有按鍵按下時(shí),系統(tǒng)會(huì)對(duì)設(shè)置的溫度進(jìn)行檢測(cè),并與實(shí)際溫度比較大小,判斷是否開啟加熱電路。具體流程如圖4.1所示。
圖4.1 主程序流程圖 4.2 DS18B20程序設(shè)計(jì)DS18B20溫度傳感器程序的主要功能包括初始化,數(shù)據(jù)讀取與寫入數(shù)據(jù),執(zhí)行完一系列的命令后返回。如圖4.2所示,為DS18B20程序設(shè)計(jì)圖。
圖4.2 DS18B20程序設(shè)計(jì)圖
第5章 系統(tǒng)仿真與調(diào)試使用Proteus繪制原理圖,然后將Keil生成的hex程序文件載入到單片機(jī)中,點(diǎn)擊運(yùn)行: 如圖5.1所示,為常溫時(shí)顯示溫度圖。常溫時(shí)溫度傳感器檢測(cè)到的溫度,顯示在液晶屏LCD1602上。
圖5.1 常溫時(shí)顯示溫度 如圖5.2 所示,為常溫時(shí),溫度傳感器檢測(cè)溫度的仿真圖。
圖5.2 溫度傳感器檢測(cè)溫度
2.按鍵控制仿真 當(dāng)設(shè)置溫度高于傳感器檢測(cè)到的溫度時(shí),系統(tǒng)會(huì)啟動(dòng)加熱電路。用燈泡代替加熱器,燈泡發(fā)光,說明加熱器在工作,燈泡不發(fā)光,說明加熱器未工作。如圖5.3所示,為設(shè)置溫度為95℃時(shí)的仿真圖,圖5.4為設(shè)置溫度后,加熱電路加熱時(shí)的仿真圖。
圖5.3 設(shè)置升溫仿真圖
圖5.4 加熱電路開啟加熱 溫度低于傳感器檢測(cè)到的溫度時(shí),加熱電路自動(dòng)關(guān)閉,如圖5.4所示,為設(shè)置降溫仿真圖,如圖5.5所示,為加熱電路關(guān)閉加熱。
圖5.4 設(shè)置降溫仿真圖
圖5.5 加熱電路關(guān)閉加熱
4.3 按鍵程序設(shè)計(jì) 開始的時(shí)候,系統(tǒng)會(huì)判斷是否有按鍵按下,如果沒有按鍵按下,系統(tǒng)會(huì)返回,若有按鍵按下,系統(tǒng)會(huì)判斷,加溫度按鍵和減溫度按鍵,然后根據(jù)要求判斷是否啟動(dòng)加熱電路。具體流程如4.3所示。
圖4.3 按鍵程序流程圖 C語言程序代碼:
sbit SET=P1^0; //定義調(diào)整鍵
sbit DEC=P1^1; //定義減少鍵
sbit ADD=P1^2; //定義增加鍵
sbit ALAM=P1^4; //定義繼電器加熱引腳
uchar x=0;
signed char m; //溫度值全局變量
uchar n; //溫度值全局變量
uchar set_st=0; //設(shè)置狀態(tài)標(biāo)志
signed char shangxian=80; //上限報(bào)警溫度,默認(rèn)值為80
signed char xiaxian=20; //下限報(bào)警溫度,默認(rèn)值為20
void main(void)
{
uint z;
InitTimer(); //初始化定時(shí)器
EA=1; //全局中斷開關(guān)
TR0=1; //打開定時(shí)器定時(shí)開關(guān)
ET0=1; //開啟定時(shí)器0
IT0=1; //外部中斷下降沿有效
IT1=1;
check_wendu();
check_wendu(); //讀取兩次溫度,防止開機(jī)讀取到85°C,使繼電器誤操作
for(z=0;z<300;z++) //開機(jī)畫面
{
Disp_init();
}
while(1) //while循環(huán)
{
if(SET==0) //判斷設(shè)置鍵是否按下
{
Delay(2000); //延時(shí)去抖
do{}while(SET==0); //執(zhí)行空語句,判斷按鍵是否松開
set_st++;x=0;shanshuo_st=1; //設(shè)置鍵松開后將設(shè)置變量加1 if(set_st>2)set_st=0; //當(dāng)設(shè)置完成時(shí),退出設(shè)置
}
if(set_st==0) //正常工作時(shí)
{
EX0=0; //關(guān)閉外部中斷0
EX1=0; //關(guān)閉外部中斷1
check_wendu();
Disp_Temperature(); //檢測(cè)溫度
}
else if(set_st==1) //設(shè)置上限時(shí)
{
ALAM=1;
EX0=1; //開啟外部中斷0
EX1=1; //開啟外部中斷1
if(x>=10){shanshuo_st=~shanshuo_st;x=0;}
else if(set_st==2) //設(shè)置下限時(shí)
{
ALAM=1;
EX0=1; //開啟外部中斷0
EX1=1; //開啟外部中斷1
if(x>=10){shanshuo_st=~shanshuo_st;x=0;}
}
}
}
void timer0(void) interrupt 1
{
TH0=0x3c;
TL0=0xb0; //12MHz晶振時(shí)定時(shí)50ms
x++;
}
void int0(void) interrupt 0
{
EX0=0; //關(guān)外部中斷0
if(DEC==0&&set_st==1) //設(shè)置上限時(shí)按下減按鍵
{
do{ Disp_alarm(shangxian); //顯示設(shè)置}
while(DEC==0);
shangxian--; //將上限值減1
if(shangxian<=xiaxian)shangxian=xiaxian+1; //上限值最小比下限值大1
}
else if(DEC==0&&set_st==2) //設(shè)置下限時(shí)按下減按鍵
{
do
{
Disp_alarm(xiaxian);
}
while(DEC==0);
xiaxian--; //下限減1
if(xiaxian<0)xiaxian=0; //減到0時(shí)停止
}
}
void int1(void) interrupt 2
{
EX1=0; //關(guān)外部中斷1
if(ADD==0&&set_st==1) //設(shè)置上限時(shí)按下加按鍵
{
do
{
Disp_alarm(shangxian);
}
while(ADD==0);
shangxian++; //上限值加1
if(shangxian>100)shangxian=100;//最大加到100
}
else if(ADD==0&&set_st==2) //設(shè)置下限時(shí)按下加按鍵
{
do{ Disp_alarm(xiaxian); }
while(ADD==0);
xiaxian++; //下限加
if(xiaxian>=shangxian)xiaxian=shangxian-1; //下限最大加到上限值減1
}
}
本系統(tǒng)由單片機(jī)最小系統(tǒng)、按鍵電路、LCD顯示和溫度檢測(cè)電路組成。系統(tǒng)能完成溫度的檢測(cè)、設(shè)置溫度、加熱的功能,采用DS18B20溫度傳感器實(shí)時(shí)檢測(cè)溫度并進(jìn)行轉(zhuǎn)化,檢測(cè)到的溫度值通過LCD1602液晶屏進(jìn)行實(shí)時(shí)顯示,并可以通過單片機(jī)AT89C51外部擴(kuò)展的按鍵電路來設(shè)定溫度值,通過加熱電路對(duì)水溫進(jìn)行控制,升溫時(shí)開啟加熱電路,降溫時(shí)關(guān)閉加熱電路,實(shí)現(xiàn)對(duì)溫度在0℃~100℃控制的自動(dòng)化。
本文設(shè)計(jì)的基于單片機(jī)AT89C51的水溫控制器具有簡(jiǎn)單的軟硬件設(shè)計(jì)電路、低廉的開發(fā)成本、簡(jiǎn)便的操作方法,并通過Proteus仿真實(shí)現(xiàn)了預(yù)期的功能,還能添加蜂鳴器報(bào)警、制冷電路等功能。
但是設(shè)計(jì)水溫控制器需要結(jié)合實(shí)際綜合考慮很多因素,因此該水溫控制器設(shè)計(jì)需要在實(shí)際中進(jìn)一步完善和改進(jìn)。另外,在系統(tǒng)應(yīng)用程序方面,該設(shè)計(jì)只實(shí)現(xiàn)了對(duì)水進(jìn)行加熱、LCD顯示、簡(jiǎn)單按鍵控制等功能,要想在現(xiàn)實(shí)生活中推廣,還必須針對(duì)實(shí)際應(yīng)用場(chǎng)合的需要,進(jìn)一步完善系統(tǒng)功能的程序具有一定的推廣價(jià)值。
本人初學(xué),僅供參考,存在錯(cuò)誤和不足之處,請(qǐng)大家回帖多多指教,切勿照搬,文件下載:
注意附件里面只有仿真和hex,沒有代碼,求補(bǔ)全 求指導(dǎo):
只有仿真圖,沒有代碼.7z
(231.59 KB, 下載次數(shù): 26)
2022-4-25 03:54 上傳
點(diǎn)擊文件名下載附件
|