单片机厨房提醒器课程设计Word下载.docx
《单片机厨房提醒器课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《单片机厨房提醒器课程设计Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
AT89C51(1片)
三极管:
PNP(5个)
共阳极数码管:
4个
蜂鸣器:
1个
底座:
DIP40(1个)
万能电路板:
2.2设计任务和要求
本次课程设计,我们这一组要求做的是厨房提醒器设计。
提醒器在家庭中很实用,能够帮助提醒人做饭或者做菜的时间等,市面上卖的成品提醒器一般都比较贵,我们可以利用已经学过的知识自制简易的提醒器。
设计的主要内容是采用AT89S51作为控制单元,实现提醒器的设计。
(1)设计键盘输入电路;
(2)设计显示电路;
(3)合理分配地址,编写写程序;
(4)利用PROTEL设计硬件电路原理图和PCB图;
(5)软硬件联机调试;
(6)书写实验报告。
主要技术要求:
(1)设置提醒器的“开始”键,“清除”键,“分十位加一”键,“分个位加一”键和“秒十位加一”键。
刚通电时和按下“清除”键时,均可使显示器显示—00:
00—。
按下开始键,则按照设定的时间减一定时。
当显示器再次显示为00:
00时则蜂鸣器提醒定时到。
(2)4个数码管分别显示分十位,分个位,秒十位。
2.2.1设计基本原理
厨房提醒器设计,主要的部分是AT89S51,编写程序,实现软硬结合,实现提醒功能。
采用中断的方式,先清除按钮,然后设置分十位,分个位,秒十位,然后按开始按钮开始倒计时,当时间变为00:
00时蜂鸣器提醒则目的实现。
2.2.2器件说明
图1AT89C51的引脚图
2.2.2.1AT89C51单片机
AT89S51的引说明和功能说明如下:
VCC:
AT89S51电源正极输入,接+5V电压。
GND:
电源接地端。
XTAL1:
接外部晶振的一个引脚。
在单片机内部,它是一反相放大器输入端,这个放大器构成了片内振荡器。
它采用外部振荡器时,些引脚应接地。
XTAL2:
在片内接至振荡器的反相放大器输出端和内部时钟发生器输入端。
当采用外部振荡器时,则此引脚接外部振荡信号的输入。
RST:
AT89C51的复位信号输入引脚,高电位工作,当要对芯片又时,只要将此引脚电位提升到高电位,并持续两个机器周期以上的时间,AT89C51便能完成系统复位的各项工作,使得内部特殊功能寄存器的内容均被设成已知状态。
ALE/
:
ALE是英文"
ADDRESSLATCHENABLE"
的缩写,表示允许地址锁存允许信号。
当访问外部存储器时,ALE信号负跳变来触发外部的8位锁存器(如74LS373),将端口P0的
地址总线(A0-A7)锁存进入锁存器中。
在非访问外部存储器期间,ALE引脚的输出频率是系
统工作频率的1/16,因此可以用来驱动其他外围芯片的时钟输入。
当问外部存储器期间,
将以1/12振荡频率输出。
/VPP
该引脚为低电平时,则读取外部的程序代码(存于外部EPROM中)来执行程序。
因此
在8031中,EA引脚必须接低电位,因为其内部无程序存储器空间。
如果是使用AT89C51
或其它内部有程序空间的单片机时,此引脚接成高电平使程序运行时访问内部程序存储器,
当程序指针PC值超过片内程序存储器地址(如8051/8751/89C51的PC超过0FFFH)时,将自
动转向外部程序存储器继续运行。
此外,在将程序代码烧录至8751内部EPROM、89C51内部FALSH时,可以利用此引
脚来输入提供编程电压(8751为2lV、AT89C51为12V、8051是由生产厂方一次性加工好)。
此为"
ProgramStoreEnable"
的缩写。
访问外部程序存储器选通信号,低电平有效。
在访问外部程序存储器读取指令码时,每个机器周期产生二次PSEN信号。
在执行片内程序存储器指令时,不产生PSEN信号,在访问外部数据时,亦不产生PSEN信号。
P0口(P0.0~P0.7)是一个8位漏极开路双向输入输出端口,当访问外部数据时,它是地址总线(低8位)和数据总线复用。
外部不扩展而单片应用时,则作一般双向I/O口用。
P0口每一个引脚可以推动8个LSTTL负载。
P2口(P2.0~P2.7)是具有内部提升电路的双向I/0端口(准双向并行I/O口),当访问外部程序存储器时,它是高8位地址。
每一个引脚可以推动4个LSTL负载。
P1口(P1.0~P1.7)是具有内部提升电路的双向I/0端口(准双向并行I/O口),其输出可以推动4个LSTTL负载。
仅供用户作为输入输出用的端口。
P3口(P3.0~P3.7)是具有内部提升电路的双向I/0端口(准双向并行I/O口),它还提供特殊功能,包括串行通信、外部中断控制、计时计数控制及外部随机存储器内容的读取或写入控制等功能。
其特殊功能引脚分配如下:
P3.0RXD串行通信输入
P3.1TXD串行通信输出
P3.2
外部中断0输入,低电平有效
P3.3
外部中断1输入,低电平有效
P3.4T0计数器0外部事件计数输入端
P3.5T1计数器1外部事件计数输入端
P3.6
外部随机存储器的写选通,低电平有效
P3.7
外部随机存储器的读选通,低电平有效
2、内存空间
1、内部程序存储器(FLASH)4K字节。
2、外部程序存储器(ROM)64K字节。
3、内部数据存储器(RAM)256字节。
4、外部数据存储器(RAM)64K字节。
只读程序存储器和外部数据存储器分别如下图所示:
图2只读程序存储器图3外部数据存储器
图5内部高128个字节地址空间的特殊功能寄存器区
3.复位后寄存器状态
4、中断入口
5、PSW程序状态字
CY(PSW.7):
高位进位标志位。
常用“C”表示。
AC(PSW.6):
辅助进位标志。
F0(PSW.5):
用户标志位。
RS1(PSW.4):
寄存器组选择位1。
RS0(PSW.3):
寄存器组选择位0。
OV(PSW.2):
溢出标志位。
-(PSW.1):
保留位,无定义。
P(PSW.0):
奇偶校验位,在每一个指令周期中,若累加器(A)中的“1”的位个数是奇数个则P=1,偶数个则P=0。
TMOD定时/计数器工作方式控制寄存器
GATE:
当GATE=1时,INT0或INT1引脚且为高电平,同时TCON中的TR0或TR1控制位如为1时,定时/计数器0或1才会工作。
若GATE=0,同时只要TCON中的TR0或TR1控制位如为1时,定时/计数器0或1即可工作。
C/T:
选择定时或计数器模式。
当C/T=1为计数器,由外部引脚T0或T1输入计数脉冲。
C/T=0时为计时器,由内部系统时钟提供计时工作脉冲。
M1:
方式选择位1。
M0:
方式选择位0。
M1、M2的操作方式选择定义如下:
TCON定时/计数器工作方式控制寄存器
TF1(TCON.7):
计时器1溢出标志,当计时溢出时,由硬件设定为1,在执行相对的中断服务程序后则自动清0。
TR1(TCON.6):
计时器1启动控制位,可以由软件来设定或清除。
TR1时启动计时器工作,TRl=0时关闭。
TF0(TCON.5):
计时器0溢出标志,当计时溢出时,由硬件设定为1,在执行相对的中断服务程序后则自动清0。
TR0(TCON.4):
计时器0启动控制位,可以由软件来设定或清除。
TR0=1时,启动计时器工作,TR0=时关闭。
IE1(TCON.3):
外部中断1工作标志,当外部中断被检查出来时,硬件自动设定此位,在执行中断服务程序后,则清0。
IT1(TCON.2):
外部中断1工作形式选择,IT1=1时,由下降缘产生外部中断,IT1=0时,则为低电位产生中断。
IE0(TCON.1):
外部中断0工作标志,当外部中断被检查出来时,硬件自动设定此位,在执行中断服务程序后,则清0。
IT0(TCON.0):
外部中断0工作形式选择,IT1=1时,由下降沿产生外部中断IT1=0时,则为低电位产生中断。
SCON定时/计数器工作方式控制寄存器
SM0(SCON.7):
串行通讯工作方式设定位0。
SM1(SCON.6):
串行通讯工作方式设定位1。
SM2(SCON.5):
允许方式2或方式3多机通讯控制位。
在方式2或方式3时,如SM2=1,REN=1,则从机处于只有接收到RB8=1(地址帧)才激发中断请求标志位RI=1,向主机请求中断处理。
被确认为寻址的从机复位SM2=0,才能接收RB8=0的数据帧;
在方式1时,如SM2=l,则只有在接收到有效停止位时才置位中断请求标志位RI=1;
在方式0时,SM2应为0。
REN(SCON.4):
REN,允许/禁止串行接收控制位。
由软件置位REN=1为允许串行接收状态,可启动串行接收器RXD,开始接收信息。
软件复位REN=0,则禁止接收。
TB8(SCON.3):
在方式2或方式3,它为要发送的第9位数据,按需要由软件置位或清0。
例如,可用作数据的校验位或多机通讯中表示地址帧/数据帧的标志位。
RB8(SCON.2):
在方式2或方式3,是接收到的第9位数据。
在方式l,若SM2=0,则RB8是接收到的停止位。
方式0不用RB8。
TI(SCON.1):
发送中断请求标志位。
在方式0,当串行发送数据第8位结束时,由内部硬件自动置位TI=l,向主机请求中断,响应中断后必须用软件复位TI=0。
在其他方式中,则在停止位开始发送时由内部硬件置位,必须用软件复位。
RI(SCON.0):
接收中断请求标志位。
在方式0,当串行接收到第8位结束时由内部硬件自动置位RI=1,向主机请求申断,响应中断后必须用软件复位RI=0。
在其他方式中,串行接收到停止位的中间时刻由内部硬件置位RI=1(例外情况见SM2说明),必须由软件复位RI=0。
其中SM0、SM1按下列组合确定串行通讯的工作方式:
PCON电源控制寄存器
SMOD:
双倍波特率控制位。
-:
保留。
GF1:
通用标志。
GF0:
PD:
PD=1时,进入掉电方式。
IDL:
IDL=1时,进入冻结方式。
6、常用波特率与定时/计数器1各参数关系
2.2.2.2、数码管
数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);
共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点)。
图9共阳极内部接线图
此设计采用的是共阳极数码管,共阳极的LED显示管的发光二极管的阴极连在一块,通常此公共阳极接地,当某个发光二极管的阳极为低电平的时候,发光二极管点亮,相应的段被显示出来,为了使LED显示器不同的符号和数字,就要把不同段的发光二极管点亮,这样就要为LED显示器提供代码,因为这些代码可以使LED相应的段发光,从而显示不同的字型,因而该代码称之为段码。
图10共阳极数码管段码
2.3设计方案
根据设计的任务和要求,需要进行硬件和软件的结合。
2.3.1硬件设计
具体的电路原理图如下图11所示:
图11厨房提醒器原理图
分析电路图:
2.3.1.1按钮电路的分析
图12按钮电路
按钮电路中五个按钮分别代表开始键,清除键,秒个位健,秒十位健,分个位健,分十位健,他们分别与单片机的P0.0,P0.1,P0.2,P0.3,P0.4相连,并接10K的上拉电阻,按钮的另一端接地,当相应的按钮按下时,单片机根据程序会检测到相应P0口的电平变化,从而执行相应的子程序。
2.3.1.2位选电路的分析
图13位选电路
位选电路由五个三极管与电阻串联而成,电阻的主要作用是保护单片机的并行口,五个三极管的b级分别接单片机的P2.0,P2.1,P2.2,P2.3,e端接正5V电压,c端接数码管的位选端,当P2口中相应的并行口为低电平时,则三极管导通,并会选中相应的数码管。
2.3.1.3数码管段码端电路
图14段码电路
数码管的7个段码分别由P1口控制,限流电阻为330,当单片机P1的相应口为高电平时,会点亮数码管的相应的段码。
2.3.2软件的分析
此厨房提醒器采用的是提醒的方式,有五个按键,分别是“开始”键,“清除”键,“分十位加一”键,“分个位加一”键和“秒十位加一”键,程序需要设置各个按键的时间,然后按开始键倒计时,当再次显示00:
00时则蜂鸣器提醒到时。
具体的程序流程图如下图15所示:
2.3.2.1程序如下:
MIAOSEQUP0.4
FENGEEQUP0.3
FENSHEQUP0.2
KAISHEQUP0.1
QINGCEQUP0.0
;
************中断入口程序****************
ORG0000H
LJMPMAIN
ORG000BH
LJMPTIMER0
ORG0030H
***********主程序开始*******************
MAIN:
LCALLST;
上电显示00:
00
LOOP1:
JBMIAOS,LOOP2;
秒十位的设置
CLRP2.7;
开蜂鸣器
LCALLDELAY;
消抖
JBMIAOS,LOOP2;
判断秒十位是否按下
MOVA,41H
INCA
MOV41H,A
JNBMIAOS,$
CJNEA,#06H,LOOP2;
判断秒十位是否为6
MOV41H,#00H;
41H单元清0
LOOP2:
JBFENGE,LOOP3;
分个位设置
CLRP2.7;
JBFENGE,LOOP3;
判断分个位是否按下
MOVA,42H
MOV42H,A
JNBFENGE,$
CJNEA,#0AH,LOOP3;
判断分个位是否为10
MOV42H,#00H;
42H单元清0
LOOP3:
JBFENSH,START;
分十位设置
JBFENSH,START;
判断分十位是否按下
MOVA,43H
MOV43H,A
JNBFENSH,$
CJNEA,#06H,START;
判断分十位是否为6
MOV43H,#00H;
43H单元清0
START:
JBKAISH,LOOP5;
开始键设置
CLRP2.7;
JBKAISH,LOOP5;
扫描开始键
MOVTMOD,#01H;
定时器初始化
MOVTL0,#60H
MOVTH0,#0F0H
SETBET0
SETBEA
MOVR4,#250
SETBTR0
HEDIS:
ACALLDISP
SJMPLOOP1
LOOP5:
JBQINGC,ST;
清除键设置
SJMPLOOP1;
返回秒十位设置程序
****************显示00:
00程序********************
ST:
MOVR0,#40H;
将显示内容移到40H
MOVR2,#20H
MOVR3,#00H
CLRA
MOVDPTR,#STAB
SLOOP:
MOVCA,@A+DPTR
MOV@R0,A
MOVA,R3
INCA
MOVR3,A
INCR0
DJNZR2,SLOOP;
移入完毕
LCALLDISP;
调用显示程序
RET
STAB:
DB00H,00H,00H,00H
****************数码管显示程序********************
DISP:
MOVR1,40H
MOVR5,#0FEH;
扫描控制字初值
SPLAY:
MOVA,R5;
扫描字放入A
MOVP2,A;
从P2口输出
MOVA,@R1;
取显示数据到A
MOVDPTR,#TABS;
取段码表地址
MOVCA,@A+DPTR;
查显示数据对应段码
MOVP1,A;
段码放入P1口
MOVA,R5
LCALLDL1MS;
显示1ms
INCR1;
指向下一地址
JNBACC.3,ENDOUTS;
ACC.3=0时,一次显示结束
RLA;
A中数据循环左移
MOVR5,A
AJMPSPLAY;
跳回SPLAY循环
ENDOUTS:
MOVP2,#0FFH;
P2口复位
MOVP1,#0FFH
RET
TABS:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
共阳段数码表"
0"
"
1"
2"
3"
4"
5"
6"
7"
8"
9"
********************1ms延时程序******************************
DL1MS:
MOVR6,#14H
DL1:
MOVR7,#19H
DL2:
DJNZR7,DL2
DJNZR6,DL1
*************20ms延时程序,用于消抖**************************
DELAY:
CLRP2.7
LCALLDISP
SETBP2.7
****************中断程序***************
TIMER0:
MOVTL0,#60H
PUSHAcc
PUSHPSW
DJNZR4,N5
MOVB,#10
MOVA,41H
MULAB
ADDA,#40H
MOV50H,A
ADDA,42H
MOV51H,A
MOVA,50H
CJNEA,#00,LOOP10
MOVA,51H
CJNEA,#00,LOOP11
LCALLSPEAKEY
SJMPN4
LOOP11:
MOV50H,#59
DEC51H
LOOP10:
DEC50H
N4:
DIVAB
MOV41H,A
MOV40H,B
MOV42H,B
N5:
POPPSW
POPAcc
RET
SPEAKEY:
CLRTR0
SETBP2.7
END
2.3软件与硬件结合调试
硬件调试:
硬件调试是利用DVCC实验与开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。
硬件调试可分为静态调试与动态调试两步进行。
静态调试是在用户系统未工作时的一种硬件检测。
第一步:
目测。
检查外部的各种元件或者是电路是否有断点。
第二步:
用万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
第三步:
加电检测。
给板加电,检测所有插座或是器件的电源端是否符合要求的值
第四步:
联机检查。
因为只有用单片机开发系统才能完成对用户系统的调试。
动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。
动态调试的一般方法是由近及远、由分到合。
由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件