国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
51單片機數碼管顯示的水位控制系統程序設計
[打印本頁]
作者:
coolice
時間:
2020-1-31 23:33
標題:
51單片機數碼管顯示的水位控制系統程序設計
用的proteus和keil
基于51的水位控制系統.rar
(106.7 KB, 售價: 1 E幣)
2020-1-31 23:27 上傳
點擊文件名下載附件
售價: 1 E幣
[記錄]
[
購買
]
1.jpg
(221.94 KB)
下載附件
2020-1-31 23:31 上傳
2.jpg
(19.43 KB)
下載附件
2020-1-31 23:32 上傳
單片機源程序如下:
#include<reg52.h>
#include <intrins.h>
/*****************宏定義******************/
#define uint unsigned int
#define uchar unsigned char
#define u8 unsigned char
/***********位操作端口定義**************/
sbit speak=P0^4; // 蜂鳴器
sbit JK2=P1^6; // 水位繼電器
sbit led3=P0^2; //3/4水位指示燈
sbit led2=P0^1; //1/2水位指示燈
sbit led1=P0^0; //1/4水位指示燈
sbit SW041=P1^0; //1/4水位
sbit SW021=P1^1; //1/2水位
sbit SW043=P1^2; //3/4水位
sbit SW01=P1^3; //滿水位
uchar bianma[]={0xc0,0xf6,0xa1,0xa4,0x96};
/********************************************************************
* 名稱 : delay_1ms()
* 功能 : 延時1ms函數
* 輸入 : q
* 輸出 : 無
***********************************************************************/
void delay_ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<110;j++);
}
/***********************************************************************************************************
按鍵檢測相關函數
***********************************************************************************************************/
//按鍵
sbit Key1=P1^4;
sbit Key2=P1^5;
#define KEY_SET 1
#define KEY_ADD 2
//========================================================================
// 函數: u8 Key_Scan()
// 應用: temp=u8 Key_Scan();
// 描述: 按鍵掃描并返回按下的鍵值
// 參數: NONE
// 返回: 按下的鍵值
// 版本: VER1.0
// 日期: 2015-05-29
// 備注: 該函數帶松手檢測,按下鍵返回一次鍵值后返回0,直至第二次按鍵按下
//========================================================================
u8 Key_Scan()
{
static u8 key_up=1;//按鍵按松開標志
if(key_up&&(Key1==0||Key2==0))
{
delay_ms(10);//去抖動
key_up=0;
if(Key1==0) return 1;
else if(Key2==0)return 2;
}
else if(Key1==1&&Key2==1)
key_up=1;
return 0;// 無按鍵按下
}
uchar Mode=0; //
/**********主函數******************/
void main()
{
u8 j=0;
u8 key;
u8 sd=0;
while(1)
{
key=Key_Scan(); //按鍵掃描
if(key==KEY_SET)
{
sd=1;
}
if(key==KEY_ADD)
{
sd=0;
}
if(Mode)
{
if(sd==1)
JK2=0;
if(sd==0)
JK2=1;
}
if((SW01==1)&&(SW043==1)&&(SW021==1)&&(SW041==1)) //0水位 指示 啟動水泵加水
{
led1=0;
led2=1;
led3=1;
JK2=0;
j++;
if(j<100)
{
speak=1;
}
else if(j<200)
{
speak=0;
} //
else j=0;
Mode=0;//禁止手動澆水
P2=bianma[0];
delay_ms(3);
}
if((SW01==1)&&(SW043==1)&&(SW021==1)&&(SW041==0)) //1/4水位指示
{
led1=1;
speak=1;
led2=0;
led3=1;
Mode=1;//允許手動澆水
P2=bianma[1];
}
if((SW01==1)&&(SW043==1)&&(SW021==0)&&(SW041==0)) //1/2水位指示
{
led1=1;
speak=1;
led2=0;
led3=1;
Mode=1;//允許手動澆水
P2=bianma[2];
}
if((SW01==1)&&(SW043==0)&&(SW021==0)&&(SW041==0)) //3/4水位指示
{
led1=1;
speak=1;
led2=0;
led3=1;
Mode=1;//允許手動澆水
P2=bianma[3];
}
if((SW01==0)&&(SW043==0)&&(SW021==0)&&(SW041==0)) //如果水滿了 指示燈指示 停止加水
{
led1=1;
speak=1;
led2=1;
led3=0;
Mode=0;//禁止手動澆水
JK2=1;
P2=bianma[4];
}
}
}
復制代碼
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0