汇编语言1s流水灯实验
流水灯的实验原理及步骤
流水灯的实验原理及步骤流水灯(也称为跑马灯)是一种由多个LED灯组成的电子显示器件,常常被用于电子实验、电子产品展示等场合中。
流水灯可以通过变化发光的方式来传递信息或者装饰环境,具有简单、实用、灵活的特点。
下面将详细介绍流水灯的实验原理及步骤。
实验原理:流水灯的实现原理是通过控制每个LED灯的点亮与熄灭来形成一种连续而有序的动画效果,使得LED灯看起来像是在“流水”一样运动。
一般来说,流水灯采用的是LED的时分多路复用技术,即通过定时器控制每个LED点亮和熄灭的时刻,使得它们按照一定的顺序依次发光。
实验步骤:1. 准备材料:LED灯(数量根据需要决定)、电阻(限流电阻,选择合适的阻值)、电路板、导线、面包板或焊接工具等。
2. 连接电路:根据所需的LED数量,设计电路图,按照图上的连线方式将LED 连接到电路板上,注意保持连线的正确性。
3. 添加电阻:根据LED的工作电压和电流需求,计算每个LED对应的限流电阻的阻值,将电阻依次与LED进行串联连接。
4. 供电测试:将电路板连接到电源上,确认电源电压是否符合LED的工作电压要求。
注意检查整个电路的连线是否正确,电阻是否接在了正确位置。
5. 编写程序:使用单片机或其他控制芯片来控制LED的点亮和熄灭。
根据所采用的开发平台和编程语言,编写相应的代码,控制每个LED的状态和时间间隔。
6. 调试程序:将编写好的程序下载到控制芯片中,并连接到电路板上。
通过电脑或其他输入设备控制程序运行,观察LED的点亮和熄灭效果。
根据需要调整程序中每个LED的点亮时间和顺序,使得LED灯看起来像是在流水一样运动。
7. 完善电路:根据实际需求,可以设计并添加其他功能模块,如按键控制、调节亮度等。
总结:流水灯实验是一种常见的电子实验,通过控制LED灯的点亮和熄灭来形成一种连续的流动效果。
实验的原理是利用LED的时分多路复用技术和控制芯片的编程来实现。
实验步骤包括准备材料、连接电路、添加限流电阻、供电测试、编写程序、调试程序和完善电路等。
arm实验报告——流水灯
实验六 ARM环境下汇编语言与C语言实验一、实验目的1 掌握基本的ARM汇编语言和C语言编程方法2 掌握ADS下C语言和汇编语言互相调用的方法3 深入理解ARM开发环境的体系结构4 初步掌握S3C2410的I/O口德操作方法5 巩固使用AXD和Multi-ICE调试的方法二、实验内容1 单独使用ARM汇编语言编写一个程序,在AXD下调试,观察结果。
2 采用内嵌汇编和C完成一个工程在AXD下调试,观察结果。
3 用C语言实现跑马灯功能。
三、实验设备1 硬件:DM2410B+实验系统PC机JTAG仿真器串口线2 软件:PC机操作系统ARM Developer Suiter v1.2Multi-ICE v2.2.5(Build1319)DNW2410(或超级终端)四、实验说明汇编语言程序实验程序程序代码如下:#include <string.h>#include "2410addr.h"#include "2410lib.h"//================================ //名称:Led_Test//功能:LED循环显示//参数: void//返回值: void//================================ void Led_Test(){unsigned long LED;Uart_Printf("Led_Test.\n");//GPBCON GPB10 [21:20] = 01 : Output//GPBCON GPB10 [19:18] = 01 : Output//GPBCON GPB10 [17:16] = 01 : Output//GPBCON GPB10 [15:14] = 01 : OutputrGPBCON &= (~(0x3<<20));rGPBCON |= ((0x1<<20));rGPBCON &= (~(0x3<<18));rGPBCON |= ((0x1<<18));rGPBCON &= (~(0x3<<16));rGPBCON |= ((0x1<<16));rGPBCON &= (~(0x3<<14));rGPBCON |= ((0x1<<14));//GPBDAT GPB[10:0] [10:0] : Output DatarGPBDAT = 0xf7f;Delay(100);Uart_Printf("PRESS ANY KEY TO STOP.");while (!Uart_GetKey()){LED = rGPBDAT;LED = (LED<<1); //下一个灯亮rGPBDAT = LED;Delay(200);if(!(rGPBDAT & 0x400)) //保证第四个LED点亮后重新点亮第一个LED;rGPBDAT=0xf7f;Delay(200);}Uart_Printf("\nTEST FINISHED.");}//============================//名称:delay//功能:延迟指定时间//参数: x//返回值: void//============================void delay(unsigned int x){unsigned int i,j,k;for(i=0;i<=x;i++)for(j=0;j<0xff;j++)for(k=0;k<0xff;k++);}六实验步骤第一大部分(目标机的连接):把开发板电源接口、Muilti-ICE Embeded接口连接好,如下图,然后打开开发板电源。
流水灯实验报告
流水灯实验报告课程名称:LED流水灯实验报告学院:xxxxx学院专业:姓名:学号:年级:任课教师:【正文】一、实验的背景和意义单片机全称叫单片微型计算机,是一种集成在电路芯片,是采用大规模集成电路技术把CPU随机存储器RAM、只读存储器ROM、多种输入输出口、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的应用。
大致可以分为以下几个范畴: 1、在智能仪器仪表上的应用,例如精确的测量设备;2、在工业控制中的应用,例如用单片机可以构成形式多样的控制系统,与计算机互联网构成二级控制系统等;3、在家用电器中的应用,可以从手机、电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话、集群移动通信、无线电话对讲机等;4、在医用设备中的应用,例如医用呼叫机、各种分析仪、超声诊断设备及病床呼叫系统等等;5在各种大型电器中的模块化作用,如音乐集成单片机,看是简单的功能,微缩在电子芯片中,就需要复杂的类似于计算机的原理。
本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发计算器设计做了详细的分析和研究。
本系统就是充分利用了8051芯片的I/O引脚。
系统已采用MCS—51系列单片机为中心器件来设计LED流水灯系统,实现LED左循环显示,并实现循环的速度可调。
二、设计目的1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2.掌握汇编语言程序和C 语言程序设计方法。
3.培养实践技能,提高分析和解决实际问题的能力。
三、设计任务及要求 1.用个发光二极管作为显示电路 2.实现LED 动态显示 3.能连续循环显示 四、 设计思路LEDLED如果要让接在P1.0口的LED1亮起来,相反,如果要让接在P1.0口的LED1熄灭,那么只需要把P1.0口的电平变为高电平就可以了;同理,接在P1.1—P1.7口的其他7个LED 的点亮的熄灭的方法同LED1。
流水灯实验原理
流水灯实验原理
流水灯实验是一种常见的电子原型实验,其原理是利用计时器和移位寄存器来控制一组LED灯的亮灭状态,实现灯光顺序
循环变化的效果。
在流水灯实验中,LED灯的亮灭状态是由移位寄存器控制的。
移位寄存器是一个存储二进制数据的器件,它具有将数据从一个位置移动到另一个位置的功能。
通过这种移位操作,可以实现LED灯的顺序变化。
将多个LED灯连接到移位寄存器的输出引脚上,然后将计时
器的时钟信号连接到移位寄存器的时钟输入引脚上。
计时器的时钟信号用于触发移位寄存器的移位操作。
当计时器的时钟信号输入时,移位寄存器会将存储在其中的数据向移位方向移动一位。
移动之后,每个LED灯的状态就发
生了变化,从而实现了灯光顺序的循环变化。
为了控制LED灯的亮灭状态,可以使用二进制计数器作为移
位寄存器的输入。
二进制计数器的输出可以连接到LED灯的
输入引脚上,根据计数器的计数值决定LED灯的亮灭状态。
通过调节计时器的时钟频率和移位寄存器的移位方式,可以实现不同的流水灯效果。
例如,可以设置较快的时钟频率和循环移位的方式,使LED灯的亮灭状态快速顺序变化;或者设置
较慢的时钟频率和单向移位的方式,使LED灯的亮灭状态缓
慢顺序变化。
通过流水灯实验,可以更好地理解计时器、移位寄存器和LED灯的工作原理,同时也能够培养学生的实验操作能力和创新思维。
可控流水灯设计(单片机课程设计报告)汇编语言编写
单片机课程设计报告题目:可控流水灯摘要单片机是一种集成电路芯片,采用超大规模技术,把具有数据处理能力的微处理器、随机存取数据存储器、只读程序存储器、输入输出电路、可能还包括定时计数器、串口通信口、显示驱动电路,脉宽调制电路、模拟多路转换器及A/D转换器等电路集成到一块芯片上,构成一个最小而完善的计算机系统。
这些电路在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。
对可控流水灯设计通过编写代码实现8个LED灯5种流水灯显示方式。
在设计中主要采用80C51这款芯片作为控制主体,用发光二极管来作为显示灯,用按钮来切换流水灯的发光方式同时外接一个七段显示发光二极管来显示流水灯的发光模式。
系统通过P2口外接8个发光二极管,P1口接3个按键,一个按键进行方式选择,数码管显示方式编号;用两个键来控制流水灯流动的速度。
数码管接在80C51的P0口上,而流水灯的放光二极管经过排阻接在P2口上。
设计中辅以简单的设备和必要的电路,设计了一款流水灯,最终达到预期的目的。
关键词单片机80C51发光二极管流水灯目次1 引言 (1)2 课题综述 (1)2.1课题来源与意义 (1)2.2面临的问题 (1)3 系统设计 (1)3.1总体设计 (1)3.2模块设计 (2)3.3硬件设计 (5)4 代码编写 (6)5 系统调试 (7)6 系统运行结果与分析 (8)结论 (9)致谢 (10)参考文献 (11)附录 (12)1 引言单片机控制系统能够取代以前利用复杂电子线路或者数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。
现在的单片机的控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。
2 课题综述2.1课题来源与意义随着经济的发展、科技的突飞猛进,芯片业得到了迅速的发展,是单片机技术在各种民用和工业控制等领域得到更广泛的应用。
单片机凭借其低成本、高性能的不可代替优势已经成为了微电脑控制的主力军。
流水灯实验报告
流水灯实验报告流水灯实验报告引言:流水灯是一种常见的电子实验,通过控制电路中的LED灯的亮灭顺序,形成灯光在一组LED灯之间流动的效果。
本文将介绍流水灯实验的背景、实验目的、实验步骤、实验结果和实验总结。
一、实验背景:流水灯是电子电路实验中的经典实验之一,它通过控制LED灯的亮灭顺序,展示了数字电路中的时序控制技术。
流水灯实验不仅能够培养学生的动手能力,还能够加深对数字电路原理的理解。
二、实验目的:1. 学习和掌握流水灯电路的基本原理;2. 熟悉数字电路中的时序控制技术;3. 提高实验操作和电路调试能力。
三、实验器材和元器件:1. Arduino开发板;2. 电阻、电容等基本元器件;3. LED灯。
四、实验步骤:1. 搭建电路:将Arduino开发板与电阻、电容和LED灯连接起来,按照流水灯电路的原理图进行连接。
2. 编写程序:使用Arduino开发环境,编写控制LED灯流动的程序。
程序中需要设置LED灯的亮灭时间和顺序。
3. 上传程序:将编写好的程序上传到Arduino开发板中。
4. 调试电路:通过观察LED灯的亮灭情况,检查电路连接是否正确。
如有问题,及时调整电路连接。
5. 运行实验:将Arduino开发板上电,观察LED灯按照预设的顺序流动。
五、实验结果:经过实验,LED灯按照预设的顺序流动,形成了流水灯的效果。
LED灯的亮灭时间和顺序可以根据程序的编写进行调整。
实验结果符合预期,实验成功。
六、实验总结:通过本次流水灯实验,我深入了解了数字电路中的时序控制技术,并通过实际操作提高了自己的动手能力和电路调试能力。
流水灯实验是一种理论联系实际的有效方式,通过实验可以更好地理解数字电路的原理和工作方式。
在实验过程中,我遇到了一些困难,例如电路连接错误、程序编写有误等。
但通过仔细检查和调试,最终解决了这些问题。
这个过程让我学会了耐心和细致,也增强了我的问题解决能力。
总之,流水灯实验是一种基础且有趣的电子实验,通过实验可以深入理解数字电路中的时序控制技术。
实验1_流水灯实验
实验1 流水灯实验一、实验目的1) 简单I/O 引脚的输出2) 掌握软件延时编程方法 3) 简单按键输入捕获判断 二、实验实现的功能1) 开机是点亮全部12个发光二极管,闪烁三下;2) 按下不同的按键12个发光二级管按照不同的方式显示。
具体显示规则如下:1) 1号键按下,按照顺时针循环依次点亮发光二极管; 2) 2号键按下,按照逆时针循环依次点亮发光二极管;3) 3号键按下,按照顺时针间隔1个依次点亮发光二极管; 4) 4号键按下,按照逆时针间隔1个依次点亮发光二极管; 5) 5号键按下,按照顺时针间隔2个依次点亮发光二极管; 6) 6号键按下,按照逆时针间隔2个依次点亮发光二极管;三、系统硬件设计 1、系统原理框图2、系统硬件原理图D 1D 2D 3R N 11k123456789101112242322212019181716151413D 4D 5D 6D 7D 8D 9D 10D 11D 12P 22P 21P 20P 26P 25P 24P 23P 06P 05P 04P 27P 07V C CR 21kR 31kP 36S W 1S W 2S W 3S W 4S W 5S W 6P 32P 33P 37P 34R 1710k R 1810k R 1910kV C C80C51时钟部分电源与复位部分12个发光二极管键盘系统四、系统软件设计本次实验的主要部分是:确定发光二级管点亮规律和检测按键的动作。
其中发光二级管点亮规律通过给定的数组来确定,而检测按键,采用查询方式实现,详细程序如下:#include<stc10.h>#define uint unsigned int #define uchar unsigned char bit flag1=0; uchar f1,f=0; void main() {void Delay1ms(uint ms);uchar key(uchar f);uchar led[12]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xef,0xdf,0xb f,0x7f}; //表示各发光二级管 uchar key_value[6]={0,1,2,3,4,5}; uint num[6]={0,0,0,0,0,0};char type[6]={1,-1,2,-2,3,-3}; //分别表示顺时针、逆时针、间隔一个正逆时针、间隔两个正逆时针 uchar i;P2=0xff; //关闭D1——D8 P0=P0|0xf0; //关闭D9——D12Delay1ms(100); //延时方便清晰看到LED 闪烁现象 for(i=0;i<3;i++) //亮灭3次,中间间隔若干时间 { P2=0;//点亮D1——D8U 1S T C 10F 08XP S E N29A L E 30V C C 40E A 31X 119X 218R S T 9P 0.0/A D 039P 0.1/A D 138P 0.2/A D 237P 0.3/A D 336P 0.4/A D 435P 0.5/A D 534P 0.6/A D 633P 0.7/A D 732P 1.0/T 21P 1.1/T 2E X 2P 1.2/E C I 3P 1.3/C E X 04P 1.4/C E X 15P 1.5/C E X 26P 1.6/C E X 37P 1.7/C E X 48P 2.0/A 821P 2.1/A 922P 2.2/A 1023P 2.3/A 1124P 2.4/A 1225P 2.5/A 1326P 2.6/A 1427P 2.7/A 1528P 3.0/R X D 10P 3.1/T X D 11P 3.2/IN T 012P 3.3/IN T 113P 3.4/T 014P 3.5/T 115P 3.6/W R 16P 3.7/R D17C 330pC 430p X 111.0592MX 1X 2R 151kR 2010k单片机最小系统部分C 110u FD 13C 2104V C CV C CV C CC 510u FC M A XJ1C O N 28C12345678910111213141920212223242526272815161718P 02P 01P 00P 06P 05P 04P 03P 07P 23P 22P 21P 20P 27P 26P 25P 24D 5D 6D 7D 8D 1D 2D 3D 4W 1D 9W 4W 3W 2D 12D 11D 10P 23P 22P 21P 20P 25P 24P 31P 30P 27P 26P 35P 34P 33P 32P 37P 36P 03P 02P 01P 00P 07P 06P 05P 04P 13P 12P 11P 10P 15P 14X 2X 1P 17P 16P 11P 10R S T P 15P 14P 13P 12P 17P 16P 35P 34P 33P 32H 1H 2P 37P 36L 1L 2L 3EFG D P CBADV C CJ6C O N 40A 12345678910111213141516171819202122232425262728293031323334353637383940S W 8R S TP0=P0&0x0f; //点亮D9——D12Delay1ms(500); //延时P2=0xff; //关闭D1——D8P0=P0|0xf0; //关闭D9——D12Delay1ms(500); //延时}while(1){f1=key(f); //传递键值if((f1!=f)||(flag1))//判断是否有键按下,不管两次按键的键值是否相等,只要有键按下,都从D0重新开始循环{f=f1; //交换新键值num[f]=0; //从D0开始循环flag1=0; //标志位清零}if(num[f]%12<8) //先依次亮前8个{P2=led[num[f]%12];P0=P0|0xf0; //关闭D9——D12}else //再依次亮后4个{P0|=0xf0;P0&=led[num[f]%12];P2=0xff; //关闭D1——D8}Delay1ms(100);//num[f]=num[f]+type[f]; //点亮type[f]所对应模式的下一个LEDswitch(num[f]) //保证循环连续一致{case 65535:num[f]=65531;break;case 65534:num[f]=65532;break;case 65533:num[f]=65529;break;default: break;}}}void Delay1ms(uint ms) //@11.0592MHz {uchar i,j;uint k;for(k=0;k<ms;k++){i = 11;j = 190;do{while (--j);} while (--i);}}uchar key(uchar s) //按键扫描子函数{uchar flag=s;uchar k,i,p3;flag1=0;k=0x7f; //行扫描初值for(i=0;i<2;i++) //扫描行{P3=k;Delay1ms(5);p3=P3; //判断哪一列的键按下switch(p3&0x1c){case 0x18: flag=i*3;flag1=1;break;case 0x14: flag=i*3+1;flag1=1;break;case 0x0c: flag=i*3+2;flag1=1;break;default: break;}if(flag1)break;else k=k>>1|0x80;}return flag;}五、实验过程中遇到的问题及解决方法1.由于这个实验是第一个实验因此遇到了不少的问题。
单片机实验报告一--汇编程序之流水灯
MOV TH1,#0B0H;设置定时初值
CLR TF1;清除TF1标志
SETB TR1;定时器1开始计时
RET
END
五、实验现象
形成了1S间隔的八位流水灯。
三、电路原理图
四、程序源代码
ORG 0000H
SJMP START
ORG 0030H
START:
JB P2.0,$ ;阻塞等待启动按钮按下
ACALL TIMER1INIT
MOV A, #0FEH
MOV R7,#08H
MOV R6,OV P1,A
NEXT:
JNB TF1,$ ;阻塞,查询方式等待定时50ms时间
MOV TL1,#3CH;设置定时初值
MOV TH1,#0B0H;设置定时初值
CLR TF1
;SETB TR1
DJNZ R6,NEXT
RL A
MOV R6,#20
DJNZ R7,loop
MOV R7,#08H
SJMP loop
TIMER1INIT:;50毫秒@12.000MHz
MOV TMOD,#10H;设置定时器1的模式
《单片机实验》实验报告
实验序号:2实验项目名称:汇编程序实现流水灯
学 号
27
姓 名
李泽
班级
电子信息1005
实验地点
综合楼
指导教师
刘剑
实验时间
一、实验目的及要求
要求用汇编指令实现八位流水灯,并在Proteus仿真环境下演示实验效果
二、实验设备(环境)及要求
PC机一台、Keil uVision4编译软件、Proteus仿真平台
流水灯实验报告
流水灯实验报告课程名称:LED流水灯实验报告学院:xxxxx学院专业:姓名:学号:年级:任课教师:【正文】一、实验的背景和意义单片机全称叫单片微型计算机,是一种集成在电路芯片,是采用大规模集成电路技术把CPU随机存储器RAM、只读存储器ROM、多种输入输出口、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的应用。
大致可以分为以下几个范畴: 1、在智能仪器仪表上的应用,例如精确的测量设备;2、在工业控制中的应用,例如用单片机可以构成形式多样的控制系统,与计算机互联网构成二级控制系统等;3、在家用电器中的应用,可以从手机、电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话、集群移动通信、无线电话对讲机等;4、在医用设备中的应用,例如医用呼叫机、各种分析仪、超声诊断设备及病床呼叫系统等等;5在各种大型电器中的模块化作用,如音乐集成单片机,看是简单的功能,微缩在电子芯片中,就需要复杂的类似于计算机的原理。
本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发计算器设计做了详细的分析和研究。
本系统就是充分利用了8051芯片的I/O引脚。
系统已采用MCS—51系列单片机为中心器件来设计LED流水灯系统,实现LED左循环显示,并实现循环的速度可调。
二、设计目的1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2.掌握汇编语言程序和C 语言程序设计方法。
3.培养实践技能,提高分析和解决实际问题的能力。
三、设计任务及要求 1.用个发光二极管作为显示电路 2.实现LED 动态显示 3.能连续循环显示 四、 设计思路LEDLED如果要让接在P1.0口的LED1亮起来,相反,如果要让接在P1.0口的LED1熄灭,那么只需要把P1.0口的电平变为高电平就可以了;同理,接在P1.1—P1.7口的其他7个LED 的点亮的熄灭的方法同LED1。
PLC指令编程:流水灯测试
PLC指令编程:流水灯测试看到很多的流水灯,都是按下开关,几个灯轮着点亮,再轮着熄灭,或者是间接点亮,错乱的熄灭,方式迥异,但程序设计的思路是一样的。
【控制要求】按下开关,a,b,c,d灯同时点亮,延时2s,再按着d,c,b,a的顺序依次熄灭且每次熄灭保持1s。
开关信号若一直保持,流水灯就会循环运行;若只有一次开关信号,流水就只会运行一次。
【动作分析】按下开关,就是一个等待输入信号;延时2s,采用延时等待指令,等待2s;a,b,c,d灯同时点亮,就是触发输出端为通状态,a,b,c,d为4个输出端,可选用Y0,Y1,Y2,Y3分别代表a,b,c,d灯;接着就是d,c,b,a的顺序依次熄灭且每次熄灭保持1s,这里每个灯熄灭,用到了两条指令,先是用触发输出,触发Y端为断状态,就是熄灭的状态,再用延时等待指令,等待1s,这样就是一个灯熄灭1s。
【控制流程图】按照动作分析,每一个动作就是一个指令,每个指令用流程图的方式连接起来。
【修改别名】在软件别名处,对动作需要用到的端口进行别名修改:输入端别名修改:X0:按键开关。
输出端别名修改:Y0 :a灯、Y1:b灯、Y2:c灯、Y3:d灯。
【程序编辑】根据流程图编程,按下开关,添加“等待输入”指令;a,b,c,d灯同时点亮实际是4条触发输出指令,在编辑程序的时候就要分别列开。
在编程软件JS_PRGMR中,可以一条指令触发多个输出端口。
【程序调试】当所有的程序编辑完成之后,我们就可以将程序通过串口下发至PLC 中,程序调试有几种方式。
1 、可以在编程软件上进行程序调试,在菜单栏中的调试框中,打开“ 在线调试环” ,选择下发程序的端口,即可在线调试。
2、可在触摸屏软件上实现在线模拟,进行程序调试。
流水灯[汇编程序]
4.1 流水灯程序介绍:利用P1 口通过一定延时轮流产生低电平输出,以达到发光二极管轮流亮的效果。
实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。
程序实例(LAMP.ASM)ORG 0000HAJMP MAINORG 0030HMAIN:9MOV A,#00HMOV P1,A ;灭所有的灯MOV A,#11111110BMAIN1:MOV P1,A ;开最左边的灯ACALL DELAY ;延时RL A ;将开的灯向右边移AJMP MAIN ;循环DELAY:MOV 30H,#0FFHD1: MOV 31H,#0FFHD2: DJNZ 31H,D2DJNZ 30H,D1RETEND4.2 方波输出程序介绍:P1.0 口输出高电平,延时后再输出低电平,循环输出产生方波。
实际应用中例如:波形发生器。
程序实例(FAN.ASM):ORG 0000HMAIN:;直接利用P1.0口产生高低电平地形成方波////////////// ACALL DELAYSETB P1.0ACALL DELAY10CLR P1.0AJMP MAIN;////////////////////////////////////////////////// DELAY:MOV R1,#0FFHDJNZ R1,$RETEND五、定时器功能实例5.1 定时1秒报警程序介绍:定时器1每隔1秒钟将p1.o的输出状态改变1 次,以达到定时报警的目的。
实际应用例如:定时报警器。
程序实例(DIN1.ASM):ORG 0000HAJMP MAINORG 000BHAJMP DIN0 ;定时器0入口MAIN:TFLA G EQU 34H ;时间秒标志,判是否到50个0.2秒,即50*0.2=1秒MOV TMOD,#00000001B;定时器0工作于方式1MOV TL0,#0AFHMOV TH0,#3CH ;设定时时间为0.05秒,定时20次则一秒11SETB EA ;开总中断SETB ET0 ;开定时器0中断允许SETB TR0 ;开定时0运行SETB P1.0LOOP: AJMP LOOPDIN0:;是否到一秒//////////////////////////////////////// INCC: INC TFLAGMOV A,TFLAGCJNE A,#20,REMOV TFLAG,#00HCPL P1.0;////////////////////////////////////////////////// RE:MOV TL0,#0AFHMOV TH0,#3CH ;设定时时间为0.05秒,定时20次则一秒RETIEND5.2 频率输出公式介绍:f=1/ts51 使用12M晶振,一个周期是1微秒使用定时器1工作于方式0,最大值为65535,以产生200HZ的频率为例:200=1/t:推出t=0.005 秒,即5000 微秒,即一个高电12平或低电平的时间为2500 微秒。
实验一 软件仿真工具应用及流水灯程序设计
实验一软件仿真工具应用及流水灯程序设计一、实验目的熟悉并掌握μVision4.0仿真软件以及proteus的基本使用方法,并据已知电路和设计要求编写、编译、仿真运行程序。
二、实验内容1、熟悉掌握软件仿真工具的基本使用方法(包括仿真平台的设置、源代码输入、编译和调试方法)以及proteus的基本使用方法;2、用汇编语言设计流水灯程序,采用软件延时的方法,灯闪烁1s左右。
3、改变8个LED显示方式,让其反复显示00-29的BCD码(读表方式),每次显示2s左右。
三、实验原理单片机芯片:LED灯电路部分如图所示:8个LED发光二极管阳极的接法相同,都经过排阻后连接在一起,为公共端,接电源。
阴极连接到单片机的P2接口,那么8个LED发光二极管变化只随P2接口状态变化而变化,给P2接口不同数据,显示8个LED发光二极管的不同状态。
四、实验方法与步骤实验方法:在μVision4.0软件仿真平台、针对电路图设计实验要求的程序,编译运行程序,并在proteus平台检验、比照试验结果。
实验步骤:μVision4.0仿真软件的使用:1、按照电路图上的MCU芯片设置μVision4.0平台。
操作是点击Keil uVision4,单击主菜单的“project”的“new project”选项,选择工程保存路径(假设保存在“LED”文件夹中),输入工程名“LED”;在弹出的对话框里选择Atmel的80C51,单击“确定”;2、单击主菜单的“File”的“New”选项,在编辑窗口里编写源代码,代码见附录1。
编写结束后,单击单击主菜单的“File”的“Save”选项,输入要保存的文件名,以及扩展名(用C51语言编写则扩展名为“.c”,用汇编语言扩展名为.asm,这里保存为led.asm);3、回到编辑界面,单击“Target1”前面的“+”号,在“Source Group1”选项上右击,选择“Add Files to Group’ Source Group1”,选择“led.c”,单击“Add”,然后单击“Close”;4、单击左边“Project”窗口的“Target1”,然后选择菜单“Project /Option for Target ’Target1’,选择“Output”,勾选”Creat HEX File”,点击“确定”;5、编译连接与调试。
实验一 流水灯实验
实验一流水灯实验1. 实验目的1.1 掌握单片机基础操作1.2 熟悉单片机的I/O口的使用1.3 学会使用循环语句、延时函数等基础函数2. 实验原理在该实验中,通过单片机控制多个LED灯依次点亮、熄灭,形成一个类似“流水”的效果。
在AT89S52单片机中,I/O口具有输出功能,即可以将I/O口的电平控制为高电平或低电平。
通过控制不同的I/O口电平,可以控制不同的LED灯的点亮、熄灭状态。
而I/O口的状态变化可以使用循环语句、延时函数等来控制,从而实现流水灯的效果。
3. 实验步骤3.1 硬件准备3.1.1 准备硬件:AT89S52单片机1块、LED灯5个、面包板1块、跳线若干。
3.1.2 连接电路:将AT89S52单片机引脚P0.0~P0.4连接到5个LED灯的阳极,将LED 灯的阴极连接到地,可以使用面包板和跳线完成电路连接。
3.2 编写程序流水灯实验程序如下:#include<reg52.h> //包含单片机寄存器的头文件sbit led1=P0^0; //定义led1~led5分别对应P0口的0~4引脚sbit led2=P0^1;sbit led3=P0^2;sbit led4=P0^3;sbit led5=P0^4;led1=0; //熄灭led1led2=1; //点亮led2led3=0; //熄灭led3led4=0; //熄灭led4led5=0; //熄灭led5delay(50000); //延时一段时间4. 实验结果将实验板连接电源并启动,运行程序后,可以看到LED灯依次点亮、熄灭,形成流水灯效果。
5. 实验思考题5.1 如何改变流水灯的速度?可以通过延时函数的参数设置来改变流水灯的速度,延时时间越短,LED灯的闪烁速度越快。
可以通过改变程序中LED灯点亮和熄灭的顺序和时间,实现不同的流水灯效果,比如5个LED灯两两同时点亮、相邻的LED灯同时点亮等效果。
实验一 花样流水灯
实验报告一实验名称:花样流水灯实验目的:熟悉MCU组装及STC ISP和keil软件的使用;学习子程序的编写和使用。
实验原理:P1口相当于真正的双向口,输入时需先将口置1,每根口线可以独立输入或输出。
本实验延时子程序采用指令循环来实现系统板上硬件连线把“单片机系统”区域中的P2.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。
实验现象:每盏流水灯每隔0.1S自下往上,后又自上往下循环点亮流动. 实验原理图如下:流程图如下所示:程序如下:;-------------------------------------------------------; 流水灯(8个发光二极管循环点亮); 功能:流水灯(8个发光二极管循环以1S间隔点亮);------------------------------------------------------- ORG 0000H ;伪指令,指定程序从0000H开始存放LJMP MAIN ;跳转指令,程序跳转至MAIN处执行ORG 0030H ;伪指令,指定程序从0030H开始存放MAIN: MOV SP, #60H ;给堆栈指针赋初值LIGHT: MOV R4,#08 ;设置循环次数MOV A,#0FEH ;给A赋初值LOOP: RR A ;将A的值右移一位MOV P1,A ;将A的值赋给P1口LCALL DEL1S ;调用1S延时子程序DJNZ R4,LOOP;判断R4是否为0,不为0跳转,为0顺序执行 LJMP LIGHT ;跳转指令,跳转至LIGHT处继续执行;1S延时子程序(11.0592MHz,误差0)DEL1S: MOV R5, #089HDL1S0: MOV R6, #0A4HDL1S1: MOV R7, #013HDJNZ R7, $DJNZ R6, DL1S1DJNZ R5, DL1S0RETEND ;程序结束指令。
单片机学习编程之流水灯篇OK
第一章单片机的基础学习第一个实验 LED发光二极管的左移右移(D1到D8依次)点亮二极管点亮的原理图如下。
实际上是接在P1口。
原理图说明:发光二极管阴极接单片机,让电流流入单片机,因为单片机输出电流小,点不亮发光二极管。
发光二极管点亮电流为5 mA至20mA。
编程说明:(1)做一个LED的左移右移,有硬件电路可知,输出“0”才能使LED亮。
开始时P1.0亮,——P1.1亮——P1.2亮….——P1.7亮——P1.0亮,重复循环点亮LED。
(2)延时时间的设计:石英晶体为12MHz,1个机器周期为1微秒,采用单片机每走一步指令需要的时间来延时。
✧延时时间子程序(10.002毫秒)Delay: MOV R4,#20 ;2个机器周期,2微秒D1: MOV R5,#248 ;2个机器周期,2微秒DJNZ R5,$ ;2个机器周期,2*248微秒DJNZ R4,D1 ;2个机器周期,2*20微秒RET这个延时子程序:20*(498+2)+2=10002个机器周期=10.002毫秒。
✧延时时间子程序(200毫秒)Delay: MOV R3,#20 ; 200微秒D1:MOV R4,#20 ;10微秒D2: MOV R5,#248DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RET(3)汇编程序源代码注意:向电脑上编辑程序时注意标点符号要在英文的格式下输入。
ORG 00HMAIN: MOV A,#0FFHCLR CMOV R2,#08H;左移点亮发光二极管LOOP: RLC A ;带进位左移一位MOV P1,A;点亮LED发光二极管CALL DELAY;调用延时子程序DJNZ R2,LOOP;左移、轮流点亮发;光二极管;左移点亮发光二极管后,再右移点亮发光二极管MOV R2,#07HLOOP1: RRC A ;带进位右移一位MOV P1,A;点亮LED发光二极管CALL DELAY;调用延时子程序DJNZ R2,LOOP1JMP MAIN; 返回到初始位置;设置延时时间DELAY: MOV R3,#20D1: MOV R4,#20D2: MOV R5,#248DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RETEND(4)C程序源代码#include <reg51.h>void Delay()//延时子程序{ int i,j;for(i=0;i<=255;i++)for(j=0;j<=255;j++);}void main(){unsigned int i;unsigned int temp;P1=0xff;while(1){temp=0x01;for(i=0;i<8;i++){P1=~temp;逐位取反Delay();temp=temp<<1;}}}(4)实验结果图(注意学习板上的JJ_P1连接器连上)第二个实验采用定时器来设置延时时间(方式0)说明:(1)开始时p1.0亮,延时0.2秒后左移至p1.1亮,如此左移7次后至,再延时0.2秒右移至p1.6亮,如此右移7次后至p1.0亮;(2)延时时间0.2秒,使用定时器0在方式0下工作;采用查询的方式(3)程序源代码ORG 00HMOV TMOD,#00H /***设置定时器的工作方式***/START: CLR CMOV A,#0FFHMOV R2,#08 /***设置循环次数***/LOOP: RLC A /***带进位左循环累加器,点亮发光二极管***/ MOV P1,A /***设置定时器定时时间***/MOV R3,#100CALL DELAYDJNZ R2,LOOP /***点亮了八个发光二极管吗,没有继续***/MOV R2,#07LOOP1: RRC AMOV P2,AMOV R3,#100CALL DELAYDJNZ R2,LOOP1JMP START/***通过单片机内部的定时器设置定时时间***/DELAY: SETB TR0 /***启动定时器***/AGAIN: MOV TL0,#(8192-2000) MOD 32MOV TH0,#(8192-2000) / 32LOOP2: JBC TF0,LOOP3 ;通过查询的方式来判断时间定时器的计时JMP LOOP2LOOP3: DJNZ R3,AGAINCLR TR0RET;非中断END(4)实验结果图第三个实验采用定时器来设置延时时间(方式1)(1)开始时p1.0亮,延时0.2秒后左移至p2.1亮,如此左移7次后至,再延时0.2秒右移至p1.7亮,如此右移7次后至p1.0亮;(2)延时时间0.2秒,使用定时器0在方式1下工作;采用查询的方式(3)源程序代码ORG 00HMOV TMOD,#01HSTART: CLR CMOV A,#0FFHMOV R2,#08LOOP: RLC AMOV P1,AMOV R3,#20CALL DELAYDJNZ R2,LOOPMOV R2,#07LOOP1: RRC AMOV P1,AMOV R3,#20CALL DELAYDJNZ R2,LOOP1JMP STARTDELAY: SETB TR0AGAIN: MOV TL0,#0F0HMOV TH0,#0D8HLOOP2: JBC TF0,LOOP3JMP LOOP2LOOP3: DJNZ R3,AGAINCLR TR0RETEND附录资料:红外发射器的原理图AT89S52下载器的原理图。
流水灯实验报告
流水灯实验报告课程名称:LED流水灯实验报告学院:xxxxx学院专业:姓名:学号:年级:任课教师:【正文】一、实验的背景和意义单片机全称叫单片微型计算机,是一种集成在电路芯片,是采用大规模集成电路技术把CPU随机存储器RAM、只读存储器ROM、多种输入输出口、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的应用。
大致可以分为以下几个范畴: 1、在智能仪器仪表上的应用,例如精确的测量设备;2、在工业控制中的应用,例如用单片机可以构成形式多样的控制系统,与计算机互联网构成二级控制系统等;3、在家用电器中的应用,可以从手机、电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话、集群移动通信、无线电话对讲机等;4、在医用设备中的应用,例如医用呼叫机、各种分析仪、超声诊断设备及病床呼叫系统等等;5在各种大型电器中的模块化作用,如音乐集成单片机,看是简单的功能,微缩在电子芯片中,就需要复杂的类似于计算机的原理。
本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发计算器设计做了详细的分析和研究。
本系统就是充分利用了8051芯片的I/O引脚。
系统已采用MCS—51系列单片机为中心器件来设计LED流水灯系统,实现LED左循环显示,并实现循环的速度可调。
二、设计目的1.学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2.掌握汇编语言程序和C 语言程序设计方法。
3.培养实践技能,提高分析和解决实际问题的能力。
三、设计任务及要求 1.用个发光二极管作为显示电路 2.实现LED 动态显示 3.能连续循环显示 四、 设计思路LEDLED如果要让接在P1.0口的LED1亮起来,相反,如果要让接在P1.0口的LED1熄灭,那么只需要把P1.0口的电平变为高电平就可以了;同理,接在P1.1—P1.7口的其他7个LED 的点亮的熄灭的方法同LED1。