定时中断流水灯程序电路图

合集下载

可中断LED流水灯课程设计

可中断LED流水灯课程设计

摘要本设计是可中断LED流水灯的设计。

整机以美国ATMEL公司生产的40脚单片机AT89C51为核心,介绍了以它为控制系统的LED灯的动态设计和开发过程。

通过该芯片控制一个行LED灯按一定顺序亮,文中详细介绍了LED显示的设计思路。

单片机控制系统程序采用单片机汇编语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。

当然流水灯一般只是在用芯片做控制时起修饰作用,不能很好体现单片机的强大功能。

这里的流水灯只是单片机应用中的最基础的一方面。

LED显示以其组构方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点在车站、证券所、运动场馆、交通干道及各种室内外显示场合的信息发布,公益宣传,环境参数实时,重大活动倒计时等等得到广泛的应用。

经实践证明,该系统显示误差小,性能稳定,结构合理,扩展能力强。

关键词:汇编语言;AT89C51单片机; LED;中断程序1绪论单片机的发展大致可分为四个阶段:第一阶段:单片机探索阶段。

以Intel公司MCS-48,Motorola公司6801为代表,属低档型8位机。

第二阶段:单片机完善阶段。

以Intel公司MCS-51,Motorola公司68HC05为代表,属高档型8位机。

此阶段,8位单片机体系进一步完善,特别是MCS-51系列单片机在世界和我国得到了广泛的应用,奠定了它在单片机领域的经典地位,形成了事实上的8位单片机标准结构。

第三阶段:8位机和16位机争艳阶段,也是单片机向微控制器发展的阶段。

此阶段Intel公司推出了16位的MCS-96系列单片机,世界其他芯片制造商也纷纷推出了性能优异的16位单片机,但由于价格不菲,其应用面受到一定的限制。

相反MCS-51系列单片机,由于其性能价格比高,却得到了广泛的应用,并吸引了世界许多知名制造厂商,竟相使用以80C51为内核,扩展部分测控系统中使用的电路技术、接口技术、A/D、D/A和看门狗等功能部件,推出了许多与80C51兼容的8位单片机。

中断控制LED流水灯 16页PPT文档

中断控制LED流水灯 16页PPT文档

应和中断服务);
待CPU将事件B处理完毕后,再回到原来事件A被中
断的地方继续处理事件A(中断返回)。 事件A 什么
中断过程
中断请求→中断响应→中断服务→中断返回
事件B
是中
断 事件B的 ? 处理过程
中断源
80C51单片机有5个中断源。见下表
中断源 外部中断 INT 0 定时器T0中断 外部中断 INT 1 定时器T1中断 串行口中断
}
主程序流程图 图
子程序流程
关键程序代码(一)
void main(void)
{
TMOD = 0x01;
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256;
TR0 = 1;
ET0 = 1;

PT0 = 1;

IT0 = 1;
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C51
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
39 38 37 36 35 34 33 32
TR0 = 1;
ET0 = 1;
//允许T0中断

PT0 = 1;
//设定T0为高优先级
IT0 = 1;

EX0 = 1;

EA = 1;
//外部中断输入下降沿有效 //允许X0中断 //开放总中断

temp = 0xfe;
P1 = temp;
while(1);

实验三流水灯实验(io口和定时器实验)

实验三流水灯实验(io口和定时器实验)

实验三流水灯实验(I/O口和定时器实验)一、实验目的1.学会单片机I/O口的使用方法和定时器的使用方法;2.掌握延时子程序的编程方法、内部中断服务子程序的编程方法;3.学会使用I/O口控制LED灯的应用程序设计。

二、实验内容1.控制单片机P1口输出,使LED1~LED8右循环轮流点亮(即右流水),间隔时间为100毫秒。

2.控制单片机P1口输出,使LED1~LED8左循环轮流点亮(即左流水),间隔时间为100毫秒。

3.使用K1开关控制上面LED灯的两种循环状态交替进行;4. 用定时器使P1口输出周期为100ms的方波,使LED闪烁。

5.使用定时器定时,使LED灯的两种循环状态自动交替,每一种状态持续1.6秒钟(选作)。

三、实验方法和步骤1.硬件电路设计使用实验仪上的E1、E5和E7模块电路,把E1区的JP1(单片机的P1口)和E5区的8针接口L1~L8(LED的驱动芯片74HC245的输入端)连接起来,P1口就可以控制LED 灯了。

当P1口上输出低电平“0”时,LED灯亮,反之,LED灯灭。

E7区的K1开关可以接单片机P3.0口,用P3.0口读取K1开关的控制信号,根据K1开关的状态(置“1”还是置“0”),来决定LED进行左流水还是右流水。

综上,画出实验电路原理图。

2.程序设计实验1和实验2程序流程图如图3-1实验3程序流程图如图3-2所示。

图3-1 实验1,2程序流程图图3-2 实验3程序流程图实验4程序流程图如图3-3,3-4所示。

实验5程序流程图如图3-5,3-6所示。

图3-5 实验5主程序流程图图3-6 定时器中断服务子程序流程图图3-4 定时器中断服务子程序流程图图3-3 实验4主程序流程图编程要点:(1)Pl,P3口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。

例如:MOV P1,A; P1口做输出MOV P1,#0FFHMOV A,P1;P1口做输入SETB P3.0MOV C,P3.1;从P3.1口读入数据(2)每个端口对应着一个寄存器,例:P1→90H(P1寄存器地址);P3→B0H(P3寄存器地址);寄存器的每一位对应着一个引脚,例:B0H.0→P3.0(3)对寄存器写入“0”、“1”,对应的外部引脚则输出“低电平”、“高电平”。

《STM32单片机仿真开发实例》教学课件 4.3 流水灯之定时器延时(中断方式)

《STM32单片机仿真开发实例》教学课件 4.3  流水灯之定时器延时(中断方式)

任务要求:
仿真电路如图所示,任务要求同3.3,即实现八个LED的流水灯效果,要求延时必须 通过定时器中断方式实现。
4.3.2 任务程序的编写
首先是工程的图形化配 置,将PC0~PC7全部设为 “GPIO_Output”模式,计 算并设定定时器参数,如 右图所示。
打开定时器中断功能,在定时器配置页面中,选择“NVIC Settings”(NVIC设定) 页,将“TIM3 global interrupt”(定时器3全局中断)打勾,如图所示。
例程:
//TIM3溢出中断回调 void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim) { if(htim==&htim3) { … } }
(现场操作演示...)
技能训练(选做):
修改任务3.1程序,将延时程序由软件延时改为定时器溢出中断方式。
4.3 流水灯之定时器延时(中断方式)
能力目标:
在4.2节的基础上,进一步理解单片机定时器中断的触发原理,掌握单片机定时器延 时中断程序的编制方法。
任务要求:
仿真电路如图所示,任务要求同3.3,即实现八个LED的流水灯效果,要求延时必须 通过定时器中断能,中断发生的时刻为定时器溢出的时刻,即定时器 一个计数周期完成的时刻。
To be continued...
本次任务需要用到的新的API函数有: ① 定时器启动函数(开中断) HAL_TIM_Base_Start_IT
例程:
//运行定时器TIM3并开启对应中断 if( HAL_TIM_Base_Start_IT(&htim3) != HAL_OK ) { Error_Handler(); }

单片机课程设计外部中断控制流水灯变化

单片机课程设计外部中断控制流水灯变化

单片机课程设计外部中断控制流水灯变化-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN单片机课程设计报告设计题目:外部中断控制流水灯变化姓名一.设计目的通过学习单片机工作原理和各种工作方式及各管脚的功能,想通过P3口的俩管脚和第二功能,即外部中断来使CPU响应,达到控制流水灯的目的。

二.设计要求主程序实现8个灯从到依次亮灭,灯与灯之间间歇约秒.当口是低电平时,灯从到依次亮灭,灯与灯之之间间歇约秒.循环3次返回主程序.当口是低电平时,灯全灭,当口是高电平时,返回主程序.当同时使和为低电平时,灯全灭,因为外部中断0的优先级高于外部中断1的优先级.三.MCS-51的硬件结构:四.P3口的状态P3口是双功能口,默认为第一功能(通用I/O口),通过编程可设置第二功能。

五.中断传送方式:中断方式则是在外设为数据传送做好准备之后,就向CPU发出中断请求信号(相当于通知CPU)。

CPU接收到中断请求信号之后立即作出响应,暂停正在执行的原程序(主程序),而转去外设的数据输入输出服务,待服务完之后,程序返回。

CPU再继续执行被中断的原程序。

六.外部中断外部中断是指从单片机外部引脚输入请求信号。

输入/输出的中断请求、实时事件的中断请求、掉电和设备故障的中断请求都可以作为外部中断源,从引脚INT0、INT1输入。

外部中断请求、有两种触发方式:电平触发及跳变(边沿)触发。

这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。

七.电路原理逻辑图如下:灯亮情况00全灭01全灭10从到依次亮灭11从到依次亮灭八.实验硬件电路图如下九.程序流程图如下十.程序清单ORG 0000HAJMP STARTORG 0003HAJMP SERORG 0013HAJMP SER1ORG 0030HSTART: MOV IE,#85H ;外部中断0和1都开MOV IP,#01H ;外部中断0级优先高MOV TCON,#00H ;低电平出发MAIN: MOV A,#0FEH ;口亮MOV P2,AACALL TIMO ;延时RL A ;循环左移SJMP RESSER1: MOV R2,#18H ;循环3次MOV A,#0EFH ;口亮SER2: MOV P2,AACALL TIMO ;延时RR A ;循环右移DJNZ R2,SER2RETITIMO: MOV R5,#50 ;延时子程序LOOP1: MOV R6,#100LOOP2: MOV R7,#50LOOP3: DJNZ R7,LOOP3DJNZ R6,LOOP2DJNZ R5,LOOP1RETSER: MOV P2,#0FFH ;灯全灭RETIEND十一.课程设计总结:通过本次课程设计,发现了学习中一些不足的地方,及时进行了补充学习。

实验五 广告流水灯中断控制

实验五 广告流水灯中断控制

实验五广告流水灯中断控制一、实训目的1、用外部中断源的中断控制方法控制发光二极管亮灭。

2、学习外部中断技术的基本使用方法。

3、学习中断处理程序的编写方法。

二、实训预备知识1、单片机中断系统包括5个中断请求源,4个中断控制寄存器IE、IP、TCON、SCON用来控制中断的请求、中断的开关和各种中断源优先级的确定。

2、编写中断处理程序需要注意的问题是:(1)保护进入中断时的状态,并在退出中断之前恢复进入时的状态。

(2)必须在中断处理程序中设定是否允许中断重入,即设置EX0或EX1位。

一般进入中断处理程序时应保护现场,在退出前恢复现场。

另外中断处理程序中涉及到关键数据的设置时应关闭中断,即设置时不允许中断重入。

三、实训设备:微机一台、实训箱、THKL-C51仿真器、扁平数据线和一条串行数据通信线。

四、实训内容图4-1 中断控制信号灯电路原理图(1)P1为输出口,INT0为电平触发接开关产生中断请求。

要求:主程序8个发光二极管同时闪烁,当发生中断时使8个发光二极管循环点亮,结束时再返回主程序。

(2)P1为输出口,INT0为电平触发接单次脉冲源产生中断请求。

要求:主程序8个发光二极管循环点亮,当发生中断时循环暂停,小喇叭响,松开脉冲源后再返回主程序8个灯循环亮。

五、程序设计步骤1、PROTEUS电路设计中断控制广告流水灯电路原理图如图4-1所示,设计在PROTEU ISIS平台中进行。

(1)新建设计文件菜单【file】/【New Design】,出现选择模板窗口,选中”DEFAULT”模板,再单击”OK”按钮,在文件名框中输入文件名,单击”保存”按钮,则保存新建设计文件,其后缀自动为.DSN。

(2)从PROTEUS库中选取元器件单击“P”按钮,在其左上角“Keywords”(关键字)一栏中输入以下元器件的关键字,将以下元器件添加到对象选择器中。

①AT89C51:单片机②RES:电阻③LED-GREEN:绿色发光二极管④CAP、CAP-ELEC:电容、电解电容⑤CRYSTAL:晶振⑥74LS04:反相器⑦BUTTON:按钮⑧SOUNDER:喇叭图4-2 单击“P”按钮(3)放置元器件:按照原理图合理放置元器件。

编程训练二:使用T0定时器中断服务程序实现流水灯控制

编程训练二:使用T0定时器中断服务程序实现流水灯控制

编程训练二:使用T0定时器中断服务程序实现流水灯控制
单片机学习实例
#include <reg52.h>//加入头文件
#include <intrins.h>
#define uchar unsigned char//宏定义
#define ulong unsigned long
ulong delay_flag=0;//用于较精确延时的变量
void init_time0();//定时器0初始化函数
void main()//主函数定义
{
uchar a=0xfe;//定义一个给P0口赋值的变量a,并对其赋初值init_time0();//调用初始化函数
while(1)//永远循环
{
P0=a;//将a值赋给P0
delay_flag=20000;//延时2S
while(delay_flag);
a=_crol_(a,1);//将a循环左移1位,实现彩灯流水
}
}
void time0_pwm() interrupt 1//定时器0中断服务程序
{
if(delay_flag)
delay_flag--;
}
void init_time0()//定时器初始化函数
{
TMOD=0x02; //采用定时器模式2,8位精确定时
TL0=156; //定时器赋初值;100US中断一次,这里的晶振是11.0592M;若晶振为12M,则选用156;
TH0=156;
EA=1; //开总中断
ET0=1; //开定时器中断
TR0=1 ;//定时器开始运行
}。

任务三流水灯定时控制1精品PPT课件

任务三流水灯定时控制1精品PPT课件
3.1 中断系统
以定时方式 控制流水灯
3. 2 定时器/计数器
3.1 中断系统
本节主要介绍中断的概念、一个 完整的中断过程所包含的几个过程、 MCS-51单片机是如何来实现中断的? 我们怎么利用MCS-51单片机的中断 资源为我们的应用系统的中断服务
3.1.1中断的概念
计算机设置中断的目的:
在CPU与外设交换信息时,存在着一个快 速的CPU与慢速的外设间的矛盾。为解决这 个问题,发展了中断的概念。
TF1
TF0
IE1 IT1 ITEI0 IRT0I
3)中断标志的产生:
对于定时/计数器0、1的中断标志TF0、TF1是在加1计数器加 到全零时自动将TF0、TF1置位(置1)
加1计数器
TF0
时钟脉冲
T0定时/计数器
对于串行口的中断标志RI和TI的产生:
当串行口作为接收数据时,当接收允许时,根据设置的方式不 同,当连续接收到8位(或9位)数据时,RI置1;
2) 中断优先级结构
MCS一51中断系统具有两级优先级它们遵循下列两条基本规则:

(1)低优先级中断源可被高优先级中断源所中断,而高优先级中断源不能被任 何中断源所中断。
(2)一种中断源(不管是高优先级或低优先级)一旦得到响应,与它同级的中断 源不能再中断它。
(3)当同时收到几个同一优先级的中断时,响应哪一个中断源取决于内部查询 顺序。其优先级由高到低排列如下:
3.1.2 MCS-51单片机中断系统
高级中断请求
自然优先级
IT0=0
INT0 IT0=1
T0
IT1=0
INT1 IT1=1
T1
TXD RXD
当串行口作为发送数据时,当发送完一帧数据(根据设置的方 式不同,当连续发送了8位(或9位)数据时),TI置1。

中断方式流水灯设计

中断方式流水灯设计
int b[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void InitInt0(void);
void delay02s(void) //延时0.2秒子程序
{
unsigned char i,j,k; //定义3个无符号字符型数据。
for(i=20;i>0;i--) //作循环延时
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
void InitInt0(void)
{
IT0 = 1;//设置中断0为跳变触发方式
IT1 = 1;//设置中断1为跳变触发方式
IE = 0x85;//CPU开放中断,允许INT0、INT1中断
IP = 0x04;
}
void Int0Interrupt(void) interrupt 0 // 实现要求子程序(key1按下时实现逐盏点亮,逐盏灭掉)
temp=0xfe;
P0=temp; P2=temp;P3=temp;delay02s();
for(y=1;y<8;y++)
{
u=temp<<y;
v=temp>>(8-y);
P0=u|v;
P2=u|v;
P3=u|v;
delay02s();
}
for(y=1;y<8;y++)
{
u=temp>>y;
v=temp<<(8-ykey2=P1^2;
sbit key3=P1^4;
sbit W1=P1^5;
sbit W3=P1^7;
unsigned char i,j,k,m,n,temp,y,v,u;

定时器控制流水灯

定时器控制流水灯

定时器控制流水灯The Standardization Office was revised on the afternoon of December 13, 2020成绩信息与通信工程学院实验报告(操作性实验)课程名称:微机原理与微控制器应用实验题目:c51单片机的定时器实验指导教师:班级: 学号:学生姓名:一、实验目的和任务1.掌握定时器中断的编程方法。

2.掌握keil C51集成开发环境在硬件仿真条件下各参数的设置。

二、实验仪器及器件硬件:电脑一台、微机原理与单片机试验箱:51开发板、开关及LED显示单元、导线若干软件:keil uVision4三、实验内容及电路图利用实验板上的八个LED灯作显示,利用定时器中断编写中断一次为50ms的定时程序,控制单片机定时器进行定时,总定时时间为。

四、流程图与程序#include ""#include<>int temp=0x01,num=0;void T0Int() interrupt 1{TH0=(65536-45872)/256;TL0=(65536-45872)%256;num++;if(num==15) {num=0;P1=_crol_(temp,1);temp=P1;}}void main(){EA=1;ET0=1;TMOD=0X01;TH0=(65536-45872)/256;TL0=(65536-45872)%256;TR0=1;while(1);}五、实验结果八个LED灯由左往右依次亮起,并且每个LED灯点亮时间大约为。

六、实验数据分析及处理从实验现象来看,LED灯从左到右依次点亮,符合实验要求,说明实验操作正确,实验结果正确。

七、实验结论与感悟(或讨论)。

实验一流水灯设计与中断PPT课件

实验一流水灯设计与中断PPT课件

P3第二功能各引脚功能定义:
P3.0:RXD串行口输入 P3.1:TXD串行口输出 P3.2:INT0外部中断0输入 P3.3:INT1外部中断1输入 P3.4:T0定时器0外部输入 P3.5:T1定时器1外部输入 P3.6:WR外部写控制 P3.7:RD外部读控制
中断
CPU在处理某一事件A时,发生了另一事件B请 求CPU迅速去处理(中断发生);CPU暂时中断 当前的工作,转去处理事件B(中断响应和中 断服务);待CPU将事件B处理完毕后,再回到 原来事件A被中断的地方继续处理事件A(中断 返回),这一过程称为中断 。
感谢您的聆听,为方便温 习本节课程内容, 本课 件可在下载完成后进行查 阅
Thank you for listening. For the convenience of reviewing the content of this course, this courseware can be viewed after downloading
中断控制寄存器(TCON)
中断允许寄存器IE
中断优先级
外部中断调用
开总中断; 选择中断源; 确定中断触发方式; 编写中断函数。 中断函数书写格式:
void 中断函数名( ) interrupt 序号
例:void exter0( ) interrupt 0
பைடு நூலகம் 三、实验报告要求
简述实验目的和实验原理。 列写实验内容4、5的程序在报告上。 简述在实验过程中出现的问题及如何解决的。
对单片机的控制其实就是对io口的控制无论单片机对外界进行何种控制或接受外部的何种控制都是通过io口进行的
实验一 流水灯设计与中断
一、实验目的
熟悉集成开发环境; 学习单片机I/O口的控制方法; 掌握80C51中断的基本工作原理; 学习C51语句的编写方法。

使用定时器1实现1秒定时,控制流水灯流水点亮。中断方式(PR=9)

使用定时器1实现1秒定时,控制流水灯流水点亮。中断方式(PR=9)

使用定时器1实现1秒定时,控制流水灯流水点亮。

中断方式(PR=9)/************************************************************** *************** 文件名:main.c* 功能:使用定时器0实现1秒定时,控制蜂鸣器蜂鸣。

(中断方式) * 说明:短接蜂鸣器跳线JP7。

断开CF卡跳线JP13、GPIO接口J17。

*************************************************************** *************/#include "config.h"#define LED1 1<<16 // P1.16#define LED2 1<<17 // P1.17#define LED3 1<<18 // P1.18#define LED4 1<<19 // P1.19#define LED5 1<<20 // P1.20#define LED6 1<<21 // P1.21#define LED7 1<<22 // P1.22#define LED8 1<<23 // P1.23#define LEDCON 0x00ff0000const uint32 DISP_TAB[8] = { 0xff01ffff, 0xff02ffff, 0xff04ffff, 0xff08ffff,0xff10ffff, 0xff20ffff, 0xff40ffff, 0xff80ffff};/************************************************************** *************** 名称:IRQ_Time0()* 功能:定时器0中断服务程序,取反BEEPCON控制口。

中断点亮流水灯应用

中断点亮流水灯应用

实训报告六实训目的:通过单片机的外部中断使发光二极管交替循环点亮10次,从中学到什么是中断和理解中断基本概念,初步学会单片机外部中断应用C编程。

实训原理图:实训步骤:1.在ptoteus平台找出所需的元器件2.理解该实验的原理,按照原理图画出仿真图;3.根据实验要求写出如下程序:#include<reg51.h>#include<absacc.h>#include<intrins.h>#define uint unsigned intvoid initial();void delay(uint N);void main(){uint i,dis_digit;initial();do{dis_digit=0xfe;for(i=0;i<8;i++){P1=dis_digit;delay(10000);dis_digit=_crol_(dis_digit, 1); //调用_crol_()函数使dis_digit左移一位}dis_digit=0xfe;for(i=0;i<7;i++){dis_digit=_cror_(dis_digit, 1); //使dis_digit右一位P1=dis_digit;delay(10000);}}while(1);}void delay(uint N) //延时程序{uint j=N;for(;j>0;j--);for(;j>0;j--);for(;j>0;j--);}void initial() //中断初始化函数{IE=0x81;IP=0x01;TCON=0x00;}void int_0() interrupt 0 using 0 //中断服务函数{int i,F=0xAA;for(i=0;i<10;i++){P1=F;delay(20000); //调用延时程序F=~F; //对F取反}for(i=0;i<10;i++){P1=F;delay(2000);F=~F;}return;}总结:通过本次的单片机的外部中断实现的流水灯的实训,我知道了什么是中断﹑中断优先﹑中断处理过程和如何使用中断,初步学会单片机外部中断应用C编程,加强了我C语言程序的编写能力。

中断流水灯

中断流水灯

贵州大学实验报告纸系别电科班级09 姓名郭举龙学号0907010078 课程名称单片机应用实验成绩评定教师签名:实验时间2012年 5月 17日实验七外部中断实验一、实验目的学习外部中断技术的基本使用方法。

二、实验内容1、INT0端接单次脉冲发生器。

按一次脉冲产生一次中断,CPU使P1.0状态发生一次反转,P1.0接LED灯,以查看信号反转。

2、修改程序,实现用一位开关产生外部中断1,每产生一次,调用一个流水灯方式,按顺序4次一个周期后重复。

三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验说明和电路原理图1)外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。

中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。

因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入。

2)中断服务的关键:a、保护进入中断时的状态。

堆栈有保护断点和保护现场的功能使用PUSH指令,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。

b、必须在中断服务程序中设定是否允许中断重入,即设置EX0位。

c、用POP指令恢复中断时的现场。

3)中断控制原理:中断控制是提供给用户使用的中断控制手段。

实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。

4)中断响应的过程:首先中断采样然后中断查询最后中断响应。

采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;否则继续为“0”。

所谓查询就是由CPU测试TCON和SCON中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。

中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。

基于PLC做的三种流水灯

基于PLC做的三种流水灯

三种流水灯设计实践报告学院:机械与电子工程学院班别:09电子信息工程3班课程:西门子PLC与工业网络技术指导老师:孙亚飞老师组员:罗龙标2号陈淼珊43号蒋家涛46号梁康祥51号一、第一种流水灯(脉冲定时器(SP))脉冲定时器方框图线圈图-(SP)-(1)脉冲定时器的时序功能图(2)脉冲定时器(SP)的工作原理由时序图可得,脉冲定时器的特点是在任何情况下只要起动输入端S有上升沿信号,定时器就被触发,并从TV预设时间值处重新开始定时,且定时器常开触点闭合,Q端输出1;在定时期间内,如果S端保持高电平1不变,则定时器运行到定时时间值结束,此时定时器常开触点释放,Q端由1变为0;如果定时期间,S端断开(由1变为0),则定时器停止运行,常开触点也随即释放,Q端输出为0。

从时序图看,定时器的运行在S端控制下呈现脉冲状,故称为脉冲定时器。

不论S端处于何种状态,只要复位端R的状态由0变为1,则定时器就被复位,Q端输出变为0,定时器常开触点断开。

(3)、流水灯的程序图(4)第一种流水灯仿真图(5)流水灯的工作原理当开关I0.0闭合的时候,脉冲定时器T0开始计时,在T0计时时间中,灯Q0.0开始工作,之后T0定时结束定时器常开触点释放,Q0.0停止工作,所以Q0.0常闭触点同时给T1一个上升沿,T1就开始计时,灯Q0.1开始工作、、、、、一直到Q0.3停止工作,Q0.3同时又给一个上升沿给T0,脉冲定时器T0又开始计时、、、、、以此循环,就可实现从Q0.0 到Q0.3 循环,再加上另外的灯,工作原理相同二、第二种流水灯(扩展脉冲定时器(SE))脉冲定时器方框图线圈图-(SE)- (1)扩展脉冲定时器的时序功能图(2)扩展脉冲定时器(SP)的工作原理由时序图可得,当起动输入端S有上升沿信号,定时器开始定时,定时期间定时器常开触点闭合,Q端输出高电平1,且保持到定时结束,之后变为0,常开触点断开;在定时期间内,即使S端变为0,定时器继续定时;如果在定时期间,S端重新触发定时器(即在定时期间S端又来一个上升沿信号),则定时器被重新起动,并从预设值开始定时。

第3章 流水灯定时及外部中断控制

第3章  流水灯定时及外部中断控制

15~0 TIM
15~0
TIMH
TIMER0PRD(周期寄存器)
15 PRD R/W-0 0
15 PRDH R/W-0
0

名称
功能描述
15~0
PRD
CPU定时器周期寄存器(PRDH:PRD)(低16位); 当TIMH:TIM递减到零时,在下一个输入时钟时TIMH :TIM寄存器重新装载PRDH:PRD寄存器的周期值; 当用户将定时器控制寄存器(TCR)的定时器重新装载 位(TRB)置位时,PRDH:PRD寄存器中的周期值也 会重新装载到TIMH:TIM中。
通过对0x08 8001单元写数据就可以改变8个LED的亮与灭。 本系统还应用了CPU定时器,产生定时中断,在响应中断时给0x08 8001
单元写数,从而实现了LED灯的定时闪烁。
当按下外部中断按钮时,产生外部中断,显示状态按要求不再发生变化。
74HC373介绍
74HC373的真值表
Dn H L X X LE H H L X OE L L L H Qn H L Q0 Z
Zone1的片选 使能线
Zone2和Zone6
Zone2和Zone6共享外部地址总线,对空间2和空间6的访问 是通过片选信号XZCS2和XZCS6AND7区分的。
其首地址分别为0x08 0000和0x10 0000。
Zone7
Zone7是个独立的地址空间。复位时,如果XMP/MC引 脚为高电平,Zone7空间映射到0x3F C000。系统复位 后,可以通过改变寄存器XINTCNF2中的
15~0
PRDH CPU定时器计数寄存器(PRDH:PRD)(高16位)
TIMER0TCR(控制寄存器)
15 TIF R-0 7 Reserved R-0 14 TIE R/W-0 6 5 TRB R/W-0 4 TSS R/W-0 3 Reserved R-0 13 12 Reserved 11 FREE R-0 10 SOFT R/W-0 9 8 Reserved R-0 0

HAL库_定时器更新中断+流水灯

HAL库_定时器更新中断+流水灯

HAL库_定时器更新中断+流⽔灯对⽐标准库的流程使⽤HAL库编写定时器更新中断标准库中使⽤定时器更新中断的⽅式:1.开时钟,设置TIM的时钟2.初始化定时器⽯基的结构体3.调⽤Init初始化函数4.处理定时器中断HAL中使⽤定时器更新中断的⽅式:1.开时钟2.初始化定时器⽯基的结构体3.处理定时器中断3.1在CubeMx中设置NVIC的抢占优先级和⼦优先级3.2 编写TIM3_IRQHandler //重点先来看标准库中怎么处理这个中断,⾸先从启动⽂件中找到定时器中断的函数名字,然后再函数⾥判断是定时器的哪种中断(更新?输⼊捕获?输出⽐较?),然后清标志位,然后才写我们在中断⼲什么的代码。

HAL中处理的⽅式有些变化。

stm32fxx_it.c⽂件中找到了和标准库中⼀样名字的中断函数。

1void TIM3_IRQHandler(void)2 {3/* USER CODE BEGIN TIM3_IRQn 0 */45/* USER CODE END TIM3_IRQn 0 */6 HAL_TIM_IRQHandler(&htim3);7/* USER CODE BEGIN TIM3_IRQn 1 */89/* USER CODE END TIM3_IRQn 1 */10 }这⾥⾯什么都没做只是调⽤了⼀个函数 HAL_TIM_IRQHandler(&htim3);这个函数中完成了判断中断类型,清中断标志位的操作。

我们只要写真正的处理代码即可。

这也就是回调函数。

HAL_TIM_IRQHandler(&htim3);函数中调判断了各种定时器的中断类型,也调⽤了对应的中断处理函数(回调函数),包括:1/* Callback in non blocking modes (Interrupt and DMA) *************************/2void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);3void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim);4void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim);5void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);6void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim);7void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim);8void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim);9void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim);10void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim);11void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim);总结⼀下思路就是:启动⽂件中有定时器中断的函数名字:TIM3_IRQHandler 这个名字是不能改的stm32fxx_it.c中调⽤: void TIM3_IRQHandler(void),它⼜调⽤了HAL_TIM_IRQHandler(&htim3)(这个函数在stm32f1xx_hal_tim.c中由库实现)在stm32f1xx_hal_tim.c中 HAL_TIM_IRQHandler(&htim3)这个函数调⽤了各种定时器的具体中断类型的函数(回调函数);声明在stm32f1xx_hal_tim.h中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验设计
题目:LED流水灯设计
学生:
学号:
院(系):机电工程学院
专业:
指导教师:
2012年3月20日
1.设计目的:
1、通过本实验的设计初步了解单片机工作原理和各功能端口的相关设置;
2、掌握PROTEUS软件的安装和配置过程;
3、学会绘制电路原理图;
4、了解装载程序和调试;
5、PROTEUS VSM 与uVision3的联调;
6、用单片机仿真软件,并进行调试;
7、掌握单片机相应的编程步骤,了解走马灯相关的工作流程;
8、熟悉KEIL\PROTEUS等相关软件的使用。

2.任务要求:利用汇编语言(或C语言),实现8个单色LED灯的左、右循环显示,程序中运用定时中断。

3. 硬件电路图:
4.软件程序清单:
ORG 0000H ;起始地址
LJMP MAIN ;转入主函数
ORG 000BH ;定时中断0入口地址
LJMP PE ;转入中断程序
ORG 0100H ;主程序入口
MAIN: ;
MOV TMOD,#01H ;设置定时中断0的工作方式
MOV TL0,#0EFH ;添加初值
MOV TH0,#0D8H ;
SETB EA ;开总中断
SETB ET0 ;开定时中断
SETB TR0 ;开始计时
MOV P0,#00H ;点亮所有灯
MOV R0,#0C8H ;设定定时次数,两百次10ms*200=2s QUAN: ;
MOV A,R0 ;
JNZ QUAN ;
MOV A,#0FEH ;
PAOMA: ;点亮第一个灯
MOV P0,A ;
MOV R0,#32H ;设定定时次数50次。

10ms*50=0.5s HJ:
CJNE R0,#00H,HJ ;定时器重复50次,延时0.5秒 RL A ;循环左移进行跑马灯
LJMP PAOMA ;
PE: ;定时器
MOV TL0,#0EFH ;
MOV TH0,#0D8H ;
DEC R0 ;用R0决定定时次数
RETI ;
END
5.分析总结:
本课题单片机控制预计8只LED按2种不同的模式滚动显示,模式选择由K1健控制,显示效果使用8个LED;设置三个按钮,K1为模式健,通过按键调整显示结果,要求有两种模式,即由左向右和由右向左;;K2为加速键,提高走马灯显示效果的速度;K3为减速健,放慢走马灯的显示效果速度。

但是在程序编写时发现若用汇编语言会造成逻辑混乱,课下准备用C语言编写控制方向、速度由五个开关控制的程序。

在设计过程中,接开关的端口要全部保持高电平,当按下一个开关时,输入一个低电平,即为状态改变信号。

不能同时有两个端口同为高电平。

中断功能让程序操作更加有效率,也让程序的应用更具有扩展性。

观察中断过程,从两个方面来看:一是中断执行所花费的时间;二是中断执行时,主程序的工作状况。

本次实验定时中断的最小时间间隔为10ms。

调试过程中问题很多,主要原因是对单片机结构的不熟悉,其次就是程序中的一些问题。

实际接线前应该先用protues仿真一下实验结果,确认无误后准备上课时接线。

相关文档
最新文档