实验五 流水灯与中断控制

一、实验设备
(1)PC一台
(2)单片机多功能试验板一块
(3)KEIL uVision 4.22 集成开发环境、STC-ISP烧录软件、串口调试助手(电子工程基础实验QQ群文件共享)
二、实验目的
(1)了解单片机的4组I/O端口
(2)掌握通过串口通信控制LED灯的方法
(3)复习巩固C语言知识
三、实验要求与任务
使用KEIL uVision 4软件新建一个C51内核工程,步骤如下:
(1)在”Soruce Group 1”新建C程序文件,文件名:main.c
(2)在工程中新建两个组,名称分别为com和myled.
(3)在工程文件对应的目录下,再新建两个目录,com文件夹和myled文件夹。

(4)在工程中新建四个文件,分别名称com.c, com.h, myled.c, myled.h,前两个文件保存在com文件夹中,后两个文件保存在myled文件夹中。

(5)将共享资料的“单片机开发板资料\学习版资料\例程\LED\driver”目录及文件拷贝到工程文件所在的目录中,并在工程中新建driver组,把driver文件夹下的
两个文件添加进去。

(提示,我们要使用它提供的延时函数)
文件的组织结构如下图:
实验任务:
通过串口助手输入分别输入字符‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,分别完成以下功能:
输入’0’,打开led1到led5共5个灯,它们处于常亮状态。

输入’1’,关闭led1到led5共5个灯。

输入’2’,led1到led5这5个灯间隔0.5秒轮流点亮(流水灯效果)。

输入’3’,led1、led3、led5这3个灯间隔0.5秒轮流点亮(流水灯效果)。

输入’4’,led2、led4这3个灯间隔0.5秒轮流点亮(流水灯效果)。

四、示例代码
1. 实例代码
.c文件(不需要修改,可参考主程序中如何调用它里面的函数)
4. led.c文件
5.myled.h 文件
五、实验报告要求
实验报告文档以word为格式,包含:1.请附上你完成部分的实验代码。

六、相关材料
(1) 请自行复习C语言的相关基础知识。

合集下载

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

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

单片机跑马灯(流水灯)控制实验报告实验目的:本实验旨在通过使用单片机对LED灯进行控制,实现跑马灯(流水灯)的效果,同时熟悉单片机编程和IO口的使用。

实验器材:1)STC89C52单片机2)最基本的LED灯3)面包板4)若干跳线实验过程:1.硬件连接:将单片机的P2口与面包板上的相应位置连接,再将LED灯接入面包板中。

2.编写程序:按照题目要求编写所需程序。

3.单片机烧录:将程序烧录进单片机中,即可实现跑马灯效果。

程序详解:1. 由于LED灯是呈现亮灭效果,我们要编写程序来控制LED的亮灭状态。

2. 在程序中,我们通过P2口控制LED灯的亮灭状态。

例如,若要让LED1亮,我们就将P2口的第一个引脚设置为低电平(0),此时LED1就会发光。

同样地,若要LED2,LED3等依次点亮,则需要将P2口的第二个、第三个引脚设置为低电平,依此类推即可。

3. 接下来,我们要实现每个LED灯的亮灭时间间隔,并实现跑马灯的效果。

4. 在本实验中,我们采用了计时器中断的方式来实现灯光的控制,即在定时器中断函数中对P2口进行控制,这样可以方便地控制灯亮灭时间和亮度。

通过改变定时器中断的时间,可以改变LED灯的亮灭时间;通过改变P2口的控制顺序,可以实现跑马灯效果。

5. 整个程序比较简单,具体的代码实现可以参考以下程序:#include <REG52.H>#include <intrins.h>#define uint unsigned int #define uchar unsigned char void Delay1ms(uchar _ms); void InitTimer0();sbit led1=P2^0;sbit led2=P2^1;sbit led3=P2^3;sbit led4=P2^4;sbit led5=P2^5;sbit led6=P2^6;sbit led7=P2^7;void InitTimer0(){TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;}void Timer0() interrupt 1 {static uint i;TH0=(65536-50000)/256; TL0=(65536-50000)%256;i++;if(i%2==0){led1=~led1;}if(i%4==0){led2=~led2;}if(i%6==0){led3=~led3;}if(i%8==0){led4=~led4;}if(i%10==0){led5=~led5;}if(i%12==0){led6=~led6;}if(i%14==0){led7=~led7;}}void Delay1ms(uchar _ms){uchar i;while(_ms--){i=130;while(i--);}}实验总结:通过本次实验,我们掌握了单片机控制跑马灯(流水灯)的方法,对单片机编程和IO 口的使用有了更深入的了解。

实验五 流水灯与中断控制

实验五 流水灯与中断控制

一、实验设备(1)PC一台(2)单片机多功能试验板一块(3)KEIL uVision 4.22 集成开发环境、STC-ISP烧录软件、串口调试助手(电子工程基础实验QQ群文件共享)二、实验目的(1)了解单片机的4组I/O端口(2)掌握通过串口通信控制LED灯的方法(3)复习巩固C语言知识三、实验要求与任务使用KEIL uVision 4软件新建一个C51内核工程,步骤如下:(1)在”Soruce Group 1”新建C程序文件,文件名:main.c(2)在工程中新建两个组,名称分别为com和myled.(3)在工程文件对应的目录下,再新建两个目录,com文件夹和myled文件夹。

(4)在工程中新建四个文件,分别名称com.c, com.h, myled.c, myled.h,前两个文件保存在com文件夹中,后两个文件保存在myled文件夹中。

(5)将共享资料的“单片机开发板资料\学习版资料\例程\LED\driver”目录及文件拷贝到工程文件所在的目录中,并在工程中新建driver组,把driver文件夹下的两个文件添加进去。

(提示,我们要使用它提供的延时函数)文件的组织结构如下图:实验任务:通过串口助手输入分别输入字符‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,分别完成以下功能:输入’0’,打开led1到led5共5个灯,它们处于常亮状态。

输入’1’,关闭led1到led5共5个灯。

输入’2’,led1到led5这5个灯间隔0.5秒轮流点亮(流水灯效果)。

输入’3’,led1、led3、led5这3个灯间隔0.5秒轮流点亮(流水灯效果)。

输入’4’,led2、led4这3个灯间隔0.5秒轮流点亮(流水灯效果)。

四、示例代码1. 实例代码.c文件(不需要修改,可参考主程序中如何调用它里面的函数)4. led.c文件5.myled.h 文件五、实验报告要求实验报告文档以word为格式,包含:1.请附上你完成部分的实验代码。

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

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

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

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

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

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

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

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

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

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

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

七.电路原理逻辑图如下:P3.3 P3.2 灯亮情况0 0 全灭0 1 全灭1 0 从P2.0到P2.7依次亮灭1 1 从P2.7到P2.0依次亮灭八.实验硬件电路图如下九.程序流程图如下十.程序清单ORG 0000HAJMP STARTORG 0003HAJMP SERORG 0013HAJMP SER1ORG 0030HSTART: MOV I E,#85H ;外部中断0和1都开MOV I P,#01H ;外部中断0级优先高MOV TCON,#00H ;低电平出发MAIN: MOV A,#0FEH ;P2.0口亮MOV P2,AACALL TIMO ;延时RL A ;循环左移SJMP RESSER1: MOV R2,#18H ;循环3次MOV A,#0EFH ;P2.7口亮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十一.课程设计总结:通过本次课程设计,发现了学习中一些不足的地方,及时进行了补充学习。

推荐-基于单片机AT89C51控制的中断控制流水灯课程设计

推荐-基于单片机AT89C51控制的中断控制流水灯课程设计

宁波技师学院课程设计报告设计课题:单片机——中断控制流水灯摘要随着计算机技术的迅猛发展,计算机越来越广泛地应用于人们工作和生活的各个领域。

作为计算机领域里的一个重要方面单片机及其应用技术近年来也得到了长足的发展。

单片机被广泛地应用在工业自动化控制、智能仪器仪表、数据采集、通讯以及家用电器等领域。

单片机以其与通用微机完全不同的发展模式,不断满足工业测控、恶劣环境下可靠运行的要求。

、单片机已成为现代工业领域中不可缺少的重要角色。

单片机技术的发展速度十分迅速,速度更快、功能更强的16位、32位单片机以及陆续问世,但8位机,特别是新一代高档8位机具有优异的性能,已能满足大部分单片机应用领域的需要,另外,它还具有可靠性高、外围芯片配套、系统结构简单、应用软件丰富、技术成熟、开发应用方便等优点,在单片机市场中依旧据有一定地位。

目录一总体设计方案1.1系统设计方案流水灯系统主要由:复位电路、晶振电路、数码管显示电路、LED灯指示电路、速度与方式选择电路等部分电路组成。

各器件的选用:1 单片机的选用:单片机芯片选用A T89C51。

2数码管的选用:数码管选用共阳极数码管。

3晶振的选用:晶振选用的是12MHZ。

1.2系统结构框图框图如图1.2-1。

图1..2-1系统结构框图二系统硬件设计复位电路、晶振电路、数码管显示电路迪电路组成。

2.1晶振电路图2.1-1晶振电路内部方式时钟电路如图2.1-1所示。

在XTAL2和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。

2.2复位电路图2.2-1按键复位电路按键手动复位有电平方式和脉冲方式。

而此次选用的便是按键电平复位。

按键电平复位是通过复位端经电阻与Vcc接通而实现的。

电路如图2.2-1所示。

2.3数码管电路图2.3-1数码管电路此电路可以十分清楚的体现出当前LED指示灯所运行的模式。

图2.3-2数码管2.4LED指示电路与模式电路图2.4-1 LED指示电路此电路可以明显的反映出LED的运行状态,如图2.4-1所示。

第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而言它没有足够的能力去同时处理所有外设的中断请求

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

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

单片机课程设计外部中断控制流水灯变化-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十一.课程设计总结:通过本次课程设计,发现了学习中一些不足的地方,及时进行了补充学习。

流水灯中断

单片机原理及应用随堂实验报告学院计算机与电子信息学院专业电子信息工程班级电信11 -1班姓名温石坚学号 11034030132 指导教师左敬龙实验报告评分:_______一、实验原理及电路实验原理:当输出的数据时00000001时,第一个灯会亮。

利用中断函数实现一个灯灭与下一个亮的时间间隔,利用循环左移或循环右移函数_crol_(temp,1)或_cror_(temp,1)实现8个灯轮流的闪动。

电路图如下:二、功能说明在晶振提供12MHz的时钟频率后,电路开始工作。

由AT89c51中的程序代码决定输出的数据。

当输出00000001时,最后一个灯会亮,随之会灭掉。

中断50000*20=1s后,由左移函数_crol_(temp,1)使得输出00000010,实现倒数第二个灯亮。

以此类推,实现八个灯轮流亮。

三、实验框图如下:四、实验代码#include<reg51.h>#include<intrins.h>#define uchar unsigned charuchar temp,i;int f;void main(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;temp=0x01;while(1);}void T0_int() interrupt 1{i++;if(i==20){i=0;temp=_crol_(temp,1);P2=temp;}}五、实验过程在这实验过程中,自己学会了很多,首先自己基本学会了用proteus和keil 的使用,对这两个软件的操作方法也得到初步的了解。

对自己往后的学习也带来了方便。

在这次试验过程中,自己也遇到了很多问题,比如自己把程序学好并调试没问题后,将程序装入电路中,但仿真时出了问题,只有第一个灯亮,不能实现流水灯的功能。

自己回去检查,也没有发现程序有问题,也找了舍友看,舍友也觉得没问题。

中断方式流水灯设计

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;

流水灯的中断及调试实习报告

流水灯中断及调试实习报告一、实习目的本次实习的主要目的是学习并掌握单片机中断系统的工作原理,以及如何在中断服务程序中实现流水灯功能。

通过本次实习,要求学生能够熟练使用单片机开发工具,编写相应的程序,调试并验证中断系统在流水灯应用中的正确性。

二、实习内容1. 了解并分析流水灯中断系统的原理和实现方法。

2. 设计并编写流水灯中断服务程序。

3. 调试并验证程序的正确性。

三、实习过程1. 了解流水灯中断系统原理流水灯中断系统主要由单片机、LED灯、按键等组成。

当按键被按下时,触发中断请求,单片机响应中断,执行中断服务程序,实现LED灯的流水灯效果。

2. 设计流水灯中断服务程序本次实习采用51单片机作为主控制器,使用C语言编写程序。

首先,配置单片机的I/O口,使其能够驱动LED灯。

然后,编写中断服务程序,实现LED灯的流水灯效果。

具体步骤如下:(1)初始化单片机的I/O口,配置为输出模式。

(2)初始化定时器,设置中断周期。

(3)进入主循环,等待中断请求。

(4)当按键被按下时,触发中断请求,进入中断服务程序。

(5)在中断服务程序中,根据设定的流水灯模式,切换LED灯的状态。

(6)返回主循环,继续等待中断请求。

3. 调试并验证程序的正确性使用调试工具对编写好的程序进行编译、下载,并观察实验现象。

在实验过程中,不断调整程序代码,优化中断服务程序,确保流水灯效果的正确性。

四、实习总结通过本次实习,我深入了解了流水灯中断系统的原理和实现方法,掌握了单片机中断系统的工作过程,以及如何在程序中实现中断服务。

在调试过程中,我学会了如何通过观察实验现象,查找并修复程序中的错误。

总之,本次实习使我受益匪浅,不仅提高了我的编程能力,还培养了我遇到问题、分析问题、解决问题的能力。

在今后的学习和工作中,我会继续努力,不断提高自己的实践能力,为我国电子技术领域的发展贡献自己的力量。

中断控制的流水灯.pdf


}
P0=0;
} /******** 以下是外中断 1 函数 ********/
void int1() interrupt 2
{ uchar led_data=0x7f;
//给 led_data 赋初值 0x7f, 点亮最左侧第一个 LED 灯
uchar i;
for(i=0;i<8;i++) {
P0= led_data;
中断控制的流水灯仿真实验
按键控制的流水灯
U1
19 XTAL1
18 XTAL2
9 RST
29 30
PSEN ALE
31 EA
1 P1.0 2 P1.1 3 P1.2
4 5
P1.3 P1.46 7来自8P1.5 P1.6P1.7
AT89C51
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3 P0.4/AD4
Delay_ms(500);
led_data=_cror_( led_data,1);// 将 led_data 循环左移 1 位再赋值给 led_data
}
P0=0;
}
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char /******** 以下是延时函数 ********/
void Delay_ms(uint xms)
// 延时程序, xms 是形式参数
12
P3.3/INT1 P3.4/T0
13 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档