基于单片机的微波炉控制系统精编文档格式.docx
- 文档编号:20981567
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:36
- 大小:559.69KB
基于单片机的微波炉控制系统精编文档格式.docx
《基于单片机的微波炉控制系统精编文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的微波炉控制系统精编文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
时钟电路模块
下图2-1所示为时钟电路原理图,在AT89C51芯片内部有一个高增益反相放大器,其输出端为引脚XTAL2,输入为芯片引脚XTAL1。
而在芯片外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,构成一个稳定的自激振荡电路,电路产生的振荡脉冲经过触发器进行十二分频之后,便成为单片机的时钟信号。
图2-1时钟电路原理图
复位电路模块
下图2-2所示为复位电路原理图,在单片机的实际应用系统中,除单片机本身需复位以外,外部扩展的I/O接口电路等也需要一个复位,因此需要一个系统的同步复位信号,即单片机复位后,CPU开始工作,外部的电路一定要复位好,以保证CPU有效地对外部电路进行初始化编程。
单片机复位的条件是:
必须使RST/VPD或RST引脚加上持续两个机器周期(即24个振荡周期)的高电平。
电路为上电复位电路,它是利用电容充电来实现的。
在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐降低。
只要保证RST为高电平时间大于两个机器周期,就能正常复位。
图2-2复位电路原理图
LCD1602显示电路模块
下图2-3所示为LCD1602显示模块电路原理图
图4-3显示模块电路原理图
按键电路模块
下图4-4所示为独立按键模块电路原理图,根据此电子时钟功能要求,需要设置以下两个功能键:
工作模式键(key1),模式辅助键(key2)。
按照键盘与CPU的连接方式可分为独立键盘和矩阵键盘。
独立式键盘是各个按键相互独立,每个按键占用一个I/O口,外加上拉电阻,每个I/O口上的按键不会影响到其他I/O口的按键工作状态。
独立式键盘电路配置灵活,软件结构简单,所以本设计采用独立式键盘。
图2-4独立按键模块电路原理图
闹铃模块
下图4-5所示为闹铃模块电路原理图,闹铃模式时,设定好闹铃时间,闹铃时间有时和分,当设定好的闹铃时间跟系统的当前时间的时和分相等时,系统给端口送低交替的高低电平,蜂鸣器发出一定频率报警声,一分钟后报警声停止,如果这一分钟内有按键按下则报警声也停止。
图2-5闹铃模块电路原理图
电机驱动模块
下图2-6所示为电机驱动电路原理图,当系统设定好加热的时长之后启动加热责电机转动,剩余的加热时间变为零之后电机停止转动。
图2-6电机驱动电路原理图
3软件模块设计
介绍AT89C51软件开发环境KeiluVision2,怎样新建一个工程以完成自己的设计和调试。
这里不是Keil开发环境的详细使用手册,关于Keil的详细说明文档请浏览Keil软件的帮助文档。
3.1建立一个新工程
点击Project菜单,选择GreateNewProject...如图11
图5建立一个新工程
弹出图12建立新工程对话框,文件名框中输入工程名字,保存类型选择.uv2,点击保存。
图6选择工程类型
点击保存之后便出现芯片的选择框。
图7选择芯片型号
点击确定之后出现下面的对话框。
图8汇编启动代码
本系统采用C语言编程,所以选择否,出现窗口中的工程。
图8工作区窗口中的工程
图9保存工作区
3.2添加文件或新建程序文件
选中SourceGroup1后出现下面选项。
图10添加源文件
点击AddFilestoGroup“SourceGroup1”。
图11向工程中添加源文件
新建一个微波炉控制文件夹,将文件名改为微波炉控制.c后保存到微波炉控制文件夹下。
按照前面添加文件的方法将微波炉控制.c添加到当前工程里。
完成的结果如下图
图12添加程序文件后的工程
4系统调试
硬件调试
用万用表检测电路板各线路是否导通,用示波器检测信号是否正常。
软件调试
进入软件调试
打开用画好的仿真图
图13画好仿真图
4.2.2加载HEX文件
在Protues中双击AT89C51出现下面的对话框,找到HEX文件路径选中文件之后点击OK键回到之前的界面。
图14加载HEX文件
点击左下方的按钮
则启动仿真
图15启动仿真
默认做饭提醒时间为上午11点整和下午6点整,默认时间为12点整
图16启动仿真后
按下工作模式键(key1)后显示要加热的时间长短,可以通过模式辅助键(key2)来调整,最长可以调整到60分钟
图17默认的加热时间
通过按模式辅助键(key2)后调整为1分钟加热时间
图18调整后的加热时间
再次按工作模式按键后显示当前剩余的加热时间,此时并未倒计时,也没有启动加热
图19显示启动加热前剩余的加热时间
按下模式辅助键之后启动加热,电机转动,开始到计时,若在加热过程中按下模式辅助键则可以停止加热。
图20启动加热后的当前剩余加热时间
系统联调
对整个系统联调时,将每一部分代码与相关实现的硬件联合到一起进行调试,对于哪一部分出了问题就修改哪一部分。
这样保证在综合调试的时候,顺利查找错误,找到问题点。
5.系统性能测试
一个工作的开发系统下图所示:
在此处添加实物调试图
附录:
源代码:
/**********************************************************
项目:
基于单片机微波炉控制系统
============================================
描述:
系统采用12MHz晶振,以STC89C52为核心外接lcd1602显示和两个独立按键
以及蜂鸣器响铃、电机驱动。
实现时钟功能以做饭提醒功能(系统时钟采用24小时制),
系统上电后显示默认的时分秒以及做饭时间设置(上午11点和下午6点,闹铃的响铃时间为1分钟),
通过key1和key2可以对万年历以及闹铃设置进行调整以及秒表的启动暂停以及清零,
在没有光标显示时间的模式下前6每次按下key2依次会选中(光标闪烁)pm_alarm_minute,pm_alarm_hour,
amm_alarm_minute,amm_alarm_hour,hour,minute,在光标闪烁的时候每次按下key2可以对相应选中位进行校正。
按下key1在设置微波炉加热时间的模式下,前60次按下key2加1,60次之微波炉加热时间清零
按下key1后系统显示当前定好的时间,再按下key2则启动加热
作者:
曾光辉
日期:
2012年5月7号
**********************************************************/
#include<
>
//系统头文件
#definedata_busP0//lcd数据总线
#defineWDATA1//rs=WDATA时写入数据
#defineWCMD0//rs=WCMD时写入命令
#defineKEYP2//按键端口
#definekey_shake_time2//键盘消抖时间
sbitrs=P2^5;
//lcd数据指令选择端,高data低cmd
sbitrw=P2^6;
//lcd读写选择端,高读低写
sbiten=P2^7;
//lcd信号加载端,下降沿有效
sbitkey1=P2^0;
//被拉低说明有键按下
sbitkey2=P2^1;
sbitfm=P2^2;
//蜂鸣器
sbitmotor=P2^3;
//电机端口
unsignedcharshift_flag;
//切换显示标志
unsignedcharmodel_flag;
//模式转换标志
unsignedcharstart_flag;
//做饭启停标志
unsignedchartime_change_flag;
//时间调整标志位
unsignedcharkey_value;
//键值
unsignedchart0,t1;
//系统时间计时变量和键盘消痘时间计时变量
unsignedcharstart_t1;
//做饭启动后倒计时计数变量
structTIM
{
unsignedcharhour;
//时
unsignedcharminute;
//分
unsignedcharsecond;
//秒
unsignedcharam_alarm_hour;
//上午做饭闹铃时
unsignedcharam_alarm_minute;
//上午做饭闹铃分
unsignedcharpm_alarm_hour;
//下午做饭闹铃时
unsignedcharpm_alarm_minute;
//下午做饭闹铃分
unsignedcharsetup_cooking_time;
//设定做饭实际那
unsignedcharcooking_time_minute;
//微波炉定时时间分
unsignedcharcooking_time_second;
//微波炉定时时间秒
}time=//初始化日期时间和闹钟以及秒表
12,
0,
11,
6,
};
/***********************************
us级延时程序
=================
说明:
延时2*i+1+2个机器周期
12MHz时,延时2*ius
***********************************/
voiddelay_us(unsignedchari)
{
while(--i);
}
读lcd函数
读取lcd1602内的内容
主要是读忙标志位
unsignedcharread_lcd(void)
unsignedcharread_value=0x00;
//置为输入
data_bus=0x00;
rs=1;
//数据指令选择,rs只能为1,
rw=1;
//读使能
en=1;
read_value=data_bus;
//读取数据
delay_us(15);
//延时1us左右
en=0;
return(read_value);
//返回读到的数据
/************************************
写lcd数据/指令函数
=====================
向lcd1602中写入数据或者指令
************************************/
voidwrite_lcd(unsignedcharvalue,bitdata_cmd)//value表示要写入的内容,data/cmd表示数据指令选择
//data_bus=0xff;
//置为输出
delay_us(100);
rs=data_cmd;
//数据指令选择
rw=0;
//写使能
data_bus=value;
/*****************************************************
键盘扫描函数
====================
说明:
MCU检测到有按键按下后TIMER1延时key_shake_time*10ms再次检测是否按键还是按下
还是按下则有效,读取键值,判断按键是否释放,若释放则对键值处理,返回的键值
是处理后的键值,否则不处理,返回0
*****************************************************/
unsignedcharkey_scan(void)
staticunsignedcharvalue;
staticunsignedchardo_key;
//执行相应命令标识
staticunsignedcharkey_scan_step;
//键盘扫描步骤
if(key_scan_step==0)
{
key_value=0;
if(do_key==0)
{
if(KEY&
0x03!
=0x03)
{
t1=0;
do_key=1;
}
}
if((t1>
=key_shake_time)&
&
((KEY&
0x03)!
=0x03))
{
value=KEY&
0x03;
do_key=0;
key_scan_step=1;
}
}
if((key_scan_step==1)&
0x03)==0x03))
{
key_scan_step=0;
switch(value)
case0x02:
value=1;
break;
case0x01:
value=2;
case0x03:
value=0;
default:
return(value);
else
return(0);
/*****************************************
按键处理函数
根据系统的要求对返回的键值做处理
*****************************************/
voidkey_process(void)
if(key_value==1)
key_value=0;
if(time_change_flag!
=0)
if(time_change_flag==1)
++;
if>
59)
{
=0;
}
write_lcd(0xCE,WCMD);
write_lcd10+'
0'
WDATA);
write_lcd(0xCF,WCMD);
write_lcd%10+'
write_lcd(0x0F,WCMD);
}
if(time_change_flag==2)
23)
write_lcd(0xCB,WCMD);
write_lcd(0xCC,WCMD);
if(time_change_flag==3)
write_lcd(0xC6,WCMD);
write_lcd(0xC7,WCMD);
if(time_change_flag==4)
write_lcd(0xC3,WCMD);
write_lcd(0xC4,WCMD);
if(time_change_flag==5)
write_lcd(0x85,WCMD);
write_lcd(0x86,WCMD);
if(time_change_flag==6)
write_lcd(0x88,WCMD);
write_lcd(0x89,WCMD);
}
if(time_change_flag==0)
++model_flag;
if(model_flag==2)
start_flag=0;
=;
=0;
if(model_flag>
2)
=0;
shift_flag=0;
model_flag=0;
time_change_flag=0;
write_lcd(0x01,WCMD);
//清屏
}
if(key_value==2)
if(model_flag==0)
TR0=0;
++time_change_flag;
if(time_change_flag>
6)
TR0=1;
write_lcd(0x0C,WCMD);
if(model_flag==1)
time_change_flag=0;
++;
if>
60)
writ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 微波炉 控制系统 精编
![提示](https://static.bdocx.com/images/bang_tan.gif)