基于AT89S52单片机的LED数字倒计时器
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
单片机/微机接口课程设计说明书
基于AT89S52单片机的LED数字倒计时器设计
1 设计任务与要求
1.1开发意义
近年来随着计算机在社会领域的渗透,单片机的应用正在不断深入人们的生活,同时带动传统控制检测日新月异。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结构,针对具体应用特点与软件结合。本项目讨论了LED数字倒计时器的设计与制作,此
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
线路简单,成本低,应用前景广阔。
本课题开发的意义在于它既节省了硬件成本,又能实现多功能,即可做到到几十秒
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
,又可进行定时,还可以通过扩展完成其他功能,而且功能的相互转换也十分简单。对于厂商有很大的挖掘潜在价值的空间,对于消费者也有很大的吸引力。 1.2功能说明
基于AT89S52单片机的LED数字倒计时器主要具有如下功能: LED数码管显示倒计时时间。
(1) 倒计时过程中能设置多个闹钟,当倒计时值倒计到设定值时会发出约2s的报
警声音。
(2) 通过按键可以对倒计时设定初值。倒计时初始值范围在24:00:00~00:00:60
之间,用户可根据需要对其进行设置,设置成功后复位初始值为成功设定值。
1
单片机/微机接口课程设计说明书
2 设计方案
2.1系统设计
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash
存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
2.1.1 主要性能
1与MCS-51单片机产品兼容
2 8K字节在系统可编程Flash存储器
3 1000次擦写周期
4 全静态操作:0Hz,33Hz
5 三级加密程序存储器
6 32个可编程I/O口线
7 三个16位定时器/计数器
8八个中断源
9全双工UART串行通道
10 低功耗空闲和掉电模式
l 1掉电后中断可唤醒
l 2看门狗定时器
l3 双数据指针
2
单片机/微机接口课程设计说明书
l4 掉电标识符
2.1.2 功能特性描述
AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,
1 单片机一切工作停止,直到下一个中断或硬件复位为止。
R8 位微控制器 8K 字节在系统可编程
Flash
AT89S52
Rev. 1919-07/01
AT89S52
P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。
P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以
3
单片机/微机接口课程设计说明书
作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
2 引脚号第二功能
P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5 MOSI(在系统编程用)
P1.6 MISO(在系统编程用)
P1.7 SCK(在系统编程用)
P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
3 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
4
单片机/微机接口课程设计说明书
4 在flash编程和校验时,P3口也接收一些控制信号。
P3.0 RXD(串行输入)
P3.1 TXD(串行输出)
P3.2 INT0(外部中断0)
P3.3 INT0(外部中断0)
P3.4 T0(定时器0外部输入)
P3.5 T1(定时器1外部输入)
P3.6 WR(外部数据存储器写选通)
P3.7 RD(外部数据存储器写选通)
RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。
ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。
PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:振荡器反相放大器的输出端。
5
单片机/微机接口课程设计说明书
AT89S52
5 表1 AT89S52 特殊寄存器映象及复位值
特殊功能寄存器
特殊功能寄存器(SFR)的地址空间映象如表1所示。
并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些地址,一般将得到一个随机数据;写入的数据将会无效。用户不应该给这些未定义的地址写入数据“1”。由于这些寄存器在将来可能被赋予新的功能,复位后,这些位都为“0”。定时器2 寄存器:寄存器T2CON 和T2MOD 包含定时器2 的控制位和状态位(如表2和表3所示),寄存器对RCAP2H和RCAP2L是定时器2的捕捉/自动重载寄存器。中断寄存器:各中断允许位在IE寄存器中,六个中断源的两个优先级也可在IE中设置。
6 表2 T2CON:定时器/计数器2控制寄存器T2CON 地址为0C8H
复位值:0000 0000B
位可寻址TF2 EXF2 RLCLK TCLK EXEN2 TR27 6 5 4 3 2 1 0符号功能TF2 定时器2 溢出标志位。必须软件清“0”。RCLK=1 或TCLK=1 时,TF2不用置位。EXF2定时器2 外部标志位。EXEN2=1 时,T2EX 上的负跳变而出现捕捉或重载时,EXF2 会被硬件置位。定时器2 打开,EXF2=1 时,将引导CPU执行定时器2 中断程序。EXF2 必须如见清“0”。在向下/向上技术模式(DCEN=1)下EXF2不能引起中断。RCLK串行口接收数据时钟标志位。若RCLK=1,串行口将使用定时器2 溢出脉冲作为串行口工作模式1 和3 的串口接收时钟;RCLK,0,将使用定时器1计数溢出作为串口接收时钟。TCLK串行口发送数据时钟标志位。若TCLK=1,串行口将使用定时器2 溢出脉冲作为串行口工作模式1 和3 的串口发送时钟;TCLK,0,将使用定时器1计数溢出作为串口发送时钟。EXEN2定时器2外部允许标志位。当EXEN2=1时,如果定时器2没有用作串行时钟,T2EX(P1.1)的负跳变见引起定时器2 捕捉和重载。若EXEN2,0,定时器2将视T2EX端的信号无效TR2 开始/停止控制定时器2。TR2=1,定时器2开始工作定时器2 定时/计数选择标志位。,0,定时; ,1,
6
单片机/微机接口课程设计说明书
外部事件计数(下降沿触发)捕捉/重载选择标志位。当EXEN2=1时, ,1,T2EX出现负脉冲,会引起捕捉操作;当定时器2溢出或EXEN2=1时T2EX出现负跳变,都会出现自动重载操作。,0 将引起T2EX 的负脉冲。当RCKL=1或TCKL,1时,此标志位无效,定时器2溢出时,强制做自动重载操作。双数据指针寄存器:为了更有利于访问内部和外部数据存储器,系统提供了两路16位数据指针寄存器:位于SFR中82H~83H的DP0和位于84H,85。特殊寄存器AUXR1中DPS,0 选择DP0;DPS=1 选择DP1。用户应该在访问数据指针寄存器前先初始化AT89S528DPS至合理的值。表3a AUXR:辅助寄存器AUXR 地址:8EH 复位值:XXX00XX0B不可位寻址- - - WDIDLE DISRTO - - DISALE7 6 5 4 3 2 1 0- 预留扩展用
DISALE ALE使能标志位DISALE 操作方式0 ALE 以1/6晶振频率输出信号1 ALE 只有在执行MOVX 或MOVC指令时激活DISRTO 复位输出标志位DISRTO0 看门狗(WDT)定时结束,Reset 输出高电平1 Reset 只有输入WDIDLE 空闲模式下WDT使能标志位WDIDLE0 空闲模式下,WDT继续计数1 空闲模式下,WDT停止计数掉电标志位:掉电标志位(POF)位于特殊寄存器PCON的第四位(PCON.4)。上电期间POF置“1”。POF可以软件控制使用与否,但不受复位影响。表3b AUXR1:辅助寄存器1AUXR1 地址:A2H 复位值:XXXXXXX0B不可位寻址, , , , , , , DPS7 6 5 4 3 2 1 0- 预留扩展用DPS 数据指针选择位DPS0 选择DPTR寄存器DP0L和DP01 选择DPTR寄存器DP1L和DP1HAT89S52
7 存储器结构
MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。
程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。
对于89S52,如果EA 接VCC,程序读写先从内部存储器(地址为0000H,1FFFH)开始,接着从外部寻址,寻址地址为:2000H~FFFFH。
7
单片机/微机接口课程设计说明书
数据存储器:AT89S52 有256 字节片内数据存储器。高128 字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。
当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特
殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。
例如,下面的直接寻址指令访问0A0H(P2口)存储单元
MOV 0 A 0 H ,#data
使用间接寻址方式访问高128 字节RAM。例如,下面的间接寻址方式中,R0 内容为0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。MOV @ R 0, #data
堆栈操作也是简介寻址方式。因此,高128字节数据RAM也可用于堆栈空间。看门狗定时器WDT是一种需要软件控制的复位方式。WDT 由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。WDT 在默认情况下无法工作;为了激活WDT,户用必须往WDTRST 寄存器(地址:0A6H)中依次写入01EH 和0E1H。当WDT激活后,晶振工作,WDT在每个机器周期都会增加。WDT计时周期依赖于外部时钟频率。除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。当WDT溢出,它将驱动RSR引脚一个高个电平输出。WDT的使用为了激活WDT,用户必须向WDTRST寄存器(地址为0A6H的SFR)依次写入0E1H和0E1H。当WDT激活后,用户必须向WDTRST写入01EH和0E1H喂狗来避免WDT溢出。当计数达到8191(1FFFH)时,13 位计数器将会溢出,这将会复位器件。晶振正常工作、WDT激活后,每一个机器周期WDT 都会增加。为了复位WDT,用户必须向WDTRST 写入01EH 和0E1H(WDTRST 是只读寄存器)。WDT 计数器不能读或写。
当WDT 计数器溢出时,将给RST 引脚产生一个复位脉冲输出,这个复位脉冲持续96个晶振周期(TOSC),其中TOSC=1/FOSC。为了很好地使用WDT,应
8
单片机/微机接口课程设计说明书
该在一定时间内周期性写入那部分代码,以避免WDT复位。掉电和空闲方式下的WDT在掉电模式下,晶振停止工作,这意味这WDT也停止了工作。在这种方式下,用户不必喂狗。有两种方式可以离开掉电模式:硬件复位或通过一个激活的外部中断。通过硬件复位退出掉电模式后,用户就应该给WDT 喂狗,就如同通常AT89S52 复位一样。通过中断退出掉电模式的情形有很大的不同。中断应持续拉低很长一段时间,使得晶振AT89S5210稳定。当中断拉高后,执行中断服务程序。为了防止WDT在中断保持低电平的时候复位器件,WDT 直到中断拉低后才开始工作。这就意味着WDT 应该在中断服务程序中复位。
为了确保在离开掉电模式最初的几个状态WDT不被溢出,最好在进入掉电模式前就复位WDT。在进入待机模式前,特殊寄存器AUXR的WDIDLE位用来决定WDT是否继续计数。默认状态下,在待机模式下,WDIDLE,0,WDT继续计数。为了防止WDT在待机式下复位AT89S52,用户应该建立一个定时器,定时离开待机模式,喂狗,再重新进入待机模式。
UART在AT89S52 中,UART 的操作与AT89C51 和AT89C52 一样。定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。其工作方式由特殊寄存器T2CON中的C/T2位选择。
定时器2有三种工作模式:捕捉方式、自动重载(向下或向上计数)和波特率发生器。如表3 所示,工作模式由T2CON中的相关位选择。定时器2 有2 个8位寄存器:TH2和TL2。在定时工作方式中,每个机器周期,TL2 寄存器都会加1。由于一个机器周期由12 个晶振周期构成,因此,计数频率就是晶振频率的1/12。
在计数工作方式下,寄存器在相关外部输入角T2 发生1 至0 的下降沿时增加1。在这AT89S5211种方式下,每个机器周期的S5P2期间采样外部输入。一个机器周期采样到高电平,而下一个周期采样到低电平,计数器将加1。在检测到跳变的这个周期的S3P1 期间,新的计数值出现在寄存器中。因为识别1,0的跳变需要2个机器周期(24个晶振周期),所以,最大的计数频率不高于晶振频率的1/24。为了确保给定的电平在改变前采样到一次,电平应该至少在一个完整的机器周期内保持不变。
9
单片机/微机接口课程设计说明书
8 捕捉方式
在捕捉模式下,通过T2CON中的EXEN2来选择两种方式。如果EXEN2=0,定时器2时一个16位定时/计数器,溢出时,对T2CON 的TF2标志置位,TF2引起中断。如果EXEN2=1,定时器2做相同的操作。除上述功能外,外部输入T2EX引脚(P1.1)1至0的下跳变也会使得TH2和TL2中的值分别捕捉到RCAP2H和RCAP2L中。除此之外,T2EX 的跳变会引起T2CON 中的EXF2 置位。像TF2 一样,T2EX 也会引起中断。
9 自动重载
当定时器2 工作于16 位自动重载模式,可对其编程实现向上计数或向下计数。这一功能可以通过特殊寄存器T2MOD(见表4)中的DCEN(向下计数允许位)来实现。通过复位,DCEN 被置为0,因此,定时器2 默认为向上计数。DCEN 设置后,定时器2就可以取决于T2EX向上、向下计数。
如图6 所示,DCEN=0 时,定时器2 自动计数。通过T2CON 中的EXEN2 位可以选择两种方式。如果EXEN2=0,定时器2计数,计到0FFFFH后置位TF2溢出标志。计数溢出也使得定时器寄存器重新从RCAP2H 和RCAP2L 中加载16 位值。定时器工作于
捕捉模式,RCAP2H和RCAP2L的值可以由软件预设。如果EXEN2=1,计数溢出或在外部T2EX(P1.1)引脚上的1到0的下跳变都会触发16位重载。这个跳变也置位EXF2
10 中断标志位。
如图6所示,置位DCEN,允许定时器2向上或向下计数。在这种模式下,T2EX引脚控制着计数的方向。T2EX上的一个逻辑1使得定时器2向上计数。定时器计到0FFFFHAT89S5212溢出,并置位TF2。定时器的溢出也使得RCAP2H和RCAP2L中的16位值分别加载到定时器存储器TH2和TL2中。T2EX 上的一个逻辑0 使得定时器2 向下计数。当TH2 和TL2 分别等于RCAP2H 和RCAP2L中的值的时候,计数器下溢。计数器下溢,置位TF2,并将0FFFFH加载到定时器存储器中。定时
10
单片机/微机接口课程设计说明书
器2上溢或下溢,外部中断标志位EXF2 被锁死。在这种工作模式下,EXF2不能触发中断。
11 波特率发生器
通过设置T2CON(见表2)中的TCLK或RCLK可选择定时器2 作为波特率发生器。
如果定时器2作为发送或接收波特率发生器,定时器1可用作它用,发送和接收的波特率可以不同。如图8 所示,设置RCLK 和(或)TCLK 可以使定时器2 工作于波特率产生模式。波特率产生工作模式与自动重载模式相似,因此,TH2 的翻转使得定时器2 寄存器重载被软件预置16位值的RCAP2H和RCAP2L中的值。模式1和模式3的波特率由定时器2溢出速率决定,具体如下公式:模式1和模式3波特率,16
12 溢出率定时器
定时器可设置成定时器,也可为计数器。在多数应用情况下,一般配置成定时方式(CP/T2=0)。定时器2 用于定时器操作与波特率发生器有所不同,它在每一机器周期(1/12晶振周期)都会增加;然而,作为波特率发生器,它在每一机器状态(1/2晶振周期)都会增加。波特率计算公式如下:
模式1和模式3的波特率,2 , [ 2 ( 65536 32 L RCAP H RCAP)]
定时器2 作为波特率发生器,如图8 所示。图中仅仅在T2CON 中RCLK 或TCLK,1才有效。特别强调,TH2的翻转并不置位TF2,也不产生中断; EXEN2置位后,T2EX引脚上1,0的下跳变不会使(RCAP2H,RCAP2L)重载到(TH2,TL2)中。因此,定时器2作为波特率发生器,T2EX也还可以作为一个额外的外部中断。定时器2处于波特率产生模式,TR2=1,定时器2正常工作。TH2或TL2不应该读写。
11
单片机/微机接口课程设计说明书
在这种模式下,定时器在每一状态都会增加,读或写就不会准确。寄存器RCAP2可以读,但不能写,因为写可能和重载交迭,造成写和重载错误。在读写定时器2 或RCAP2寄存器时,应该关闭定时器(TR2清0)。可编程时钟输出
如图9 所示,可以通过编程在P1.0 引脚输出一个占空比为50%的时钟信号。这个引脚除了常规的I/O 角外,还有两种可选择功能。它可以通过编程作为定时器/计数器2 的外部时钟输入或占空比为50%的时钟输出。当工作频率为16MHZ时,时钟输出频率范围为61HZ到4HZ。为了把定时器2配置成时钟发生器,位C/T2(T2CON.1)必须清0,位T2OE(T2MOD.1)必须置1。位TR2(T2CON.2)启动、停止定时器。时钟输出频率取决于晶振频率和定时器2捕捉寄存器(RCAP2H,RCAP2L)的重载值,如公式所示:时钟输出频率,[2 ,( 2 65536 4 )]
晶振频率L RCAP H RCAP ′在时钟输出模式下,定时器2不会产生中断,这和定时器2用作波特率发生器一样。定AT89S5215时器2也可以同时用作波特率发生器和时钟产生。不过,波特率和输出时钟频率相互并不独立,它们都依赖于RCAP2H和RCAP2L。
图9 定时器2时钟输出模式中断
AT89S52 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断。这些中断如图10所示
每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。
如表5所示,IE.6位是不可用的。对于AT89S52,IE.5位也是不能用的。用户软件不应给这些位写1。它们为AT89系列新产品预留。
定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2 或EXF2激活中断,标志位也必须由软件清0。
12
单片机/微机接口课程设计说明书
定时器0和定时器1标志位TF0 和TF1在计数溢出的那个周期的S5P2被置位。它们的值一直到下一个周期被电路捕捉下来。然而,定时器2 的标志位TF2 在计数溢出的那个周期的S2P2被置位,在同一个周期被电路捕捉下来。AT89S5216
晶振特性
如图10 所示,AT89S52 单片机有一个用于构成内部振荡器的反相放大器,XTAL1 和XTAL2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,XTAL2 可以不接,而从XTAL1 接入,如图12 所示。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。
13 空闲模式
在空闲工作模式下,CPU 处于睡眠状态,而所有片上外部设备保持激活状态。这种状态可以通过软件产生。在这种状态下,片上RAM和特殊功能寄存器的内容保持不变。空闲模式可以被任一个中断或硬件复位终止。由硬件复位终止空闲模式只需两个机器周期有效复位信号,在这种情况下,片上硬件禁止访问内部RAM,而可以访问端口引脚。空闲模式被硬件复位终止后,为了防止预想不到的写端口,激活空闲模式的那一条指令的下一条指令不应该是写端口或外部存储器。
14 掉电模式
在掉电模式下,晶振停止工作,激??? 活掉电模式的指令是最后一条执行指令。片上RAMAT89S5218和特殊功能寄存器保持原值,直到掉电模式终止。掉电模式可以通过硬件复位和外部中断退出。复位重新定义了SFR 的值,但不改变片上RAM 的值。在VCC未恢复到正常工作电压时,硬件复位不能无效,并且应保持足够长的时间以使晶振重新工作和初始化。AT89S52 带有用作编程的片上Flash 存储器阵列。编程接口需要一个高电压(12V)编程使能信号,并且兼容常规的第三方* Flash或EPROM编程器。AT89S52程序存储阵列采用字节式编程。
15 编程方法
13
单片机/微机接口课程设计说明书
对AT89S52编程之前,需根据Flash编程模式表和图13、图14对地址、数据和控制信号设置。可采用下列步骤对AT89S52编程:
1(在地址线上输入编程单元地址信号
2(在数据线上输入正确的数据
3(激活相应的控制信号
4(把EA/V pp升至12V
5(每给Flash写入一个字节或程序加密位时,都要给ALE/PROG一次脉冲。字节写周期时自身定制的,典型值仅仅50us。改变地址、数据重复第1步到第5步,知道全部文件结束。Data PollingAT89S52用Data Polling作为一个字节写周期结束的标志特征。
3 硬件电路设计
基于AT单片机的LED倒计时器的电路主要涉及按键电路和6位LED数码管显示电路。
3.1 按键功能说明
K1用于设置时间和闹钟的小时。
K2用于设置小时以及设置闹钟的开关。
K3用于设置分钟和闹钟的分钟。
K4用于设置完成退出。
3.1.1 框图设计
LED倒计时器以AT89S52单片机为核心,系统包括六位数码管显示电路,按键电路,电源电路,复位电路,晶振电路以及蜂鸣器电路几部分,LED倒计时器设计框图
14
单片机/微机接口课程设计说明书
电源电路
6位数码复位电路 管显示电 路 AT89S52
蜂鸣器电 单片机
路
晶振电路 按键电路
如图12-1所示。
本项目需要通过学习和查阅资料,掌握和了解如下知识: (1)+5V电源原理及设计。
(2)单片机复位电路工作原理及设计那。 (3)单片机晶振电路工作原理及设计。
(4)按键电路的设计。
(5)三极管2N5088的特性及使用。
(6)LED数码管的特性及使用。
(7)单片机引脚。
(8)单片机汇编语言及程序设计
15
单片机/微机接口课程设计说明书
4 主要参数计算与分析
4.1 6位LED数码管显示
本项目设计采用了6位数码管显示电路,在设计6位LED显示时,为了简化电路,降低成本,采用动态显示方式,6个LED显示器共用一个8位的I/O,6位LED数码管的位选线分别由相应的P2.0~p2.5控制,而将相应的段选线并联在一起,由一个8位的I/O口控制,即p0口。译码显示电路将“时”、“分”、“秒”显示数字进行校对
调整。
4.1.1 电路原理图
LED数字倒计时器元件
清单
安全隐患排查清单下载最新工程量清单计量规则下载程序清单下载家私清单下载送货清单下载
如表12-1所示。
元件名称 型号 数量/个 用途 单片机 AT89S52 1 控制核心 晶振 12MHz 1 晶振电路 电容 30pF 2 晶振电路 电解电容 22μF/10V 1 复位电路 电阻 10kΩ 1 复位电路 按键 5 按键电路 数码管 共阳 6 显示器 集成块 74LS245 3 驱动 三极管 2N5088 1 蜂鸣器 喇叭 8Ω/0.5W 1 蜂鸣器 电阻 1kΩ 2 蜂鸣器 电阻 100Ω 1 蜂鸣器 电阻 2.7kΩ 4 上拉电阻 电阻 330Ω 8 上拉电阻 电源 +5V/0.5A 1 提供+5V 集成块 74LS07 1 驱动
表12-1 LED数字倒计时器元件清单
16
单片机/微机接口课程设计说明书
5 软件设计
5.1程序
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图
LED数字倒计时器流程图如图12-3所示
启动走时 开始
有关变量初始化 CPU系统初始化
时或分变, 定时器0初始化
中断初始化 判断显示
1秒到, 判断
设置
时
, 间
秒指示
设置闹铃时间
闹钟时间到, 显示刷新
蜂鸣器
结束
图5-3 LED数字倒计时器程序流程图 程序清单
17
单片机/微机接口课程设计说明书
程序清单如下:
K1 EQU p1.0
K2 EQU P1.1
K3 EQU p1.2
K4 EQU P1.3
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIME
ORG 0100H
MAIN: MOV SP, #50H
MOV 20H, #3CH ;时间 BIN SECOND
MOV 21H, #3CH ; BIN MINUTE
MOV 22H, #18H ; BIN HOUR
MOV 23H, #01H ;闹铃 BIN MINUTE
MOV 24H, #01H ; BIN HOUR
MOV 25H, #00H ;定义一个标志位
MOV 30H, #00H ;时间 BCD SECOND
MOV 31H, #00H
MOV 32H, #00H ; BCD MINUTE
MOV 33H, #00H
MOV 34H, #00H ; BCD HOUR
MOV 35H, #00H
MOV 36H, #01H ;闹铃 BCD MINUTE
MOV 37H, #00H
MOV 38H, #01H ; BCD HOUR
MOV 39H, #00H
MOV TMOD, #01H ;16位计数器T0,方式1
MOV THO, #03CH ;赋初值
MOV TLO, #0B0H
18
单片机/微机接口课程设计说明书
MOV IE, #10000111B;开中断TO,EA=1
SETB TRO ;T0启动计数
MOV R2, #14H ;计数器
#0FFH MOV P2,
LOOP:LCALL TIMEPRO ;调用现在时间与闹铃时间比较程序
LCALL DISPLAY1 ;调用现在时间显示子程序
JB K1,M1 ;判断按键是否按下
LCALL XIAOZHEN1 ;调用消抖程序
MOV C, 25H.0
JC A1
A1: CLR 25H.0
LCALL SETTIME ;调用设置现在时间子程序
LJMP LOOP
M1: JB K2, M2
LCALL XIAOZHEN2
MOV C, 25H.0
JC A2
A2: CLR 25H.0
LCALL SETTIME ;调用设置闹钟的程序
LJMP LOOP
M2: JB K4, M3
A3: LCALL XIAOZHEN3
MOV C, 25H.0
JC A4
A4: CLR 25H.0
M3: LJMP LOOP
SETTIME:
LO: LCALL DISPLAY1
JB K2, L1
LCALL XIAOZHEN4
19
单片机/微机接口课程设计说明书
MOV C, 25H.0
JC A5
A5: CLR 25H.0
DEC 22H
MOV A,22H
CJNE A,#18H,G012
MOV 22H, #00H
MOV 34H, #00H
MOV 35H, #00H
LJMP L0 L1: JB K3, L2
LCALL XIAOZHEN5
MOV C, 25H.0
JC A6
A6: CLR 25H.0
DEC 21H
MOV A,21H
CJNE A,#3CH,G011
MOV 21H, #00H
MOV 32H, #00H
MOV 33H, #00H
LJMP L0 GO11: MOV B,#0AH
DIV AB
MOV 32H, B
MOV 33H, A
LJMP L0 GO12: MOV B,#0AH
DIV AB
MOV 34H, B
20
单片机/微机接口课程设计说明书
MOV 35H, A
LJMP L0
L2: JB K4, L0
LCALL XIAOZHEN3 MOV C, 25H.0
JC AX
AX: CLR 25H.0
RET
SETATIME: LCALL DISPLAY2
NO: LCALL DISPLAY2
JB K3, N1
LCALL XIAOZHEN6
MOV C, 25H.0
JC A7
A7: CLR 25H.0
DEC 24H
MOV A, 24H
CJNE A,#24,G022
MOV 24H, #00H
MOV 38H, #00H
MOV 39H, #00H
LJMP N0
N1: JB K1 N2
LCALL XIAOZHEN7
MOV C, 25H.0
JC A8
A8: CLR 25H.0
DEC 23H
MOV A, 23H
CJNE A,#60,G021
21
单片机/微机接口课程设计说明书
MOV 23H, #00H
MOV 36H, #00H
MOV 37H, #00H
LJMP N0
G021: MOV B, #0AH
DIV AB
MOV 36H, B
MOV 37H, A
LJMP N0
G022: MOV B, #0AH
DIV AB
MOV 38H, B
MOV 39H, A
LJMP N0
N2: JB K4 N0
LCALL XIAOZHEN3
MOV C, 25H.0
JC A9
A9: CLR 25H.0
RET
TIMEPRO: MOV A, 21H
MOV B, 23H
CJNE A, B, BK
MOV A, 22H
MOV B, 24H
CJNE A, B, BK
SETB 25H.0
MOV C, 25H.0
JC XX
XX: LCALL TIMEOUT
22
单片机/微机接口课程设计说明书
BK: RET
TIMEOUT:
X1: LCALL BZ
LCALL DISPLAY2
CLR 25H.0
JB K4,X1
RET
BZ: CLR P3.7
MOV R7, #250 T2: MOV R6, #124 T3: DJNZ R6,T3
DJNZ R7,T2
JB K4,XY
LCALL XIAOZHEN3
MOV C, 25H.0
JC XY1
XY: RET
XY1: LJMP LOOP
XIAOZHEN1: LCALL DISPLAY1
JB K1,XIAOZHEN1
MOV C, K1
LCALL JC XIAOZHEN1
LCALL DELAY
MOV C, K1
JC XIAOZHEN1 STOP1: MOV C, K1
JNC STOP1
LCALL DELAY
MOV C, K1
JNC STOP1
23
单片机/微机接口课程设计说明书
SETB 25H.0
RET
XIAOZHEN2: LCALL DISPLAY2
XIAOZHEN2 JB K2,
MOV C, K2
JC XIAOZHEN2 STOP2: MOV C, K2
JNC STOP2
LCALL DELAY
MOV C, K2
JNC STOP2
SETB 25H.0
RET
XIAOZHEN3: LCALL DISPLAY1
JB K4,XIAOZHEN3
MOV C, K4
JC XIAOZHEN3
LCALL DELAY
MOV C, K4
JC XIAOZHEN3 STOP3: MOV C, K4
JNC STOP3
LCALL DELAY
MOV C, K4
JNC STOP3
SETB 25H.0
RET
XIAOZHEN4: LCALL DISPLAY1
JB K2,XIAOZHEN4
MOV C, K2
24
单片机/微机接口课程设计说明书
JC XIAOZHEN4
LCALL DELAY
MOV C, K2
JC XIAOZHEN4
STOP4: MOV C, K2
JNC STOP4
LCALL DELAY
MOV C, K2
JNC STOP4
SETB 25H.0
RET
XIAOZHEN5: LCALL DISPLAY1
JB K3,XIAOZHEN5
MOV C, K3
JC XIAOZHEN5
LCALL DELAY
MOV C, K3
JC XIAOZHEN5
STOP5: MOV C, K3
JNC STOP5
LCALL DELAY
MOV C, K3
JNC STOP5
SETB 25H.0
RET
XIAOZHEN6: LCALL DISPLAY2
JB K3, XIAOZHEN6
MOV C, K3
JC XIAOZHEN6
LCALL DELAY
25
单片机/微机接口课程设计说明书
MOV C, K3
JC XIAOZHEN6
STOP6: MOV C, K3
JNC STOP6
LCALL DELAY
MOV C, K3
JNC STOP6
SETB 25H.0
RET
XIAOZHEN7: LCALL DISPLAY2
JB K1, XIAOZHEN7
MOV C, K1
JC XIAOZHEN7
LCALL DELAY
MOV C, K1
JC XIAOZHEN7
STOP7: MOV C, K1
JNC STOP7
LCALL DELAY
MOV C, K1
JNC STOP7
SETB 25H.0
RET
DELAY: MOV R4, #14H
DL00: MOV R5, #OFFH
DL11: DJNZ R5, DL11
DJNZ R4, DL00
RET
TIME: PUSH ACC
PUSH PSW
26
单片机/微机接口课程设计说明书
MOVTH0, #03CH
MOV TL0, #0B0H
DJNZ R2, RET0
MOV R2, #14H
MOV A, 20H
CLR C
DEC A
CJNE A, #0, G01
MOV 20H, #3CH
MOV 30H, #0
MOV 31H, #0
21HMOV A,
DEC A
CJNE A, #3CH, G02
MOV 21H, #0H
MOV 32H, # 0
MOV 33H, # 0
MOV A, 22H
DEC A
CJNE A, #18H,GO3
MOV 22H, # 00H
MOV 34H, # 0
MOV 35H, # 0
AJMP RETO
GO1: MOV 20H, A
MOV B, # 0AH
DIV AB
MOV 31H, A
MOV 30H, B
AJMP RETO
27
单片机/微机接口课程设计说明书
GO2: MOV 21H, A
MOV B, # 0AH
DIV AB
MOV 33H, AEEH
MOV 32H, B
AJMP RETO
GO3: MOV 22H, A
MOV B, # OAH
DIV AB
MOV 35H, A
MOV 34H, B
AJMP RETO
RETO: POP PSW
POP ACC
RETI
DISPLAY1: MOV R0, # 30H
MOV R3, # 0EEH
MOV A, R3
PLAY1: MOV P2, A
MOV A,@RO
MOV DPTR, # DSEG1
MOVC A,@A + DPTR
MOV P0, A
LCALL DL1
MOV P2, # 0EEH
MOV A, R3
RL A
JNB ACC.6, LD1
INC R0
MOV R3, A
28
单片机/微机接口课程设计说明书
LJMP PLAY1
LD1: RET
DISPLAY2: PUSH ACC
PUSH PSW
MOV RO, # 36H
MOV A, R3
PLAY2: MOV P2, A
MOV A,@R0
MOV DPTR, # DSEG1
MOVC A,@A+DPTR
MOV P0, A
LCALL DLL
MOV P2, # 0FFH
MOV A, R3
RL A
JNB ACC.6, LD2
INC R0
MOV R3, A
LJMP PLAY2
LD2: POP PSW
POP ACC
RET
DL1: MOV R7, # 05H
DL: MOV R6, # 0FFH
DL6: DJNZ R6, $
DJNZ R7, DL
RET
DSEG1: DB 3F, 06H, 5BH, 4FH, 66H
DB 6DH, 7DH, 07H, 7FH, 6FH
END
29
单片机/微机接口课程设计说明书
6 调试过程
6.1 系统仿真及调试
应用系统设计完成之后,要进行硬件调试和软件调试。软件调试可以利用开发及仿真系统进行。
1(硬件调试
硬件的调试主要是把电路各种参数调整到符合设计要求。具体如下: (1)先排除硬件电路故障,包括设计性错误和工艺性故障。一般原则是先静态后动态。
(2)利用万用表或逻辑测试仪器,检查电路中的各个器件以及引脚是否连接正确,是否有短路故障。
(3)先要将单片机AT89S52芯片取下,对电路板进行通电检查,通过观察看是否有异常,然后用万用表测试各电源电压,若这些都没有问题,则接上仿真机进行联机调试观察各接口线路是否正常。
2(软件调试
软件调试是利用仿真工具进行在仿真调试,除发现和解决程序错误以外,也可以发现硬件故障。
30
单片机/微机接口课程设计说明书
7结论
单片机的应用正在不断深入人们的生活,同时带动传统控制检测日新月异。AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
通过本次设计,使我们认识并了解了基本的设计开发过程,在这过程中,我的身边的同学们给了我很大的启示和帮助,而且我觉得对以前不了解的单片机只是有了一个更感更深的了解。我相信我所学的东西在以后的工作学习中会起很大的作用。
在本次设计中得到了指导老师邹老师的大力支持,在此表示感谢~
31
单片机/微机接口课程设计说明书
8附录
利用单片机内部的定时器溢出中断来实现定时,设定某定时器每100ms中断1
次,则10次的周期为1s。这种实现法的特点是精度高,秒脉冲的发生和其他处理
可以并行进行。
.......显示子程序........ DISP: MOV A, R0
ORL P2,#00001110B
ANL P2,#11111110B
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
MOV P1,A
LCALL DELAY
MOV A, R1
ORL P2,#00001110B
ANL P2,#11111110B
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
MOV P1,A
LCALL DELAY
MOV A, R2
ORL P2,#00001110B
ANL P2,#11111110B
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
MOV P1,A
LCALL DELAY
32
单片机/微机接口课程设计说明书
MOV A, R6
ORL P2,#00001110B
ANL P2,#11111110B
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
RET
...... ......延时子程序
DELAY:MOV R3,#25
#25 D1: MOV R4,
DJNZ R4,$
DJRZ R3,D1
RET
......TAB表......
TAB: DB OCOH, 0F9H, 0A4H, 0B0H, 99H
DB 92H, 82H 0F8H, 80H, 90H
参考资料:
[1] 王传昌.高分子化工的研究对象[J].天津大学学报,1997,53(3):1-7. [2] 李明.物理学[M].北京:科学出版社,1977:58-62. [3] 王健.建筑物防火系统可靠性分析[D].天津:天津大学,1997. [4] 姚光起.一种痒化锆材料的制备方法[P].中国专利:891056088,1980-07-03.
[5] GB3100-3102 0001—1994,中华人民共和国国家标准[S].
33