- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于STCC的厨房定时器设计报告精要
单片机原理课程设计报告
题目:基于STC89C52的厨房计时器
专业:
班级:
学号:
姓名:
指导教师:
一.设计报告概述
本设计报告中的厨房定时器,是YL-39开发板(含按键开关和蜂鸣器等),单片机(STC89C52),LCD1602组成的综合设计系统电路。
1、基本要求
采用单片机实现实现厨房定时器功能。设计指标:
按键设定功能:通过MIN,SEC按键进行计时时间的设定,最大值为99分59秒。通过START/STOP按键,开启与暂停倒计时功能。
LCD显示功能:显示设定时间、倒计时时间。格式为“XX:XX” 。分钟在前,秒在后。
时间设定:
在计时开启前,需对“分、秒”进行设定。
按“MIN”键一下,设定分钟的数值加 1。可在 0~99 间循环。
按“SEC”键一下,设定秒数的数值加 1。可在 0~59 循环。
当设定的计时时间大于 0 时,按“START/STOP”键,倒计时开始。
倒计时过程中,按“START/STOP”键,倒计时暂停,再次按下,继续倒计时。
报警功能:
倒计时时间到,蜂鸣器响10秒报警。
报警过程中按“START/STOP”键,报警停止,系统停止进入低功耗待机状态。
扩展要求
低功耗功能:通过按键中断或1秒计时中断唤醒。连续10秒无操作时,自动进入低功耗状态。
时钟
震荡
电路
YL-39开发板(STC89C52)
显示
电路
(四位
七段
数码管)
二.硬件设计
复位
电路
报警
电路
(蜂鸣器)
按键
开关
图1 系统结构图
所用到模块:MCU主控模块;按键;液晶显示模块
本系统组成如图1 系统设计结构图所示,主要由五个部分组成。
.时钟振荡电路
晶振部分产生时钟信号
XTAL1(19脚):单芯片系统时钟的反向放大器输入端。
XTAL2(18脚):系统时钟的反向放大器输出端;一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入30PF的小电容,可以使系统更稳定,避免噪音干扰而死机。
图2 晶振电路
2).复位电路
如图所示,只要按K1键就能完成单片机的重置(复位复位电路,即上电复位和按键复位)。
图3 复位电路
3)显示电路
如图所示,LCD1602显示电路
RS RW E分别接在P0^7,P0^6,P0^5
图4 LCD1602显示电路
4)按键电路
图示5 按键电路
5)报警电路
图6 报警电路
软件设计
设计流程图:
图7 设计流程图
2.程序设计:
# include reg52.h
# include intrins.h
typedef unsigned char uchar;
typedef unsigned int uint;
typedef bit BOOL;
sbit rs=P0^7;//
sbit rw=P0^6;//
sbit ep=P0^5;//
sbit START=P3^5;
sbit MIN=P3^4;//分加1 ;
sbit SEC=P3^3;//秒加1;
sbit beep=P0^4;//蜂鸣器
uint second=0;
uchar beepset=10;
uint num=0;
void delay(uint z)//延时1ms函数
{
uint x,y;
for(x=z;x0;x--)
for(y=110;y0;y--);
}
BOOL lcd_bz()
{
BOOL result;
rs=0; // 读忙信号
rw=1;
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (BOOL)(P20x80);
ep=0;
return result ;
}
void lcd_wcmd (uchar cmd)
{
while (lcd_bz());
rs=0;
rw=0;
ep=0;
_nop_();
_nop_();
P2=cmd ;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
void lcd_pos (uchar pos)
{
lcd_wcmd (pos|0x80);
}
void lcd_wdat (uchar dat)
{
while (lcd_bz());
rs=1;
rw=0;
ep=0;
_nop_();
_
文档评论(0)