实验一IO口输出实验LED流水灯实验
本教学实验系统使用本公司自主研发的 ISP 下载软件,下载软件版权归广州市风标电子 技术有限公司所有。
一、运行 WWISPSetup.exe,安装 ISP 下载软件。 二、将 USB 下载器连接 PC 及目标板(USB 接口端连接到 PC 的 USB 接口,ISP 端连 接到 MCU 模块 ISP 插槽)。在连接 USB 下载器之前,MCU 模块应先接通电源。 三、连接 USB 到 PC 后,将提示“发现新硬件 USBasp”,如下图所示:
2、实验效果说明:
发光二级管进行流水灯操作,从上到下依次点亮。
五、 实验流程图
开始
设置 LED 点亮初值
LED 输出
延时
左移一次
否
是否>8
是
六、 实验思考题
1、增加 LED 灯的显示花样,丰富实验的效果。
参考程序:
ORG 00h
START:
MOV R2,#8
MOV A,#0FEH
LOOP:
MOV P2,A
一、 实验要求
利用单片机及 8 个发光二极管等器件,构成一个流水灯单片机系统。
二、 实验目的
1、掌握单片机最小系统的构成; 2、掌握 I/O 口的使用及驱动能力的概念; 3、熟悉移位指令和软件延时程序。
三、 实验电路及连线
硬件连接表
MCU 模块
PB-EDU-011
P20~P27
D1~D8
+5V
+5V
GND
GND
注意事项: (1)实验箱上各模块是独立供电,实验时需要用到的模块都要给它提供电源,即+5V 接
口都要接到电源模块的+ 5V 电源接口,GND 接口可以不用接(默认实验箱上的 GND 网络 都接在一起了),千万不要把+5V 接口接到 GND 接口上,短路烧坏保险管。 (2)硬件连接表都是按照 C 语言编写的仿真工程连接硬件,适用于 AT89S52、A到汇编工程,请参照汇编工程里面的仿真电路连接 硬件。
;延时程序,延时 0.2s
四、 实验说明
1、主要知识点概述:
本实验涉及到三个知识点:单片机最小系统的构成、单片机 I/O 口的使用以及软件延时 程序的编写。 (1)单片机最小系统由单片机芯片、时钟电路以及复位电路构成。 (2)I/O 口的正确使用。 (3)延时子程序的延时计算问题。根据晶振时钟的大小以及指令周期,计算延时时间所 要执行的指令数目。
注意事项:
我公司提供的 ISP 下载器采用 SPI 串行通信方式与单片机的 P15、P16、P17 引脚相连,下 载代码时占用单片机的这三个引脚,实验过程中如果用到这三个引脚时请先下载代码,下载 完成后再连接导线。部分用户在使用过程中若出现下载不了代码,FLASH 校验失败,就是 上述引起的。
实验一 I /O口输出实验—LED流水灯实验
LCALL DELAY
RL A
DJNZ R2,LOOP
LJMP START DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248
DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END
;循环左移 ;判断移动是否超过 8 位,未超过继续循环
四、系统会自动弹出找到新的硬件向导,如下图所示:
五、选择“从列表或指定位置安装(高级)(S)”选项,并点击“下一步”。 六、选择“在这些位置上搜索最佳驱动程序”和“在搜索中包括这个位置”,并浏览到 WWISP 的安装目录下,默认的目录是 C:\Program Files\Windway Technologies\WWISP,具体 的设置如下图所示:
七、点击“下一步”,安装驱动。 八、安装完成。
九、在硬件管理器里面将看到安装好的硬件
十、WWISP 安装完成后,桌面出现
快捷方式,点击进入后系统会
自动识别器件型号,也可以手动选择对应的单片机类型。
十一、点击“打开文件(Flash)”按钮找到 HEX 文件,然后点击“写 Flash”按钮,程序 将烧录到 MCU 当中。对于其它的功能,也可以进行操作。如:先选取“擦除芯片”、“编程 Flash”,然后点击“自动编程”,刚系统会自动依次进行“擦除芯片”、“编程 Flash”的操作。
流水灯实验·
实验一发光二极管流水灯实验一、实验要求利用单片机及8个发光二极管等器件,制作一个单片机控制的流水灯系统。
单片机的P0.0~P0.7接有8个发光二极管,运行程序,则8个发光二极管进行流水灯操作,流水灯从上到下依次点亮,反复循环。
二、实验目的1.掌握单片机最小系统的构成。
2.掌握P0口作为基本I/O口使用时,外部电路的连接方法。
3.如何控制I/O口来驱动LED发光二极管。
4.学会用PROTEUS 设计电路原理图,并进行仿真的方法。
5.学会使用Keil C编程。
三、实验步骤(一)电路原理图设计1.启动PROTEUS ISIS仿真工具。
参照实验指导书P24页2.5节的方法,设计电路原理图。
2.在元器件模式下,单击选取元器件,在Keywords一栏中输入元器件名称,如AT89C51,双击所匹配的元器件,便可将其加入到对象选择器中。
本实验需要选取的元器件有单片机AT89C51、发光二极管LED-BIRG、瓷片电容CAP、电解电容CAP-ELEC、电阻RES、上拉排阻RESPACK-8、晶振CRYSTAL、按钮BUTTON、双极性晶体管ST5771-1。
3.按图一电路原理图,在编辑区放置相应元器件,单击选择终端模式,放置电源和地,并连线。
4.设置元器件参数值,本实验中晶振X1频率为12MHz,瓷片电容C1、C2的值为30pF,电解电容C3的值为10uF,电阻R1为470,R2、R3的值为10K,电阻R4~R11的值为470,单片机AT89c51的时钟频率12MHz。
5. 设计完成电路后,单击电气检测按钮,会出现检查结果窗口,若有错,会给出详细的说明。
如没有错,将设计保存到自己的工作目录中。
(二)编写源程序,并生成.HEX文件。
1.启动KEIL Uvision4。
2. 按照实验指导书P50页4.1节的方法输入源程序并生成.HEX文件。
(注意:程序设计时考虑到实验学习板上的电路的设计,要使P2.7 = 0; 关闭液晶使能位,防止液晶数据口输出干扰P0口; 使P3.7 = 0, 选通WS 系列实验板的LED 流水灯的电源控制端)(三)仿真回到PROTEUS ISIS环境,并按照实验指导书P60页4.2节的方法加载.HEX文件进行仿真。
单片机流水灯实验报告
单片机流水灯实验报告1. 实验目的本实验旨在通过使用单片机控制LED灯的亮灭来实现流水灯效果,以加深对单片机控制原理的理解,并培养学生动手实践的能力。
2. 实验器材•单片机开发板•面包板•LED灯•连接线•电源3. 实验原理流水灯是一种常见的LED灯效果,通过控制多个LED灯的亮灭顺序和速度,形成流动的效果。
在本实验中,我们使用单片机通过改变IO口的输出电平来控制LED灯的亮灭。
4. 实验步骤第一步:准备工作•将单片机开发板连接到电脑上,并确保单片机开发环境已经正确安装。
•将面包板连接到单片机开发板上的IO口。
•将LED灯连接到面包板上,确保连接正确。
第二步:编写程序在单片机开发环境中,编写下列代码:#include <reg52.h>sbit LED1=P1^0;sbit LED2=P1^1;sbit LED3=P1^2;sbit LED4=P1^3;void delay(int t) {int i, j;for(i=t;i>0;i--) {for(j=110;j>0;j--);}}void main() {while(1) {LED1=0;delay(1000);LED1=1;delay(1000);LED2=0;delay(1000);LED2=1;delay(1000);LED3=0;delay(1000);LED3=1;delay(1000);LED4=0;delay(1000);LED4=1;delay(1000);}}第三步:烧录程序将编写好的程序烧录到单片机开发板上,确保烧录成功。
第四步:实验测试•将单片机开发板连接到电源上,并打开开关。
•观察LED灯的亮灭情况,是否能够形成流水灯效果。
•如果效果与预期一致,则说明实验成功。
5. 实验结果分析经过实验测试,LED灯能够按照程序中设定的流水灯顺序亮灭,形成了流水灯效果。
说明通过单片机控制IO口输出电平能够实现对LED灯的控制,并且通过改变控制程序中的延时时间可以调整流水灯的速度。
流水灯实验报告
实验一流水灯实验一、实验目的1)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断二、实验实现的功能1)开机时点亮12发光二极管, 闪烁三下2)按照顺时针循环依次点亮发光二极管3)通过按键将发光二极管的显示由顺时针改为逆时针方式三、系统硬件设计单片机STC10F08XE 1片发光二极管led 红4个黄4个绿4个按键6个复位电路时钟电路如下图所示:四、系统软件设计#include<reg51.h>sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; void Delay(void){unsigned char i,j,k;for(i=10;i>0;i--)for(j=132;j>0;j--)for(k=150;k>0;k--); }Scan_Key(){ unsigned char FLAG=0;unsigned char n;n=(L1==0)||(L2==0)||(L3==0);if(n) { FLAG=1;}return FLAG; }main(){ unsigned char y,n,s=0,b=1,m=0;unsigned char c=1;unsigned char a[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char h[]={0xff,0x38,0x34,0x2f,0x1f};n=Scan_Key(); for(y=0;y<3;y++){ P2=0; P3=0; Delay(); Delay(); Delay();P2=0xff; P3=0xff; Delay(); Delay(); Delay(); }while(1) { while(1){ m=m+n; P3=0x3f; while(1){ for(;b<9;b++){ n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==0)){P2=a[b];Delay();}else { P2=0xff;break; }if(m%2==0) c=1; P2=0xff; }for(;c<5;c++){n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==0)){ P3=h[c];Delay();}else { P3=0x3f;break;} }if(m%2==0) b=1; break; }if(m%2==1) break; }while(1){ for(;b>0;b--){n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==1)){P2=a[b];Delay(); } else{P2=0xff;break;} P2=0xff; }if(m%2==1) c=4; for(;c>0;c--){ n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==1)){ P3=h[c]; Delay();}else { P3=0x3f;break;} P3=0x3f; }if(m%2==0) break;if(m%2==1) b=8; } } }五、实验过程中遇到的问题及解决方法问题1: 如何实现顺、逆时针依次点亮流水灯?解决: 利用循环右移_cror_(m,1)和循环左移_crol_(n,1)依次点亮。
实验一51单片机流水灯实验实验报告
实验一 51单片机流水灯实验实验报告
“流水灯”实验报告 一、实验目的 1.了解单片机I/O口的工作原理。 2.掌握51单片机的汇编指令。 3.熟悉汇编程序开发,调试以及仿真环境。 二、实验内容 通过汇编指令对单片机I/O进行编程(本实验使用P0口),以控制八个发光二极管以一定顺序亮灭。(即流水灯效果) 三、实验原理 通过更改P0口8位的高低电平,分别控制8个发光二极管的亮灭。具体的亮灭情况如下表:
要实现“流水灯”效果,也就是需要将P0口的输出值发生以下变化: FE→FD→FB→F7→EF→DF→BF→7F→BF→DF→EF→F7→FB→FD→FE→...... 可以使用一个循环,不断对数据进行移位运算实现。这里的移位指令采用RL和RR,即不带进位的位移运算指令。如果使用带 进位的位移运算指令(RLC和RRC),则需要定期把CY置0,否则会出现同时亮起两个发光二极管的情况。 四、实验过程 1.在仿真系统中绘制RG 0000H Delay: MOV R0, #0FFH SJMP Start Delay1: MOV R1, #0FFH Start: MOV A, #0FEH Delay2: NOP MOV P0, A DJNZ R1, Delay2 CLR P2.7 DJNZ R0, Delay1 CLR P3.7 RET Move: MOV R2, #7H END MOV R3, #7H RMove: RL A MOV P0, A CALL Delay DJNZ R2, RMove LMove: RR A MOV P0, A CALL Delay DJNZ R3, LMove SJMP Move 五、实验结果 为了便于实验结果的描述,下面分别把P0.0, P0.1…, P0.7对应的发光二极管编号为1, 2, …, 8号二极管。 在仿真系统中,先从1号二极管下面是在仿真系统中的实验结果:
单片机实验LED流水灯实验
LED流水灯实验一、实验内容将LED灯逐个点亮,然后全亮,全灭。
二、实验原理8个LED发光二极管,分别对应单片机IO口的P0.0到P0.7口,8个单片机IO口组成一个字节,用一个八位二进制的左移和右移来确定灯的亮灭,并用定时器延时。
三、描述该实验中运用的理论知识1、LED的点亮:8个LED发光二极管,分别对应单片机IO口的P0.0到P0.7口,8个单片机IO口组成一个字节,在程序编写过程中,可以直接用P0来进行操作。
2、流水效果:C语言的8位二进制数代表了8个IO口,左移,最低位填0,然后按位取反,就可以将灯逐个点亮3、延时:特殊功能寄存器TMOD,如图T1和T0分别代表单片机两个计数器。
GATE:该位被置位时为门控位。
仅当TR1被置位并且INT1脚为高,定时器开始计数。
当该位被清零时,只要TR1被置位,定时器1马上开始计数。
C/T:该位为0的时候,用作定时器,该位为1的时候,用做计数器。
0.5秒的延时12 * (65536- x)/11059200 = 0.001四、实验步骤1、流程图2、结果程序:#include <reg52.h>typedef unsigned char uint8;typedef unsigned int uint16;sbit ENLED = P1^4;sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;main(){uint8 counter;uint16 i,j;ENLED = 0;ADDR0 = 0; ADDR1 = 1; ADDR2 = 1; ADDR3 = 1;TMOD = 0x01;TH0 = 0xB8;TL0 = 0x00;TR0 = 1;while(1){if(1 == TF0){TF0 = 0;TH0 = 0xB8;TL0 = 0x00;counter++;}if(25 == counter){counter = 0;if(8 == j){P0 = 0X00;for(i=0;i<=38000;i++);P0 = 0XFF;for(i=0;i<=38000;i++);j = 0;}P0 = ~(1 << j++);}}}。
LED流水灯实验报告
while(1)
{
P0=temp1;
P2=temp2;
delays(200);
temp1=_crol_(temp1,1);
temp2=_crol_(temp1,1);
}
}
Hex文件生成
本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发计算器设计做了详细的分析和研究。本系统就是充分利用了8051芯片的I/O引脚。系统已采用MCS—51系列单片机为中心器件来设计LED流水灯系统,实现LED左循环显示,并实现循环的速度可调。
二、设计目的
1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
#include "intrins.h"
#define uint unsigned int
void delays(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uint temp1,temp2;
temp1=0x01;
RST/VPD:复位/备用电源线,可以使单片机处于复位工作状态,外接人工按钮复位。
EA/VPP允许访问片外存储器/编程电源线,他可控制单片机使用片内ROM还是还是使用片外ROM,若EA为1允许使用片内ROM,为0则允许使用片外ROM。
七、实验过程
下载程序:
程序下载成功
程序检测
新建文本文档(程序)
#include "reg52.h"
如果要让接在P1.0口的LED1亮起来,那么只需要把P1.0口的电平变为低电平就可以了;相反,如果要让接在P1.0口的LED1熄灭,那么只需要把P1.0口的电平变为高电平就可以了;同理,接在P1.1—P1.7口的其他7个LED的点亮的熄灭的方法同LED1。因此,只要使接在单片机上的八个LED灯在接通电源后除了最右端一个其余都亮,一秒后倒数第二个熄灭其余都亮,如此循环往复,就可以达到流水的效果。
实训报告单片机流水灯
一、实验目的1. 熟悉单片机的基本原理和组成,掌握51单片机的编程方法。
2. 理解单片机I/O口的使用,学会利用单片机控制LED灯的流水灯效果。
3. 提高动手实践能力,培养团队协作精神。
二、实验环境1. 实验设备:51单片机开发板、LED灯、面包板、电源、连接线等。
2. 实验软件:Proteus仿真软件、Keil uVision5集成开发环境。
三、实验原理流水灯实验是单片机入门级实验之一,通过控制单片机的I/O口输出高低电平,使LED灯依次点亮,形成流水灯效果。
实验中,利用单片机的定时器产生定时中断,每隔一定时间改变I/O口的输出状态,实现LED灯的流水灯效果。
四、实验步骤1. 打开Proteus软件,新建一个工程项目,添加51单片机开发板和LED灯等元件,绘制电路图。
2. 打开Keil uVision5,新建一个C51工程项目,选择对应的单片机型号。
3. 编写程序:(1)初始化I/O口:将P0口设置为输出模式,将P1口设置为输出模式。
(2)设置定时器:选择合适的定时器,设置定时时间,使其产生定时中断。
(3)编写中断服务程序:在中断服务程序中,改变I/O口的输出状态,实现LED灯的流水灯效果。
(4)编写主程序:在主程序中,启动定时器,进入中断服务程序。
4. 编译程序,生成HEX文件。
5. 将生成的HEX文件导入Proteus软件,运行仿真实验。
6. 观察实验现象,检查LED灯的流水灯效果是否正常。
五、实验结果与分析1. 实验现象:在Proteus软件中,LED灯依次点亮,形成流水灯效果。
2. 实验分析:通过设置定时器,每隔一定时间改变I/O口的输出状态,实现LED 灯的流水灯效果。
实验过程中,可以调整定时器的定时时间,改变流水灯的速度。
六、实验总结1. 本实验使我们对单片机的基本原理和组成有了更深入的了解。
2. 通过编写程序,掌握了51单片机的编程方法,提高了编程能力。
3. 实验过程中,我们学会了利用单片机控制LED灯,实现了流水灯效果。
STM32实验-GPIO输出-流水灯实验报告
改为
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
课程实验报告
学院:专业:2018年10月18日
姓名
学号
班级
指导老师
课程名称
嵌入式系统原理与应用实验
成
绩
实验名称
GPIO输出-流水灯
1.实验目的
通过一个经典的跑马灯程序,了解STM32F1的IO口作为输出使用的方法。通过代码控制开发板上的4个LED灯交替闪烁,实现类似跑马灯的效果。
2.实验内容
工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
GPIO_Init(GPIOC, &GPIO_InitStructure);
欢迎您的下载,资料仅供参考!
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);
实验日期:2018年10月18日
华工单片机IO口流水灯实验1报告
华南理工大学XXX课程实验报告实验题目:__________单片机I/O口--流水灯_______________班级: ___09信安(5)__指导教师: ________张齐_________实验概述【实验目的及要求】1.学习单片机各I/O口结构特点及相关寄存器的使用方法。
2.掌握一个简单具体的单片机项目的开发流程。
3.了解Proteus ISIS软件及使用方法。
4.熟悉Proteus ISIS与μVision2 IDE开发环境的互连调试。
实验内容【实验方案设计】实验电路编程实现:1)从VD1~VD32 逐次点亮每个LED,然后熄灭。
每个Led 亮灯时间约为200ms。
2)点亮VD32,200ms后再点亮VD31……最后点亮VD1,直到全部灯被点亮。
3)在全部灯亮的情况下,从VD1~VD32逐次熄灭LED,熄灭VD1,延时200ms;然后熄灭VD2,延时200ms……熄灭VD32,全部灯熄灭。
4)重复上述过程。
【实验过程】程序如下:#include <REG52.H>#define LED_PORT0 P0#define LED_PORT1 P1#define LED_PORT2 P2#define LED_PORT3 P3void time(unsigned int ucMs);void main(void){unsigned int ucTimes;unsigned int temp;#define DELAY_TIME 200while(1) {LED_PORT0=0xff;LED_PORT1=0xff;LED_PORT2=0xff;LED_PORT3=0xff;time(DELAY_TIME);//从VD1~VD32 逐次点亮每个LEDfor(ucTimes=0;ucTimes<8;ucTimes++) {LED_PORT0 = LED_PORT0 - (0x80>>ucTimes);time(DELAY_TIME);LED_PORT0=0xff;}for(ucTimes=0;ucTimes<8;ucTimes++) {LED_PORT1 = LED_PORT1 - (0x80>>ucTimes);time(DELAY_TIME);LED_PORT1=0xff;}for(ucTimes=0;ucTimes<8;ucTimes++) {LED_PORT2 = LED_PORT2 - (0x80>>ucTimes);time(DELAY_TIME);LED_PORT2=0xff;}for(ucTimes=0;ucTimes<8;ucTimes++) {LED_PORT3 = LED_PORT3 - (0x80>>ucTimes);time(DELAY_TIME);LED_PORT3=0xff;}//点亮VD32,200ms后再点亮VD31……最后点亮VD1,直到全部灯被点亮。
IO口输入、输出实验
实验一I/O口输入、输出实验2010.04.20一、实验目的:了解LED二极管的工作原理。
掌握LED二极管亮灭左右移的编程方法。
二、实验原理:八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮。
我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。
表1三、实验电路原理图四、程序框图实验程序:START: MOV ACC,#0FEH ;ACC中先装入LED1亮的数据(二进制的11111110)MOV P1,ACC ;将ACC的数据送P1口MOV R0,#7LOOP1: RL A ;将ACC中的数据左移一位MOV P1,A ;把ACC左移后的数据送p1口显示ACALL DELAY ;调用延时子程序DJNZ R0,LOOP1 ;没有移动够7次继续移动MOV R1,#7LOOP2: RR A ;将ACC中的数据右移一位MOV P1,A ;把ACC右移后的数据送p1口显示ACALL DELAYDJNZ R1,LOOP2AJMP START ;移动完7次后跳到开始重来,以达到循环流动效果;----- 延时子程序 -----DELAY: MOV R2,#255D1: MOV R3,#255DJNZ R3,$DJNZ R2,D1RET ;延时子程序结束,返回到调用处的下一句END ;程序结束实验现象:实验实现了单一灯的左移右移。
开始时P1.0口的LED点亮,然后P1.1→P1.2→P1.3→┅→P1.7的LED依次点亮,实现了右移。
当P1.7的LED点亮后,P1.6→P1.5→P1.4→┅→P1.0口的LED又依次点亮,实现了左移。
然后循环,从而实现灯的循环左右移。
实验结论:通过单片机对P1口赋值,然后利用移位RL和RR指令使相应的LED点亮,可以实现灯的左右移。
