51单片机自动售水机

2020-02-11来源: 51hei关键字:51单片机  自动售水机

51hei.png 

单片机源程序如下:

#include "stc.h"

#include "button.h"

#include "smg。h"

#include "AT24C02。h"

sbit led1=P0^0;

sbit bell=P0^6;

sbit relay=P0^4;  

unsigned char flag_s7,flag_s6;

int money=0,amount=0;//价格 容量

unsigned char count,flag_count;

unsigned char state;         //控制数码管两种显示界面 按键控制

#define EXE_EN P2 = (P2&0X1F)|0XA0;  P2 &= 0X1F

void init_time0()          //1微妙加1

{

        TMOD=0x01;

        TH0=(65536-50000)/256;//定时50ms

        TL0=(65536-50000)%256;

        ET0=1;

        //TR0=1;

        EA=1;

}

void time0() interrupt 1

{

   TH0=(65536-50000)/256;

   TL0=(65536-50000)%256;

   count++;

   if(count==20)

   {

   count=0;

   flag_count=1;

   }

}

void key()

{

        unsigned char kk=keyboard();

        unsigned char guan=get_lux(0x41);


        if(guan<64)

        {

            P0=0xff;

            P2&=0x1f;

            P2|=0x80;

            led1=0;//灯l2亮    

                P2&=0x1f;        

        }

        if(guan>=64)

        {

                P0=0xff;

            P2&=0x1f;

            P2|=0x80;

            led1=1;//灯l1灭    

                P2&=0x1f;

        }

        if(kk==7) 

        {

        flag_s7=1;

        state=1;

        TR0=1;                  //启动定时器

        }

        if(kk==6)

        {

                flag_s6=1;

                state=2;

        }

        if(flag_s7)

        {

          flag_s7=0;bell=0;relay=1;EXE_EN;             

        }

        if(flag_s6)

        {

         TR0=0;                 //关闭定时器

         flag_s6=0;bell=0;relay=0;EXE_EN;

        }

        if(state==1)

        {

            display_s(1,0); display(2,5); display(3,0);

                display(4,amount/100); display_s(5,amount%100/10); display(6,amount%10); display(7,0);

        }

        if(state==2)

        {

                display_s(1,0); display(2,5); display(3,0);

                display(4,money/1000); display_s(5,money%1000/100); display(6,money%100/10); display(7,money%10);

        }


        if(flag_count==1)

        {

                flag_count=0;

                money=money+5;

                amount=amount+1;

        }

        if(amount==9990){flag_s6=1;state=2;}

}

void main()

{

    init_time0();

        while(1)

        {

          key();

        }

}



关键字:51单片机  自动售水机 编辑:什么鱼 引用地址:http://news.2689mr.com/mcu/ic487848.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:单片机烟雾报警器程序+PCB+原理图
下一篇:51单片机汇编控制nRF24L01源程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

51单片机控制+MAX7219+DS1302 电子钟
;   ***************************************************/#include <reg52.h>#include <intrins.h>   #define uchar unsigned char#define uint unsigned intsbit sclk=P1^0;sbit io=P1^1;sbit ce=P1^2;uchar time_data[]={13,6,4,17,21,51,30};//? ? ? ? ? ? ?uchar write_add[]={0x8c,0x8a,0x88
发表于 2020-09-16
51单片机控制两相四线步进电机
最近学习步进电机的驱动原理,照着教材自己实践了一下用ULN2003驱动28BYJ-48两相5线步进电机,可以正常转动。手头有一个旧光驱,拆开发现里面有三个电机,其中有一个控制激光头寻迹的两相四线步进电机,我就用51的单片机让它也转起来。一开始照葫芦画瓢用ULN2003驱动,结果发现无论如何也不行。原来ULN2003基本没输出电流,只能驱动有公共端的两相五线、两相六线步进电机,不能驱动2相4线步进电机。然后改用L293D驱动,可以转动。通过按钮控制正反转时发现,按键释放后,电机迅速发热,烫手。用万用表测量,发现电机A,A-或B,B-直接存在电位差!应该是按键释放时,IN1-IN4没有归零。找到问题,就容易解决了。修改程序,可以完美
发表于 2020-09-16
51单片机lcd1602d电子时钟设计
由于课程设计需要,本人做了一个基于51单片机控制的lcd1602d显示的电子时钟电子设计产品。可以显示万年历,星期。本来还想加上温湿度的检测,发现屏幕空间不够用了。。有需要可以再另外共享那个设计。第一次单片机源程序如下:#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit rs=P1^0;                                 
发表于 2020-09-16
<font color='red'>51单片机</font>lcd1602d电子时钟设计
KEIL-51单片机实现自定义bootloader,用于程序更新
本文原创作者: 少占鱼大神关于8051的bootloader实现方式一,基本硬件需求要实现IAP功能,需要51单片机可以在程序里修改代码空间的Flash,或者至少可以修改用户程序区的Flash,新出的51大部分都能满足这个要求二,空间划分一般bootloader位于单片机代码空间的起始地址,用户程序在后面。这个需要根据实际的需求来决定,bootloader功能简单,就少占用一些,bootloader功能复杂的就多占用一些。除此之外,一般还要根据Flash的页为界线划分。附带的工程模板里,bootloader使用0x0000-0x0fff区间,用户程序使用0x1000以后的空间。三,中断的处理51单片机的中断入口一般位于0地址
发表于 2020-09-16
KEIL-<font color='red'>51单片机</font>实现自定义bootloader,用于程序更新
P10点阵屏C51单片机程序
P10点阵屏C51程序1/4扫描,四扫下行,1路16行,数据低OE高(04-P16-08)适用于HUB12接口单色P10串口模式0,普通左移,亮度速度可调,6个IO口,用的STC8F1K08,最多231个字制作出来的实物图如下: 单片机源程序如下:#include <STC8.H>#include <intrins.h>#include <string.h>#define                DATA        P30   
发表于 2020-09-16
P10点阵屏C<font color='red'>51单片机</font>程序
51单片机制作电容电感测表
单片机源程序如下:#include "reg52.h"#include "intrins.h"//-------宏定义---------#define u8 unsigned char#define u16 unsigned int#define u32 unsigned long#define Cref 2200      //基准电容值(单位pF)#define LCD_DATA P0    //LCD数据口(8位)//-------I/O定义--------sbit LCD_BUSY = P0^7; //LCD忙信号sbit LCD
发表于 2020-09-15
<font color='red'>51单片机</font>制作电容电感测表
小广播
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 2689mr.com, Inc. All rights reserved
棋牌游戏送彩金38 博彩论坛送彩金 首存送彩金低打码 彩票网送彩金存款 免费送彩金棋牌游戏 怎么找送彩金的网站 博彩送彩金全讯网 银行卡送彩金 彩票大赢家 篮彩送彩金