資源簡介
基于單片機的甲烷監測系統。這是protues軟件仿真資料。

代碼片段和文件信息
#include?
/*-----------------*/
#define?Up_level?256*0.7 //設置報警上限是70%的濃度
/*-----------------*/
sbit?ADC_ALE?=?P3^5; //AD采集控制引腳
sbit?ADC_STR?=?P3^4;
sbit?ADC_EOC?=?P3^3;
sbit?ADC_OE??=?P3^2;
#define?ADC_DAT?P1
/*-----------------*/
sbit?LED1?=?P2^7; //數碼管控制引腳
sbit?LED2?=?P2^6;
sbit?LED3?=?P2^4;
sbit?LED4?=?P2^3;
#define?DPY?P0
/*-----------------*/
sbit?LED_R?=?P2^1; //指示燈引腳
sbit?LED_G?=?P2^0;
/*-----------------*/
void?delay(unsigned?int?a)
{ //延時函數?1MS/次
unsigned?char?data?i;
while(?--a?!=?0)
for(i?=?0;?i?125;?i++);???//i?從0加到125,CPU大概就耗時1毫秒
}
unsigned?char?ADC_convert(void)
{ //對固定通道7進行采集
unsigned?char?data?shuju;
ADC_ALE=1; //鎖存地址
ADC_STR=1; //啟動轉換
ADC_ALE=0; //
ADC_STR=0; //
delay(5); //延時
while(!ADC_EOC); //等待轉換結束
ADC_OE=1; //打開輸出使能
shuju=ADC_DAT; //讀轉換數據
ADC_OE=0; //關閉輸出使能
return?shuju; //返回結果
}
void?display(unsigned?char?ptr[])
{
static?unsigned?char?data?i;
unsigned?char?code?hang[4]={0x800x400x200x10};
//顯示數值的字碼
unsigned?char?code?duan[10]={0x5F0x440x9D0xD50xC60xD30xDB0x450xDF0xD7};
P0=0; //關顯示
P2=P2?&?0x27; //關閉當前行
if(i<3) //i在0-3循環計數
i=i+1;
else
i=0;
P2=P2?|?hang[i]; //切換到要顯示的位
if?(i==2)
P0=duan[ptr[i]]?|?0x20; //送顯示數據?加小數點
else
P0=duan[ptr[i]]; //送顯示數據
}
void?main(void)
{
unsigned?char?data?ad_shuju;
unsigned?char?data?baifenshu[4]; //保存顯示百分比的數組
unsigned?char?data?cnt; //顯示的計掃描數器
unsigned?int?data?tmp; //計算百分比的臨時變量
P0=0x00; //關閉顯示
//端口初始化
P2=0xff;
P3=0xff;
ADC_ALE=0; //
ADC_STR=0; //
ADC_OE=0; //
while(1)
{
for(cnt=0;cnt<12;cnt++) //掃描顯示12次,讀一次AD
{
display(&baifenshu);
delay(5);
}
ad_shuju=ADC_convert(); //讀AD數據
tmp=((unsigned?int)ad_shuju)*200/51;//計算?放大到0-1000,注意化簡,不然會計算溢出得不到正確結果 //ad_shuju*1000/255;
baifenshu[0]=tmp/1000%10; //取百分比百位
baifenshu[1]=tmp/100%10; //取百分比十位
baifenshu[2]=tmp/10%10; //取百分比個位(帶小數點)
baifenshu[3]=tmp%10; //取百分比十分位
if?(ad_shuju?>?Up_level) //濃度很高,超過上限
{
LED_R=0; //紅燈亮
LED_G=1;
}
else //低,低于下限
{
LED_R=1; //綠燈亮
LED_G=0;
}
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????52224??2010-05-20?18:00??甲烷檢測\AD采集.vsd
?????文件??????10752??2010-05-20?17:41??甲烷檢測\Backup?of?Sheet1.XLS
?????文件?????241664??2010-05-21?21:42??甲烷檢測\jiawan.ddb
?????文件??????34816??2007-12-24?10:10??甲烷檢測\QM-N5.doc
?????文件??????35127??2010-05-20?16:09??甲烷檢測\QM-N5.jpg
?????文件??????51200??2010-05-20?17:54??甲烷檢測\主程序.vsd
?????文件??????52224??2010-05-20?18:09??甲烷檢測\數碼顯示.vsd
?????文件?????143493??2010-05-20?16:46??甲烷檢測\軟件及仿真\Last?Loaded?仿真.DBK
?????文件???????5115??2002-04-16?14:32??甲烷檢測\軟件及仿真\STARTUP.A51
?????文件??????11665??2010-05-20?16:42??甲烷檢測\軟件及仿真\STARTUP.LST
?????文件????????749??2010-05-20?16:42??甲烷檢測\軟件及仿真\STARTUP.OBJ
?????文件???????5786??2010-05-20?16:42??甲烷檢測\軟件及仿真\test
?????文件???????1957??2010-05-20?16:42??甲烷檢測\軟件及仿真\test.hex
?????文件?????????56??2010-05-20?16:42??甲烷檢測\軟件及仿真\test.lnp
?????文件???????9322??2010-05-20?16:42??甲烷檢測\軟件及仿真\test.M51
?????文件???????1523??2010-05-21?13:20??甲烷檢測\軟件及仿真\test.Opt
?????文件????????192??2010-05-21?13:20??甲烷檢測\軟件及仿真\test.plg
?????文件???????2037??2010-05-21?13:20??甲烷檢測\軟件及仿真\test.Uv2
????.......??????1523??2010-05-20?18:15??甲烷檢測\軟件及仿真\test_Opt.Bak
????.......??????2144??2010-05-20?18:15??甲烷檢測\軟件及仿真\test_Uv2.Bak
?????文件?????143493??2010-05-20?18:15??甲烷檢測\軟件及仿真\仿真.DSN
?????文件????????742??2010-05-21?13:19??甲烷檢測\軟件及仿真\仿真.PWI
?????文件???????2495??2010-05-20?18:15??甲烷檢測\軟件及仿真\甲烷.c
?????文件???????6427??2010-05-20?16:42??甲烷檢測\軟件及仿真\甲烷.LST
?????文件???????5231??2010-05-20?16:42??甲烷檢測\軟件及仿真\甲烷.OBJ
?????目錄??????????0??2010-05-21?13:20??甲烷檢測\軟件及仿真
?????目錄??????????0??2010-05-21?21:43??甲烷檢測
-----------?---------??----------?-----??----
???????????????821957????????????????????27
............此處省略0個文件信息
- 上一篇:電子鬧鐘《微機接口與匯編語言》源代碼
- 下一篇:qemu內存管理流程
評論
共有 條評論