欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機微波爐控制系統仿真與源程序
[打印本頁]
作者:
qw2537520
時間:
2018-6-28 21:15
標題:
單片機微波爐控制系統仿真與源程序
微波爐控制仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(20.23 KB, 下載次數: 92)
下載附件
2018-6-29 03:25 上傳
0.png
(50.11 KB, 下載次數: 81)
下載附件
2018-6-29 03:26 上傳
單片機源程序如下:
/***********************************************
***********************************************/
#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黑下載附件…………
復制代碼
所有資料51hei提供下載:
微波爐.rar
(73.04 KB, 下載次數: 112)
2018-6-28 21:15 上傳
點擊文件名下載附件
程序 仿真圖
下載積分: 黑幣 -5
作者:
sanqisang
時間:
2018-7-8 14:01
下不了啊 還扣我黑幣QAQ
請問可以發我QQ嗎
作者:
長風007
時間:
2021-9-10 10:35
仿真與實際的工作還是有一些差別的。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1