java微波炉程序代码,单片机微波炉控制系统仿真与源程序

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

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

#include "reg52.h"

#include "intrins.h"

#include "seg.h"

bit flag_timer ;

sbit Door=P1^0;                //门限位开关

sbit Led=P1^1;                //照明灯

sbit Beep=P2^4;                //扬声器

sbit JD=P2^5;                //继电器 加热装置控制接口

sbit key_open=P1^4;        //开启按钮

sbit key_set=P1^5;        //设置按钮

sbit key_add=P1^6;        //时间加按钮

sbit key_dec=P1^7;        //时间减按钮

void delay_10us(unsigned int nus)

{

while(nus--);

}

void delay_ms(unsigned int nms)

{

unsigned int i ,j;

for(i=nms;i>0;i--)              //nms即延时约n毫秒

{        for(j=110;j>0;j--);        }

}

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

* 函数: void Beep_Play(unsigned int t)

* 描述: 无源蜂鸣器驱动函数

* 参数: t :  起振频率

* 返回: none.

* 备注: t越大频率越小

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

void Beep_Play(unsigned int t)

{

unsigned char i;

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

{

Beep = ~Beep;

delay_10us(t);

}

Beep = 0;

}

void Timer1Init(void)        //50毫秒@11.0592MHz

{

TMOD &= 0x0F;                //设置定时器模式

TMOD |= 0x10;                //设置定时器模式

TL1 = 0x00;                        //设置定时初值

TH1 = 0x4C;                        //设置定时初值

TF1 = 0;                        //清除TF1标志

TR1 = 0;                        //定时器1停止计时

ET1 = 1;                        //中断使能

}

int cnt=0;

bit ok_flag=0;                //1  为按下按键正常工作

bit hotover_flag=0;        //1  加热完成标志

void main(void)

{

unsigned char pp=0;

smg_display(0);                //显示数值

Timer0Init();                //定时器0初始化,2毫秒@11.0592MHz

Timer1Init();                //定时器1初始化,50毫秒@11.0592MHz

while(1)

{

if(flag_timer==1)                //赋一次值

{

flag_timer = 0;                //清除标志  等待下一次400ms

smg_display(cnt);        //显示数值

}

if(hotover_flag == 1)        //加热完成

{

Beep_Play(50);

Beep_Play(50);

Beep_Play(50);

pp++;

if(pp>10)

{

pp = 0;

hotover_flag = 0;

}

}

if(ok_flag == 1)                //确认键按下了已经

{

if(Door==0&&cnt>0)        //门被关上

{

//                                TR1 = 1;                //定时器1开始计时  如果是关门自动加热则不注释

JD = 0;                        //加热

Beep = 1;                //报警关闭

Led = 1;                //照明灯灭

}

else                                //门未关

{

Beep_Play(50);

//                                Beep = 0;                //报警

TR1 = 0;                //定时器1停止计时

JD = 1;                        //停止加热

Led = 0;                //照明灯亮

}

}

if(Door==0)                                //门被关上

{

Led = 1;                        //照明灯灭

}

else                                        //门未关

{

Led = 0;                        //照明灯亮

}

if(key_add==0)                        //设置加按钮按下

{

delay_ms(200);                //消除抖动

if(key_add==0)                //设置加按钮按下

{

cnt++;

if(cnt>999)

cnt=0;

}

}

if(key_dec==0)                                //设置减按钮按下

{

delay_ms(200);                        //消除抖动

if(key_dec==0)                        //设置减按钮按下

{

cnt--;

if(cnt<0)

cnt=999;

}

}

if(key_set==0)                                //确认键按下

{

while(key_set==0);                //等待释放

if(cnt>0)                                //如果定时的值大于0

{

ok_flag = 1;

TR1 = 1;                        //定时器1开始计时

}

}

}

}

void tm0_isr() interrupt 1 using 1

{

static unsigned char num=0;

TF0 = 0;

TL0 = 0xCD;                         //设置定时初值

TH0 = 0xF8;                        //设置定时初值

display();                        //数码管显示函数

if(num++ >= 100)    //2ms*100 =200ms

{

num = 0;

flag_timer = 1;

}

}

void tm1_isr() interrupt 3 using 1                //定时50毫秒

{

static unsigned int num1=0;

TL1 = 0x00;                                //设置定时初值

TH1 = 0x4C;                                //设置定时初值

if(num1++>=20&&cnt>0)        //1s到

{

num1 = 0;

cnt--;

}

if(cnt==0)

……………………

…………限于本文篇幅 余下代码请从51黑下载附件…………

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值