久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于51單片機ADC0832轉換MQ3酒精傳感器OLED顯示程序與Proteus仿真
[打印本頁]
作者:
binggg
時間:
2022-11-12 17:30
標題:
基于51單片機ADC0832轉換MQ3酒精傳感器OLED顯示程序與Proteus仿真
如果仿真打不開,把Proteus升級到8.13版本。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
批注 2022-11-12 172932.png
(224.43 KB, 下載次數: 18)
下載附件
2022-11-12 17:30 上傳
單片機源程序如下:
#include<reg51.h>
#include<intrins.h>
#include<oled.h>
#define uchar unsigned char
#define uint unsigned int
uchar Get_AD_Result(); //模數轉換結果
uint boundaries=80;//初始酒精報警設定為80
uint vt;
uchar AD;
uint x,y;
//ADC0832引腳定義
sbit CS = P1^0;
sbit CLK = P1^2;
sbit DIDO = P1^1;
sbit K1 = P2^2;
sbit K2 = P2^3;
sbit LEDR=P0^0;
sbit Beep=P2^7;
void Delayms(unsigned int n)//延時函數
{
unsigned int i,j;
for(j=n;j>0;j--)
for(i=112;i>0;i--);
}
void main()
{
OLED_Init();//初始化OLED
OLED_ColorTurn(0);//0正常顯示,1 反色顯示
OLED_DisplayTurn(1);//0正常顯示 1 屏幕翻轉顯示
OLED_ShowChinese(0,0,0,16);
OLED_ShowChinese(16,0,1,16);
OLED_ShowChinese(32,0,2,16);
OLED_ShowChinese(48,0,3,16);
OLED_ShowChinese(64,0,4,16);
OLED_ShowChinese(80,0,5,16);//顯示酒精濃度測試
Delayms(2000);
OLED_Clear();
OLED_ShowChinese(0,0,0,16);//顯示酒
OLED_ShowChinese(16,0,1,16);//顯示精
OLED_ShowChinese(0,2,6,16);//顯示設
OLED_ShowChinese(16,2,7,16);//顯示定
OLED_ShowString(32,0,":",16);//顯示:
OLED_ShowString(32,2,":",16);//顯示:
OLED_ShowString(88,2,"mg/ml",16);//顯示mg/ml
OLED_ShowString(88,0,"mg/ml",16);//顯示mg/ml
CLK = 0; //ADC0832初始化
CS = 1;
while(1)
{
AD = Get_AD_Result();
vt = (500.0/256.0)*AD;//得到輸出電壓
x=(vt-3)/2.778;//酒精濃度
y=x/10;
OLED_ShowNum(40,0,x,3,16);//顯示整數
OLED_ShowNum(72,0,y,1,16);//顯示小數
OLED_ShowString(64,0,".",16);//顯示小數點
OLED_ShowNum(40,2,boundaries,3,16);//顯示設定值
if(x>=boundaries)//酒精濃度大于等于設定,蜂鳴器響,紅燈亮
{
Beep=0;
LEDR=0;
}
else//酒精濃度小于設定值,蜂鳴器不響,紅燈不亮
{
Beep=1;
LEDR=1;
}
if(K1==0)//按下K1時,設定值減1
{
Delayms(15);//消抖
if(K1==0)
{
boundaries--;
}
while(!K1);//判斷K1是否彈起
}
if(K2==0)//按下K2時,設定值減+
{
Delayms(15);//消抖
if(K2==0)
{
boundaries++;
}
while(!K2);//判斷K2是否彈起
}
}
}
//------------------------------
// 獲取AD轉換結果(0通道)
//------------------------------
uchar Get_AD_Result() //包含11個CLK下降沿
{
uchar i, dat;
CS = 1; //ADC0832未工作時,CS端為高電平,此時芯片禁用
_nop_; //對于延時很短的,要求在us級的,采用“_nop_”函數
CLK =1;
CS = 0;
DIDO = 1; CLK = 0; _nop_; CLK = 1; _nop_; //SCLK第一個下降沿來到時,DI = 1啟動ADC0832
DIDO = 1; CLK = 0; _nop_; CLK = 1; _nop_; //SCLK第二個下降沿
DIDO = 0; CLK = 0; _nop_; CLK = 1; _nop_; //SCLK第三個下降沿,發送1,0選擇通道cho
DIDO = 1; //釋放總線
for(i = 0; i < 8; i++) //第4個下降沿到第11個下降沿
{
CLK = 0; //clk處于下降沿,每一個下降沿DO端輸入下一個
_nop_; //對于延時很短的,要求在us級的,采用_nop_函數
if(DIDO) dat |= 0x01; // dat = dat | 0x01,dat和0x01做“或”的運算,意思是最低位置1,其它位保持不變。
CLK = 1; _nop_; //clk處于上升沿
dat <<= 1; //數據左移
}
return (dat);
CS = 1; //ADC0832停止工作
}
復制代碼
Keil代碼與Proteus8.13版本的仿真(注意其他版本打不開的)下載:
51酒精報警.zip
(91.61 KB, 下載次數: 71)
2022-11-12 17:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
tens1on
時間:
2024-12-9 14:21
用的lcd?代碼里咋寫oled
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
色综合天天综合网国产成人网
|
国产免费视频
|
久草免费在线视频
|
av免费在线观看网站
|
亚洲人在线观看
|
午夜黄色剧场
|
成人毛片100免费观看
|
黄色大片免费在线观看
|
亚洲一区二区在线视频
|
天堂免费av
|
成年视频在线观看
|
国产精品久久久久久久久久久久午夜片
|
av色婷婷
|
日韩久久久
|
欧美日本精品
|
国产高清免费
|
特黄aaaaaaaaa真人毛片
|
色综合五月
|
四虎网站
|
日本精品久久
|
中文字幕第一区
|
亚洲区视频
|
日韩欧美视频在线
|
成人永久免费视频
|
成人激情在线观看
|
日韩三级在线播放
|
波多野结衣一区二区三区在线观看
|
亚洲天堂视频在线观看
|
超碰成人网
|
极品新婚夜少妇真紧
|
蜜臀久久99精品久久久久久宅男
|
99在线播放
|
久久综合影院
|
久久一区
|
国产成人精品一区二区三区在线观看
|
欧美精品二区
|
成人永久免费
|
亚洲另类视频
|
亚洲美女爱爱
|
欧美日韩一二三区
|
四虎av在线
|