PIC單片機(jī)實(shí)例一:PROTEUS模擬豆?jié){機(jī)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1引言
目前,人們對(duì)生活的質(zhì)量要求越來(lái)越高,人們?cè)诿τ诠ぷ髦?,豆?jié){機(jī)是一種新型的家用飲料機(jī),以黃豆為原料,直接加工成熟的熱豆?jié){。若在黃豆中配以芝麻、花生、杏仁等佐料,可以做出各種風(fēng)味的鮮美飲料。 豆?jié){機(jī)由粉碎黃豆的攪拌機(jī)、豆?jié){加熱器和控制電路三大部分組成。用單片機(jī)研制的全自動(dòng)豆?jié){機(jī)的控制電路,只要按下啟動(dòng)按鍵,豆?jié){機(jī)就開始工作,一會(huì)兒就能喝到美味又營(yíng)養(yǎng)的豆?jié){。整個(gè)過(guò)程由單片機(jī)全自動(dòng)控制,讓您用起來(lái)更加地方便、更加的安全。特用PROTEUS模擬,體驗(yàn)單片機(jī)的樂(lè)趣.
2豆?jié){機(jī)的功能
單獨(dú)加熱:具有單獨(dú)加熱功能,當(dāng)達(dá)到規(guī)定溫度時(shí)停止加熱。
自動(dòng)工作:流程如下:在有水的情況下,電熱管開始加熱,當(dāng)水溫上升到82℃時(shí),停止加熱,電機(jī)開始工作。電機(jī)每工作30S然后停止5S為一個(gè)周期,持續(xù)工作5個(gè)周期.當(dāng)豆?jié){產(chǎn)生的泡沫碰到防溢電極時(shí),電機(jī)停轉(zhuǎn),等泡沫降下,電機(jī)繼續(xù)工作,當(dāng)泡沫碰到防溢電極10次后電機(jī)持續(xù)工作5個(gè)周期后,結(jié)束并報(bào)警。
全過(guò)程處于無(wú)水報(bào)警,停止工作狀態(tài):在單獨(dú)加熱、自動(dòng)工作期間,任何時(shí)刻提起豆?jié){機(jī),都會(huì)停止工作并報(bào)警。當(dāng)重新將豆?jié){機(jī)放入水中后,回復(fù)以前工作狀態(tài)。
3系統(tǒng)總體方案介紹
硬件組成如圖所示,3個(gè)傳感器分別測(cè)量水位、溢出、溫度,2個(gè)按鍵,1個(gè)蜂鳴器輸出口,2種加熱方式選擇。
其中,RB1口通過(guò)繼電器觸點(diǎn)接的應(yīng)是電熱絲,但PROTEUS庫(kù)里沒(méi)有,只好用一個(gè)LED代替一下,只要燈亮說(shuō)明電熱絲正在加熱.另外,三個(gè)傳感器均用開關(guān)表示,欠水檢測(cè)傳感器的開關(guān)閉后說(shuō)明有水可以工作,否則不能正常開啟;溫度傳感器開關(guān)閉合說(shuō)明加熱到指定溫度;溢水檢測(cè)傳感器開關(guān)閉合說(shuō)明豆?jié){泡沫溢出.上述三個(gè)開關(guān)均只能手工開啟閉合模擬.選用單片機(jī)為PIC16F877A.
4.程序(C語(yǔ)言)
#include
unsigned int i=1,j=1,k=1,l,m,n=1,x,y,z;//定義程序用到的變量
void sound(void)//警報(bào)聲頻率子程序
{
for(z=1;z<=10;z++)
{
for(x=1;x<=100;x++)
{
RB2=0;
}
for(y=1;y<=100;y++)
{
RB2=1;
}
}
}
void main(void)//主程序
{//初始化
TRISB=0X00;
TRISC=0XFF;
PORTB=0X20;//電源指示開
while(1)
{
if(RC0==0)//檢測(cè)是否欠水{
if(RC4==0)//檢測(cè)加熱按鈕是否按下
{
while(RC1==1&&RC2==1)//檢測(cè)溫度是否達(dá)到規(guī)定,是否有溢出
{
RB6=1;//加熱指示
RB1=1;//加熱
}
sound();//加熱完畢報(bào)警
}
else
{
RB6=0;//關(guān)閉加熱指示
RB1=0;//關(guān)閉電熱絲
}
if(RC3==0)//全自動(dòng)模式
{//定時(shí)器1初始化
T1CON=0X30;
TMR1IF=0;
TMR1IE=1;
TMR1L=0X2B;
TMR1H=0XCF;
while(RC1==1&&i<=6000)//加熱10分鐘
{
TMR1ON=1;
RB6=1;//加熱
RB1=1;
if(TMR1IF==1)
{
TMR1ON=0;
TMR1IF=0;
TMR1L=0X2B;//重新給初值
TMR1H=0XCF;
i++;
}
}
RB6=0;//停止加熱
RB1=0;
sound();//加熱結(jié)束報(bào)警
for(m=1;m<=5&&n<=10;m++)//電機(jī)循環(huán)5個(gè)周期
{
while(j<=300&&n<=10)//電機(jī)一周期工作30S
{
TMR1ON=1;
if(RC2==0)
{
n++;
}
while(RC2==0)
{
RB0=0;
RB7=0;
}
RB0=1;//MOTOR IS ON
RB7=1;
if(TMR1IF==1)
{
TMR1ON=0;
TMR1IF=0;
TMR1L=0X2B;
TMR1H=0XCF;
j++;
}
}
while(m==5)//5周期結(jié)束,報(bào)警5聲"滴"
{
sound();
for(l=1;l<=15000;l++)
{;}
sound();
for(l=1;l<=20000;l++)
{;}
sound();
for(l=1;l<=15000;l++)
{;}
sound();
for(l=1;l<=20000;l++)
{;}
sound();
m++;
}
sound();//每周期結(jié)束報(bào)警一聲
while(k<=50&&n<=10)//電機(jī)每周期停止5S
{
TMR1ON=1;
RB0=0;
RB7=0;
if(TMR1IF==1)
{
TMR1ON=0;
TMR1IF=0;
TMR1L=0X2B;
TMR1H=0XCF;
k++;
}
}
j=0;
k=0;
}
RB0=0;
RB7=0;
n=0;
}
}
}
}(由PROTEUS仿真通過(guò))