厨房提醒器设计.docx
《厨房提醒器设计.docx》由会员分享,可在线阅读,更多相关《厨房提醒器设计.docx(22页珍藏版)》请在冰豆网上搜索。
厨房提醒器设计
信息与电气工程学院
课程设计说明书
课程名称:
单片机应用
题目:
厨房提醒器设计
专业班级:
学生姓名:
学号:
指导教师:
设计周数:
1、课程设计目的………………………………………………………1
2、课程设计的内容…………………………………………………1
2.1设计所需器材…………………………………………………1
2.2设计任务和要求………………………………………………1
2.3设计方案………………………………………………………2
2.3.1硬件设计…………………………………………………2
2.3.1.1AT89S51说明………………………………………2
2.3.1.2CD4511译码器……………………………………3
2.3.1.3时脉冲设计…………………………………………5
2.3.1.4显示设计……………………………………………6
2.3.1.5位选设计……………………………………………6
2.3.1.6复位设计……………………………………………6
2.3.1.7报警设计……………………………………………7
2.3.1.8按键设计……………………………………………7
2.3.2软件设计…………………………………………………8
2.3.2.1设计流程图…………………………………………8
2.3.2.2程序设计……………………………………………9
2.4软件硬件结合调试……………………………………………13
3、课程设计心得………………………………………………………14
4、参考文献……………………………………………………………14
5、教师评语…………………………………………………………15
附图………………………………………………………………16
1、课程设计目的
1.进一步熟悉和掌握单片机的结构及工作原理。
2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。
4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
5.通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。
2、课程设计内容
2.1设计所需器材
电阻:
1K(6个)200(7个)10K(8个)
按键开关:
5个
电容:
22pF(2个)
电解电容:
10μF(1个)
晶振:
6MHZ(1个)
CD4511:
1个
三极管:
9013NPN(5个)
共阴极数码管:
4个
蜂鸣器:
1个
底座:
DIP40(2个)DIP16(1个)
基本电路板(及其相关器件):
1个
万能电路板:
1个
STC90C52AD或AT89S51(1片)
导线若干
2.2设计任务和要求
本次课程设计,我们这一组要求做的是厨房提醒器设计。
设计的主要内容是采用AT89S51作为控制单元,实现提醒器的设计。
(1)设计键盘输入电路;
(2)设计显示电路;(3)合理分配地址,编写程序;(4)利用PROTEL设计硬件电路原理图和PCB图;(5)软硬件联机调试。
主要技术要求:
(1)设置提醒器的“开始”键,“清除”键,“分十位加一”键,“分个位加一”键和“秒十位加一”键。
刚通电时和按下“清除”键时,均可使显示器显示—00:
00。
按下开始键,则按照设定的时间减一定时。
当显示器再次显示为00:
00时则蜂鸣器提醒定时到。
(2)4个数码管分别显示分十位,分个位,秒十位和秒个位。
2.3设计方案
厨房提醒器设计,主要的部分是AT89S51,编写程序,实现软硬结合,实现提醒功能。
采用中断的方式,先清除按钮,然后设置分十位,分个位,秒十位,然后按开始按钮开始倒计时,当时间变为00:
00时蜂鸣器提醒则目的实现。
2.3.1硬件设计
2.3.1.1AT89S51说明
AT89S51的引说明和功能说明如下:
XTAL1:
接外部晶振的一个引脚。
在单片机内部,它是一反相放大器输入端,这个放大器构成了片内振荡器。
它采用外部振荡器时,些引脚应接地。
XTAL2:
接外部晶振的一个引脚。
在片内接至振荡器的反相放大器输出端和内部时钟发生器输入端。
当采用外部振荡器时,则此引脚接外部振荡信号的输入。
RST:
AT89C51的复位信号输入引脚,高电位工作,当要对芯片又时,只要将此引脚电位提升到高电位,并持续两个机器周期以上的时间,AT89C51便能完成系统复位的各项工作,使得内部特殊功能寄存器的内容均被设成已知状态。
P0口(P0.0~P0.7)是一个8位漏极开路双向输入输出端口,当访问外部数据时,它是地址总线(低8位)和数据总线复用。
外部不扩展而单片应用时,则作一般双向I/O口用。
P0口每一个引脚可以推动8个LSTTL负载。
P2口(P2.0~P2.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口),当访问外部程序存储器时,它是高8位地址。
外部不扩展而单片应用时,则作一般双向I/O口用。
每一个引脚可以推动4个LSTL负载。
P1口(P1.0~P1.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口),其输出可以推动4个LSTTL负载。
仅供用户作为输入输出用的端口。
P3口(P3.0~P3.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口),它还提供特殊功能,包括串行通信、外部中断控制、计时计数控制及外部随机存储器内容的读取或写入控制等功能。
2.3.1.2—CD4511译码器
CD4511是一个用于驱动共阴极LED(数码管)显示器的BCD码—七段码译码器,特点如下:
具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流,可直接驱动LED显示器。
BI:
4脚是消隐输入控制端,当BI=0时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。
LT:
3脚是测试输入端,当BI=1,LT=0时,译码输出全为1,不管输入DCBA状态如七段均发亮,显示“8”。
它主要用来检测数码管是否损坏。
LE:
锁定控制端,当LE=0时,允许译码输出。
LE=1时译码器是锁定保持状态,译码输出被保持在LE=0时的数值。
DA、DB、DC、DD、为8421BCD码输入端。
a、b、c、d、e、f、g:
为译码输出端,输出为高电平1有效。
CD4511的内部有上拉电阻,在输入端与数码管笔段端接上限流电阻就可工作。
图2.3-2CD4511连接方式
功能表:
输入
输出
LE
BI
LT
INA
INB
INC
IND
SEGA
SEGB
SEGC
SEGD
SEGE
SEGF
SEGG
X
X
L
L
L
L
L
L
L
L
L
L
X
L
H
H
H
H
H
H
H
H
H
H
L
H
H
H
H
H
H
H
H
H
H
H
X
X
L
L
L
L
L
L
L
L
H
H
X
X
L
L
L
L
H
H
H
H
L
L
X
X
L
L
H
H
L
L
H
H
L
L
X
X
L
L
L
H
L
H
L
H
L
H
H
L
H
L
H
H
L
H
L
H
H
H
H
L
H
H
H
H
H
L
L
H
H
H
H
L
H
H
L
H
H
H
H
H
H
H
H
L
H
L
H
H
L
H
H
L
H
L
H
L
H
L
H
L
L
L
H
L
H
L
H
L
H
L
H
L
H
H
H
L
H
H
H
L
L
L
H
H
H
H
H
H
H
L
表2.3CD4511真值表
2.3.1.3时脉冲设计
图2.3-3
采用6MHZ的晶振,产生的机器周期为2μS,接在芯片的18,19引脚上。
在复位端口加低电平。
2.3.1.4显示设计
图2.3-4
需要显示时间选用共阴极的数码管是通过CD4511译码器驱动,接有330欧姆的保护电阻而成的
2.3.1.5位选设计
图2.3-5
四个数码管在显示时需要选通,采用AT89S51的P0口作为位选信号的输出端,低电平有效。
由于P0口有8个输出端,当端口为低电平使对应的数码管选通。
共阴极的数码管是高电平有效,所以采用NPN的三极管。
2.3.1.6复位设计
复位键直接加在单片机的复位端,当按键S被按下时,系统复位。
图2.3-6
2.3.1.7报警设计
图2.3-7
蜂鸣器接在P2.0口上,当触发时P2.0产生高电平使其导通,蜂鸣器响,报警。
2.3.1.8按键设计
图2.3-8
按键接在P2口上,P2.1~P2.5,按键按下后相应的按键由高电平变为低电平,产生检测信号。
2.3.2软件设计
2.3.2.1设计流程图
2.3.2.2程序设计
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitmiaoshi=P2^3;
sbitfenge=P2^4;
sbitfenshi=P2^5;
sbitkaishi=P2^1;
sbitqingchu=P2^2;
sbitbaojing=P2^0;
sbitfenshiwei=P0^0;
sbitfengewei=P0^1;
sbitmiaoshiwei=P0^2;
sbitmiaogewei=P0^3;
ucharcodetable[]=
{0x10,0x11,0x12,0x13,0x14,
0x15,0x16,0x17,0x18,0x19};
uinttemp=0;
ucharaa,num0,num1=0,num2=0,num3=0;
//num0秒个位num1秒十位num2分个位num3分十位
voiddelay(uintz);
voiddisplay(ucharnum0,ucharnum1,ucharnum2,ucharnum3);
voidshezhi();
voidinit();
/*主程序*/
voidmain()
{uintx,y,ss;
init();
while
(1)
{
shezhi();
if(kaishi==0)//开始按键判断
{
delay(20);
if(kaishi==0)
TR0=!
TR0;
}
if(aa==10)
{
aa=0;
temp--;
if(temp==0)
ss=1;
{while(ss)//数码管闪烁报警
{
for(x=250;x>0;x--)
{for(y=110;y>0;y--)
P1=0xf0;
P0=0xff;
ET0=0;
TR0=0;
baojing=1;
if(qingchu==0)
ss=0;}
for(x=250;x>0;x--)
{for(y=110;y>0;y--)
P1=0xf0;
P0=0xf0;
ET0=0;
TR0=0;
baojing=0;
if(qingchu==0)
ss=0;}
}
}
}
num0=temp%10;
num1=temp%60/10;
num2=temp%600/60;
num3=temp/600;
display(num0,num1,num2,num3);
}
}
/*显示程序*/
voiddisplay(ucharnum0,ucharnum1,ucharnum2,ucharnum3)
{
P0=0x01;
P1=table[num3];
delay
(1);
P0=0x02;
P1=table[num2];
delay
(1);
P0=0x04;
P1=table[num1];
delay
(1);
P0=0x08;
P1=table[num0];
delay
(1);
}
/*延时程序*/
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*定时初始化*/
voidinit()
{
temp=0;
baojing=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=0;
TR0=0;
}
/*定时器中断*/
voidtimer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
/*控制时间值按键设定读取*/
voidshezhi()
{
if(qingchu==0&&TR0==0)
{
delay(5);
if(qingchu==0)
{
temp=0;
num0=0;
num1=0;
num2=0;
num3=0;
baojing=0;
ET0=0;
TR0=0;
}
while(!
qingchu)display(num0,num1,num2,num3);
}
if(miaoshi==0&&TR0==0&&baojing!
=1)
{
delay(5);
if(miaoshi==0)
{
//if(num1<=6)
temp=temp+10;
num1++;
if(num1>=6)
{temp=temp-60;
num1=0;
}
}
ET0=1;
baojing=0;
while(!
miaoshi)display(num0,num1,num2,num3);
}
if(fenge==0&&TR0==0&&baojing!
=1)
{
delay(5);
if(fenge==0)
{
temp=temp+60;
num2++;
if(num2>=10)
{temp=temp-600;
num2=0;
}
baojing=0;
}
while(!
fenge)display(num0,num1,num2,num3);
}
if(fenshi==0&&TR0==0&&baojing!
=1)
{
delay(5);
if(fenshi==0)
{
temp=temp+600;
num3++;
if(num3>=10)
{temp=temp-6000;
num3=0;
}
ET0=1;
baojing=0;
}
while(!
fenshi)display(num0,num1,num2,num3);
}
display(num0,num1,num2,num3);
}
2.4软件与硬件结合调试
硬件调试:
硬件调试是利用DVCC实验与开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。
硬件调试可分为静态调试与动态调试两步进行。
静态调试:
是在用户系统未工作时的一种硬件检测。
第一步:
目测。
检查外部的各种元件或者是电路是否有断点。
第二步:
用万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
第三步:
加电检测。
给板加电,检测所有插座或是器件的电源端是否符合要求的值
第四步:
联机检查。
因为只有用单片机开发系统才能完成对用户系统的调试。
动态调试:
是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。
动态调试的一般方法是由近及远、由分到合。
由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。
当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。
由分到合的调试既告完成。
由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。
调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。
软件调试:
软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
可以利用仿真器加以调试,对系统单个单元进行调试,当单元电路成功后,在对整个程序调试,最后在用功CPU芯片调试。
当加电后,晶体管显示的为00:
00,按照操作当相应的秒十,分个,分十按键按下时,P1口的电平由高变低,相应的位进行加以操作,当按下清除键时,数码管恢复为初始的00:
00状态,再次进行按键操作,当按下开始键后,其他按键都不产生作用,开始倒计时,数码管也相应的做出变化,当倒计时到00:
00时蜂鸣器发出报警,与要求相同,调试成功。
3.课程设计心得
通过这次课程设计掌握51单片机的原理,初步掌握单片机调整及测试方法,提高动手能力和排除故障的能力。
同时通过本课题设计与装配、调试,提高自己的动手能力,巩固已学的理论知识,建立单片机理论和实践的结合,了解各单元电路之间的关系及相互影响,从而能准确设计、计算定时计数的各个单元电路。
初步掌握厨房报警器的调整及测试方法。
提高动手能力和排除故障的能力在完成单片机课程设计后我们发现我们还有许多不足所学到的知识还远远不够以至于还有一些功能不能被动完成。
但通过学习这一次实践增强了我们的动手能力提高和巩固了单片机方面的知识特殊是软件方面。
从中增强了我们的团队合作精神并让我们熟悉到把理论应用到实践中去是多么重要。
同时,这次单片机课设,老师们给了我们很多帮助,我们非常感谢指导老师们,王立国老师,高敬格老师,岑毅南老师,韩昱老师,她们不遗余力地指导解决我们设计中遇到的各种问题,我们非常感激。
4.参考文献
[1]张毅刚.单片机原理及应用.高等教育出版社,2003
[2]苏家键等.单片机原理及应用技术.北京:
高等教育出版社,2004
[3]钟睿.MCS-51 单片机原理及应用开发技术.北京:
中国铁道出版社,2006
[4]周明德.微型计算机系统原理及应用.清华大学出版社,2007
课程设计
评语
课程设计
成绩
指导教师
(签字)
年月日
5.教师评语
附1:
系统原理图
附2:
PCB图