51单片机自动浇花系统

发布者:闪耀之星最新更新时间:2020-10-13 来源: 51hei关键字:51单片机  自动浇花系统  工作模式 手机看文章 扫描二维码
随时随地手机看文章

单片机源程序如下:

#include

#define uchar unsigned char

#define uint unsigned int


sbit ad_cs=P1^3;         //ADC0832的控制位

sbit ad_clk=P1^0;

sbit ad_dat=P1^1;


sbit lcd_rs=P2^7;         //LCD1602的控制位

sbit lcd_e=P2^6;


sbit key1=P1^4;                 //独立按键

sbit key2=P3^2;

sbit key3=P3^3;


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


bit flag=1;                     //工作模式标志

bit flag_motor=1;         //手动模式下,抽水机开关标志

bit flag_jia=0;

bit flag_jian=0;


uchar Hum_H=60;                 //自动模式下,湿度设定最大值

uchar Hum_L=30;                 //自动模式下,湿度设定最小值


uchar num=0;


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

void delay_ms(uint a)                                       

{

        uint i;

        while(a--)

        for(i=0;i<125;i++);

}

*************************************/



/*******************延时函数50us******************/

void delay_50us(uint a)

{

        uint i;

        while(a--)

        for(i=0;i<19;i++);

}

/*************************************/


/*******************ADC读取******************/

uchar read_ad(uchar channel)  

{

        uchar i;

        uchar dat1,dat2;

        ad_clk=0;

        ad_cs=0;

        ad_dat=1;

        ad_clk=1;

        ad_clk=0;  //起始信号


        ad_dat=1;

        ad_clk=1;

        ad_clk=0;  //选择单通道模式


        ad_dat=channel;//0对应通道0,1对应通道1

        ad_clk=1;

        ad_clk=0;


        ad_dat=1;


        for(i=0;i<8;++i)

        {

                 ad_clk=1;

                ad_clk=0;

                dat1=dat1<<1;

                if(ad_dat)

                dat1|=0x01;        

        

        }

        for(i=0;i<8;i++)

        {

                 dat2=dat2>>1;

                if(ad_dat)

                dat2|=0x80;        

               

                ad_clk=1;

                ad_clk=0;

        }

        ad_cs=1;

        return (dat1==dat2)?dat1:0;

        

}

/*************************************/


/*******************LCD1602初始化******************/

void write_com(uchar com)        //写指令

{

        lcd_e=0;

        lcd_rs=0;

        P0=com;

        delay_50us(10);

        lcd_e=1;

        delay_50us(10);

        lcd_e=0;

}


void write_data(uchar dat)  //写数据

{

        lcd_e=0;

        lcd_rs=1;

        P0=dat;

        delay_50us(10);

        lcd_e=1;

        delay_50us(10);

        lcd_e=0;

}                        


void init_lcd1602()                 //lcd 初始化

{

        delay_50us(300);

        write_com(0x38);

        delay_50us(100);

        write_com(0x38);

        delay_50us(100);

        write_com(0x38);

        write_com(0x38);

        write_com(0x08);

        write_com(0x01);

        write_com(0x06);

        write_com(0x0c);

}


void display_shu(uchar add,uchar dat)          //显示数字

{

        uchar l,m;

        

//        k=dat/100;

        l=dat%100/10;

        m=dat%10;


        write_com(0x80+add);

//        write_data(k+0x30);

        write_data(l+0x30);

        write_data(m+0x30);

}


void display_string(uchar add,uchar *dat)  //显示字符串

{

        uchar i;

         write_com(0x80+add);

        while(dat!=0&&(*dat!='')&&i<16)

        {

                 write_data(*dat);

                dat++;

                i++;

                if(i==15) i=0;

        }

}


关键字:51单片机  自动浇花系统  工作模式 引用地址:51单片机自动浇花系统

上一篇:hx711压力传感器的单片机源码
下一篇:51单片机通过串口控制LED

推荐阅读最新更新时间:2024-11-07 18:01

C51单片机微调SH-20504程序
/******************************************************************************************************************* * 版权归huaer所有 ** * 功能:SH-20504控制56BYG250C的单片机程序 ** * 输出:PWM
[单片机]
AT89S51单片机定时计数器的使用技巧详细说明
1. 实验任务 用AT89S51的定时/计数器T0产生2秒钟的定时,每当2秒定时到来时,更换指示灯闪烁,每个指示闪烁的频率为0.2秒,也就是说,开始L1指示灯以0.2秒的速率闪烁,当2秒定时到来之后,L2开始以0.2秒的速率闪烁,如此循环下去。0.2秒的闪烁速率也由定时/计数器T0来完成,也就是一个闪烁灯。 2. 电路原理图 图4.16.1 3. 系统板硬件连线 (1. 把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二极管指示模块”区域中的L1-L4上 4. 程序设计内容 (1. 由于采用中断方式来完成,因此,对于中断源必须它的中断入口地址,对于定时/计数器T0来说,中断入口地址为000BH,因此在中
[单片机]
AT89S<font color='red'>51单片机</font>定时计数器的使用技巧详细说明
51单片机PCF8591四路AD数值LCD1602屏显示源码
单片机源程序: /**********************BST-V51实验开发板例程************************ * 平台:BST-V51 + Keil U3 + STC89C52 * 名称:四路AD数值LCD1602屏显示 * 公司:深圳市亚博软件开发有限公司 * 晶振:11.0592MHZ ******************************************************************/ /*----------------------------------------------- 名称:IIC协议 PCF8591ADDA转换 显示有4个,注意
[单片机]
51单片机与递归的问题
在C51中,中断和非中断函数调用同一个函数报警就是RECURSIVE CALL TO FUNCTION。 标准C语言是在堆栈中动态生成局部变量空间,所以可以递归的。 51单片机太弱了,为了提高运行效率,C51采用静态分配局部变量的方式,所以不可递归。 被中断和非中断函数调用的函数,如果在非中断状态运行,发生中断后,局部变量被破坏,中断结束后再执行就完全错误了,这个跟不能递归的原理是一样的,所以Keil也把他列为RECURSIVE CALL TO FUNCTION。 解决方式:在这个公用的函数加reentrant修饰为可重入的。
[单片机]
51单片机基础之点阵LED8X8
原理: 他这个图是有问题的,大家不要被误导,例如我显示一个箭头,按照这个原理图来,那么中间那一根直线0xff,表示高电平有效,但是按照这个图来说P0是低电平有效,所以我觉得发光二极管反一下才符合代码的意思,希望不要被误导。 字模提取: 软件获取:链接:https://pan.baidu.com/s/1OFAR8a2CnTg6Nle2WDmIRA 提取码:1234 代码: #include reg51.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义74HC595控制管脚 sbit SR
[单片机]
<font color='red'>51单片机</font>基础之点阵LED8X8
89C51单片机实现的流水灯
/******************************************* Copyright: 2014.02.09.version1.0 File name: led.c Description: 自己做的流水灯89C51 Author: lxl Version: version1.0 Date: 2014.02.09 History: 无 *********************************************/ #include reg51.h /************************************************* Function: delay() Desc
[单片机]
51单片机实验1——数码管显示串行口接收的字符的ASCII码
仿真电路图如下: 代码如下: #include reg51.h #define uint unsigned int #define uchar unsigned char uint code segcode ={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D, 0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; uchar code weicode ={0x0e,0x0d,0x0b,0x07}; uchar disbuf ={0,0,0,0}; //定义并初始化数码管数据缓冲区 void delayms(uint x) //延时1ms函数
[单片机]
<font color='red'>51单片机</font>实验1——数码管显示串行口接收的字符的ASCII码
ARM体系的7种工作模式
一、ARM体系的CPU有以下7种工作模式: 用户模式(usr)       大多数程序运行于用户模式 特权模式 系统模式(sys)       运行具有特权的操作系统任务 异常模式 中断模式(irq)       快速中断模式(fiq)     必须进快处理中断请求,并离开这个模式 管理模式(svc)       操作系统使用的保护模式 数据访问终止模式(abt)   数据或指令预取终止时进入该模式 未定义指令终止模式(und) 未定义的指令执行时进入该模式 注解: 可以通过软件来进行模式切换,或者发生各类中断、
[单片机]
ARM体系的7种<font color='red'>工作</font><font color='red'>模式</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved