资源简介
基于单片机的甲烷监测系统。这是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内存管理流程
评论
共有 条评论