欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機便攜式瓦斯監測儀設計(程序及Proteus仿真)
[打印本頁]
作者:
sxadafadf
時間:
2020-5-9 16:27
標題:
51單片機便攜式瓦斯監測儀設計(程序及Proteus仿真)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png
(16.3 KB, 下載次數: 39)
下載附件
2020-5-9 16:30 上傳
瓦斯傳感器放大輸出0~70MV,放大51倍后為0~3.57V
0~3.57V對應單片機采樣碼值為0~357,精度0.2MV
/*煙霧檢測系統程序,單片機通過ADC0808檢測3路煙霧傳感器信號,并通過液晶顯示,超過設定門限就聲光報警*/
#include<reg52.h>
#include "LCD1602.h"
#include "da1302.h"
unsigned int i;
unsigned int j;
unsigned char V_getdata1; //傳感器電壓采集變量
unsigned long V_temp1,alarm_temp;//傳感器電壓采集變量和設定報警值
unsigned int alarm,speak;
unsigned char V_temp1Buffer[10],alarm_tempBuffer[10];
SYSTEMTIME CurrentTime ; //建立時間結構體
unsigned char count;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit AD_CLK=P3^3; //ADC0809時鐘
sbit ADDA=P3^4; //ADC0809選擇通道口
sbit ADDB=P3^5;
sbit ADDC=P3^6;
sbit ALARM=P3^7;
sbit key1=P2^3; //加1按鈕
sbit key2=P2^4; //減1按鈕
void TimeInitial();
void Delay(unsigned int i);
void TimeInitial() //系統時鐘初始化
{ TMOD=0x10;
TH1=(65536-200)/256;
TL1=(65536-200)%256;
EA=1;
ET1=1;
TR1=1;
}
void Delay(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
{
for(j=0;j<125;j++)
{;}
}
}
/******************************************/
/* LCD 顯示轉換字符程序 */
/******************************************/
void IntToStr(unsigned int t, unsigned char *str, unsigned char n) //將整型數據轉換成字符指針,在液晶上顯示
{
unsigned char a[3]; char i, j;
a[0]=(t/100)%10;
a[1]=(t/10)%10;
a[2]=(t/1)%10;
for(i=0; i<3; i++) //轉成ASCII碼
a[i]=a[i]+'0';
for(i=0; a[i]=='0' && i<=3; i++);
for(j=3-n; j<i; j++) //填充空格
{ *str=' '; str++; }
for(; i<3; i++)
{ *str=a[i]; str++; } //加入有效的數字
*str='\0';
}
/******************************************/
/* 延時子程序 */
/******************************************/
void Delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
/******************************************/
/* AD轉換程序 */
/******************************************/
void Voltaget_AD1() //第一路電壓AD采樣 IN0
{
ST=0;
OE=0;
ST=1;
ST=0;
ADDA=0; //000設置A采樣端口IN0
ADDB=0;
ADDC=0;
while(EOC==0); //等待轉換結束
OE=1; //允許轉換輸出
V_getdata1=P0; //讀取轉換結果8位二進制數
OE=0;
V_temp1=V_getdata1*1.0/255*500; //對采樣結果進行常規變換
V_getdata1=0;
Delay(10);
}
void main()
{
V_getdata1=0;
V_temp1=0; //傳感器采集變量
ALARM=0; //報警信號
alarm_temp=250; //初始化報警門限值250,對應電壓為2.5V
TimeInitial();
LCD_Initial(); //液晶屏初始化
GotoXY(0,0); //定位液晶顯示位置第一行第一列
Print("The 1602 COUNTER"); //系統開機顯示logo
GotoXY(0,1);
Print(" BY BF-SHNU ");
Delay1ms(1000);
GotoXY(0,0);
Print(" "); //清空液晶屏
GotoXY(0,1);
Print(" ");
while(1)
{
Voltaget_AD1(); //電壓采樣一通道
Delay(10);
IntToStr(V_temp1,&V_temp1Buffer[0],3); //將采集到的電壓數轉換為液晶顯示字符
IntToStr(alarm_temp,&alarm_tempBuffer[0],3); //將采集到的電壓數轉換為液晶顯示字符alarm_tempBuffer[10]
GotoXY(0,0); //設定液晶顯示的位置,第1列第1行
Print("WSND:"); //第一路采集瓦斯濃度:
Print(&V_temp1Buffer[0]); //顯示采集碼值
Print("/10000");
GotoXY(0,1); //設定液晶顯示的位置,第1列第2行
Print("ALARM:"); //第一路采集瓦斯濃度:
Print(&alarm_tempBuffer[0]); //顯示采集碼值
Print("/10000");
Delay1ms(7);
if(key1==0) //報警值加1按鈕
{
Delay1ms(10); //按鈕消抖動
while(key1==0); //等待按鍵松開
alarm_temp=alarm_temp+10; //報警值加1
}
if(key2==0) //報警值減1按鈕
{
Delay1ms(10); //按鈕消抖動
while(key2==0); //等待按鍵松開
alarm_temp=alarm_temp-10; //報警值加1
}
/*--------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------*/
if(V_temp1>=alarm_temp) //判斷是否超過設定門限,設定瓦斯傳感器輸出2.5V為報警判斷值,對應碼值為250
{
ALARM=1; //煙霧報警燈亮 ,蜂鳴器響
}
else ALARM=0;
}
}
void t1(void) interrupt 3 using 0
{
TH1=(65536-200)/256;
TL1=(65536-200)%256;
AD_CLK=~AD_CLK;
}
復制代碼
全部資料51hei下載地址:
1400基于單片機的便攜式瓦斯檢測儀結題各項資料.rar
(111.15 KB, 下載次數: 75)
2020-5-9 16:27 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
蟲蟲2020
時間:
2020-5-11 14:06
您好,才學著用proteus。打開里面有很多的程序,把哪一個導入進去呀,拜托了
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1