定时器控制流水灯

合集下载

流水灯(定时器延时)

流水灯(定时器延时)
4
/********************** main******************************/ main() { unsigned char k,temp,temp1;//设置变量 P1= 0xff; TMOD = 0x01;//设置定时器方式为定时器方式 1 while (1) { temp = 0x01; //L1 到 L8 二极管顺序点亮 for(k=0;k<8;k++) { P1 = ~temp; delay(50); temp = temp<<1; } temp = 0x80; //L8 到 L1 二极管顺序点亮 for(k=0;k<8;k++) { P1 = ~temp; delay(50); temp = temp>>1; } temp = 0xfe;//L8L1 到 L7L2 到 L6L3 到 L5L4 顺序点亮 temp1 = 0x7f; for(k=0;k<8;k++) { P1 =(_cror_(temp,k))&(_crol_(temp1,k)); delay(50); } P1 = 0xFF; delay(200); temp = 0xFE; //L8 到 L1 二极管顺序点亮 for(k=0;k<8;k++) { P1 = temp; delay(50); temp = temp<<1; } temp = 0x7F; //L1 到 L8 二极管顺序熄灭 for(k=0;k<8;k++) { P1 = ~temp; delay(50); temp = temp>>1; } } }
/*********************************************************************************************/ /* 函 数 名: delay*****************************************************************************/ /* 功能描述: 延时*****************************************************************************/ /* 调用函数: 无 ******************************************************************************/ /* 入口参数: t*********************************************************************************/ /* 出口参数:无 ******************************************************************************/ /*********************************************************************************************/

实验三流水灯实验(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”,对应的外部引脚则输出“低电平”、“高电平”。

单片机跑马灯(流水灯)控制实验报告

单片机跑马灯(流水灯)控制实验报告

单片机实验报告姓名: 学号:一、 实验实现功能:1:计数器功能2:流水灯二、 具体操作:1、计数器功能数码管的动态显示。

每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。

2、流水灯当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。

三、 程序流程图开始 定时器T0 设置初值,启动定时器,打开中断复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开四、程序#include <reg51.h>typedef unsigned char uint8;typedef unsigned int uint16; //类型定义sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;sbit P2_4 = P2^4; //位声明四个数码管开关sbit Key2 = P3^2;sbit Key3 = P3^3; //位声明2个按键K2和K3sbit Ledk = P2^0 ; //LED 开关void delay(uint16 i); //延时函数声明void refresh (); // 数码管刷新函数声明void liushuideng(); //流水灯函数声明uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管的真值表uint8 out[4] = {0}; // 数组变量uint16 counter=0; //用作计数器的变量uint16 Time_counter=0; //用作定时器的变量void main() //主函数{TMOD = 0x01; //定时器0,工作方式一TH0 = 0xFC;TL0 = 0x18; //定时器初值使每次循环为1msTR0 = 0; //定时器0开始作ET0 = 0; // 定时器中断关EA = 0; // 关中断while(1) //计数器模式{Ledk =1 ; //led开关关out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位if (!Key2) //计数器加1{++counter; //自加out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位while(!Key2) //等待键盘抬起refresh(); //刷新数码管}refresh(); //刷新数码管if (!Key3) // 进入跑马灯模式liushuideng();}} //主函数结束/*******************延时*************/void delay(uint16 i){uint8 j; // 定义局部变量for(i;i>0;i--) //循环i*240 次for(j=240;j>0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j<4;j++) //四次循环刷新数码管{switch(j){case 0: P2_1=1;P2_2=1;P2_3=1;P2_4=0;break;case 1: P2_1=1;P2_2=1;P2_3=0;P2_4=1;break;case 2: P2_1=1;P2_2=0;P2_3=1;P2_4=1;break;case 3: P2_1=0;P2_2=1;P2_3=1;P2_4=1;break;//每次循环只选中一个数码管default:break;}P0 = out[j]; // 位选,给数码管送值delay (20); //延时消抖}}/*************定时器的中断服务函数**************/void Timer0_Overflow() interrupt 1 //定时器0溢出中断,这个语句1ms执行一次{TH0 = 0xFC;TL0 = 0x18; //每1ms重新赋定时器初值Time_counter++; //计数,看经过了几个1ms}/***********************流水灯子函数****************************/ void liushuideng(){uint8 j = 0 ; //定义局部变量P0 = 0xff; // 小灯全关TR0 = 1; //定时器1开始计时EA = 1; //中断开放ET0 = 1; //定时器0中断开while(1){Ledk = 0 ; //打开LED开关P2 = P2|0x1E; //关掉数码管if(50 == Time_counter) //50个毫秒{P0=~(1<<j++); //控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{j=0;}}}。

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

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

0x40 0000
XINTF接口操作 Zone0和Zone1 Zone0和Zone1共用一个片选信号, Zone0占用的外部总线地址为0x2000~0x3FFF, Zone1占用的外部总线地址为0x4000~0x5FFF
XA[13] XA[14] XZCS0AND1
Zone0的片选 使能线
XA[13] XA[14] XZCS0AND1
CY7C1021V33-12
LED显示器的接口扩展
在本项目“LED定时闪烁系统”中,利用了XINTF接
口扩展了8位LED灯的地址。系统采用作为片选信号, 所以,基地址为0x08 0000。
同时,当XA[15]和XA[0]都为高电平时,锁存器
74HC373使能。因此,在本系统中锁存器74HC373 的地址为0x88 001。
1
DSP技术及应用
多媒体教学系统
制作:李金明
兰州石化职业技术学院
退出
2
第3章 LED流水灯的
定时及外部中断控制
主要内容

学习存储空间及外部扩展接口XINTF
CPU定时器的应用
中断的概念 外部中断的应用
流水灯控制系统电路
LED1~8 R 300Ω x8 XD0 XD1 XD2 XD3 XD4 XD5 XD6 XD7 XA0 XA15
tpr的值timerregsaddrtprall初始化定时器控制寄存器tcrtss位为1时定时器停止为0时启动定时器timerregsaddrtcrbittsstrb位为1时重新加载周期计数器的值到计数器timerregsaddrtcrbittrb定时器自由运行tie位为1时使能定时器中断timerregsaddrtcrbittievoidstartcputimer0pie控制器概述2812的cpu能够支持一个不可屏蔽中断nmi和16个可屏蔽的中断int1int14rtosint和dlogint2812内部具有很多外设每个外设又可以产生一个或者多个中断请求对于2812的cpu而言它没有足够的能力去同时处理所有外设的中断请求

流水灯控制教案

流水灯控制教案

流水灯的模拟控制【引入】在前面的学习中,我们给大家介绍了定时器的相关知识点,同学们也能够运用定时器这种软元件进行一些简单程序的编写。

然而,定时控制在实际生活中的运用也是比比皆是。

比如在一些标志牌和广告牌,内部和四周都会运用流水灯来增加它的醒目程度。

利用PLC技术如何来进行流水灯控制呢?这就是今天所要给大家介绍的:项目五——流水灯的模拟控制。

【过渡】首先我们来看一下我们今天的学习目标。

一、【学习目标】1.会分析流水灯控制系统的动作要求,合理分配输入/输出点。

2.能独立完成流水灯控制系统的安装、调试和监控。

3.培养勤于思考、善于动手的良好习惯以及团队合作的能力。

【过渡】那么流水灯是如何控制的呢,我们来看一下它的动作要求?在此过程中,请大家思考这样几个问题?1.系统中用到哪些输入/输出器件呢?2.它们又该如何分配呢?请大家完成I/O分配表。

二、【动作要求】有三盏灯分别为红灯、绿灯和黄灯。

要求:1.按下启动按钮SB1三盏灯按以下顺序循环:2.按下停止按钮SB2三盏灯均熄灭,系统恢复初始状态。

三、【输入/输出分配表】流水灯控制电路的输入/输出分配表如表所示。

流水灯控制输入/输出分配表【点评】【过渡】动作任务清楚了。

接下来,请大家根据输入/输出分配表画出原理图。

然后,进行该系统硬件接线部分的安装。

四、【安装、连接、检测电路】一、用三菱FX2-48MR型可编程序控制器实现流水灯控制的输入/输出接线如图下所示。

图2-32流水灯PLC控制输入/输出接线图二、在此过程中,请大家务必注意:1)注意安全规范。

严格按照评分表的要求文明操作。

【点评】【过渡】至此,硬件部分的安装已经完成。

那么软件(梯形图的程序)该如何编写呢?请同学们以小组为单位相互讨论一下。

在讨论过程中可以带着这3个问题去思考?1.本控制任务每循环一个周期需要几秒时间?2.每个循环周期分几个步骤来完成,需要几个定时器,设定值分别为多少?3.每个定时器的作用是什么?下面,请几位同学谈谈他们小组的思路。

单片机学习之项目1 流水灯2定时器

单片机学习之项目1 流水灯2定时器

可位寻址, 也可字节寻址
TF1 TR1 TF0 TR0 IE1 IP1 IE0 IP0
M1M0
00:方式0,13位计数寄存器 01:方式1 ,16位计数寄存器,用于定时 和计数 10:方式2 ,自动重装载8位计数寄存器 ,用于波特率发生器 11:方式3,2个8位计数寄存器
定时器使用步骤
1.设置TMOD,使之工作在需求状态;
时间间隔1s的双向流水灯;
方法2
50ms 初值=15536=0x3CB0 #include<reg52.h> void main() { unsigned int i,j,value; TMOD=0x01; TH0=0x3c; TL0=0xb0; TR0=1; //此位可位操作 while(1) { value=0x01; for(i=0;i<14;i++) { for(j=0;j<20;j++) { while(TF0!=1); TH0=0x3c; TL0=0xb0; TF0=0; } P1=~value; if(i<7) value=value<<1; else value=value>>1;
#include<reg52.h> void main() { unsigned int i,value,dec; TMOD=0x01; TH0=0x3c; TL0=0xb0; TR0=1; //此位可位操作 while(1) { value=254; dec=1; for(i=0;i<8;i++) { while(TF0!=1); TH0=0x3c; TL0=0xb0; P1=value; value=value-dec; dec=dec*2; } }

任务三流水灯定时控制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。

TIMER0控制流水灯设计说明书

TIMER0控制流水灯设计说明书

大连交通大学摘要自计算机问世以来,单片机技术在社会各领域中得到了广泛的应用。

在流水灯控制系统中,单片机更是取代了由齿轮调节延迟时间的旧式市发展速度,成为日后此系统中的核心部分。

由于单片机具有一些突出的优点:体积小、重量轻、电源单一、功耗低;功能强、价格低;数据大都在单片机内部传送,运行速度快、抗干扰能力强、可靠性高,所以单片机被广泛的应用于测控系统、数据采集、智能仪器仪表、机电一体化产品、智能接口、计算机通信以及单片机的多级系统等领域。

本文主要讲的是单片机,课题名称为单片机TIMER0控制流水灯,它使我们学会了如何使用单片机控制我们日常生活中的多设备设施的应用。

通过本课题的设计以后,使我了解到了单片机的许多方面的应用。

本课题详细地介绍了一种由MCS-89C51集成块编程实现的控制电路,它完成了单片机流水灯控制功能,并给出了具体的硬件电路和相应的程序。

这种控制电路可靠性,灵活性高,使用范围广,特别适合中小城市的交通灯、霓虹灯等的应用。

而且,它对其他类似系统的开发具有一定的借鉴意义。

通过本次实训实习,其目的是让软件工程专业的毕业生通过自己动手制作一些实际电子产品,掌握一定的电子产品设计、制作技能和调试技术,巩固电子技术的理论知识,锻炼和提高学生的动手能力和综合运用知识解决实际问题的能力及实践动手能力。

让学生完全体验电子产品开发的全过程,整个电路的制作、调试,让学生完全自己动手完成,真正受到工程实践的基本训练,培养成为电子信息领域内的高级应用型技术人才。

关键词:单片机;集成块;I/O口;接口技术信号灯。

绪论 (2)第一章设计目的 (3)1.1设计目的 (3)1.2设计内容和要求 (3)1.3设计思路 (3)第二章设计原理分析 (4)2.1总体方案设计分析 (4)2.2TIMER0控制流水灯的系统设计 (5)2.3TIMER0控制流水灯的功能要求 (5)2.4定时器控制流水灯系统的基本构成及原理 (6)第三章系统硬件电路的设计 (7)3.1系统硬件总电路构成及原理 (7)3.2主控制部分――AT89C51单片机简介 (7)3.2.1 AT89C51的内部结构功能 (8)3.2.2 51单片机的串行接口工作方式 (9)3.3其它器件 (10)3.3.1发光二极管 (10)3.3.2晶体震荡器 (11)3.4定时器控制16只流水灯控制系统原理图 (12)第四章系统软件程序的简单设计 (13)4.1程序框图 (14)4.2程序流程图及程序 (15)4.2.1程序流程图: (15)4.2.2程序清单: (15)4.2.3实验仿真结果图: (17)结论 (18)参考文献 (19)绪论随着单片机功能的飞速发展,单片机的应用领域已经广泛渗透到了国民经济的各个领域,无是无处不在影响着每个现代人的生活。

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

(操作性实验)
课程名称:微机原理与微控制器应用
实验题目:c51单片机的定时器实验指导教师:
班级:学号:学生姓名:
一、实验目的和任务
1.掌握定时器中断的编程方法。

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

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

四、流程图与程序
#include "SST89x5x4.h"
#include<intrins.h>
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灯点亮时间大约为0.75m。

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

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

相关文档
最新文档