跑马灯--动态心形(汇编语言)
爱心跑马灯课程设计
爱心跑马灯课程设计一、课程目标知识目标:1. 学生能理解跑马灯的基本原理,掌握跑马灯电路的搭建方法。
2. 学生能运用所学的物理知识,分析跑马灯电路中的电流、电压和电阻的关系。
3. 学生了解爱心跑马灯的设计理念,将物理知识与实际应用相结合。
技能目标:1. 学生通过动手实践,提高电路搭建和调试的能力。
2. 学生能运用团队协作,共同解决问题,提高沟通与协作能力。
3. 学生通过制作爱心跑马灯,培养创新思维和动手制作的能力。
情感态度价值观目标:1. 学生在课程中培养对物理学科的兴趣,激发学习的积极性。
2. 学生通过爱心跑马灯的制作,体验科技与生活的联系,增强社会责任感。
3. 学生在团队合作中学会关心他人,培养关爱社会的情感。
本课程针对的学生特点为:好奇心强,喜欢动手实践,对物理现象有较高的兴趣。
课程性质为实践性较强的综合实践活动课程。
在教学过程中,要求教师注重引导、启发学生思考,关注学生的个体差异,鼓励学生积极探究、合作交流。
通过本课程的学习,期待学生在知识、技能和情感态度价值观方面取得具体的学习成果,为后续教学设计和评估提供依据。
二、教学内容本课程依据课程目标,结合教材相关章节,组织以下教学内容:1. 跑马灯原理介绍:讲解跑马灯电路的基本工作原理,包括电路组成、电流方向、LED灯的闪烁原理等。
- 相关教材章节:第五章第二节“简单电路的组成与原理”。
2. 电路搭建与调试:指导学生动手搭建跑马灯电路,学会使用万用表进行电路测试和调试。
- 相关教材章节:第五章第三节“电路的搭建与测试”。
3. 电流、电压和电阻的关系:分析跑马灯电路中电流、电压和电阻的变化规律,理解物理量的相互关系。
- 相关教材章节:第四章“电流、电压和电阻”。
4. 爱心跑马灯设计与制作:引导学生运用所学的电路原理,设计并制作具有创意的爱心跑马灯。
- 相关教材章节:第六章“电子制作实践”。
5. 团队合作与展示:学生分组合作,共同完成跑马灯制作,并进行成果展示。
51单片机实用教程入门之跑马灯
MCS-8051 单片机实用教程深圳伟凡数码 QQ:59059381上一节讲了 KEIL 软件的基本使用, 本节开始学习编程,编写第一个程序,如果从没学过的朋友不需要深入了解,只 要按照下面写出第一个程序。
好, 就来试试,很有意思的。
这里主要讲些技巧, 而不是专门的 C 语言,如过想学习更深入 的 C 语言, 请参考相关 C 语言书籍。
前面我们已经讲了怎样建立文件,这里就不多讲了。
按照下面动手写下面程序,当写好后, 我们就可以进行编译了, 点工具栏上的按钮或者 按键盘的功能键 F7 开始编译了,在最下面一个白色窗口显示编译结果, 0 Error(s)表示没有错误,正确的通过编译,0 Warning 表示 0 警告,这里 如果有 1 个或多个警告,并不影响程序的正确编译, 只是表明程序有多余的没有应用的程序。
下面表示程序已经正确的通过了. 如果你的也是这样的, 那就恭喜你成功了。
下面我们就来说说这个程序的基本知识,要记住的, a. 符号// 后面表示注释部分,或者程序的说明部分, 比如上面的程序名称, 日期等 b. /* */ 这个也是表示注释部分. 注意, 注释部分是不被编译的,注释是方便我们更能理解程序 c . #include<stdio.h> 这个表示头文件,表示我们要用到的函数或者定义,由#include<头文件名> 组成,编写规则头文件MCS-8051 单片机实用教程存深圳伟凡数码 QQ:59059382后面不能 有分号" ; ". #include<reg51.h> 也是头文件, 这是我们 51 单片机的头文件, 定义了单片机的特殊功能寄器的定义,我们可以打开头文件查看, 方法是: 将鼠标移动到文件名上, 点鼠标右键,出现以下菜单,点击蓝色部 分,这样就打开了 51 头文件。
打开 51 文件之后, 我们看到了对 51 单片机的端口定时器中断等进行了定义,想要了解含义,去看看单片机的资料, 这里不多讲。
汇编语言实现led灯的跑马灯
汇编语⾔实现led灯的跑马灯led实验1.看原理图看设备⼯作的原理(可能需要阅读芯⽚⼿册),看设备与cpu的连接关系GPIO具有输⼊输出功能。
输⼊:cpu想知道io引脚是⾼电平还是低电平那么就是输⼊⽅式输出:cpu想控制io引脚为⾼电平还是低电平那么就是输出⽅式跟电流的⽅向没有任何关系2. cpu的相关章节GPJ2CON control是配置这个引脚是什么功能GPJ2有8个引脚,每个引脚由con寄存器中的4个位进⾏配置GPJ2DAT 如果cpu要输出⾼电平或者低电平,就需要设置该寄存器,只有8位有效When the port is configured as input port, the correspondingbit is the pin state. When the port is configured as outputport, the pin state is the same as the corresponding bit.When the port is configured as functional pin, the undefinedvalue will be read.当配置为输⼊模式的时候,dat寄存器中的某⼀位的值由引脚设置,引脚是⾼电平是,对应的位为1,引脚为低电平时,对应的位为0当配置为输出模式的时候,dat寄存器中的某⼀位控制引脚的电平,对应的位为1时,对应的引脚输出⾼电平,对应的位为0时,对应的引脚输出为低电平其他功能模式时,读到的值是未定义的。
@gec210 light first led.globl _start_start:ldr r0,=0xe0200280mov r1,#1<<4str r1,[r0] @config pin0 output modemov r1,#0str r1,[r0,#4] @output low levelb . @same as while(1);arm-linux-gcc -c led.S -o led.o //编译不链接arm-linux-ld -Ttext 0x30008000 led.o -o led.elf //链接指定代码段起始位置arm-linux-objcopy -O binary led.elf led.bin //⽣成⼆进制执⾏⽂件arm-linux-objdump -D led.elf > led.dis //⽣成反汇编代码uboot的⼏个常⽤命令printenv 打印显⽰环境变量ipaddr=192.168.1.4 //开发板的ipserverip=192.168.1.2 //tftp服务器的ip设置为各⾃的ip,只是设置到内存,掉电就没有setenv ipaddr 192.168.1.xsetenv serverip 192.168.1.xsaveenv //保存到flash中,再次启动后为刚刚设置的值ping //单向的,只能从开发板ping电脑alive表⽰⽹络是通的,not alive表⽰⽹络不通tftp 30008000 led.bin //下载⼆进制⽂件到内存0x30008000地址go 30008000 //跳转到0x30008000运⾏程序@gec210 light first led.globl _start_start:ldr r0,=0xe0200280ldr r1,=(1<<0 | 1<<4 | 1<<8 | 1<<12)str r1,[r0] @config pin0-pin3 output modemov r1,#0str r1,[r0,#4] @output low levelb . @same as while(1);简单的makefileAPP=led$(APP).bin:$(APP).oarm-linux-ld -Ttext 0x30008000 $^ -o $(APP).elf arm-linux-objcopy -O binary $(APP).elf $@ arm-linux-objdump -D $(APP).elf > $(APP).dis cp $@ /home/gec/tftp/%.o:%.sarm-linux-gcc $^ -c -o $@%.o:%.Sarm-linux-gcc $^ -c -o $@%.o:%.carm-linux-gcc $^ -c -o $@clean:@rm -f $(APP).bin $(APP).elf $(APP).dis *.o四个灯同时点亮或者同时熄灭循环闪烁@gec210 light first led.globl _start_start:ldr r0,=0xe0200280ldr r1,=(1<<0 | 1<<4 | 1<<8 | 1<<12)str r1,[r0] @config pin0-pin3 output mode loop:mov r1,#0str r1,[r0,#4] @output low levelbl delaymov r1,#0xfstr r1,[r0,#4]bl delayb loopb . @same as while(1);delay:mov r4,#0xff00000delay1:subs r4,r4,#1bne delay1mov pc,lr#define GPJ2CON (unsigned long *)0xe0200280unsigned long *p = (unsigned long *)0xe0200280;p练习:第1个灯到第4个灯依次点亮,第4个灯到第1个灯依次熄灭,循环。
STM32汇编语言 左右跑马灯
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;; STM32 LED左右跑马灯实验;;8个LED接在PE口(PE[0..7]);;LED先向右跑,跑完再向左跑,不停左右跑动;;2011-5-3 by 追梦;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BIT6 EQU 0X00000040GPIOE EQU 0X40011800 ;GPIOE 地址GPIOE_CRL EQU 0X40011800 ;低配置寄存器GPIOE_CRH EQU 0X40011804 ;高配置寄存器GPIOE_ODR EQU 0X4001180C ;输出,偏移地址0Ch GPIOE_BSRR EQU 0X40011810 ;低置位,高清除偏移地址10h GPIOE_BRR EQU 0X40011814 ;清除,偏移地址14h IOPEEN EQU BIT6 ;GPIOE使能位RCC_APB2ENR EQU 0X40021018STACK_TOP EQU 0X20002000AREA RESET,CODE,READONLYDCD STACK_TOP ;MSP主堆栈指针DCD START ;复位,PC初始值ENTRY;指示开始执行STARTLDR R1,=RCC_APB2ENRLDR R0,[R1] ;读LDR R2,=IOPEENORR R0,R2 ;改STR R0,[R1] ;写,使能GPIOE时钟;PE[0..7] 8个引脚均设置成推挽式输出LDR R0,=0x33333333LDR R1,=GPIOE_CRLSTR R0,[R1]LDR R1,=GPIOE_ODRLDR R0,=0X7F ;初始时最高位点亮MOV R2,#0LOOPSTR R0,[R1]PUSH {R0}MOV R0,#300BL.W DELAY_NMS ;延时300msPOP {R0}ADD R2,#1CMP R2,#7BLE STA TE1CMP R2,#14BEQ RESTARTB STA TE2STA TE1 ;状态1,右循环移位BL.W ByteRor1 ;状态位右循环移一位B LOOPRESTARTMOV R2,#0STA TE2 ;状态2,左循环移位BL.W ByteRol1 ;状态位左循环移一位B LOOP;延时R0(ms),误差((R0-1)*4+12)/8us;延时较长时,误差小于0.1%DELAY_NMSPUSH {R1} ;2个周期DELAY_NMSLOOPSUB R0,#1MOV R1,#1000DELAY_ONEUSSUB R1,#1NOPNOPNOPCMP R1,#0BNE DELAY_ONEUSCMP R0,#0BNE DELAY_NMSLOOPPOP {R1}BX LR;子程序,将R0低八位右循环移一位,高位不变ByteRor1PUSH {R1,R2,R3}LDR R3,=0XFFFFFF00LSR R1,R0,#1AND R1,#0X0000007FAND R2,R0,#0X01LSL R2,#7ORR R1,R2AND R0,R3ORR R0,R1POP {R1,R2,R3}BX LR;子程序,将R0低八位左循环移一位,高位不变ByteRol1PUSH {R1,R2,R3}LDR R3,=0XFFFFFF00LSL R1,R0,#1AND R1,#0X000000FEAND R2,R0,#0X80LSR R2,#7ORR R1,R2AND R0,R3ORR R0,R1POP {R1,R2,R3}BX LREND。
arm汇编实现的跑马灯实验
arm汇编实现的跑马灯实验平台:fs2410 用arm 汇编编写的跑马灯单文件可以很好运行,不需要包其他的头文件和一些初始化函数。
GPFCON EQU 0x56000050GPFDAT EQU 0x56000054GPFUP EQU 0x56000058 EXPORT LEDTEST AREA LEDTESTASM,CODE,READONLY ;定义了一个代码段,段名为LEDTESTASM,属性只读LEDTEST ;设置GPF4-GPF7 为output ldr r0,=GPFCON ldr r1,=0x5500 str r1,[r0] ;禁止GPF4-GPF7 端口的上拉电阻ldr r0,=GPFUP ldr r1,=0xff00 strr1,[r0] ;将数据端口F 的数据寄存器的地址赋值给寄存器r2 ldr r2,=GPFDAT;跑马灯循环ledloop1 ldr r1,=0xef str r1,[r2] ;使GPF4 输出低电平,灯亮bl delay1;调用延迟ledloop2 ldr r1,=0xdf str r1,[r2] bl delay2ledloop3 ldr r1,=0x7f str r1,[r2] bl delay3ledloop4 ldr r1,=0xbf str r1,[r2] bl delay4;延迟程序delay1ldr r3,=0x8ffff ;设置延迟的时间delay5sub r3,r3,#1 ;r3=r3-1cmp r3,#0x0 ;将r3 的值与0 相比较bne delay5;比较的结果不为0(r3 不为0),继续调用delay1,否则执行下一条语句b ledloop2mov pc,lr ;返回;延迟程序delay2ldr r3,=0x8ffffdelay6sub r3,r3,#1cmp r3,#0x0bne delay6b ledloop3mov pc,lr delay3 ldr r3,=0x8ffffdelay7sub r3,r3,#1cmp r3,#0x0bne delay7b ledloop4mov pc,lrdelay4ldr r3,=0x8ffffdelay8sub r3,r3,#1cmp r3,#0x0bne delay8b ledloop1mov pc,lrEND ;程序结束符tips:感谢大家的阅读,本文由我司收集整编。
心形跑马灯实训报告
一、实训目的本次心形跑马灯实训旨在通过实际操作,让学生掌握心形跑马灯的设计原理、电路搭建、编程控制以及实际应用等方面的知识。
通过实训,提高学生的动手能力、创新能力和团队协作能力,同时加深对电子技术、嵌入式系统及编程的理解。
二、实训背景随着科技的发展,嵌入式系统在日常生活中得到了广泛应用。
心形跑马灯作为一种新颖的电子装饰品,具有较高的观赏性和实用性。
本实训项目以心形跑马灯为载体,让学生在实训过程中学习相关知识,培养创新意识。
三、实训内容1. 心形跑马灯设计原理心形跑马灯采用LED灯珠作为显示单元,通过单片机控制LED灯珠的亮灭,形成动态的心形图案。
设计原理主要包括以下几个方面:(1)心形图案设计:通过数学公式计算心形图案的坐标点,将坐标点映射到LED灯珠上。
(2)LED灯珠驱动电路:设计LED灯珠的驱动电路,确保LED灯珠正常工作。
(3)单片机控制电路:设计单片机控制电路,实现LED灯珠的亮灭控制。
2. 心形跑马灯电路搭建(1)电路元器件:主要包括单片机、LED灯珠、电阻、电容、面包板、导线等。
(2)电路搭建步骤:①根据设计原理,设计电路图。
②在面包板上搭建电路,连接单片机、LED灯珠、电阻、电容等元器件。
③检查电路连接是否正确,确保电路正常工作。
3. 心形跑马灯编程控制(1)编程环境:使用C语言进行编程。
(2)编程步骤:①初始化单片机端口,设置LED灯珠的亮灭模式。
②编写心形图案的生成函数,计算心形图案的坐标点。
③编写控制LED灯珠亮灭的函数,实现心形图案的动态显示。
4. 心形跑马灯实际应用(1)展示平台:将心形跑马灯应用于各类活动、展览等场合,展示其独特魅力。
(2)应用场景:如商场、酒店、旅游景点等。
四、实训过程1. 理论学习:首先,学生对心形跑马灯的设计原理、电路搭建、编程控制等方面进行理论学习,了解相关知识。
2. 电路搭建:在面包板上搭建心形跑马灯电路,连接元器件,确保电路正常工作。
3. 编程实践:使用C语言编写心形跑马灯的代码,实现心形图案的动态显示。
51单片机8个跑马灯程序汇编设计思路
【51单片机8个跑马灯程序汇编设计思路】1. 引言在嵌入式系统中,跑马灯程序是一个非常常见且基础的程序设计。
通过控制LED灯的亮灭顺序,实现灯光在一组灯中顺序轮流亮起的效果。
其中,51单片机是一种常用的嵌入式系统开发评台,本文将探讨如何通过汇编语言设计实现8个跑马灯程序的思路和方法。
2. 分析题目我们需要对题目进行细致的分析。
51单片机8个跑马灯程序要求我们设计并实现一个程序,能够控制8个LED灯依次轮流亮起的效果。
这意味着我们需要对LED灯进行控制,并且需要考虑如何实现循环、延时等功能。
3. LED灯控制在实现跑马灯程序时,首先需要考虑如何控制LED灯的亮灭。
一种常见的方法是通过I/O口控制LED灯的高低电平,从而实现灯的亮灭。
我们需要了解51单片机的I/O口控制方式,并结合LED灯的连接方式进行设计。
4. 循环控制跑马灯程序的核心在于实现LED灯的依次轮流亮起。
这就需要我们设计循环控制的程序结构。
在汇编语言中,可以通过跳转指令和计数器来实现循环效果,我们需要考虑如何设计循环的次数和顺序。
5. 延时控制为了让人眼能够观察到LED灯的亮灭效果,我们需要在程序中添加延时控制。
这需要我们了解51单片机的定时器控制和时钟频率,并根据LED灯的亮度要求设计合适的延时程序。
6. 汇编设计思路在进行汇编设计时,可以按照以下步骤进行:1)设置I/O口控制LED灯的引脚,确定LED的连接方式;2)设计循环控制结构,确定LED灯的顺序和次数;3)添加延时程序,控制LED灯亮灭的时间间隔;4)编写中断程序,处理定时器中断等事件;5)调试程序,验证跑马灯效果是否符合要求。
7. 个人观点和理解通过设计这个跑马灯程序,我深切体会到了汇编语言的精妙之处。
通过对硬件的直接控制和对程序结构的精心设计,我感受到了嵌入式系统开发中的乐趣和挑战。
而对于初学者来说,设计跑马灯程序也是一个很好的学习过程,可以加深对于51单片机结构和编程思想的理解。
汇编课程之跑马灯设计报告
太原工业学院汇编语言与微机原理课程设计报告学生姓名:刘创学号:*********系部: 计算机工程系专业: 计算机科学与技术题目: 利用8255实现花式跑马灯成绩指导教师李丽2016年6月28日1.设计内容1)设计电路;2)实现6种不同的跑马灯样式;3)跑马灯的运行状态可由开关控制4)要有暂停跑马灯按钮控制即跑马灯的状态切换。
2.总体设计1)设计原理本实验通过循环检测A口数据,判断按得是哪个开关,如开关1按下,则向AL送01h,并送至B口,循环左移AL达到灯的流水下移,调用延时子程序控制灯闪亮时间,通过BH的赋值控制循环次数,达到时间定时效果。
每循环一个周期,CPU都会检测A口的值,从而能即时切换跑马灯花式。
2)设计跑马灯方案a)按下开关1,跑法1,AL初值01H,循环左移,控制一个亮灯自上而下跑动。
b)按下开关2,跑法2,AL初值81H,循环右移,控制一个亮灯自下而上跑动。
c)按下开关3,跑法3,AL初值0AAH,循环左移,控制间隔4个灯同时闪亮。
d)按下开关4,跑法4,AL初值0C0H,循环右移,控制两个亮灯自下而上跑动。
e)按下按键5,跑法5,AL初值05H,循环左移,控制亮暗亮3灯自上而下跑动。
f)按下开关6,跑法6,AL初值0AAH,循环左移,控制间隔4个灯同时闪亮,相比按键3,跑动时间更长,以显示定功能。
g)按下开关7按下,跑马灯暂停工作,再次按下跑马灯继续工作。
3.硬件设计1)Proteus元件清单及功能说明2)电路设计图a)8086微处理机与锁存器、译码器连接b)8255A与跑马灯开关控制连接图c)8255A与跑马灯LED显示灯连接图4. 软件设计1)程序设计思路利用查询式不断循环查询控制跑马灯样式的开关状态,进而编写程序来控制跑马灯的输出样式。
同时,检测是否暂停跑马灯工作状态的按钮,以及时处理暂停与继续工作状态。
2)程序流程图3)程序代码MarqueeHorseRaceLamp.ASM/*文件名*/ CODE SEGMENTASSUME CS:CODESTART: MOV AL,90HMOV DX,206HOUT DX,ALNOKEY:CALL SCANJNZ NOKEYSCAN PROCMOV AL,0FFHMOV DX,202HOUT DX,ALMOV DX,200HIN AL,DXTEST AL,01HJZ P1TEST AL,02HJZ P2TEST AL,04HJZ P3TEST AL,08HJZ P4TEST AL,10HJZ P5TEST AL,20H JZ P6RETP1:CALL PA1PA1 PROCMOV BH,0MOV BL,01HA1:MOV AL,BLMOV DX,202HOUT DX,ALMOV CX,50000CALL DELAY ROL BL,1CALL STOPCALL SCANCMP BL,01HJNZ J1INC BHJ1:JMP A1PA1 ENDPP2:CALL PA2PA2 PROCMOV BH,0MOV BL,80HA2:MOV AL,BLMOV DX,202H OUT DX,AL CALL DELAY ROR BL,1CALL STOP CALL SCANCMP BL,80HJNZ J2INC BHJ2:JMP A2RETPA2 ENDPP3:CALL PA3PA3 PROCMOV BH,0MOV BL,0AAH A3:MOV AL,BLMOV DX,202H OUT DX,AL CALL DELAY MOV CL,1ROL BL,CL CALL STOP CALL SCAN CMP BL,0AAHJNZ J3INC BHJ3:JMP A3RETPA3 ENDPP4:CALL PA4PA4 PROCMOV BH,0MOV BL,0C0HA4:MOV AL,BLMOV DX,202HOUT DX,ALCALL DELAYMOV CL,1ROR BL,CLCALL STOPCALL SCANCMP BL,0C0HJNZ J4INC BHJ4:JMP A4RETPA4 ENDPP5:CALL PA5 PA5 PROCMOV BH,0MOV BL,05HA5:MOV AL,BLMOV DX,202HOUT DX,ALCALL DELAYROL BL,1CALL STOPCALL SCANCMP BL,05HJNZ J5INC BHCALL RETURNJ5:JMP A5RETPA5 ENDPP6:CALL PA6 PA6 PROCMOV BH,05HMOV BL,0AAHA6: MOV AL,BLMOV DX,202HOUT DX,ALMOV CX,50000CALL DELAYROL BL,1CALL STOPCALL SCANCMP BL,0AAHJNZ J6INC BHCALL RETURNJ6:JMP A6RETPA6 ENDPDELAY PROCMOV CX,50000LOOP1: LOOP LOOP1RETDELAY ENDPRETURN PROC CMP BH,04HJZ NOKEYRETSTOP PROC L1:MOV AL,00HMOV DX,202HOUT DX,ALMOV DX,200HIN AL,DXTEST AL,40HJNZ DONEJMP L1DONE:RETSTOP ENDPRETURN ENDPSCAN ENDPCODE ENDSEND START5. 仿真调试与分析a)连接好完整电路后,加载已经写好的跑马灯程序b)调试已经加载的代码,直至代码无编译错误为止c)启动Proteus调试d)拨动相关控制开关,进而控制跑马灯的工作风格e)调试结果基本符合实验前的设计,跑马灯以正确的工作风格进行工作,符合逻辑,整个实验分析正确f)跑马灯实验设计成功,结束实验6. 结论由于之前曾学习过组成原理,对Proteus的电路连接颇为了解,所以本次的电路连接没有太大的问题。
跑马灯--动态心形(汇编语言)
DELAY: MOV R3 , #08FH DJNZ R3 , $ DJNZ R2, DELAY MOV P1 , #0 INC R0 CJNE R0 , #8 , KKK MOV R0 , #0 DJNZ R4 , KKK INC DPTR INC R6 CJNE R6 , #08H, III MOV R6,#0 MOV DPTR,#200H SJMP III ORG 200H TAB: DB 0E3H, 0C1H, 081H,03H,03H,081H,0C1H, 0E3H, DB 0E3H, 0C1H ,081H,03H,03H,081H,0C1H, 0E3H END
程序编写:
CJNE R6 , #18H, III MOV R6, #0 MOV DPTR, #200H SJMP III ORG 200H 0FFH, 0FFH, 7DH, 01H, 01H, 7DH, 0FFH, 0FFH 0E3H, 0C1H ,81H, 03H, 03H, 81H, 0C1H, 0E3H 0FFH, 81H, 01H, 3FH, 3FH, 3FH, 01H, 81H 0FFH, 0FFH,7DH, 01H, 01H, 7DH, 0FFH,0FFH
利用IO口实现跑马灯功能: 跑马灯又称为流水灯。简单地说就是一 组灯在控制系统的控制下按照设定的时间和顺序 来发亮或熄灭,组成不同的图形,从而达到一定 的视觉效果。 • 基本跑马灯电路的组成: MCS—51单片机,LED小灯泡,电容电阻, 振荡电路,译码电路,光源电路等。
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 列置高电平 行置低电平
点阵共有64 个二极管每 个发光二极 管是放置在 行线和列线 的交叉点上
当对应的 某一列置 1电平, 某一行置 0电平, 则相应的 二极管就 亮
单片机实例之跑马灯
让LED点亮,需要在引脚上输出低电平,就是 在P1.0引脚上输出0,应使用的命令是:
light=0;(汇编:CLR P1.0) 同理,让LED熄灭,应使用的命令是:
light=1; (汇编:SETB P1.0)
4、延时程序的编写
KEIL 软件开发平台
图3-8 新建工程窗口
KEIL 软件开发平台
图3-9 单片机选择窗口
KEIL 软件开发平台
图3-10 目标1属性设置窗口
KEIL 软件开发平台
图3-11 目标1输出窗口设置
KEIL 软件开发平台
图3-13 软件输入窗口
KEIL 软件开发平台
图3-14 目标1添加窗口
KEIL 软件开发平台
图3-15 目标1添加文件窗口
(二) Keil 程序调试 1.程序调试时的常用窗口 编译文件界面
KEIL 软件开发平台
图3-16 编辑文件界面
调试程序窗口
KEIL 软件开发平台
字母C:代码存储空间 D:直接寻址的片内存储空间 I:间接寻址的片内存储空间 X:扩展的外部RAM空间 “数字”:想要查看的地址。
根据前面的分析,实现任务的思路是:程序 开始时,给某一变量赋初始值0xFE,然后每次将 数据左移后送入P1口直到所有循环次数输出完毕, 再次重复整个过程。根据思路得出的程序框图如 图3-29所示。
图3-29 程序流程图
(1)C语言程序:
#include "reg51.h" #include "intrins.h" #define uchar unsigned char #define uint unsigned int void mDelay(unsigned int Delay) { unsigned int i;
走马灯实验报告
走马灯实验报告1、实验目的1、学会DP-51PRO实验仪监控程序下载、动态调试等联机调试功能的使用;2、理解和学会单片机并口的作为通用I/O的使用;3、理解和学会单片机外部中断的使用;4、了解单片机定时器/计数器的应用。
2、实验设备PC 机、ARM 仿真器、2440 实验箱、串口线。
3、实验内容熟悉A RM 开发环境的建立。
使用A RM 汇编和C语言设置G PIO 口的相应寄存器。
编写跑马灯程序。
5、实验原理走马灯实验是一个硬件实验,因此要求使用DP-51PRO 单片机综合仿真实验仪进行硬件仿真,首先要求先进行软件仿真,排除软件语法错误,保证关键程序段的正确。
然后连接仿真仪,下载监控程序,进行主机与实验箱联机仿真。
为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规定一定的规则。
ATPCS ,即ARM ,Thumb 过程调用标准(ARM/Thumb Procedure Call Standard),是A RM 程序和T humb 程序中子程序调用的基本规则,它规定了一些子程序间调用的基本规则,如子程序调用过程中的寄存器的使用规则,堆栈的使用规则,参数的传递规则等。
下面结合实际介绍几种A TPCS 规则,如果读者想了解更多的规则,可以查看相关的书籍。
1.基本A TPCS基本A TPCS 规定了在子程序调用时的一些基本规则,包括下面3方面的内容:(1)各寄存器的使用规则及其相应的名称。
(2)数据栈的使用规则。
(3)参数传递的规则。
相对于其它类型的A TPCS,满足基本A TPCS 的程序的执行速度更快,所占用的内存更少。
但是它不能提供以下的支持: ARM 程序和T humb 程序相互调用,数据以及代码的位置无关的支持,子程序的可重入性,数据栈检查的支持。
而派生的其他几种特定的A TPCS 就是在基本A TPCS 的基础上再添加其他的规则而形成的。
其目的就是提供上述的功能。
2.寄存器的使用规则寄存器的使用必须满足下面的规则:(1) 子程序间通过寄存器R0~R3 来传递参数。
02汇编语言实验——跑马灯
实验时间: 实验时间: 时间
2011-4-7
实验报告提交时间: 实验报告提交时间: 提交时间
2011-4-7
教务处制
实验目的与要求:
1. 初步使用汇编语言进行编程,了解单片机内程序运行情况。 2. 了解汇编语言的指令结构,跳转,子程序调用等功能。 3. 使用汇编语言实现跑马灯功能。
实验仪器: 微机原理试验箱 实验相关电路图:
;延时 100MS 子程序 延时 ;入口参数 入口参数:DelayTimes_100MS,延时多少个 100MS 入口参数 延时多少个 ;-----------------------------------------------------Delay100MS: MOV R7,DelayTimes_100MS Delay100MS_1: MOV R6,#10 Delay100MS_2: MOV R5,#150 Delay100MS_3: MOV R4,#200 Delay100MS_4: DJNZ R4,Delay100MS_4 DJNZ R5,Delay100MS_3 DJNZ R6,Delay100MS_2 DJNZ R7,Delay100MS_1 RET ;子程序返回 子程序返回 ;-----------------------------------------------------;跑马灯子程序 跑马灯子程序 ;让 4 个 LED 以 全灭 亮灭灭灭 亮亮灭灭 亮亮亮灭 亮亮亮亮 灭亮亮亮 灭灭亮 全灭->亮灭灭灭 亮亮灭灭->亮亮亮灭 亮亮亮亮->灭亮亮亮 亮灭灭灭->亮亮灭灭 亮亮亮灭->亮亮亮亮 灭亮亮亮->灭灭亮 让 灭灭灭亮->全灭 亮->灭灭灭亮 全灭 的顺序运行 灭灭灭亮 ;-----------------------------------------------------LEDRUN: ;---全灭 全灭--全灭 SETB LED0 SETB LED1 SETB LED2 SETB LED3 MOV DelayTimes_100MS,#10 LCALL Delay100MS ;----------CLR LED0 SETB LED1 SETB LED2 SETB LED3 MOV DelayTimes_100MS,#10 LCALL Delay100MS ;----------CLR LED0 CLR LED1 SETB LED2
最新单片机汇编语言跑马灯
实验一跑马灯-亮灯左移右移循环黄天佑 20132301155一、实验目的1、进一步熟悉keil C仿真软件及单片机实验板的使用。
2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。
3、掌握应用KEIL软件编辑、编译源汇编程序的操作方法。
4、了解单片机汇编语言程序的设计和调试方法。
二、实验原理1、实验板硬件电路图2、单片机流水灯程序设计(1)流水灯程序设计思路及程序流程。
实现流水灯的方法有很多,这里介绍一种。
(2)产生流水灯效果程序(逐条程序加注释)start:mov R0,#8 ; 设置左移8次mov A,#0FEH; 存入开始亮灯的位置LOOP: mov P0,A; 传送P0并输出ACALL DELAY; 调用延时程序RL A; 左移1位DJNZ R0,LOOP; 判断移送次数mov R1,#8; 设置右移8次LOOP1:RR A; 右移1位mov P0,A; 传送到P0口并输出ACALL DELAY; 调用延时程序DJNZ R1,LOOP1; 判断右移次数JMP start; 重新设定显示DELAY: mov R5,#10; 延时0.1s子程序D1: mov R6,#100;D2: mov R7,#100;DJNZ R7,$;DJNZ R6,D2;DJNZ R5,D1;RET ; 子程序返回END ; 程序结束三、实验步骤及调试过程1、汇编语言程序的编写与调试(1)新建一个工程(2)保存文件,设一个文件名(3)找到对应单片机的芯片,这里我们选AT89C51即可接着我们新建一个文本写程序(1)(2)保存文件名,注意文件名的后缀应该为.asm(汇编语言程序的格式)接着把我们的文本导入到工程里面去:(1)(2)点击Add,再Close即可2.汇编语言程序编译及下载(1)这里要设置一个输出.hex文件(2)点击生成工程相应的文件同时可以观察下面的结果:0 Error(s),即可。
51单片机心形灯汇编程序
ORG 0000HMAIN: MOV R1,#08H MOV A,#7FHDAN2: MOV P2,ACALL DELAYRR ADJNZ R1,DAN2MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FHDAN3: MOV P3,ACALL DELAYRR ADJNZ R1,DAN3MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FHDAN4: MOV P1,ACALL DELAYRR ADJNZ R1,DAN4MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#0FEHDAN1: MOV P0,A ACALL DELAYRL ADJNZ R1,DAN1MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFH;单个跑马灯MOV R1,#08HMOV A,#7FHDAN22: MOV P2,ACALL DELAY1RR ADJNZ R1,DAN22MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FH DAN33: MOV P3,A CALL DELAY1RR ADJNZ R1,DAN33MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FH DAN44: MOV P1,A CALL DELAY1RR ADJNZ R1,DAN44MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#0FEH DAN11: MOV P0,AACALL DELAY1RL ADJNZ R1,DAN11MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFH;单个跑马灯MOV R1,#08HMOV A,#7FH DAN222: MOV P2,A CALL DELAY2RR ADJNZ R1,DAN222MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FH DAN333: MOV P3,A CALL DELAY2RR ADJNZ R1,DAN333MOV P0,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FH DAN444: MOV P1,A CALL DELAY2RR ADJNZ R1,DAN444MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#0FEH DAN111: MOV P0,A ACALL DELAY2RL ADJNZ R1,DAN111MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFH;单个跑马灯MOV R1,#08HD1AN22: MOV P2,A CALL DELAY3RR ADJNZ R1,D1AN22MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FHD1AN33: MOV P3,A CALL DELAY3RR ADJNZ R1,D1AN33MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FHD1AN44: MOV P1,A CALL DELAY3RR ADJNZ R1,D1AN44MOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#0FEHD1AN11: MOV P0,AACALL DELAY3RL ADJNZ R1,D1AN11MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFH;单个跑马灯MOV R1,#08HMOV A,#7FH DAN2A: MOV P2,A CALL DELAY4RR ADJNZ R1,DAN2AMOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV A,#7FHDAN3A: MOV P3,ACALL DELAY4RR ADJNZ R1,DAN3AMOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FHDAN4A: MOV P1,ACALL DELAY4RR ADJNZ R1,DAN4AMOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08H ;单个跑马灯MOV A,#0FEHDAN1A: MOV P0,AACALL DELAY4RL ADJNZ R1,DAN1AMOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FH DAN2A1: MOV P2,A CALL DELAY4RR ADJNZ R1,DAN2A1MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FH DAN3A1: MOV P3,A CALL DELAY4RR ADJNZ R1,DAN3A1MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08HMOV A,#7FHDAN4A1: MOV P1,ACALL DELAY4RR ADJNZ R1,DAN4A1MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#12HMOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08H ;单个跑马灯MOV A,#0FEHDAN1A1: MOV P0,AACALL DELAY4RL ADJNZ R1,DAN1A1MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#4JIAOTI: ;交替闪烁MOV P0,#01010101BMOV P1,#01010101BMOV P2,#01010101BMOV P3,#01010101BCALL DELAYMOV P0,#10101010BMOV P1,#10101010BMOV P2,#10101010BMOV P3,#10101010BCALL DELAYDJNZ R1,JIAOTIMOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08H QUAN: ;闪烁的频率由慢变快MOV P0,#00HMOV P1,#00HMOV P2,#00HMOV P3,#00HCALL DELAYMOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHCALL DELAYDJNZ R1,QUANMOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#08H ;渐渐变亮,然后熄灭MOV A,#07FHJIAN2: MOV P2,AACALL DELAY1RR AANL A,P2DJNZ R1,JIAN2MOV P0,#0FFHMOV P1,#0FFHMOV P2,#00HMOV P3,#0FFHMOV R1,#08HMOV A,#07FHJIAN3: MOV P3,AACALL DELAY1RR AANL A,P3DJNZ R1,JIAN3MOV P0,#0FFHMOV P1,#0FFHMOV P2,#00HMOV P3,#00HMOV R1,#08HMOV A,#07FH JIAN4: MOV P1,AACALL DELAY1RR AANL A,P1DJNZ R1,JIAN4MOV P0,#0FFHMOV P1,#00HMOV P2,#00HMOV P3,#00HMOV R1,#08HMOV A,#0FEH JIAN1: MOV P0,AACALL DELAY1RL AANL A,P0DJNZ R1,JIAN1MOV P0,#00HMOV P1,#00HMOV P2,#00HMOV P3,#00H MOV P0,#10101010B MOV P1,#01010101B MOV P2,#01010101B MOV P3,#01010101B ANL P2,#00010101B CALL DELAYANL P2,#00000101B CALL DELAYANL P2,#00000001B CALL DELAYANL P2,#00000000B CALL DELAYANL P3,#00010101b CALL DELAYANL P3,#00000101b CALL DELAYANL P3,#00000001b CALL DELAYANL P3,#00000000b CALL DELAYANL P1,#00010101b CALL DELAYANL P1,#00000101b CALL DELAYANL P1,#00000001b CALL DELAYANL P1,#00000000b CALL DELAYANL P0,#10101000B CALL DELAYANL P0,#10100000B CALL DELAYANL P0,#10000000B CALL DELAYANL P0,#00000000B CALL DELAYORL P0,#01000000b CALL DELAYORL P0,#01010000b CALL DELAYORL P0,#01010100b CALL DELAYORL P0,#01010101b CALL DELAYORL P1,#00000010b CALL DELAYORL P1,#00001010bCALL DELAYORL P1,#00101010b CALL DELAYORL P1,#10101010b CALL DELAYORL P3,#00000010b CALL DELAYORL P3,#00001010b CALL DELAYORL P3,#00101010b CALL DELAYORL P3,#10101010b CALL DELAYORL P2,#00000010b CALL DELAYORL P2,#00001010b CALL DELAYORL P2,#00101010b CALL DELAYORL P2,#10101010b CALL DELAYANL P0,#00010101B ANL P2,#00101010B CALL DELAYANL P0,#00000101BANL P2,#00001010B CALL DELAYANL P0,#00000001B ANL P2,#00000010B CALL DELAYANL P0,#00000000B ANL P2,#00000000B CALL DELAYANL P1,#10101000B ANL P3,#00101010B CALL DELAYANL P1,#10100000B ANL P3,#00001010B CALL DELAYANL P1,#10000000B ANL P3,#00000010B CALL DELAYANL P1,#00000000B ANL P3,#00000000B CALL DELAYORL P1,#01000000B ORL P3,#00000001B CALL DELAYORL P1,#01010000B ORL P3,#00000101BCALL DELAYORL P1,#01010100B ORL P3,#00010101B CALL DELAYORL P1,#01010101B ORL P3,#01010101B CALL DELAYORL P0,#00000000B ORL P2,#00000001B CALL DELAYORL P0,#00001010B ORL P2,#00000101B CALL DELAYORL P0,#00101010B ORL P2,#00010101B CALL DELAYORL P0,#10101010B ORL P2,#01010101B CALL DELAYORL P0,#11000000B ORL P2,#11000000B CALL DELAYORL P0,#11110000B ORL P2,#11110000B CALL DELAYORL P2,#11111100B CALL DELAYORL P0,#11111111B ORL P2,#11111111B CALL DELAYORL P1,#00000011B ORL P3,#11000000B CALL DELAYORL P1,#00001111B ORL P3,#11110000B CALL DELAYORL P1,#00111111B ORL P3,#11111100B CALL DELAYORL P1,#11111111B ORL P3,#11111111B CALL DELAYANL P1,#01111111B ANL P3,#11111110B CALL DELAYANL P1,#00111111B ANL P3,#11111100B CALL DELAYANL P1,#00011111BCALL DELAYANL P1,#00001111B ANL P3,#11110000B CALL DELAYANL P1,#00000111B ANL P3,#11100000B CALL DELAYANL P1,#00000011B ANL P3,#11000000B CALL DELAYANL P1,#00000001B ANL P3,#10000000B CALL DELAYANL P1,#00000000B ANL P3,#00000000B CALL DELAYANL P0,#11111110B ANL P2,#11111110B CALL DELAYANL P0,#11111100B ANL P2,#11111100B CALL DELAYANL P0,#11111000B ANL P2,#11111000BCALL DELAYANL P0,#11110000BANL P2,#11110000BCALL DELAYANL P0,#11100000BANL P2,#11100000BCALL DELAYANL P0,#11000000BANL P2,#11000000BCALL DELAYANL P0,#10000000BANL P2,#10000000BCALL DELAYANL P0,#00000000BANL P2,#00000000BCALL DELAYMOV R1,#4 JIAOT: ;交替闪烁MOV P0,#00110011BMOV P1,#00110011BMOV P2,#00110011BMOV P3,#00110011BCALL DELAYMOV P0,#11001100BMOV P1,#11001100BMOV P3,#11001100BCALL DELAYDJNZ R1,JIAOTMOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV R1,#6SIGE: MOV P0,#11111110B MOV P1,#01111111BMOV P2,#01111111BMOV P3,#01111111BCALL DELAY1MOV P0,#11111100BMOV P1,#00111111BMOV P2,#00111111BMOV P3,#00111111BCALL DELAY1MOV P0,#11111000BMOV P1,#00011111BMOV P2,#00011111BMOV P3,#00011111BCALL DELAY1MOV P0,#11110000BMOV P2,#00001111B MOV P3,#00001111B CALL DELAY1MOV P0,#11100000B MOV P1,#00000111B MOV P2,#00000111B MOV P3,#00000111B CALL DELAY1MOV P0,#11000000B MOV P1,#000000111B MOV P2,#00000011B MOV P3,#00000011B CALL DELAY1MOV P0,#10000000B MOV P1,#00000001B MOV P2,#00000001B MOV P3,#00000001B CALL DELAY1MOV P0,#00000000B MOV P1,#00000000B MOV P2,#00000000B MOV P3,#00000000B CALL DELAY1DJNZ R1,SIGEMOV P1,#01111111B MOV P2,#01111111B MOV P3,#01111111B CALL DELAY1MOV P0,#11111100B MOV P1,#00111111B MOV P2,#00111111B MOV P3,#00111111B CALL DELAY1MOV P0,#11111000B MOV P1,#00011111B MOV P2,#00011111B MOV P3,#00011111B CALL DELAY1MOV P0,#11110000B MOV P1,#00001111B MOV P2,#00001111B MOV P3,#00001111B CALL DELAY1MOV P0,#11100000B MOV P1,#00000111B MOV P2,#00000111B MOV P3,#00000111B CALL DELAY1MOV P1,#000000111B MOV P2,#00000011B MOV P3,#00000011B CALL DELAY1MOV P0,#10000000B MOV P1,#00000001B MOV P2,#00000001B MOV P3,#00000001B CALL DELAY1MOV P0,#00000000B MOV P1,#00000000B MOV P2,#00000000B MOV P3,#00000000B CALL DELAY2MOV P0,#10000000B MOV P1,#00000001B MOV P2,#00000001B MOV P3,#00000001B CALL DELAY2MOV P0,#11000000B MOV P1,#00000011B MOV P2,#00000011B MOV P3,#00000011B CALL DELAY2MOV P1,#00000111B MOV P2,#00000111B MOV P3,#00000111B CALL DELAY2MOV P0,#11110000B MOV P1,#00001111B MOV P2,#00001111B MOV P3,#00001111B CALL DELAY2MOV P0,#11111000B MOV P1,#00011111B MOV P2,#00011111B MOV P3,#00011111B CALL DELAY2MOV P0,#11111100B MOV P1,#00111111B MOV P2,#00111111B MOV P3,#00111111B CALL DELAY2MOV P0,#11111110B MOV P1,#01111111B MOV P2,#01111111B MOV P3,#01111111B CALL DELAY2MOV P1,#11111111B MOV P2,#11111111B MOV P3,#11111111B CALL DELAY2MOV P0,#11111110B MOV P1,#01111111B MOV P2,#01111111B MOV P3,#01111111B CALL DELAY2MOV P0,#11111100B MOV P1,#00111111B MOV P2,#00111111B MOV P3,#00111111B CALL DELAYMOV P0,#11111000B MOV P1,#00011111B MOV P2,#00011111B MOV P3,#00011111B CALL DELAY2MOV P0,#11110000B MOV P1,#00001111B MOV P2,#00001111B MOV P3,#00001111B CALL DELAY2MOV P1,#00000111B MOV P2,#00000111B MOV P3,#00000111B CALL DELAY2MOV P0,#11000000B MOV P1,#000000111B MOV P2,#00000011B MOV P3,#00000011B CALL DELAY2MOV P0,#10000000B MOV P1,#00000001B MOV P2,#00000001B MOV P3,#00000001B CALL DELAY2MOV P0,#00000000B MOV P1,#00000000B MOV P2,#00000000B MOV P3,#00000000B CALL DELAY3MOV P0,#10000000B MOV P1,#00000001B MOV P2,#00000001B MOV P3,#00000001B CALL DELAY3MOV P1,#00000011B MOV P2,#00000011B MOV P3,#00000011B CALL DELAY3MOV P0,#11100000B MOV P1,#00000111B MOV P2,#00000111B MOV P3,#00000111B CALL DELAY3MOV P0,#11110000B MOV P1,#00001111B MOV P2,#00001111B MOV P3,#00001111B CALL DELAY3MOV P0,#11111000B MOV P1,#00011111B MOV P2,#00011111B MOV P3,#00011111B CALL DELAY3MOV P0,#11111100B MOV P1,#00111111B MOV P2,#00111111B MOV P3,#00111111B CALL DELAY3MOV P1,#01111111BMOV P2,#01111111BMOV P3,#01111111BCALL DELAY3MOV P0,#11111111BMOV P1,#11111111BMOV P2,#11111111BMOV P3,#11111111BCALL DELAY1LJMP MAIN DELAY: MOV R4,#255 D1: MOV R2,#248 DJNZ R2,$DJNZ R4,D1RETDELAY1: M OV R4,#180 D2: MOV R6,#248 DJNZ R6,$DJNZ R4,D2RETDELAY2: MOV R4,#90 D3: MOV R5,#248 DJNZ R5,$DJNZ R4,D3RETDELAY3: M OV R4,#60D4: MOV R7,#248DJNZ R7,$DJNZ R4,D4RETDELAY4: M OV R4,#30D5: MOV R3,#248DJNZ R3,$DJNZ R4,D5RETEND31。
走马灯的设计与实现
走马灯的设计与实现一实验目的通过走马灯的设计与制作,深入了解与掌握利用可编程8255A进行开关量控制的原理与方法。
二实验要求1.产生8种彩灯(8位LED)的走马灯花样;2.键控(或拨码开关控制)发光实验。
键控是在键盘上定义8个数字键(0~7),每按1个数字键,使LED的1位发光,按Q或q键,停止发光。
拨码开关控制,是通过改变各位开关,来进行控制, 使LED的1位发光,按Q或q键,停止发光。
三实验内容1.进行走马灯的系统电路硬件设计,画出电路原理图;2.安装或焊接元器件;3.进行走马灯的控制程序设计(采用ASM语言);4.系统联调,提交一个符合上述3种要求的走马灯的作品。
四实验原理8255A是一种通过可编程并行I/O接口芯片。
广泛用于几乎所有系列的微机系统中,8255A具有三个带锁存或缓冲的数据端口,可与外设并行进行数据交换,8255A有多种操作方式,通用性较强,可为CPU与外设之间提供输入/输出通道。
8255A和各端口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换,使用条件传输方式时可用“联络”线进行控制。
在实验中,我们运用8255为CPU与外设之间提供输入输出输出通道来实现对走马灯花样变换的控制。
走马灯驱动模块电路原理如图1所示。
模块包括8个LED彩灯、两个74LS04、和两个个排阻。
用LED可以观测在不同按键输入下,走马灯花样的变化效果。
如图1所示我们利用软件输入信号,通过8255端口扩展芯片和74LS04芯片,调节输出端口的电平变化,来控制共阳极的LED灯的亮与灭,实现走马灯花样变化。
图1 走马灯驱动模块电路原理图五试验设备1.PC兼容机2.Windows 98以上3.MFID多功能微机实验平台(含PCI总线驱动板)4.MFPCI98集成开发环境5.面包板或外设功能模块板6.安装或焊接工具六元器件清单元器件清单如表1所示。
表1 实验元器件清单七实验步骤7.1硬件连线根据图1的实验原电路图,走马灯电路结构电路接线如图2所示。
论文-利用8255实现花式跑马灯
太原工业学院汇编语言与微机原理课程设计报告学生姓名:学号:系部: 计算机工程系专业: 计算机科学与技术题目: 利用8255实现花式跑马灯成绩指导教师2016年6月28日1.设计内容1)设计电路;2)实现6种不同的跑马灯样式;3)跑马灯的运行状态可由开关控制4)要有暂停跑马灯按钮控制即跑马灯的状态切换。
2.总体设计1)设计原理本实验通过循环检测A口数据,判断按得是哪个开关,如开关1按下,则向AL送01h,并送至B口,循环左移AL达到灯的流水下移,调用延时子程序控制灯闪亮时间,通过BH的赋值控制循环次数,达到时间定时效果。
每循环一个周期,CPU都会检测A口的值,从而能即时切换跑马灯花式。
2)设计跑马灯方案a)按下开关1,跑法1,AL初值01H,循环左移,控制一个亮灯自上而下跑动。
b)按下开关2,跑法2,AL初值81H,循环右移,控制一个亮灯自下而上跑动。
c)按下开关3,跑法3,AL初值0AAH,循环左移,控制间隔4个灯同时闪亮。
d)按下开关4,跑法4,AL初值0C0H,循环右移,控制两个亮灯自下而上跑动。
e)按下按键5,跑法5,AL初值05H,循环左移,控制亮暗亮3灯自上而下跑动。
f)按下开关6,跑法6,AL初值0AAH,循环左移,控制间隔4个灯同时闪亮,相比按键3,跑动时间更长,以显示定功能。
g)按下开关7按下,跑马灯暂停工作,再次按下跑马灯继续工作。
3.硬件设计1)Proteus元件清单及功能说明元件名称功能说明8086 微处理器8255A 可编程外设接口电路,主要接收外设的开关状态来判断跑马灯的样式,以及输出所要的结果74LS273 是带有清除端的8D触发器,只有在清除端保持高电平时,才具有锁存功能,锁存控制端为11脚CLK,采用上升沿锁存74154 4-16译码器7427 3输入与非门LED-RED 红LED发光管NOT 非门PULLUP 上拉电阻,分压作用BUTTON 按钮式开关,鼠标点击开关后会自动弹起2)电路设计图a)8086微处理机与锁存器、译码器连接b)8255A与跑马灯开关控制连接图c)8255A与跑马灯LED显示灯连接图4. 软件设计1)程序设计思路利用查询式不断循环查询控制跑马灯样式的开关状态,进而编写程序来控制跑马灯的输出样式。
单片机跑马灯程序
单片机跑马灯程序*******************************************************************;此程序是用单片机的p1 口接八个led 灯作跑马灯试验,八个led 依次亮了又熄灭,形成漂亮;的跑马灯。
本人已经试验成功。
;单片机教程网51hei 原创;该8 路单片机跑马灯程序代码简单,电路也容易搭建,只需把led 接在p1 口上就可以了,希望大家能试验成功顺利的完成跑马灯报告;****************************************** *************************org 0000hajmp start;跳转到程序开始org 0030h;定义起始汇编地址start:mova,#0ffh ;clr c ;mov r2,#08h ;循环八次。
loop: rlc a ;带进位左移。
mov p1,a ;此时led 灯开始有反映了。
call delay ;延时djnz r2,loop ;循环(djnz 条件判断)movr2,#07h ;loop1: rrc a ;带进位右移mov p1,a ;此时led 灯开始有反映了。
call delay ;延时djnz r2,loop1 ;反复循环jmp start ;回到程序的开头delay: mov r3,#20 ;延时子程序d1: mov r4,#20d2: mov r5,#248djnz r5,$djnzr4,d2 单片机论坛51hei/bbs/ 有更多的跑马灯流水灯试验---------3 路单片机跑马灯程序---------------------------------------ORG 0000HLJMPMAINORG 030HMAIN: MOV P1,#0DBH ;化为2 进制为11011011--0 状态时led灯亮ACALL DELay MOV P1,#06DH ;化为2 进制为01101101ACALL DELay;MOV P1,#0B6H ;化为2 进制为10110110ACALL DELayAJMP MAINdelay: movr7,#255d1: mov r6,#255d2: djnz r6,d2djnz r7,d1retendtips:感谢大家的阅读,本文由我司收集整编。
计算机硬件—汇编语言—走马灯
;走马灯硬件链接;8255片选接300H,A接左侧小灯,B接右侧小灯,C7接8254芯片OUT1,C0-3接开关;8254片选接320H.486CODE SEGMENT USE16ASSUME CS:CODEORG 1000HBEG:JMP STARTPL DB 10H,20H,30H,40H,50H,60H,70H,80HSTART:;写入8255控制字MOV DX,30CHMOV AL,10001001BOUT DX,AL;写入5284控制字与闪烁周期设置MOV DX,32CHMOV AL,00110110BOUT DX,ALCALL ZHOUQI;调用子程序判断开关输入情况;LED从左到右循环点亮MOV CX,0010HMOV BX,8000HDO1:NOT BXMOV AL,BHMOV DX,300HOUT DX,ALMOV AL,BLMOV DX,304HOUT DX,ALCALL DELAYNOT BXSHR BX,1LOOP DO1;LED从右到左循环点亮MOV CX,0010HMOV BX,0001HDO2:NOT BXMOV AL,BHMOV DX,300HOUT DX,ALMOV AL,BLMOV DX,304HOUT DX,ALCALL DELAYNOT BXSHL BX,1LOOP DO2;LED从中间到两边点亮MOV CX,8H第 1 页MOV BX,0180HDO3:NOT BXMOV AL,BHMOV DX,300HOUT DX,ALMOV AL,BLMOV DX,304HOUT DX,ALCALL DELAYNOT BXSHR BL,1SHL BH,1LOOP DO3;LED从两边到中间点亮MOV CX,8HMOV BX,8001HDO4:NOT BXMOV AL,BHMOV DX,300HOUT DX,ALMOV AL,BLMOV DX,304HOUT DX,ALCALL DELAYNOT BXSHR BH,1SHL BL,1LOOP DO4;LED全亮然后全灭结束程序MOV CX,1HMOV BX,0FFFFHDO5:NOT BXMOV AL,BHMOV DX,300HOUT DX,ALMOV BL,ALMOV DX,304HOUT DX,ALLOOP DO5CALL DELAYCALL DELAYJMP START;调用子程序写入计数器初值ZHOUQI PROCMOV DX,308HIN AL,DXAND AL,0FHLEA BX,PLXLATMOV DX,320HMOV AH,ALMOV AL,0HOUT DX,AL第 2 页MOV AL,AHOUT DX,ALRETENDP ZHOUQI;延时程序DELAY:MOV DX,308HIN AL,DXAND AL,80HTEST AL,80HJNZ DELAYDELAY1:IN AL,DXAND AL,80HTEST AL,80HJZ DELAY1RETWT:JMP WTCODE ENDSEND BEG第 3 页。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DELAY: MOV R3 , #08FH DJNZ R3 , $ DJNZ R2, DELAY MOV P1 , #0 INC R0 CJNE R0 , #8 , KKK MOV R0 , #0 DJNZ R4 , KKK INC DPTR INC R6 CJNE R6 , #08H, III MOV R6,#0 MOV DPTR,#200H SJMP III ORG 200H TAB: DB 0E3H, 0C1H, 081H,03H,03H,081H,0C1H, 0E3H, DB 0E3H, 0C1H ,081H,03H,03H,081H,0C1H, 0E3H END
• 一根横柱:对应的行置0,而列则采用扫描的方法 来实现。
实现效果一:
点阵全亮 编程控制使P0口输出高电平,各列
置1;P1口输出低电平,各行置0。各二极管均 处于导通状态,点阵全亮。 程序:
ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV A, #0FFH MOV B, #00H LOOP: MOV P1, A MOV P0 , B END
实现效果二:
一列亮,向右移动 编程控制使P0各端口依次输
出高电平,各列相应置1;P1口输出低电平,各行 置0。相应二极管均处于导通状态,点阵亮。
ORG LJMP ORG MAIN: 0000H MAIN 0100H MOV A, #01H MOV B, #00H LOOP: MOV P1, A MOV P0 , B LCALL DELAY RL A SJMP LOOP SJMP $ DELAY: MOV R2, #0FFH DELAY1: MOV R3, #0FFH DJNZ R3, $ DJNZ R2, DELAY1 RET
实现效果四:
显示“♡”形
:画出“♡”形,根据二极管的
亮灭,设置相应扫描码,编程显示结果。
各列扫描码:
0E3H, 0D1H, 0D2H, 0C3H, 0D2H, 0C3H, 0E4H, 0E2H
编写程序:
ORG 000H AJMP MAIN ORG 100H MAIN: MOV R6, #0 MOV R0, #0 MOV R1, #1 MOV DPTR, #200H III: MOV R4, #02FH KKK: MOV A, R0 MOVC A,@A+DPTR MOV P0 , A MOV P1 , R1 MOV A , R1 RL A MOV R1 , A MOV R2 , #01h
利用IO口实现跑马灯功能
通信工程一班二组
跑马灯简介
• 概念 : 跑马灯又称为流水灯。简单地说就是一 组灯在控制系统的控制下按照设定的时间和顺序 来发亮或熄灭,组成不同的图形,从而达到一定 的视觉效果。 • 基本跑马灯电路的组成: MCS—51单片机,LED小灯泡,电容电阻, 振荡电路,译码电路,光源电路等。
实现效果三:
三列同时亮,向右移动 编程控制使P0中各次均
有三个端口输出高电平,各列相应置1;P1口端口 全部输出低电平,各行置0。相应二级管导通,点 ORG 0000H 阵亮。 LJMP MAIN
ORG MAIN: 0100H MOV A, #07H MOV B, #00H LOOP: MOV P1, A MOV P0 , B LCALL DELAY RL A SJMP LOOP SJMP $ DELAY: MOV R2, #0FFH DELAY1: MOV R3, #0FFH DJNZ R3, $ DJNZ R2, DELAY1 RET END
可以看出上面的端口通过高电平控制每一列, 而下面的端口通过低电平控制每一行,只有两者同 时有效时,对应位的小灯才能点亮。
点阵与51单片机的连接
• P0口接阳极,每个接口控制一列;P1口接低电平, 每个接口控制一行。 • 实现柱的亮的方法如下所述:
• 一根竖柱:对应的列置1,而行则采用扫描的方法 来实现。
实现效果五:
循环显示“Ι ♡∪”字形 画出“Ι ♡∪”
字形,根据二极管的亮灭,设置相应扫描码, 编程显示结果。
I的扫描码
0FFH,0FFH,7DH,01H,01H,7DH,0FFH,0FFH
♡的扫描码
0E3H,0C1H,81H,03H,03H,81H,0C1H,0E3H
U的扫描码 0FFH,81H,01H,3FH,3FH,3FH,01H,81H
TAB: DB DB DB DB END
跑马灯在生活中的应用
圣诞节 宣传语
装饰表达爱意讨论交流请私信我The end,thank you!
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 列置高电平 行置低电平
点阵共有64 个二极管每 个发光二极 管是放置在 行线和列线 的交叉点上
当对应的 某一列置 1电平, 某一行置 0电平, 则相应的 二极管就 亮
极性判断
可以看出点阵上面接口为高电平 控制,下面为低电平控制,才可以点亮小灯。
程序编写:
CJNE R6 , #18H, III MOV R6, #0 MOV DPTR, #200H SJMP III ORG 200H 0FFH, 0FFH, 7DH, 01H, 01H, 7DH, 0FFH, 0FFH 0E3H, 0C1H ,81H, 03H, 03H, 81H, 0C1H, 0E3H 0FFH, 81H, 01H, 3FH, 3FH, 3FH, 01H, 81H 0FFH, 0FFH,7DH, 01H, 01H, 7DH, 0FFH,0FFH
不同类型的跑马灯
跑马灯的工作原理
• 要求: • 51单片机连接二极管点阵,控制发光二极管流水 线式的发亮。 • 实现方式: • 1.点阵全亮 • 2.第一列亮,且逐次向右移动 • 3.三列同时亮,且向右移动 • 4.点阵显示“♡”形 • 5.循环显示“Ι ♡∪”字形
8x8LED点阵
工作原理说明 :