找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1549|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)模擬量報(bào)警

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:813029 發(fā)表于 2020-8-10 19:55 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include "common.h"
#include "lm041drv.h"

#define waterUp 210
#define waterDown 50
#define tempUp  205
#define tempDown 60
#define pressDown 70



sbit EOC=P3^5;
sbit sound=P3^4;

uchar water,temp,press;

void T0Init()
{
        TMOD=0x01;
        TH0=0xF7;
        TL0=0x1F;
        ET0=1;
        EA=1;
}


void DisplayUI()
{
        SetRowCol(0,0);
        printf("    V   Up  Down");
        SetRowCol(1,0);
        printf("W:  %03u %03u %03u ",(uint)water,(uint)waterUp,(uint)waterDown);
        SetRowCol(2,0);
        printf("T:  %03u %03u %03u ",(uint)temp,(uint)tempUp,(uint)tempDown);
        SetRowCol(3,0);
        printf("P:  %03u     %03u ",(uint)press,(uint)pressDown);
}


void main()
{
        uchar xdata *adc0808[3]={0x78ff,0x79ff,0x7aff};
        uchar xdata *reg373=0xbfff;
        uchar alarmLedInf=0xff;
        uchar normalCount=0;

        Lm041Init();
        T0Init();
        SetRowCol(2,0);
        printf("hello");

        while(1)
        {
                *adc0808[0]=0;
                while(EOC==0);
                *adc0808[0]=0;
                while(EOC==0);
                water=*adc0808[0];

                *adc0808[1]=0;
                while(EOC==0);
                *adc0808[1]=0;
                while(EOC==0);
                temp=*adc0808[1];

                *adc0808[2]=0;
                while(EOC==0);
                *adc0808[2]=0;
                while(EOC==0);
                press=*adc0808[2];

                normalCount=0;
                if(water>waterUp)
                {
                        alarmLedInf=alarmLedInf&0xfe;//D0位清0,水位上限報(bào)警燈亮
                        alarmLedInf=alarmLedInf|(1<<1);//D1位置1,水位下限報(bào)警燈滅
                }
                else if(water<waterDown)
                {
                        alarmLedInf=alarmLedInf&~(1<<1);//D1位清0,水位下限報(bào)警燈亮
                        alarmLedInf=alarmLedInf|(1<<0);//D0位置1,水位上限報(bào)警燈滅
                }
                else
                {
                        alarmLedInf=alarmLedInf|(3<<0);//D0,D1位置1,水位上下限報(bào)警燈滅
                        normalCount++;
                }

                if(temp>tempUp)
                {
                        alarmLedInf=alarmLedInf&~(1<<2);//D2位清0,溫度上限報(bào)警燈亮
                        alarmLedInf=alarmLedInf|(1<<3);//D3位置1,溫度下限報(bào)警燈滅
                }
                else if(temp<tempDown)
                {
                        alarmLedInf=alarmLedInf&~(1<<3);//D3位清0,溫度下限報(bào)警燈亮
                        alarmLedInf=alarmLedInf|(1<<2);//D2位置1,溫度上限報(bào)警燈滅
                }
                else
                {
                        alarmLedInf=alarmLedInf|(3<<2);//D2,D3位置1,溫度上下限報(bào)警燈滅
                        normalCount++;
                }

                if(press<pressDown)
                {
                        alarmLedInf=alarmLedInf&~(1<<4);//D4位清0
                }
                else
                {
                        alarmLedInf=alarmLedInf|(1<<4);//D4位置1
                        normalCount++;
                }
               
                if(normalCount==3)
                {
                        alarmLedInf=alarmLedInf&~(1<<5);//D5位清0
                        TR0=0;
                }
                else
                {
                        alarmLedInf=alarmLedInf|(1<<5);//D5位置1
                        TR0=1;
                }               

                *reg373=alarmLedInf;

                DisplayUI();
        }
}

void T0Sever() interrupt 1
{
        TH0=0xF7;
        TL0=0x1F;
        sound=~sound;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表