欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于单片机的微波炉控制系统.docx

    • 资源ID:22826809       资源大小:23.96KB        全文页数:32页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机的微波炉控制系统.docx

    1、基于单片机的微波炉控制系统 This manuscript was revised by JIEK MA on December 15th, 2012.基于单片机的微波炉控制系统江西科技师范大学大学生科研、创新性实验项目设计方案第一稿项目 名称: 微波炉控制系统的设计与制作 项目负责人: 曾光辉 专 业: 电子信息工程 所在 学院: 通信与电子学院 指导 教师: 占华林 2012年 5 月 20 日江西科技师范大学教务处1总体方案本系统由核心元件AT89C51单片机、LCD1602、独立按键、蜂鸣器构成、电机,用来实现数字电子钟、做饭提醒、模拟定时加热功能。主控部分是由单片机和独立按键两部分构

    2、成,显示部分是LCD1602显示模块构成,闹铃部分是外接蜂鸣器构成,模拟加热部分是直流电机构成。实现了秒表和数字电子时钟的功能。工作过程中有各种工作状,显示 时 分 秒以及上午和下午的做饭时刻,这些参数都可以校正。 图 1微波炉控制系统的整个电路2.基于单片机的数字电子钟系统硬件设计该数字钟工作原理是用一片AT89C51单片机通过编程去控制LCD1602实现的。通过2个开关控制来进行时间的调节以及秒表功能,(key1)口控制按键,当系统处于正常时间显示并且按下此键时,可以进入秒表功能和时间功能的切换,此键还可以作为时间和日期以及闹铃的调整位选中键,当系统处于时间显示模式时,按此键可以选中相应的

    3、需要调整的位。当系统处于时间显示模式时,(key2)口控制按键,按此键对相应的选中位进行加,当系统处于处于秒表工作模式时按此键可以控制秒表计时的启动和暂停。其工作流程:1.年月日时分秒显示。通电后LCD自动显示C语言程序设置好的默认时间2.闹钟显示和设定。通电后,A的右边显示的是默认的闹钟时间,通过key1和key2可以设置闹铃时间。3.秒表显示以及启动和暂停以及清零。处于正常显示时间模式下时按下key1释放后可以进入秒表模式,前3次按下key2的功能依次为启动停止清零,每按3次key2为一个轮回。时钟电路模块下图2-1所示为时钟电路原理图,在AT89C51芯片内部有一个高增益反相放大器,其输

    4、出端为引脚XTAL2,输入为芯片引脚XTAL1。而在芯片外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,构成一个稳定的自激振荡电路,电路产生的振荡脉冲经过触发器进行十二分频之后,便成为单片机的时钟信号。图2-1 时钟电路原理图复位电路模块下图2-2所示为复位电路原理图,在单片机的实际应用系统中,除单片机本身需复位以外,外部扩展的I/O接口电路等也需要一个复位,因此需要一个系统的同步复位信号,即单片机复位后,CPU开始工作,外部的电路一定要复位好,以保证CPU有效地对外部电路进行初始化编程。单片机复位的条件是:必须使RST/VPD 或RST引脚加上持续两个机器周期(即24个振荡周期)的

    5、高电平。电路为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐降低。只要保证RST为高电平时间大于两个机器周期,就能正常复位。图2-2 复位电路原理图 LCD1602显示电路模块下图2-3所示为LCD1602显示模块电路原理图图4-3 显示模块电路原理图按键电路模块下图4-4所示为独立按键模块电路原理图,根据此电子时钟功能要求,需要设置以下两个功能键:工作模式键(key1),模式辅助键(key2)。按照键盘与CPU的连接方式可分为独立键盘和矩阵键盘。独立式键盘是各个按键相互独立,每个按键占用一个I/O口,外加上拉电阻,每个I/

    6、O口上的按键不会影响到其他I/O口的按键工作状态。独立式键盘电路配置灵活,软件结构简单,所以本设计采用独立式键盘。图2-4 独立按键模块电路原理图闹铃模块下图4-5所示为闹铃模块电路原理图,闹铃模式时,设定好闹铃时间,闹铃时间有时和分,当设定好的闹铃时间跟系统的当前时间的时和分相等时,系统给端口送低交替的高低电平,蜂鸣器发出一定频率报警声,一分钟后报警声停止,如果这一分钟内有按键按下则报警声也停止。图2-5 闹铃模块电路原理图电机驱动模块下图2-6所示为电机驱动电路原理图,当系统设定好加热的时长之后启动加热责电机转动,剩余的加热时间变为零之后电机停止转动。图2-6 电机驱动电路原理图3软件模块

    7、设计介绍AT89C51软件开发环境Keil uVision2,怎样新建一个工程以完成自己的设计和调试。这里不是 Keil开发环境的详细使用手册,关于 Keil 的详细说明文档请浏览 Keil 软件的帮助文档。3.1建立一个新工程点击 Project 菜单,选择 Greate New Project . 如图 11图5 建立一个新工程弹出图12建立新工程对话框,文件名框中输入工程名字,保存类型选择.uv2,点击保存。图6 选择工程类型点击保存之后便出现芯片的选择框。图7 选择芯片型号点击确定之后出现下面的对话框。图8 汇编启动代码本系统采用C语言编程,所以选择否,出现窗口中的工程。图8 工作区窗

    8、口中的工程图9 保存工作区3.2 添加文件或新建程序文件选中Source Group1后出现下面选项。图10 添加源文件点击Add Files to Group “Source Group 1”。图11 向工程中添加源文件新建一个 微波炉控制 文件夹,将文件名改为 微波炉控制.c 后保存到 微波炉控制 文件夹下。按照前面添加文件的方法将 微波炉控制.c 添加到当前工程里。完成的结果如下图图12 添加程序文件后的工程4系统调试 硬件调试用万用表检测电路板各线路是否导通,用示波器检测信号是否正常。 软件调试进入软件调试打开用画好的仿真图图13 画好仿真图4.2.2加载HEX文件在Protues中双

    9、击AT89C51出现下面的对话框,找到HEX文件路径选中文件之后点击OK键回到之前的界面。图14 加载HEX文件点击左下方的按钮则启动仿真图15 启动仿真默认做饭提醒时间为上午11点整和下午6点整,默认时间为12点整图16 启动仿真后按下工作模式键(key1)后显示要加热的时间长短,可以通过模式辅助键(key2)来调整,最长可以调整到60分钟图17 默认的加热时间通过按模式辅助键(key2)后调整为1分钟加热时间图18 调整后的加热时间再次按工作模式按键后显示当前剩余的加热时间,此时并未倒计时,也没有启动加热图19 显示启动加热前剩余的加热时间按下模式辅助键之后启动加热,电机转动,开始到计时,

    10、若在加热过程中按下模式辅助键则可以停止加热。图20 启动加热后的当前剩余加热时间 系统联调 对整个系统联调时,将每一部分代码与相关实现的硬件联合到一起进行调试,对于哪一部分出了问题就修改哪一部分。这样保证在综合调试的时候,顺利查找错误,找到问题点。5.系统性能测试一个工作的开发系统下图所示:在此处添加实物调试图附录:源代码:/*项目 : 基于单片机微波炉控制系统 =描述 : 系统采用12MHz晶振,以STC89C52为核心外接lcd1602显示和两个独立按键 以及蜂鸣器响铃、电机驱动。实现时钟功能以做饭提醒功能(系统时钟采用24小时制), 系统上电后显示默认的时分秒以及做饭时间设置(上午11点

    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月

    12、7号*/#include /系统头文件#define data_bus P0 /lcd数据总线#define WDATA 1 /rs=WDATA时写入数据#define WCMD 0 /rs=WCMD时写入命令#define KEY P2 /按键端口#define key_shake_time 2/键盘消抖时间sbit rs=P25; /lcd数据指令选择端,高data低cmdsbit rw=P26; /lcd读写选择端,高读低写sbit en=P27; /lcd信号加载端,下降沿有效sbit key1=P20; /被拉低说明有键按下sbit key2=P21; /被拉低说明有键按下sbit

    13、fm=P22; /蜂鸣器sbit motor= P23; /电机端口unsigned char shift_flag; /切换显示标志unsigned char model_flag; /模式转换标志unsigned char start_flag; /做饭启停标志unsigned char time_change_flag; /时间调整标志位unsigned char key_value; /键值unsigned char t0,t1; /系统时间计时变量和键盘消痘时间计时变量unsigned char start_t1; /做饭启动后倒计时计数变量struct TIM unsigned c

    14、har hour; /时 unsigned char minute; /分 unsigned char second; /秒 unsigned char am_alarm_hour; /上午做饭闹铃时 unsigned char am_alarm_minute; /上午做饭闹铃分 unsigned char pm_alarm_hour; /下午做饭闹铃时 unsigned char pm_alarm_minute; /下午做饭闹铃分 unsigned char setup_cooking_time; /设定做饭实际那 unsigned char cooking_time_minute; /微波

    15、炉定时时间分 unsigned char cooking_time_second; /微波炉定时时间秒 time= /初始化日期时间和闹钟以及秒表 12, 0, 0, 11, 0, 6, 0, 0, 0, 0,;/* us级延时程序 =说明 : 延时 2*i+1+2 个机器周期 12MHz时,延时 2*i us*/void delay_us(unsigned char i) while(-i);/* 读lcd函数 =说明 : 读取lcd1602内的内容 主要是读忙标志位 */unsigned char read_lcd(void) unsigned char read_value=0x00;

    16、/置为输入 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中写入数据或者指令*/void write_lcd(unsigned char value,bit data_cmd ) /value表示要写入的内容,data/cmd表示数据指令选择/ data_bus=0xff; /置为输出 delay_us(100)

    17、; rs=data_cmd; /数据指令选择 rw=0; /写使能 en=1; data_bus=value; delay_us(100); en=0; delay_us(100);/* 键盘扫描函数 =说明 : MCU检测到有按键按下后TIMER1延时key_shake_time*10ms再次检测是否按键还是按下 还是按下则有效,读取键值,判断按键是否释放,若释放则对键值处理,返回的键值 是处理后的键值,否则不处理,返回0 */unsigned char key_scan(void) static unsigned char value; /键值 static unsigned char d

    18、o_key; /执行相应命令标识 static unsigned char key_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)&(KEY & 0x03) = 0x03) key_scan_step =

    19、0; switch(value) case 0x02 : value = 1;break; case 0x01 : value = 2;break; case 0x03 : value = 0;break; default : value = 0;break; return(value); else return(0); /* 按键处理函数 =说明 : 根据系统的要求对返回的键值做处理*/void key_process(void) if(key_value = 1) key_value=0; if(time_change_flag !=0) if(time_change_flag = 1)

    20、+; if59) = 0; write_lcd(0xCE,WCMD); write_lcd10+0,WDATA); write_lcd(0xCF,WCMD); write_lcd%10+0,WDATA); write_lcd(0xCF,WCMD); write_lcd(0x0F,WCMD); if(time_change_flag = 2) +; if23) = 0; write_lcd(0xCB,WCMD); write_lcd10+0,WDATA); write_lcd(0xCC,WCMD); write_lcd%10+0,WDATA); write_lcd(0xCC,WCMD); wri

    21、te_lcd(0x0F,WCMD); if(time_change_flag = 3) +; if59) = 0; write_lcd(0xC6,WCMD); write_lcd10+0,WDATA); write_lcd(0xC7,WCMD); write_lcd%10+0,WDATA); write_lcd(0xC7,WCMD); write_lcd(0x0F,WCMD); if(time_change_flag = 4) +; if23) = 0; write_lcd(0xC3,WCMD); write_lcd10+0,WDATA); write_lcd(0xC4,WCMD); writ

    22、e_lcd%10+0,WDATA); write_lcd(0xC4,WCMD); write_lcd(0x0F,WCMD); if(time_change_flag = 5) +; if23) = 0; write_lcd(0x85,WCMD); write_lcd10+0,WDATA); write_lcd(0x86,WCMD); write_lcd%10+0,WDATA); write_lcd(0x86,WCMD); write_lcd(0x0F,WCMD); if(time_change_flag = 6) +; if59) = 0; write_lcd(0x88,WCMD); writ

    23、e_lcd10+0,WDATA); write_lcd(0x89,WCMD); write_lcd%10+0,WDATA); write_lcd(0x89,WCMD); write_lcd(0x0F,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_valu

    24、e = 2) key_value=0; if(model_flag = 0) TR0 = 0; +time_change_flag; if(time_change_flag = 1) write_lcd(0xCF,WCMD); write_lcd(0x0F,WCMD); if(time_change_flag = 2) write_lcd(0xCC,WCMD); write_lcd(0x0F,WCMD); if(time_change_flag = 3) write_lcd(0xC7,WCMD); write_lcd(0x0F,WCMD); if(time_change_flag = 4) w

    25、rite_lcd(0xC4,WCMD); write_lcd(0x0F,WCMD); if(time_change_flag = 5) write_lcd(0x86,WCMD); write_lcd(0x0F,WCMD); if(time_change_flag = 6) write_lcd(0x89,WCMD); write_lcd(0x0F,WCMD); if(time_change_flag 6) TR0 = 1; write_lcd(0x0C,WCMD); time_change_flag = 0; if(model_flag = 1) time_change_flag = 0; +; if 60) = 0; write_lcd(0xC7,WCMD); write_lcd%100/10+0,WDAT


    注意事项

    本文(基于单片机的微波炉控制系统.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开