1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 智能水位检测系统proteus_单片机水塔水箱水位系统Proteus仿真程序

智能水位检测系统proteus_单片机水塔水箱水位系统Proteus仿真程序

时间:2020-02-29 18:58:22

相关推荐

智能水位检测系统proteus_单片机水塔水箱水位系统Proteus仿真程序

#include//调用单片机头文件

#define uchar unsigned char//无符号字符型 宏定义 变量范围0~255

#define uintunsigned int //无符号整型 宏定义 变量范围0~65535

//数码管段选定义 0 1 2 3 4 5 6 7 8 9

uchar code smg_du[]={0xde,0x91,0xcd,0xd5,0x93,0x2b,0x5f,0xd4,0xdf,0xd1,

//A B C D E F 不显示

0xd7,0x1f,0x4e,0x9d,0x4f,0x47 }; //断码

sbit led_y = P2^2; //黄灯 //高水位

sbit led_g = P2^1; //绿灯

sbit led_r = P2^0; //红灯 //低水位

sbit shuiwei1 = P3^4;

sbit shuiwei2 = P3^5;

sbit shuiwei3 = P3^6;

sbit shuiwei4 = P3^7;

sbit relay = P1^0; //继电器

sbit beep =P2^7; //蜂鸣器

uchar shuiwei; //水位

sbit dianji = P2^3;

/***********************1ms延时函数*****************************/

void delay_1ms(uint q)

{

uint i,j;

for(i=0;i

for(j=0;j<120;j++);

}

/********************独立按键程序*****************/

uchar key_can; //按键值

void key() //独立按键程序

{

static uchar key_new;

P1 |= 0x06;

if((P1 & 0x06) != 0x06)//按键按下

{

delay_1ms(1); //按键消抖动

if(((P1 & 0x06) != 0x06) && (key_new == 1))

{//确认是按键按下

key_new = 0;

switch(P1 & 0x06)

{

case 0x02: relay = 0;//手动进水

break; //得到按键值

case 0x04: relay = 1;//手动停止进水

break; //得到按键值

}

}

}

else //按键松开

key_new = 1;

}

/******************主程序**********************/

void main()

{

P0 = P1 = P2 = P3 = 0xff;//初始化单片机IO口为高电平

P0 = ~smg_du[0] ;

delay_1ms(1500);

while(1)

{

key(); //独立按键程序

if(shuiwei4 == 1)//高水位 4档

{

shuiwei = 4;

led_r = 1;led_g = 1;led_y = 0; //高水位绿灯亮

}

else if(shuiwei3 == 1) // 3档

{

shuiwei = 3;

led_r = 1;led_g = 0;led_y = 1; //正常水位绿灯亮

}

else if(shuiwei2 == 1) // 2档

{

shuiwei = 2;

led_r = 1;led_g = 0;led_y = 1; //正常水位绿灯亮

}

else if(shuiwei1 == 1) // 1档

{

shuiwei = 1;

led_r = 1;led_g = 0;led_y = 1; //正常水位绿灯亮

}else //低水位 0

{

shuiwei = 0;

led_r = 0;led_g = 1;led_y = 1; //低水位红灯亮

}

P0 = ~smg_du[shuiwei]; //

if(shuiwei < 1) //进水

{

beep = ~beep;//蜂鸣器报警

relay = 0; //打开继电器进水

}

else

{

beep = 1; //关闭蜂鸣器

}

if(shuiwei >= 4)//停止进水

{

relay = 1; //关闭继电器

dianji = 0;//打开抽水电机

}else

{

dianji = 1; //关闭电机

}

key(); //独立按键程序

delay_1ms(100);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。