单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3371|回复: 9
打印 上一主题 下一主题
收起左侧

单片机编程必须撑握的程序(两键智能豆浆机程序)

  [复制链接]
跳转到指定楼层
楼主
das 发表于 2015-4-5 00:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机学习编程,必须要将各种中断方法灵活的运用到系统中去,如键实时盘扫描,显示,各种输出等;两键智能豆浆机程序集键盘实时扫描,LED指示,输出为一体;其综合了“定时中断,独立按键,显示,定时”等各种功能;该程序是学习实用型编程的必要撑握的程序。本人通过实际调试,输出效果良好,达到预期的要求。
本豆浆机编程功能要求:
1、当机器通电后,干豆指示灯、湿豆指示灯、米糊指示灯,三灯同时以0.5秒的速度进行闪亮,以指示正在处于待机中;
2,当K1键按下,系统程序进入三种可选功能模式,(打干豆、打显豆、打米糊);这三种功能选择由K1完成;
3、当K1选定了其中一个工作模式,必须按下K2确认,然后系统程序立即进入工作中;
4、当用户不想用上面选择的工作模式时,按下K2键退出工作,然后按K1键再次进入工作模式选择,然后再按K2确认进入本次想要的工作模式。
5、要求系统程序任何时间,程序都必须对键盘实时扫描,以确保用户可以随时重新选择工作模式或停机。
6、要求每按下一次任意键蜂呜器都有响声,以表示按下成功;
7、要求统统模式工作完成后,要求程序回到待机状态,以指示工作完成,用户可以喝豆浆了。
以下程序用SiWN开发板验证调试完成。
////------------------两键(三功能)智能豆浆机程序-------------OK  2012-7-28
////-----------------芯片STC12C5A60S2(青龙工作室)----------------
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
static uchar ID=0;
static uchar ID2=0;
static uint time=0;
static uchar nem=0;
sbit k1=P0^1;//-----功能选择按键
sbit k2=P0^2;//-----确认按键
sbit beep=P3^3;//---蜂呜器
sbit LED_LE=P3^4;//-LED片选端
sbit HOT=P1^5;//----发热管
sbit MM=P1^4;//-----电机
////////
sbit LED_gandou=P1^3;//----干豆指示灯
sbit LED_shidou=P1^2;//----湿豆指示灯
sbit LED_mihu=P1^1;//------米糊指示灯
////////-------------------------------延时
void delayms(uint yanshi)
{
uint a;
for(a=0;a<yanshi;a++);
}
///////-----------------------k2/(on/off)按键检测
void k2_panduan()
{
if(!k2)
{
  delayms(350);
  if(!k2)
  while(k2==0);
  beep=0;
   delayms(60000);
  beep=1;
  ID2++;
}
}
///////--------------------------------k1按键检测
void k1_panduan()
{
if(!k1)
{
  delayms(350);
  if(!k1)
  while(k1==0);
  beep=0;
   delayms(60000);
  beep=1;
  ID++;
}
}
///////--------------------------------功能程序---------
void start()
{
  while(ID2<4)
{
    if(ID==1)
     {
    LED_gandou=0;
    LED_shidou=1;
    LED_mihu=1;
////
    k1_panduan();
    if(!k2)
     {
      delayms(350);
       while(k2==0);
      beep=0;
       delayms(60000);
      beep=1;
      while(time<401)
        {
        if(time<200)
        {
         TR1=1;
         HOT=0;//发热管接通
         MM=1;
         k2_panduan();
         if(ID2==1)
                         {
          ID2=0;
                        break;
         }
        }
///-----------------------------
        if(time>200&&time<400)
        {
         TR1=1;
         HOT=1;//发热管断开
         MM=0;
         k2_panduan();
         if(ID2==1)
                         {
          ID2=0;
                          break;
         }
        }         
///-----------------------------
       }
       HOT=1;
       MM=1;
       time=0;
       TR1=0;
       goto qinlong;
      }
      }
////**********************************************///
else if(ID==2)
  {
    LED_gandou=1;
    LED_shidou=0;
    LED_mihu=1;
////
   k1_panduan();
   if(!k2)
    {
     delayms(350);
     while(k2==0);
     beep=0;
      delayms(60000);
     beep=1;
     while(time<401)
       {
       if(time<200)
       {
        TR1=1;
        HOT=1;//发热管断开
        MM=0;
        k2_panduan();
        if(ID2==1)
                         {
          ID2=0;
                          break;
         }
       }
//--------------------------
       if(time>200&&time<400)
       {
        TR1=1;
        HOT=0;//发热管接通
        MM=1;
        k2_panduan();
        if(ID2==1)
                         {
          ID2=0;
                        break;
         }
       }
//--------------------------
      }
      HOT=1;
      MM=1;
      time=0;
      TR1=0;
        goto qinlong;
    }
   }
////**********************************************///
else if(ID==3)
  {
    LED_gandou=1;
    LED_shidou=1;
    LED_mihu=0;
////
   k1_panduan();
   if(!k2)
    {
     delayms(350);
     while(k2==0);
     beep=0;
      delayms(60000);
     beep=1;
     while(time<401)
       {
       if(time<200)
       {
        TR1=1;
        HOT=0;//发热管断开
        MM=0;
        k2_panduan();
        if(ID2==1)
                         {
          ID2=0;
                          break;
         }
       }
////---------------------
       if(time>200&&time<400)
       {
        TR1=1;
        HOT=1;//发热管断开
        MM=1;
        k2_panduan();
        if(ID2==1)
                         {
          ID2=0;
                          break;
         }
       }
///----------------------
      }
       HOT=1;
       MM=1;
       time=0;
       TR1=0;
       goto qinlong;
    }
   }
////-----------------------------
  else if(ID==4)
   ID=1;
  }
   
qinlong:return;
}
/*---------------------------------------------*/
///////------------------------------------主程序
void main()
{
TMOD=0x11;
TH0=0x4c;
TL0=0x00;
IE=0x8a;
//-------------------------------
TH1=0x4c;
TL1=0x00;
TR0=1;
TR1=0;
//-------------------------------
LED_LE=0;
while(1)
{
  if(!k1)
  {
   delayms(300);
    if(!k1)
      {
    while(k1==0);
    beep=0;
    delayms(60000);
    beep=1;
    ID++;
    start();//ID判断
   }
  }
////============================
if(nem==10)
  {
   LED_gandou=~ LED_gandou;
   LED_shidou=~LED_shidou;
   LED_mihu=~LED_mihu;
   nem=0;
  }
}
////
}
/*---------------------定时中断0--------------------*/
void Tmer_0() interrupt 1
{
TR0=0;
TH0=0x4c;
TL0=0x00;
nem++;
TR0=1;
}
///////////////////////定时中断1/////////////////////
void Tmer_1() interrupt 3
{
TR1=0;
TH1=0x4c;
TL1=0x00;
time++;
TR1=1;
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
looksave 发表于 2015-5-2 20:40 | 只看该作者
很好
回复

使用道具 举报

板凳
huakai 发表于 2017-6-9 12:08 | 只看该作者
有电路原理图吗???
回复

使用道具 举报

地板
3760609865 发表于 2017-6-9 23:47 来自手机 | 只看该作者
谢谢分享。
回复

使用道具 举报

5#
wis98 发表于 2017-8-14 16:22 | 只看该作者
学习一下楼主的文章
回复

使用道具 举报

6#
stick@ 发表于 2017-8-22 14:17 | 只看该作者
水位,温度,安全,都加进去或者加WiFi模块整手机APP好像就是个产品了
回复

使用道具 举报

7#
w963135423 发表于 2018-5-11 22:51 | 只看该作者
求电路图啊 大神
回复

使用道具 举报

8#
axkf 发表于 2019-2-9 17:02 | 只看该作者
学习一下楼主的文章
回复

使用道具 举报

9#
payload 发表于 2019-2-10 12:13 | 只看该作者
谢谢分享,学习了
回复

使用道具 举报

10#
853762295 发表于 2019-2-10 15:03 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51hei电子论坛2群 联系QQ:125739409;技术交流QQ群219535678

Powered by 单片机教程网

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