資源簡介
采用51單片機寫的帶有AD轉換的MQ-2煙霧傳感器源代碼

代碼片段和文件信息
//#include
#include?
//#include??//STC的新頭文件
#include?
/*****************************************************************************
*??初始化數據 ?????????*
* ?*
******************************************************************************/
sbit?CS=P0^0;
sbit?RDD=P0^1;
sbit?WRR=P0^2;
sbit?INTR=P0^4;
sbit?shi=P0^6;
typedef?unsigned?char?uchar;
typedef?unsigned?int??uint;
sbit???MildLED=P1^0;
sbit???GeneralLED=P1^1;
sbit???MoreseriousLED=P1^2;
sbit???SeriousLED=P1^3;
sbit???Beep=P3^0;
uchar?timer0htimer0ltime;
uint?Flag; //判斷最高位
#define?AD_SPEED?0x40?//01000000???1??????0?????140?個時鐘周期轉換一次
uchar?get12;
/*****************************************************************************
*??延時子程序 ?????*
* ?*
******************************************************************************/
void?delay50us(unsigned?int?us)
{
unsigned?char?j;
for(;us>0;us--)
for(j=19;j>0;j--);
}
void?delay(uchar?delay_time)????????//?延時函數
{
????uint?n;
????while(delay_time--)?
????{?
????????n?=?6000;
????????while(--n);
????}
}
/*****************************************************************************
*??AD轉換 ?????????*
* ?*
******************************************************************************/
/*void?ADchange()
{
????????WRR=1;
CS=1;
RDD=1;
CS=0;
delay50us(1);
WRR=0;
delay50us(2);
WRR=1;
CS=1;
delay50us(1);
//INTR=0;
delay50us(10);
CS=0;
RDD=0;
//INTR=1;
delay50us(1);
value=P2;
RDD=1;
???? CS=1;
delay50us(15000);
}*/
uchar?get_AD_result(uchar?channel)??//AD轉換部分
{
????uint?AD_finished=0;????????????//存儲?A/D?轉換標志
????ADC_RES?=?0;????????????????????//高八位
????ADC_RESL?=?0;???????????????????//低二位(本例未使用)?
????channel?&=?0x07;????????????????//00000111?清0高5位
????ADC_CONTR?=?AD_SPEED;
????_nop_();
????ADC_CONTR?|=?channel;???????????//選擇?A/D?當前通道
????_nop_();
????ADC_CONTR?|=?0x80;??????????????//啟動?A/D?電源
????delay(1);???????????????????????//使輸入電壓達到穩定
????ADC_CONTR?|=?0x08;??????????????//00001000?令?ADCS?=?1?啟動A/D轉換?
????AD_finished?=?0;
????while?(AD_finished?==0?)????????//等待A/D轉換結束
????{
????????AD_finished?=?(ADC_CONTR?&?0x10);?//00010000?測試A/D轉換結束否
????}
????ADC_CONTR?&=?0xE7;??????????????//11110111?清?ADC_FLAG?位?關閉A/D轉換?
????return?(ADC_RES);???????????????//返回?A/D?高?8?位轉換結果
//Flag=ADC_CONTR&0x7F; //返回最高位。判斷電壓跳變
}
?
/*****************************************************************************
*??蜂鳴器報警 ?????*
* ?*
******************************************************************************/
/*void?delay(unsigned?char?t)
???{
???unsigned?char?t1;
???unsigned?long?t2;
???for(t1=0;t1 ???{
????for(t2=0;t2<8000;t2++)
???????{
????????;
????????}
???}
???TR0=0;
?}
void?t0int()?interrupt?1
{
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-03-30?11:20??煙霧調試程序\
?????文件????????5115??2002-04-16?14:32??煙霧調試程序\STARTUP.A51
?????文件???????11665??2011-11-07?09:09??煙霧調試程序\STARTUP.LST
?????文件?????????749??2011-11-07?09:09??煙霧調試程序\STARTUP.OBJ
?????文件???????17733??2009-07-07?10:32??煙霧調試程序\STC_NEW_8051.H
?????文件???????14101??2012-04-04?15:06??煙霧調試程序\yanwu
?????文件????????5958??2011-11-13?19:46??煙霧調試程序\yanwu.c
?????文件?????????722??2012-04-04?15:06??煙霧調試程序\yanwu.hex
?????文件??????????42??2012-04-04?15:06??煙霧調試程序\yanwu.lnp
?????文件???????14904??2012-04-04?15:06??煙霧調試程序\yanwu.LST
?????文件????????7315??2012-04-04?15:06??煙霧調試程序\yanwu.M51
?????文件???????14545??2012-04-04?15:06??煙霧調試程序\yanwu.OBJ
?????文件????????1384??2011-11-07?16:00??煙霧調試程序\yanwu.opt.bak
?????文件?????????336??2012-04-04?15:06??煙霧調試程序\yanwu.plg
?????文件????????2041??2011-11-07?16:00??煙霧調試程序\yanwu.Uv2.bak
?????文件???????57170??2012-04-04?15:51??煙霧調試程序\yanwu.uvopt
?????文件???????13623??2011-11-07?19:40??煙霧調試程序\yanwu.uvproj
?????文件????????1221??2011-11-07?16:00??煙霧調試程序\yanwu_Opt.Bak
?????文件????????2171??2011-11-07?16:00??煙霧調試程序\yanwu_Uv2.Bak
?????文件???????57362??2012-02-01?16:07??煙霧調試程序\yanwu_uvopt.bak
- 上一篇:數據結構課程設計內部排序算法比較
- 下一篇:Hertz接觸理論
評論
共有 條評論