实验五 流水灯与中断控制
单片机跑马灯(流水灯)控制实验报告
![单片机跑马灯(流水灯)控制实验报告](https://img.taocdn.com/s3/m/4ff4d88cc67da26925c52cc58bd63186bceb9236.png)
单片机跑马灯(流水灯)控制实验报告实验目的:本实验旨在通过使用单片机对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 口的使用有了更深入的了解。
实验五 流水灯与中断控制
![实验五 流水灯与中断控制](https://img.taocdn.com/s3/m/4332d72731126edb6f1a104a.png)
一、实验设备(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.请附上你完成部分的实验代码。
最新单片机课程设计 外部中断控制流水灯变化
![最新单片机课程设计 外部中断控制流水灯变化](https://img.taocdn.com/s3/m/96fad55c376baf1ffc4fad9f.png)
单片机课程设计报告设计题目:外部中断控制流水灯变化姓名一.设计目的通过学习单片机工作原理和各种工作方式及各管脚的功能,想通过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控制的中断控制流水灯课程设计](https://img.taocdn.com/s3/m/bdd2fe2b6bec0975f565e24a.png)
宁波技师学院课程设计报告设计课题:单片机——中断控制流水灯摘要随着计算机技术的迅猛发展,计算机越来越广泛地应用于人们工作和生活的各个领域。
作为计算机领域里的一个重要方面单片机及其应用技术近年来也得到了长足的发展。
单片机被广泛地应用在工业自动化控制、智能仪器仪表、数据采集、通讯以及家用电器等领域。
单片机以其与通用微机完全不同的发展模式,不断满足工业测控、恶劣环境下可靠运行的要求。
、单片机已成为现代工业领域中不可缺少的重要角色。
单片机技术的发展速度十分迅速,速度更快、功能更强的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章 流水灯定时及外部中断控制](https://img.taocdn.com/s3/m/f155cc156c175f0e7cd137d9.png)
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而言它没有足够的能力去同时处理所有外设的中断请求
单片机课程设计外部中断控制流水灯变化
![单片机课程设计外部中断控制流水灯变化](https://img.taocdn.com/s3/m/84948daff5335a8103d22081.png)
单片机课程设计外部中断控制流水灯变化-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十一.课程设计总结:通过本次课程设计,发现了学习中一些不足的地方,及时进行了补充学习。
流水灯中断
![流水灯中断](https://img.taocdn.com/s3/m/e1dc2ad8a6c30c2258019e9c.png)
单片机原理及应用随堂实验报告学院计算机与电子信息学院专业电子信息工程班级电信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 的使用,对这两个软件的操作方法也得到初步的了解。
对自己往后的学习也带来了方便。
在这次试验过程中,自己也遇到了很多问题,比如自己把程序学好并调试没问题后,将程序装入电路中,但仿真时出了问题,只有第一个灯亮,不能实现流水灯的功能。
自己回去检查,也没有发现程序有问题,也找了舍友看,舍友也觉得没问题。
中断方式流水灯设计
![中断方式流水灯设计](https://img.taocdn.com/s3/m/e29bcbdcba0d4a7302763a9a.png)
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;
流水灯的中断及调试实习报告
![流水灯的中断及调试实习报告](https://img.taocdn.com/s3/m/a92fcb62a22d7375a417866fb84ae45c3b35c233.png)
流水灯中断及调试实习报告一、实习目的本次实习的主要目的是学习并掌握单片机中断系统的工作原理,以及如何在中断服务程序中实现流水灯功能。
通过本次实习,要求学生能够熟练使用单片机开发工具,编写相应的程序,调试并验证中断系统在流水灯应用中的正确性。
二、实习内容1. 了解并分析流水灯中断系统的原理和实现方法。
2. 设计并编写流水灯中断服务程序。
3. 调试并验证程序的正确性。
三、实习过程1. 了解流水灯中断系统原理流水灯中断系统主要由单片机、LED灯、按键等组成。
当按键被按下时,触发中断请求,单片机响应中断,执行中断服务程序,实现LED灯的流水灯效果。
2. 设计流水灯中断服务程序本次实习采用51单片机作为主控制器,使用C语言编写程序。
首先,配置单片机的I/O口,使其能够驱动LED灯。
然后,编写中断服务程序,实现LED灯的流水灯效果。
具体步骤如下:(1)初始化单片机的I/O口,配置为输出模式。
(2)初始化定时器,设置中断周期。
(3)进入主循环,等待中断请求。
(4)当按键被按下时,触发中断请求,进入中断服务程序。
(5)在中断服务程序中,根据设定的流水灯模式,切换LED灯的状态。
(6)返回主循环,继续等待中断请求。
3. 调试并验证程序的正确性使用调试工具对编写好的程序进行编译、下载,并观察实验现象。
在实验过程中,不断调整程序代码,优化中断服务程序,确保流水灯效果的正确性。
四、实习总结通过本次实习,我深入了解了流水灯中断系统的原理和实现方法,掌握了单片机中断系统的工作过程,以及如何在程序中实现中断服务。
在调试过程中,我学会了如何通过观察实验现象,查找并修复程序中的错误。
总之,本次实习使我受益匪浅,不仅提高了我的编程能力,还培养了我遇到问题、分析问题、解决问题的能力。
在今后的学习和工作中,我会继续努力,不断提高自己的实践能力,为我国电子技术领域的发展贡献自己的力量。
中断控制的流水灯.pdf
![中断控制的流水灯.pdf](https://img.taocdn.com/s3/m/490f1f1627284b73f2425094.png)
}
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
stm中断的原理与实现流水灯实验报告
![stm中断的原理与实现流水灯实验报告](https://img.taocdn.com/s3/m/6b41ea1777c66137ee06eff9aef8941ea76e4b9b.png)
stm中断的原理与实现流水灯实验报告系部:电子通信工程系班级:电信####姓名:######学号:##实验一搭建实验环境一.实验简介搭建嵌入式系统开发环境,建立第一个工程,流水灯实验二.实验目的掌握STM32开发环境,掌握从无到有的构建工程。
三.实验内容熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现流水灯工程。
通过ISP下载代码到实验板,查看运行结果。
下载代码到目标板,查看运行结果。
四.实验设备硬件部分:PC计算机(宿主机)、STM32实验板。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤1.熟悉MDK KEIL开发环境2.熟悉串口编程软件ISP3.查看固件库结构和文件4.建立工程目录,复制库文件5.建立和配置工程6.编写代码7.编译代码8.使用ISP下载到实验板9.测试运行结果10.记录实验过程,撰写实验报告六.实验结果及测试程序代码主要有两部分,第一部分是GPIO端口的配置,打开端口时钟,配置为推挽输出模式,并使能端口。
代码如下:void LED_GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Per iph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_0);GPIO_SetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_3);第二部分是主函数,主要实现LED灯的亮灭的功能。
指示灯、数码管的中断控制实验报告
![指示灯、数码管的中断控制实验报告](https://img.taocdn.com/s3/m/f7d64bc6f71fb7360b4c2e3f5727a5e9856a2715.png)
指示灯、数码管的中断控制实验报告
本次实验是通过中断控制指示灯和数码管的显示。
我们使用了STC89C52单片机来进行控制实验。
首先,我们定义了两个常量。
一个是DELAY,用于控制指示灯闪烁的速度;另一个是DELAY2,用于控制数码管显示的速度。
由于数码管的刷新速度要比指示灯快,所以我们设置了一个较小的DELAY2值。
在主函数中,我们对单片机进行了初始化,并开启了中断。
然后,我们通过一个while循环不断循环执行,等待中断的触发。
在中断处理函数中,我们利用了定时器来控制指示灯的闪烁,当计数器的值等于DELAY时,就切换指示灯的状态。
通过这种方式,我们可以让指示灯不断地交替闪烁。
对于数码管的中断控制,我们使用了另一个定时器。
每隔一段时间,就会调用中断处理函数,更新数码管的显示内容。
在这个函数中,我们定义了一个数码管显示表,通过循环周期地改变显示的内容,从而实现了数码管数字的滚动显示。
在实验过程中,我们还需要注意一些问题。
首先是定时器的设置,不仅要考虑到闪烁和滚动的速度,还要注意计数器的初始值和中断的开启。
另外,由于中断会频繁地跳入中断处理函数,我们需要尽量减少中断函数的执行时间,避免影响程序的运行。
通过这一次实验,我们掌握了中断控制指示灯和数码管的方法,对单片机的应用有了更深入的了解。
在今后的学习和开发中,这些基础知识将会起到重要的作用。
用中断做流水灯课程设计
![用中断做流水灯课程设计](https://img.taocdn.com/s3/m/e91be8b3b9f67c1cfad6195f312b3169a551ea1d.png)
用中断做流水灯课程设计一、课程目标知识目标:1. 让学生理解中断的概念,掌握中断在流水灯控制中的应用原理;2. 学会使用中断功能实现流水灯效果,了解相关电路连接和编程方法;3. 掌握中断优先级和中断嵌套的基本知识,提高对多中断处理的能力。
技能目标:1. 培养学生动手实践能力,能独立完成中断流水灯电路搭建和程序编写;2. 提高学生分析问题和解决问题的能力,能针对实际问题进行中断程序的调试和优化;3. 培养学生团队合作精神,能在小组讨论中积极参与,共同完成中断流水灯项目。
情感态度价值观目标:1. 激发学生对电子技术和编程的兴趣,培养其探索精神;2. 培养学生严谨、细心的学习态度,养成科学规范的操作习惯;3. 增强学生的自信心,使其在成功实现中断流水灯项目的过程中,感受到学习的乐趣和成就感。
课程性质:本课程为电子技术和编程实践课程,结合理论知识和实际操作,培养学生的动手能力和创新能力。
学生特点:学生具备基本的电子电路知识和编程基础,对实际操作有较高的兴趣。
教学要求:教师需关注学生的个体差异,采用启发式教学,引导学生主动探索,注重实践与理论相结合,提高学生的综合能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. 中断概念及原理:回顾中断的定义、作用和分类,重点讲解中断响应过程和中断优先级管理。
教材章节:第三章第三节“中断与中断处理”2. 流水灯电路设计:介绍流水灯电路的基本原理,分析电路元件的选型和连接方式。
教材章节:第二章第二节“组合逻辑电路设计”3. 中断编程:讲解中断编程的基本方法,包括中断向量表、中断服务程序和中断返回等。
教材章节:第五章第二节“中断编程与应用”4. 流水灯程序编写:指导学生使用中断编程方法编写流水灯程序,实现流水灯效果。
教材章节:第五章第三节“中断在流水灯控制中的应用”5. 中断优先级和中断嵌套:分析多中断处理时的问题,讲解中断优先级和中断嵌套的解决方法。
中断点亮流水灯应用
![中断点亮流水灯应用](https://img.taocdn.com/s3/m/72bd12c26137ee06eff918b3.png)
实训报告六实训目的:通过单片机的外部中断使发光二极管交替循环点亮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语言程序的编写能力。
中断控制LED流水灯
![中断控制LED流水灯](https://img.taocdn.com/s3/m/df78aac09ec3d5bbfd0a7486.png)
硬件消抖用RS触发器 软件消抖
如果按键较多,常用软件方法去抖,即检 测出键闭合后执行一个延时程序,5ms~ 10ms的延时,让前沿抖动消失后再一次检 测键的状态,如果仍保持闭合状态电平, 则确认为真正有键按下。当检测到按键释 放后,也要给5ms~10ms的延时,待后沿抖 动消失后才能转入该键的处理程序。
IT0 = 1; EX0 = 1; EA = 1;
//外部中断输入下降沿有效 //允许X0中断 //开放总中断
temp = 0xfe; P1 = temp; while(1);
} void T0_int(void) interrupt 1 //每隔10ms执行一次 { TH0 = (65536 - 10000) / 256; //定时10ms@12MHz TL0 = (65536 - 10000) % 256; i++;
D1
D2
D3
D4
D5
D6
D7
D8
18
XTAL2
LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW 9 RST
29 30 31
PSEN ALE EA
R1
PULLUP
RN1
1 2 3 4 5 6 7 8 300 16 15 14 13 12 11 10 9 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
//设定T0定时方式1 //定时10ms@12MHz
中断流水灯
![中断流水灯](https://img.taocdn.com/s3/m/a9cb91c858f5f61fb7366635.png)
贵州大学实验报告纸系别电科班级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中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。
中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。
外部中断实现流水灯
![外部中断实现流水灯](https://img.taocdn.com/s3/m/2e35ceba284ac850ac02420b.png)
(操作性实验)
课程名称:微机原理与微控制器应用
实验题目:c51单片机的外部中断实验指导教师:杨文君
班级:学号:学生姓名:
一、实验目的和任务
1.学习C51单片机的外部中断原理及编程方法;
2.掌握中断处理程序的编程方法和调试方法。
二、实验仪器及器件
硬件:电脑一台、微机原理与单片机试验箱:51开发板、开关及LED显示单元、导线若干
软件:keil uVision4
三、实验内容及电路图
P1口作为输出口,按键KK1连接外部中断,按一次按键KK1发光二极管循环左移显示。
四、流程图与程序
#include "SST89x5x4.h"
#include "intrins.h"
unsigned char i=0x01;
void int0_LED() interrupt 2
{
P1=i;
i=_crol_(i,1);
}
void main()
{
P1=0x01;
IT1=1;
EX1=1;
EA=1;
while(1);
}
五、实验结果
每按下一次按键KK1,LED灯就从左往右对应的亮一个灯。
六、实验数据分析及处理
每按下一次按键,就会进入一次中断,LED灯就会左移点亮一次,符合实验要求,同时说明了实验程序的编写,经编译、链接、运行后无误,且对硬件的操作也无误,实验结果正确。
七、实验结论与感悟(或讨论)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验设备
(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语言的相关基础知识。