仿真圖proteus7.8及以上
程序編譯器:keil 4/keil 5
編程語言:C語言
設(shè)計編號:S0067
1. 主要功能:
基于51單片機(jī)的煙霧報警器proteus仿真設(shè)計
1.LED數(shù)碼管
顯示煙霧報警值和檢測到的煙霧值;
2.可以通過按鍵調(diào)整煙霧報警濃度值;
3.煙霧濃度低于報警值工作指示燈綠燈亮。
煙霧濃度高于閾值蜂鳴器報警,工作指示燈紅燈亮;
4.通過ADC0832
采集滑動變阻器模擬MQ-2
電壓變化。
需注意仿真中51單片機(jī)芯片是兼容的,AT89C51,AT89C52是51單片機(jī)的具體型號,內(nèi)核是一樣的。相同的原理圖里,無論stc還是at都一樣,引腳功能都是一樣的,程序是兼容的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機(jī)芯片。
2. 講解視頻:
講解視頻包含仿真運(yùn)行講解和代碼講解
3. 仿真
打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。
4. 程序代碼
使用keil4或者keil5編譯,代碼有注釋,可以結(jié)合報告理解代碼含義。
完整代碼見文章下載鏈接
#include "reg51.h"
#include "intrins.h"
sbit CLK= P1^1;//時鐘,初始狀態(tài)為0
sbit DI= P1^2;//數(shù)據(jù)輸入
sbit DO= P1^3; // 數(shù)據(jù)輸出
sbit CS= P1^0;
sbit LED_RED=P3^4; //紅燈
sbit LED_GREEN=P3^5; //綠燈
sbit beep=P3^0;//蜂鳴器
unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned int num=0;//煙霧
unsigned int limit=1500;//閥值
unsigned char beepflag;
unsigned int cnt=0;
/*********************************************
讀取ADC
**********************************************/
unsigned char ADC()//通道ch0
{
unsigned char temp0,temp1,i;
CS=0;
temp0=0;
temp1=0;
_nop_();
_nop_();
DI=1;//開始位
_nop_();
_nop_();
CLK=1;
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
DI=0;
_nop_();
_nop_();
//選擇通道0
DI=1;
_nop_();
CLK=1;//上升沿DI=1
_nop_();
CLK=0;//1個下降沿DI=1
_nop_();
DI=0;
_nop_();
CLK=1;
_nop_();
CLK=0;//第3個上升沿DI=0
_nop_();
DI=1;
//********通道選擇結(jié)束開始讀取轉(zhuǎn)換后的二進(jìn)制數(shù)****
//下降沿讀數(shù),一下進(jìn)行判斷和處理,共8次
for(i=0;i<8;i++)
{
temp0=temp0<<1;
CLK=1;
if(DO)
temp0++;
_nop_();
CLK=0;
}
for(i=0;i<8;i++)
{
temp1=temp1>>1;
CLK=1;
if(DO)
temp1=temp1 +0x80;
_nop_();
CLK=0;
}
CS=1;
return temp0;
}
void delay(unsigned int i)//延時
{
while(i--);
}
void main()
{
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
EX0=1;//打開外部中斷0
EX1=1;//打開外部中斷1
IT0=1;//下降沿觸發(fā)
IT1=1;//下降沿觸發(fā)
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
beepflag = 0;
while(1)
{
P0=smgduan[num/1000];//顯示煙霧度
P2=0xfe;
delay(100);
P2=0xff;
P0=smgduan[num%1000/100];//顯示煙霧度
P2=0xfd;
delay(100);
P2=0xff;
P0=smgduan[num%100/10];//顯示煙霧度
// P0 =P0|0x80; //加小數(shù)點
P2=0xfb;
delay(100);
P2=0xff;
P0=smgduan[num%10];//顯示煙霧度
P2=0xf7;
delay(100);
P2=0xff;
P0=smgduan[limit/1000];//顯示煙霧度閥值
P2=0xef;
delay(100);
P2=0xff;
P0=smgduan[limit%1000/100];//顯示煙霧度閥值
P2=0xdf;
delay(100);
P2=0xff;
P0=smgduan[limit%100/10];//顯示煙霧度閥值
P2=0xbf;
delay(100);
P2=0xff;
P0=smgduan[limit%10];//顯示煙霧度閥值
P2=0x7f;
delay(100);
P2=0xff;
}
}
void Timer0() interrupt 1//定時器中斷
{
TH0=0X3C; //50ms中斷
TL0=0XB0;
if(cnt==20){//1秒一次
cnt = 0;
// if(num>limit){//報警
// if(beepflag<10)beepflag++;//10秒計數(shù)
// }else{
// beep=1;
// beepflag = 0;
// }
//
// if(beepflag<10&&num>limit*10){//響10秒
// beep=0;
// }else{
// beep=1;
// }
if(num>limit){//報警
beep=0;
LED_RED=0; //紅色報警燈 亮
LED_GREEN=1; //綠色報警燈 滅
}else{
beep=1;
LED_RED=1; //紅色報警燈 滅
LED_GREEN=0; //綠色報警燈 亮
}
}
cnt++;
}
void jia() interrupt 0//按鍵 外部中斷0處理函數(shù)
{
if(limit<2500)
limit=limit+10;
else
limit=0;
}
void jian() interrupt 2//按鍵 外部中斷1處理函數(shù)
{
if(limit>0)
limit=limit-10;
else
limit=2500;
}
5. 設(shè)計報告
4947字設(shè)計報告,內(nèi)容包括硬件設(shè)計、軟件設(shè)計、軟硬件框圖、調(diào)試、結(jié)論等
6. 設(shè)計資料內(nèi)容清單&&下載鏈接
資料設(shè)計資料包括仿真,程序代碼、講解視頻、功能要求、設(shè)計報告、軟硬件設(shè)計框圖等。
0、常見使用問題及解決方法–必讀?。。。?/p>
1、仿真圖
2、程序源碼
3、功能要求
4、開題報告
5、設(shè)計報告
6、軟硬件流程框圖
7、講解視頻
Altium Designer 安裝破解
KEIL+proteus 單片機(jī)仿真設(shè)計教程
KEIL安裝破解
Proteus安裝
Proteus簡易使用教程
單片機(jī)學(xué)習(xí)資料
相關(guān)數(shù)據(jù)手冊
答辯技巧
設(shè)計報告常用描述
鼠標(biāo)雙擊打開查找嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計.url
網(wǎng)盤下載鏈接:
https://docs.qq.com/doc/DS1VFWmlRSVRCR3Rl