智能水位检测系统proteus_单片机水塔水箱水位系统Proteus仿真程序
#include ? ?? ?? ?? ?? ???//調用單片機頭文件
#define uchar unsigned char??//無符號字符型 宏定義? ?? ???變量范圍0~255
#define uint??unsigned 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);
}
}
總結
以上是生活随笔為你收集整理的智能水位检测系统proteus_单片机水塔水箱水位系统Proteus仿真程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机的小窗口怎么弄_做一个表白小程序
- 下一篇: java计算并显示学生的成绩_Java开