找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3930|回复: 1
收起左侧

单片机自动浇花系统程序

[复制链接]
ID:141327 发表于 2016-10-4 23:02 | 显示全部楼层 |阅读模式
//程序头函数
#include<reg52.h>
//宏定义
#define uintunsigned int
#define ucharunsigned char
#defineData_ADC0809 P1
//管脚声明
sbit Feng =P3^0;
//ADC0809
sbit ST=P3^3;
sbit EOC=P3^4;
sbit OE=P3^2;
//按键
sbit Key1=P3^5;
sbit Key2=P3^6;
sbit Key3=P3^7;
//显示数组        0-9+F
ucharData_[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x71,0x3f};
sbit Wei1 =P2^7;
sbit Wei2 =P2^6;
sbit Wei3 =P2^5;
sbit Wei4 =P2^4;
//函数声明
extern ucharADC0809();
voidDisplay(uchar X,uchar Data);
void delay(uintt);
//干燥度变量
uchar temp=0;
//警界值变量
uchar FF=125;
//显示模式
uchar Mode=0;
uchar p;
void main()
{
      while(1)
      {
           //正常模式
           if(Mode==0)
           {
                 //读取AD值
                 temp=ADC0809();
                 for(p=0;p<30;p++)
                 Display(0,temp);
                 //判断是否报警
                 if(temp>FF)
                 {
                      Feng=0;
                 }
                 else
                 {
                      Feng=1;
                 }
           }
           //调整模式
           else
           {
                 Display(1,FF);
           }
           //功能键
           if(Key3==0)
           {
                 Feng=0;
                 delay(100);
                 while(Key3==0)
                 {
                      if(Mode==0)
                            Display(0,temp);     
                      else
                            Display(1,FF);                                                
                 }
                 if(Mode==0)
                      Mode=1;
                 else
                      Mode=0;
                 Feng=1;
           }
           //增加
           if(Key2==0&&Mode==1)
           {
                 Feng=0;
                 delay(100);
                 while(Key2==0)
                 {
                            Display(1,FF);                          
                 }
                 FF++;
                 if(FF==251)
                      FF=250;      
                 Feng=1;
           }
           //减少
           if(Key1==0&&Mode==1)
           {
                 Feng=0;
                 delay(100);
                 while(Key1==0)
                 {
                            Display(1,FF);                          
                 }
                 FF--;
                 if(FF==0xff)
                      FF=0;   
                 Feng=1;
           }
      }
}
//ADC0809读取信息
uchar ADC0809()
{
      uchar temp_=0x00;
      //初始化高阻太
      OE=0;
      //转化初始化
      ST=0;
      //开始转换
      ST=1;
      ST=0;
      //外部中断等待AD转换结束
      while(EOC==0)
      //读取转换的AD值
      OE=1;
      temp_=Data_ADC0809;
      OE=0;
      return temp_;
}
//延时
void delay(uintt)
{
      uint i,j;
      for(i=0;i<t;i++)
           for(j=0;j<10;j++);
}
//显示      X表示状态     Data表示数据
voidDisplay(uchar X,uchar Data)
{
      Wei1=1;
      Wei2=1;
      Wei3=1;
      Wei4=1;
      P0=0xff;
      //正常模式
      if(X==0)
      {
           P0=~Data_[11];
      }
      //非正常
      else
      {
           P0=~Data_[10];
      }
      Wei1=0;
      Wei2=1;
      Wei3=1;
      Wei4=1;
      delay(10);
      Wei1=1;
      Wei2=1;
      Wei3=1;
      Wei4=1;
      P0=~Data_[Data/100];
      Wei1=1;
      Wei2=0;
      Wei3=1;
      Wei4=1;
      delay(10);
      Wei1=1;
      Wei2=1;
      Wei3=1;
      Wei4=1;
      P0=~Data_[Data/10%10];
      Wei1=1;
      Wei2=1;
      Wei3=0;
      Wei4=1;
      delay(10);
      Wei1=1;
      Wei2=1;
      Wei3=1;
      Wei4=1;
      P0=~Data_[Data%10];
      Wei1=1;
      Wei2=1;
      Wei3=1;
      Wei4=0;
      delay(10);
      Wei1=1;
      Wei2=1;
      Wei3=1;
      Wei4=1;
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:191831 发表于 2017-5-14 22:40 | 显示全部楼层
你这程序不完整吧,怎么不行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表