AT89C51单片机定时器中断模式和查询设置
- 格式:doc
- 大小:196.50 KB
- 文档页数:3
一、实训目的本次实训旨在通过使用AT89C51单片机,结合中断技术实现对跑马灯的控制,加深对单片机中断系统、定时器/计数器以及程序设计方法的理解和掌握。
二、实训内容1. 硬件设计- 主控制器:AT89C51单片机- 驱动电路:ULN2003A驱动器- 显示电路:8个LED灯- 控制电路:按键开关2. 软件设计- 编写程序实现跑马灯的基本功能,包括:- 跑马灯模式:LED灯依次点亮,形成跑马灯效果。
- 定时控制:通过定时器实现LED灯点亮时间的控制。
- 中断控制:通过外部中断实现按键控制跑马灯模式的切换。
三、实训步骤1. 硬件连接- 将AT89C51单片机的P1.0至P1.7引脚连接至ULN2003A的输入端,用于驱动LED灯。
- 将按键开关连接至单片机的P3.2和P3.3引脚,用于控制跑马灯模式。
- 将ULN2003A的输出端连接至LED灯的正极,负极接地。
2. 程序设计- 初始化配置:- 初始化定时器T0,设置定时时间为50ms。
- 初始化外部中断0和外部中断1,配置中断触发方式为下降沿触发。
- 跑马灯控制:- 设置定时器T0中断,当定时器溢出时触发中断,实现LED灯的点亮和熄灭。
- 在中断服务程序中,通过移动LED灯的位置,实现跑马灯效果。
- 按键控制:- 当按下P3.2引脚对应的按键时,切换跑马灯模式。
- 当按下P3.3引脚对应的按键时,停止跑马灯运行。
3. 程序调试- 编译程序,将生成的HEX文件烧录至AT89C51单片机。
- 连接调试器,观察程序运行情况,确保跑马灯控制功能正常。
四、实训结果与分析1. 跑马灯效果通过实验,成功实现了跑马灯的基本功能,LED灯依次点亮,形成跑马灯效果。
定时器T0的设置保证了LED灯点亮时间的控制,中断技术实现了按键控制跑马灯模式的切换。
2. 中断控制外部中断0和外部中断1的配置保证了按键控制功能的实现。
当按下按键时,中断服务程序会根据按键的引脚和状态切换跑马灯模式或停止跑马灯运行。
AT89C51单片机电子时钟的设计1.硬件设计首先,我们需要选择合适的外设硬件进行设计。
以下是一些常见的硬件组件:-AT89C51单片机-蜂鸣器-DS1302时钟模块-按键开关和对应的电阻液晶模块的连接方式如下:-VSS->GND-VDD->VCC-V0->电位器-RS->P0.7-R/W->P0.6-E->P0.5-DB0-DB7->P2.0-P2.7蜂鸣器的连接方式如下:-正极->P3.0-负极->GNDDS1302时钟模块的连接方式如下:-VCC->VCC-GND->GND-CE->P1.7-IO->P1.6-SCLK->P1.5按键开关的连接方式如下:-第一个按键->P3.1-第二个按键->P3.2-第三个按键->P3.32.软件设计在软件设计方面,我们将使用C语言编程来编写程序。
首先,我们需要定义和初始化必要的变量,例如小时、分钟和秒钟等计时变量。
然后,我们需要编写一个初始化函数来配置单片机的各种外设和寄存器。
在这个函数中,我们需要设置计时器/计数器、I/O口和中断等。
接下来,我们需要编写一个定时器中断函数,来更新计时变量并实现计时功能。
我们可以使用定时器中断来定期更新秒钟,并在需要时更新小时和分钟。
在主循环中,我们需要编写代码来控制液晶模块、蜂鸣器和按键开关等外设。
通过液晶模块,我们可以实现显示时间的功能。
通过蜂鸣器,我们可以实现头每秒发出一次滴答声的功能。
通过按键开关,我们可以实现设置时间的功能。
3.程序实现以下是AT89C51单片机电子时钟的程序框架:```c#include <reg51.h>#include <intrins.h>//定义和初始化计时变量unsigned char second = 0;unsigned char minute = 0;unsigned char hour = 0;//初始化函数void ini//配置计时器/计数器,设置定时器中断//配置I/O口和中断等//...//定时器中断函数//更新计时变量//...//主函数void mai//初始化init(;//主循环while (1)//控制液晶模块//控制蜂鸣器//控制按键开关//...}```在具体的代码实现中,我们需要根据液晶模块、蜂鸣器和按键开关等外设的具体规格和功能来编写相应的代码。
基于at89c51单片机的定时闹钟的设计本文介绍了基于AT89C51单片机的定时闹钟的设计。
文章将探讨设计目的和背景,并着重阐述定时闹钟的实现原理和功能。
本文档将介绍基于at89c51单片机的定时闹钟的硬件设计要点,包括电源、显示器、按键等组件选择和连接方式。
电源选择与连接在设计定时闹钟的硬件方案时,选择合适的电源是非常重要的。
以下是一些电源选择和连接的要点:使用稳定可靠的电源模块,例如直流电源模块,以确保单片机工作的稳定性。
将电源模块的正负极连接到at89c51单片机的VCC和GND引脚上。
注意电源的电压和电流要符合at89c51单片机的工作要求。
显示器选择与连接显示器是定时闹钟中显示时间和其他信息的重要组件。
以下是一些显示器选择和连接的要点:考虑使用液晶显示器 (LCD) 或数码管作为显示器,这些显示器可以清晰地显示数字和字符。
根据设计需求,选择合适的显示器尺寸和类型。
将显示器的控制引脚与at89c51单片机的相应引脚连接,以实现时间和信息的显示。
按键选择与连接按键是控制定时闹钟设置和功能的重要组件。
以下是一些按键选择和连接的要点:选择合适的按键类型,例如触摸按键或机械按键。
根据设计需求,确定所需的按键数量和布局。
将按键的引脚连接到at89c51单片机的GPIO引脚,以接收按键输入并实现相应的功能。
上述是基于at89c51单片机的定时闹钟的硬件设计要点,通过合理选择和连接电源、显示器和按键等组件,可以确保定时闹钟的稳定运行和正常功能。
本文将阐述基于at89c51单片机的定时闹钟的软件设计要点,包括如下内容:定时器的设置:使用at89c51单片机的定时器来实现定时功能,可以通过对定时器寄存器的设置来调整定时的时间间隔。
中断处理:在定时器到达设定的时间间隔时,通过中断处理来触发相应的操作。
可以通过设定中断优先级来确保定时器中断的可靠性。
闹钟功能的实现:通过软件算法和控制电路,将定时器和中断处理结合起来实现闹钟功能。
51单片机实现PWM波占空比可调单片机实现PWM波占空比可调的方法有很多种,下面将详细介绍一种常见的实现方式。
PWM(脉冲宽度调制)是一种常用的数字信号调制技术,可以通过改变脉冲的高电平时间来控制电平的占空比,从而实现对信号的调节。
在单片机中,可以使用定时器/计数器模块来生成PWM波,并通过改变计数器的值来调整占空比。
以AT89C51单片机为例,以下是实现PWM功能的步骤:1.设置定时器模式:选择合适的定时器模式来生成所需的PWM信号。
AT89C51单片机有定时器/计数器模块,可以选择模式2,该模式下定时器有自动重装载功能,能够方便地实现周期性的PWM波。
3. 设置PWM参数:根据需要调节的占空比,计算出所需的高电平时间和低电平时间。
通常,PWM波的高电平时间与低电平时间之和等于一个周期的时间(定时器的重装载值)。
例如,如果需要一个占空比为60%的PWM波,周期为20ms,则高电平时间为「20ms * 60% = 12ms」,低电平时间为「20ms - 12ms = 8ms」。
4.设置PWM引脚:选择一个合适的IO口作为PWM波的输出引脚,并在程序中设置该引脚为输出模式。
5.编写中断服务程序(ISR):针对定时器溢出中断(TOF)编写中断服务程序。
每当定时器溢出时,PWM波应该翻转输出引脚的电平,以实现所需的占空比。
6.初始化定时器和中断:在程序初始化阶段,将定时器设为所需的模式,设置中断向量表中的对应中断服务函数,并开启定时器中断。
7.主循环中设置占空比:在主循环中,通过改变定时器的初值来实现不同占空比的调节。
将计算得到的高电平时间和低电平时间分别赋值给定时器初值,即可实现占空比的调整。
通过上述步骤,我们可以实现占空比可调的PWM波。
在实际应用中,可以根据需要进行适当的优化和改进,例如增加输入口的设置,使得用户可以通过外部按键或旋钮来实时调整占空比,从而更加灵活地控制PWM波的输出。
总结:通过合适的定时器模式、初值设置和中断服务程序编写,配合适当的IO口配置和占空比计算,我们可以在单片机中实现占空比可调的PWM波。
89C51中断寄存器详情中断系统:AT89C51单片机的中断系统由中断源、与中断控制有关的特殊功能寄存器、中断入口、顺序查询逻辑电路等组成,包括5个中断请求源、4个与中断控制有关的寄存器(IE、IP、TCON、SCON)、两个中断优先级及顺序查询逻辑电路。
1.中断源:中断源是指能引起中断、发出中断请求的装置或事件。
AT89C51有5个中断源○1外中断0(INT0):中断请求信号从单片机的P3.2脚输入○2外中断1(INT1):中断请求信号从单片机的P3.3脚输入○3内定时器/计数器0(T0):溢出中断○4内定时器/计数器1(T1):溢出中断○5串行口中断:包括串行收中断RI和串行发中断TI2.中断入口地址及内部优先权寄存器3.IE结构及各位名称、地址⑴EA是CPU中断总允许位。
EA=1,CPU开放中断;EA=0,CPU屏蔽所有的中断请求。
⑵ES是串行中断允许控制位。
ES=1,允许串行口中断;ES=0,禁止串行口中断。
⑶ET1是定时器/计数器1中断允许控制位。
ET1=1时允许定时器/计数器1中断;反之禁止。
⑷EX1是外部中断INT1中断允许位。
EX1=1时,允许外部中断1中断;反之依然。
⑸ET0是定时计数器T0的溢出中断允许位。
ET1=1时允许定时器/计数器0中断;反之禁止。
⑹EX0是外部中断INT0允许位。
EX1=1时,允许外部中断0中断;反之禁止。
89C51系统复位后,IE中各位均被清0,即禁止所有中断。
4.TCON(定时器/计数器和外中断控制寄存器):TCON的字节地址为88H,是可位寻址的特殊功能寄存器,其地址有低到高依次是88H ~ 8FH。
TCON结构及位名称、位地址TF1:T1溢出中断请求标志。
当定时器/计数器T1溢出时,由硬件置“1”,请求中断。
TF0:T0溢出中断请求标志。
当定时器/计数器T0溢出时,由硬件置“1”,请求中断。
IE1:外中断1中断请求标志。
当INT1引脚(P3.3)上出现有效的外部中断信号时,由硬件置“1”,请求中断。
单片机编程技巧-时钟中断单片机编程技巧-功能强大的时钟中断 功能强大的时钟中断 在单片机程序设计中,设置一个好的时钟中断,将能使一个CPU发挥两个CPU的功效,大大方便和简化程序的编制,提高系统的效率与可操作性。
我们可以把一些例行的及需要定时执行的程序放在时钟中断中,还可以利用时钟中断协助主程序完成定时、延时等操作。
下面以6MHz时钟的AT89C51系统为例,说明时钟中断的应用。
定时器初值与中断周期 时钟中断无需过于频繁,一般取20mS(50Hz)即可。
如需要百分之一秒的时基信号,可取10mS(100Hz)。
这里取20mS,用定时器T0工作于16位定时器方式(方式1)。
T0的工作方式为:每过一个机器周期自动加1,当计满0FFFFh,要溢出时,便会产生中断,并由硬件设置相应的标志位供软件查询。
即中断时比启动时经过了N+1个机器周期。
所以,我们只要在T0中预先存入一个比满值0FFFFh小N的数,然后启动定时器,便会在N个机器周期后产生中断。
这个值便是所谓的“初值”。
下面计算我们需要的初值:时钟为6MHz,12个时钟周期为一个机器周期,20mS中有10000个机器周期。
(10000)10=(2710)16,则0FFFFh-2710h+1=0D8F0h。
由于响应中断、保护现场及重装初值还需要7~8个机器周期,把这个值再加上7,即T0应装入的初值是0D8F7h。
每次中断进入后,先把A及PSW的值压入堆栈,然后即把0D8F7h装入T0。
设置一个单元,每次中断加1 我们可以取内部RAM中一个单元,取名为INCPI(Increase Per Interrupt),在中断中,装完T0初值后,用INC 。
简述at89c51单片机内部串行接口的4种工作方式
AT89C51单片机内部串行接口有4种不同的工作方式,它们分别是:
1. 模式0:异步串口通信方式,使用1个起始位,8个数据位和1个停止位,波特率可通过定时器控制。
2. 模式1:8位UART通信方式,使用1个起始位,8个数据位和1个停止位,波特率可通过定时器控制,可以设置奇偶校验位。
3. 模式2:SPI总线方式,支持主从机通信,数据传输时可以通过两根寄存器选择要传输的数据的方向。
4. 模式3:带自动重发机制的多机通信方式,支持多个从机的通信,主机发送数据后会收到从机的确认信号,如果没有收到则会自动重发。
at89c51 工作原理AT89C51是一种单片机型号,下面将详细介绍其工作原理。
AT89C51是一款基于MCS-51体系结构的8位单片机。
它由一个中央处理器单元(CPU)、存储器、输入/输出端口以及定时/计数器等组成。
其工作原理如下:1. 程序存储器:AT89C51内部集成了4KB的闪存程序存储器,用于存储控制程序。
闪存存储器的内容可以通过编程来更改,使单片机适应不同的应用需求。
2. 数据存储器:AT89C51内部包含RAM和SFR特殊功能寄存器。
RAM用于存储变量和临时数据,SFR寄存器用于存储控制和状态信息。
3. I/O端口:AT89C51具有4个I/O端口(P0、P1、P2、P3),可用于连接外部设备。
每个端口都有8个引脚,每个引脚都可以配置为输入或输出,并具有上下拉电阻等功能。
4. 定时/计数器:AT89C51内部包含两个16位定时/计数器(Timer 0和Timer 1)。
它们可以用于测量时间间隔、生成延时、产生脉冲信号等。
定时/计数器可以配置为定时模式或计数模式,并可以通过软件或硬件触发启动。
5. 中断系统:AT89C51支持外部和内部中断。
它具有6个可屏蔽的外部中断源,可以连接到外部设备的引脚上。
同时,它还具有两个内部定时器中断(Timer 0和Timer 1的溢出中断)。
6. 控制单元:AT89C51的控制单元负责将程序存储器中的指令读取到指令缓冲器中,并执行这些指令。
控制单元还包含指令译码器,用于识别和执行各种指令操作。
AT89C51的工作原理是通过控制单元按照存储在程序存储器中的指令序列来实现的。
它可以实现多种功能,如数据处理、输入/输出控制、定时/计数、中断处理等。
在特定的应用场景中,可以通过编程来配置和控制AT89C51的工作方式,从而实现所需的功能。
广东石油化工学院《51单片机原理与实践》课程设计报告学院计算机与电子信息学院专业班级学号姓名指导教师课程成绩完成日期 2010年12月27日数码管时钟电路的设计一、设计目的:通过这次课程设计掌握单片机系统的基本设计步骤及设计思路,掌握汇编语言的用法及各种指令的含义,比较熟练的运用指令进行单片机系统的设计的,熟悉用KEIL软件进行汇编语言的汇编,以及把代码写入实验板中,观测代码结合实际的运行结果后进行调整,体会到编程的分析问题、确定算法、画程序流程图、编写程序、程序功能模块化的优点的各各步骤。
二、设计要求:LED数码管时钟电路采用24h计时方式,时、分、秒用六位数码管显示。
该电路采用AT89C2051单片机,使用3V电池供电,只使用一个按键开关即可进入调时、省电(不显示LED数码管)和正常显示三种状态。
三、设计实验内容:1. 硬件的设计其采用AT89C51单片机应用设计,LED显示采用动态扫描方式实现,P0口输出段码数据,P2口输出位码数据,P1.1、P1.2接按钮开关。
为了提供LED数码管的驱动电流,采用6MHz晶振。
2. 系统总体分析系统主要包含四大模块:显示模块、时间计时模块、模式切换模块和模式设置模块。
●显示模块:主要由主循环负责。
内存中开辟了一段8字节的内存空间,用作数据显示的字符缓冲区。
主循环不断将缓冲区中的字符呈现至数码管。
●时间计时模块:电子钟的核心模块,记录了时间的时、分、秒信息。
●模式切换模块(MODE):切换电子钟的设置模式,包括时设置、分设置、秒设置、闹铃开关设置、闹铃时设置和闹铃分设置。
相关数据被设置时将闪烁显示。
●模式设置模块(CONFIG):通过判断设置模式(MODE),执行相应的设置。
如时、分、秒的增1以及闹铃开关的变换。
另外,主循环还负责扫描键盘,检测相应键是否被按下,若MODE键被按下则在特定单元中登记该功能,并启动定时器1,然后返回继续执行显示功能。
在定时器1中断时,被登记的功能正式执行。
AT89C51单片机定时器终端模式和查询设置
T1为定时模式,定时65.536ms,P2.0对应的LED等闪烁一次,T0计数模式,计数脉冲从P3.4脚用按键输入,按一次,记一次,所以计数初值为0FFFFh,没按一次,产生一个溢出,P2.5对应的LED闪烁,同时数码管加1显示。
一、定时/计数器终端模式
org 0000h
ljmp bb ;跳转到主程序入口bb处
org 000bh ;定时器0中断响应从这里开始执行
cjne r2,#9d,xx
mov r2,#00h
ljmp xx11
org 001bh ;定时器1中断响应从这里开始执行
ljmp xxx
bb: mov p1,#3fh ;主程序入口处
mov tmod,#05h ;05h=0000 0101B设置T1定时T0计数模式,0定时,1计数
;00是13位二进制计数模式0,高4位控制T1
;01是16位二进制计数模式1,低4位控制T0
mov dptr,#0300h ;查表入口地址存放
mov r2,#00h
setb et0 ;和setb 0afh效果相同
setb ea ;和setb 0abh相同
setb et1 ;和setb 0a9h相同
setb tr0
setb tr1
mov th0,#0ffh ;计数器0的计数初值的高8位
mov tl0,#0fdh ;计数器0的计数初值的低8位(第一次开始计数初值)
sjmp $ ;程序执行时,原地踏步等待语句,在没有中断请求时,
;在此位置原地踏步计数定时计数,有请求时跳到中断入口执行中断xx: inc r2
xx11: mov th0,#0ffh ;计数器0的计数初值的高8位
mov tl0,#0fdh ;计数器0的计数初值的低8位(第二次以后开始计数初值)
mov a,r2
movc a,@a+dptr
cpl p2.5
mov p1,a
reti
xxx: mov th1,#00h ;计数器1的计数初值的高8位
mov tl1,#00h ;计数器1的计数初值的低8位
cpl p2.0
reti
org 0300h ;七段显示吗表格入口
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end
二、定时/计数器查询模式
org 0000h
ljmp bb ;跳转到主程序入口bb处
bb: mov tmod,#15h ;主程序入口处
;设置T1定时模式,工作在计数方式0,设置T0计数模
;式工作在计数方式1
mov dptr,#0300h ;查表入口地址存放
clr et0 ;关定时/计数器0中断
setb ea ;和setb 0abh相同,开总中断开关
setb et1 ;和setb 0a9h相同,开定时/计数器1中断
setb tr0
setb tr1
mov th0,#0ffh ;计数器0的计数初值的高8位
mov tl0,#0ffh ;计数器0的计数初值的低8位(第一次开始计数初值)
CX: JBC TF0, xx ;查询定时/计数器0溢出标志位,有溢出跳转xx执行
JBC TF1, xxx ;查询定时/计数器1溢出标志位,有溢出跳转xxx执行
sjmp CX ;无溢出,跳CX继续查询
;溢出是在THi和TLi计数满,超过FFFFH时,TFi被自动置1,中断和查询都是根
;据这个标志是否为1来响应的。
xx: mov th0,#0ffh ;计数器0的计数初值的高8位
mov tl0,#0ffh ;计数器0的计数初值的低8位(第二次以后开始计数初值)
cjne r2,#10d,xx11
mov r2,#00h
xx11: mov a,r2
movc a,@a+dptr ;查表,用七段码显示计数数字
cpl p2.5 ;并让P2.5上的LED有闪烁效果
mov p1,a ;显示数字效果从P1口输出
inc r2 ;加1计数
ret
xxx: mov th1,#00h ;计数器1的计数初值的高8位
mov tl1,#00h ;计数器1的计数初值的低8位
cpl p2.0 ;t0定时模式,定时到让P2.0取反,LED达到闪烁效果 ret
org 0300h ;七段显示吗表格入口
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end。