任务9__用自制的跑马灯电路实现8只LED循环点亮
此程序是用单片机的p1口接八个led灯作跑马灯试验
拆字程序Org 0000hMov A , 2000HAdd A ,#F0HMOV 2001H ,AMOV A ,2000HADD A , #0FHMOV 2002H , AMOV A , 2001HADD A , 2002HEND拆分BCD 码?***************************************************************************;此程序是用单片机的p1口接八个led灯作跑马灯试验,八个led依次亮了又熄灭,形成漂亮;的跑马灯。
本人已经试验成功。
;单片机教程网 原创;该8路单片机跑马灯程序代码简单,电路也容易搭建,只需把led接在p1口上就可以了,希望大家能试验成功顺利的完成跑马灯报告;***************************************************************************org 0000hloop0:cjne r0 ,#01h,rel,loop0 ;判断开关打开情况ajmp start;跳转到程序开始org 0030h;定义起始汇编地址start:mov a,#0ffh ;clr c ;mov r2,#08h ;循环八次。
loop: rlc a ;带进位左移。
mov p1,a ;此时led灯开始有反映了。
call delay ;延时djnz r2,loop ;循环(djnz条件判断)mov r2,#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,$djnz r4,d2```````````````````````````````````````````````---------3路单片机跑马灯程序---------------------------------------ORG 0000HLJMP MAINORG 030HMAIN: MOV P1,#0DBH ;化为2进制为11011011--0状态时led灯亮ACALL DELayMOV P1,#06DH ;化为2进制为01101101ACALL DELay ;MOV P1,#0B6H ;化为2进制为10110110ACALL DELayAJMP MAINdelay: mov r7,#255d1: mov r6,#255d2: djnz r6,d2djnz r7,d1retend。
最新8个led循环显示计数器
长沙学院课程设计说明书题目8个LED循环显示、计数器的设计系(部) 电子与通信工程系专业(班级)电气工程及其自动化2姓名学号2010指导教师瞿瞾起止日期电子设计自动化设计任务书系(部):电子与通信工程系专业:电气工程及其自动化指导教师:瞿曌课题名称8个LED循环显示、计数器的设计设计内容及要求试设计一个8个LED循环显示,同时数码管也显示LED亮的次数。
由于系统时钟为50MHz,直接当作时钟会由于计数速度太快而无法使发光二极管正常发光,因此首先需要对系统时钟进行分频,然后再以分频后的时钟作为计数器的计数时钟。
要求设置3个按钮,一个供“开始”用,一个供“停止”用,一个供系统“复位”用;对8个LED循环显示的延续时间进行调整;调整步长自定。
系统提供50MHZ频率的时钟源。
完成该系统的硬件和软件的设计,并制作出实物装置,调试好后并能实际运用(指导教师提供制作所需的器件),最后就课程设计本身提交一篇课程设计说明书。
设计工作量1、VHDL语言程序设计;2、波形仿真;3、在实验装置上进行硬件测试,并进行演示;4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、硬件测试、调试过程,参考文献、设计总结等。
进度安排起止日期(或时间量)设计内容(或预期目标)备注第1天课题介绍,答疑,收集材料第2天设计方案论证第3天进一步讨论方案, 对设计方案进行必要的修正,方案确定后开始进行VHDL语言程序设计第4天设计VHDL语言程序第5~9天在实验装置上进行硬件测试,对VHDL语言程序进行必要的修正,并进行演示第10天编写设计说明书教研室意见年月日系(部)主管领导意见年月日长沙学院课程设计鉴定表姓名学号专业电气工程及其自动化班级 2 设计题目8个LED循环显示、计数器的设计指导教师瞿曌指导教师意见:评定等级:教师签名:日期:答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名:日期:系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;目录一、设计任务 (1)二、设计要求 (1)三、设计原理 (1)四、设计步骤 (1)1)设计分频计数器 (1)2)设计数控分频 (2)3)LED灯循环设计 (3)4)数码管扫频 (3)5)8个数码管计数 (4)6)引脚分配 (6)五、设计流图 (6)六、程序语言 (6)七、设计思考与总结 (10)八、参考文献 (10)一、设计任务设计一个8个LED循环显示,同时数码管也显示LED亮的次数。
实验2-最简单的八路跑马灯-实验说明
实验2: 最简单的八路跑马灯1.0连接说明1.1用跳线帽将SP0排针连接;1.2依据ISP在线编程步骤将程序写到入芯片中;1.3打开电源程序即可运行。
1.4注意该实验结束后可将SP0上的跳线帽去掉,以减少开发板的功耗。
2.0相应原理图如下:3.0实验说明:本实验用到L1-8灯。
本例实验主要用到了延时子程序,clr,lcall,ajmp 指令,通过轮流点亮p1.0 …..P1.7 实现效果。
用户可以通过此程序的学习,初步掌握单片机的IO 端口操作。
练习1:怎样把延时的时间改为更短,或者更长?练习2:怎样用P0,P2,P3端口来操作?练习3:怎样实现不同的跑马花样?4.0程序范例:;//P1口控制跑马灯程序//ORG 0000HAJMP MAINORG 0030HMAIN:MOV P1,#0FFH;ACALL DELCLR P1.0 ;将P1.0送0指令ACALL DEL ;延时SETB P1.0CLR P1.1 ;将P1.1送0指令ACALL DEL ;延时SETB P1.1CLR P1.2 ;将P1.2送0指令ACALL DEL ;延时SETB P1.2CLR P1.3 ;将P1.3送0指令ACALL DEL ;延时SETB P1.3CLR P1.4 ;将P1.4送0指令ACALL DEL ;延时SETB P1.4CLR P1.5 ;将P1.5送0指令ACALL DEL ;延时SETB P1.5CLR P1.6;将P1.6送0指令ACALL DEL ;延时SETB P1.6CLR P1.7 ;将P1.7送0指令ACALL DEL ;延时SETB P1.7ACALL DELMOV P1,#00H;ACALL DELAJMP MAIN ;循环RET;//**************************//;//******延时子程序**********//;//**************************//ORG 0080HDEL: MOV R2,#255 ;想想为什么要这样?D1: MOV R3,#255D2: NOP ;延时2us秒,去掉几个NOP看结果怎样?NOPNOPNOPNOPDJNZ R3,D2DJNZ R2,D1RET。
八路彩灯循环显示
电子课程设计——8路彩灯显示目录一、设计任务与要求——————————————3二、总体框图—————————————————3三、选择器件—————————————————4四、功能模块—————————————————5五、总体设计电路———————————————7六、总结———————————————————9参考文献—————————————————9八路彩灯设计一、设计任务与要求控制8个LED进行花色显示,设计五种模式:LED从左到右依次闪烁;LED 从右到左依次闪烁;LED从中间到两边依次闪烁;LED奇数指示灯依次闪烁;LED偶数指示依次闪烁。
五种模式循环切换,复位键(CLR)控制系统的运行与停止。
二、总体框图方案一:图(1)方案一框图时钟输入:给分频电路时钟脉冲;计数器:控制五种循环模式的转换;移位寄存器:通过移位实现每种模式的所有状态;LED显示:彩灯演示;清零输入:CLR键,实现复位功能。
方案二;图(2)方案二框图时钟输入:给分频电路时钟脉冲;控制电路:状态机,当时钟输入给状态机一个脉冲输入后,状态机就会自动进行第一种循环,当第一种循环结束后,状态机会自动进行下一个循环,依次类推,当第五种循环模式结束后,状态机就会自动转换到第一种模式,这样一直循环下去。
LED显示:彩灯演示;清零输入:CLR键,实现复位功能;方案选择:方案二;选择理由:结构简单,易于实现。
三、选择器件1、Quartus II 6.0 软件;2、FPGA适配器实验板:标准配置是EP1C12Q240C8;3、下载接口是数字芯片的下载接口(JTAG),下载形式为USB-Blaster,主要用于FPGA芯片的数据下载;4、时钟源;5、电源、八个LED灯。
四、功能模块1、LED(状态机)模块图(3)LED(状态机)模块LED模块由两个主控进程控制,时序进程和辅助进程组成,各进程分工明确。
在完整的循环过程中,状态机中最先启动的是以CP为敏感信号的时序进程,当时序进程被启动后,按顺序进行五种循环模式,当CLR接收到一个低电平脉冲时,循环将自动恢复到第一种循环模式,继而进行循环.2、LED模块VHDL程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cdxs isport(led : out std_logic_vector(7 downto 0);vga: out std_logic_vector(3 downto 0); ---控制小灯亮暗cp ,clr : in std_logic;ledd: out std_logic); ---20MHZ clock signalend cdxs;architecture one of cdxs is--signal fre :STD_LOGIC;signal s :std_logic_vector(5 downto 0); ---6花色signal s1 :std_logic_vector(7 downto 0); ---赋值给8个小灯beginvga<="0001";p1:process(cp,clr)beginif clr='1' thens<= "000000";ledd<=s(1);elsif cp'event and cp='1' thenif s<="100010" then s<=s+1;elses<="000000";end if;end if;ledd<=s(1);if s= "000000" then s1<="10000000";elsif s= "000001" then s1<="01000000";elsif s= "000010" then s1<="00100000";elsif s= "000011" then s1<="00010000";elsif s= "000100" then s1<="00001000";elsif s= "000101" then s1<="00000100";elsif s= "000110" then s1<="00000010";elsif s= "000111" then s1<="00000001";elsif s= "001000" then s1<="00000010";elsif s= "001001" then s1<="00000100";elsif s= "001010" then s1<="00001000";elsif s= "001011" then s1<="00010000";elsif s= "001100" then s1<="00100000";elsif s= "001101" then s1<="01000000";elsif s= "001110" then s1<="10000000";elsif s= "001111" then s1<="00011000";elsif s= "010000" then s1<="00100100";elsif s= "010001" then s1<="01000010";elsif s= "010010" then s1<="10000001";elsif s= "010011" then s1<="10000000";elsif s= "010100" then s1<="00100000";elsif s= "010101" then s1<="00001000";elsif s= "010110" then s1<="00000010";elsif s= "010111" then s1<="01000000";elsif s= "011000" then s1<="00010000";elsif s= "011001" then s1<="00000100";elsif s= "011010" then s1<="00000001";elsif s= "100000" then s1<="11111111";else s1<="00000000";end if;led<=not s1;3、仿真结果图(4)时序仿真图仿真分析:有仿真结果可以看出,在清零端 CLR输入无效时,在时钟脉冲的作用下,LED[7..0]的状态分别为011111111,10111111,11011111,11101111,11110111,11111011,11111101,11111110。
八路循环彩灯电路原理图
工作原理
该电路先由光敏电阻、继电器、9014三极管组成光控制电路,电路的光敏电阻受到光的照射下,光敏电阻呈低阻状态,使9014三极管的基极电位降低,处于截止状态,继电器K不吸合,灯不亮;当光敏电阻不受到光照条件,光敏电阻的阻值逐渐变大,9014三极管的基极电位上升,当上升到一定程度后,9014三极管导通,继电器K吸合,电路有输出,灯亮。
再由555定时器、74LS90计数器、74LS138译码器组成八路彩灯循环电路(如图2)。
74LS90计数器的时钟
由555震荡电路提供,改变555的震荡频率可改变计数器的计数快慢,即可控制彩灯的闪烁快慢,计数器输出信号输入至138译码器,由138译码,根据计数器输出不同的计数结果,即可控制138译码器译码得到8种不同的输出信号,决定控制彩灯的循环变化。
显然,不同的计数器与译码器电路,得到的是不同的彩灯循环控制结果。
若译码器不变,在计数器的控制端输入不同的控制信号,进行不同的计数,则在输出端可见不同的彩灯循环输出。
任务9 用自制的跑马灯电路实现8只LED循环点亮
• 出栈指令格式为:POP direct ;(direct)←(SP) • • ;SP←SP-1 该指令执行时先将SP所指单元数据弹出至direct所指的地址单元, 然后SP减1指向新的栈顶单元地址。
• •
4)子程序调用指令 ) 子程序调用指令的功能调用子程序,执行时先将断点地址(调用 指令的下一条指令的首地址)压入堆栈区,然后将子程序的首地址送 PC,执行子程序。 (1)长调用指令LCALL addr16 ;PC←PC+3 ;SP←SP+1 ;(SP)←PC7-0 ;SP←SP+1 ;(SP)←PC15-8 ; PC←addr16
执行该指令时,先将PC+2得到下一条指令的16位首地址,并将其压入堆栈, 最后子程序标号所在的子程序入口地址送给PC,CPU转入子程序执行。由于短 调用指令中的PC高5位地址不变,所以其转移的范围为2KB。
任务9 用自制的跑马灯电路实现8只 任务 用自制的跑马灯电路实现 只LED循环点亮 循环点亮 程序分析讲解
任务9 用自制的跑马灯电路实现8只 任务 用自制的跑马灯电路实现 只LED循环点亮 循环点亮
9.1.3 跟我学 1)减1不为零循环转移指令 ) 不为零循环转移指令DJNZ 不为零循环转移指令 DJNZ Rn,rel ;PC←PC+2,Rn←(Rn)-1,若(Rn)≠0,则PC←PC+rel DJNZ direct,rel ;PC←PC+2, direct←(direct)-1,若(direct)≠0,则 PC←PC+rel; 每执行一次循环转移指令,第一操作数(Rn或direct中的数)减1,并 保存,若减1后结果不为零,则转移至目的地(标号处);若减1后结果为零, 则程序按顺序执行下一条指令。
Word版可编辑-八路循环彩灯电路设计精心整理.doc
八路循环彩灯电路设计摘要:灯光的闪烁和流动可以用于各种各样的装饰,例如电子门标、广告装饰等。
灯光的流动总是特别吸引别人的注意力。
在夜晚,在城市的街头,当广告牌上的灯光流动起来时,城市就会马上变得生动起来。
我所设计的彩灯控制电路是原理很简单的一种利用大学所学到的数电知识制成。
只要了解几种集成电路便可轻松明白它的原理。
做好的彩灯可以放在室内,主人会感到温馨;放在餐厅等地方可以增加氛围。
本文基于电子线路CAD常用软件Protel99SE设计了一个简单的循环彩灯电路,各路彩灯由发光二极管模拟代替。
采用555定时器,计数器,移位器,产生控制循环信号,再利用74LF161A计数器和74LS194左右移位寄存器组成驱动电路来依次控制彩灯循环闪烁。
循环彩灯电路由驱动电路、输出电路、时钟电路和电源等为整个系统工作提供所需的能源。
CMOS 电路对电源电压的要求相对比较宽松。
循环彩灯电路是由TTL集成电路做成,并且采用5伏电源供电。
时钟电路是由555多谐自激震荡集成电路制成,与电阻和电容一起构成时钟周期发生器,为电路提供时钟信号,支持整个电路的工作。
驱动电路是由74LF161A计数器和74LS194左右移位寄存器组成,用以驱动发光二极管正常工作,并且在时钟电路的控制下让八个发光二极管循环工作。
关键词:八路彩灯;555定时器;计数器;移位寄存器The Design Of Eight Lines Circulating Lights Abstract: Lights flashing and the flow can be used for a variety of decoration, such as electronic door standard, advertising and decoration. The flow of light is always special to attract people's attention. At night, the streets in the city, when the flow of light on the billboards up, the city will soon get to life. I designed the lights control circuit is a very simple principle learned to use the University made several electrical knowledge. As long as several integrated circuits can easily understand its principles. Do the lights can be placed indoors, the owner will feel warm; on restaurants and other places to increase the atmosphere.Based on the electronic circuits commonly used CAD software Protel99SE designed a simple circuit lights cycle, and the brightest lights from the light-emitting diode simulations instead. Using 555 timers, counters, shifters, resulting in the control loop signal, and then use 74LF161A around the counter and 74LS194 shift registers control drive circuit to turn lights cycling. Cycle lights circuit by the drive circuit, output circuit, clock circuit and power supply for the entire system to provide the necessary energy. CMOS circuits the power supply voltage requirements are relatively relaxed. Cycle lights circuit is made by TTL integrated circuits, and the 5-volt power supply. Clock circuit is more than 555 integrated circuit made of harmonic self-excited oscillation, together with resistors and capacitors constitute the clock generator providing clock signals for the circuit to support the entire circuit. Drive circuit is 74LF161A counter and shift register 74LS194 about the composition, light-emitting diodes to drive to work, and under the control of the clock circuit so that the work cycle of eight light-emitting diodes.Key words:Eight lines circulating lights; 555 timer; Counter; Shift register目录1引言 (1)2 系统组成及工作原理 (1)2.1 基础设计目的 (1)2.2 基础设计要求 (1)2.3 总体设计思路 (2)2.4 电路框图 (2)2.5 PCB板布线 (2)2.5.1 布局规则 (2)2.5.2 布线规则 (2)3 循环彩灯的系统组成 (3)3.1 555定时器电路 (3)3.1.1 定时器电路产生时钟脉冲 (3)3.1.2 555定时器组成的多谐振荡电路 (4)3.2 74F161A及74LS194的功能 (5)3.2.1 74F161A四位二进制同步计数器 (5)3.2.2 74LS194四位双向移位寄存器 (6)3.3 设计彩灯控制电路 (7)3.4 电路图的仿真 (7)3.5 PCB板布线与制做方案的实施 (7)3.5.1 PCB板布线 (7)3.5.2 PCB板制作 (8)4 循环电路的总体设计 (8)4.1 循环彩灯原理图 (8)4.2循环彩灯仿真图 (9)4.3 循环彩灯PCB图 (9)4.4循环彩灯装配图 (10)4.5 循环彩灯实物图 (10)5 实验结果的调试与检验 (11)5.1 调试技巧方法 (11)5.2 调试中出现的原因、故障及排除的方法 (11)6 总结与设计结论 (11)6.1 总体结果 (11)6.2 设计结论 (12)6.3 收获 (12)参考文献 (15)致谢......................................................错误!未定义书签。
实验、中断控制的8个LED灯轮流点亮电路
实验八、中断控制的8个LED灯轮流点亮电路专业: 班级:姓名: 学号:成绩:一、实验目的1.掌握中断程序的分析方法和设计方法。
2.学习电平触发方式及负脉冲触发方式的电路设计方法。
3.学习读程序,并能写出中断初始化程序段。
二、实验器材单片机开发设备一套。
三、实验内容和步骤试设计一个用单片机中断控制的8个LED灯轮流点亮的仿真控制系统,当按下一个按键之后,LED1灯亮,再按下一个按键后,彩灯顺次点亮一个。
要求按照电平触发和负脉冲触发两种方式来设计电路并进行程序设计。
电平触发方式下的仿真图:附加题:请设计一个电路,能实现开关控制的数码管显示0-9数字。
电平触发方式下的程序:ORG 0000HAJMP MAINORG 0013HAJMP SERVERORG 0030HMAIN:MOV A,#01HCLR IT1SETB EX1SETB EA SJMP $ORG 0200H SERVER:CLR P3.0 NOPNOPSETB P3.0MOV P1,ARL ARETIEND负脉冲触发方式下接于P3.3端口的仿真图:负脉冲触发方式下的程序:ORG 0000HAJMP MAINORG 0013HAJMP SERVERORG 0030HMAIN:MOV A,#11111110B MOV P1,A SETB IT1SETB EX1SETB EASJMP $ORG 0200HSERVER:CLR P3.3NOPNOPSETB P3.3MOV P1,ARL ARETIEND。
8个LED灯循环闪烁课程设计
摘要“微机原理与接口技术”是高等学校电子信息工程、通信工程、自动化、电气工程及其自动化等工科电气与电子信息类各专业的核心课程。
该课程以INTER 8086微处理器和IBM PC系列微机为主要对象,系统。
深入地介绍了微型计算机的基本组成、工作原理、接口技术及应用,把微机系统开发过程中用到的硬件技术和软件技术有机地结合起来。
本文详述了8个LED灯循环闪烁的课程设计。
设置8个LED灯,首先是1、3、5、7号LED依次亮1秒钟,当7号LED亮后,这四个灯同时闪烁5下。
然后是2、4、6、8号LED 依次亮1秒钟,当8号LED亮后,这四个灯同时闪烁5下。
本课程设计,由于自身能力和学习水平有限,可能存在一定的错误和不当之处,敬请批评和指正。
一、设计目的1.巩固和加深课堂所学知识;熟悉各种指令的应用及条件;2.学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;3.进一步了解8255A各引脚的功能, 8255A和系统总线之间的连接, 8255A和CPU 之间的数据交换,以及8255A的内部逻辑结构。
深入掌握8255A显示电路的基本功能及编程方法,8255等芯片的工作方式、作用。
4.培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。
通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。
同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
二、设计内容根据所学内容和对8255A的应用,整个系统硬件采用8086微处理器和8255A可编程并行接口芯片和8个LED等连成硬件电路。
设计8个LED灯,实现如下要求:首先是1、3、5、7号LED依次亮1秒钟,当7号LED亮后,这四个灯同时闪烁5下。
然后是2、4、6、8号LED依次亮1秒钟,当8号LED亮后,这四个灯同时闪烁5下。
三、设计要求使用8255A可编程接口芯片实现8个LED灯以十种不同的方式显示。
8盏灯按一定的规律亮法进行循环点亮
(彩灯循环plc梯形图程序)
我们的实验题目为8盏灯按一定的规律亮法进行循环点亮,我们这组的规律为12345678号灯,先1357号灯依次点亮,再2468号灯依次点亮然后进行循环,我们的编程思路是利用延时实现下个动作对上个动作的控制,最开始编程的时候出现了一些问题,例如一些逻辑错误,但是后来经过我们组小组成员的认真检查和改正最后终于达到实验要求和我们预想的实验效果。
通过这次实验,我们进一步了解了plc梯形图编程的特点增强了自己的团队合作能力,丰富了自己的专业知识。
也让我了解了关于PLC设计原理。
有很多设计理念来源于实际,从中
找出最适合的设计方法。
虽然本次课程设计是要求自己独立完成,但是,彼此还是脱离不了集体的力量,遇到问题和同学互相讨论交流。
多和同学讨论。
我们在做课程设计的过程中要不停的讨论问题,这样,我们可以尽可能的统一思想,这样就不会使自己在做的过程中没有方向,并且这样也是为了方便最后设计和在一起。
讨论不仅是一些思想的问题,还可以深入的讨论一些技术上的问题,这样可以使自己的处理问题要快一些,少走弯路。
多改变自己设计的方法,在设计的过程中最好要不停的改善自己解决问题的方法,这样可以方便自己解决问题。
实现8个LED流水灯汇编语言程
START: MOV ACC,#0FEH ;ACC 中先装入LED1 亮的数据(二进制的11111110 )MOV P1,ACC ;将ACC 的数据送P1 口MOV R0,#7 ;将数据再移动7 次就完成一个8 位流水过程LOOP: RL A ;将ACC 中的数据左移一位MOV P1,A ;把ACC 移动过的数据送p1 口显示ACALL DELAY ;调用延时子程序DJNZ R0,LOOP ;没有移动够7 次继续移动AJMP START ;移动完7 次后跳到开始重来,以达到循环流动效果延时子程序DELAY: MOV R0,#255 ;延时一段时间D1: MOV R1,#255DJNZ R1,$DJNZ R0,D1RET ;子程序返回END ;程序结束START: CLR P1.0 ;P1.0 输出低电平,使LED1 点亮ACALL DELAY ;调用延时子程序SETB P1.0 ;P1.0 输出高电平,使LED1 熄灭CLR P1.1 ;P1.1 输出低电平,使LED2 点亮ACALL DELAY ;调用延时子程序SETB P1.1 ;P1.1 输出高电平,使LED2 熄灭CLR P1.2 ;P1.2 输出低电平,使LED3 点亮ACALL DELAY ;调用延时子程序SETB P1.2 ;P1.2 输出高电平,使LED3 熄灭CLR P1.3 ;P1.3 输出低电平,使LED4 点亮ACALL DELAY ;调用延时子程序SETB P1.3 ;P1.3 输出高电平,使LED4 熄灭CLR P1.4 ;P1.4 输出低电平,使LED5 点亮ACALL DELAY ;调用延时子程序SETB P1.4 ;P1.4 输出高电平,使LED5 熄灭CLR P1.5 ;P1.5 输出低电平,使LED6 点亮ACALL DELAY ;调用延时子程序SETB P1.5 ;P1.5 输出高电平,使LED6 熄灭CLR P1.6 ;P1.6 输出低电平,使LED7 点亮ACALL DELAY ;调用延时子程序SETB P1.6 ;P1.6 输出高电平,使LED7 熄灭CLR P1.7 ;P1.7 输出低电平,使LED8 点亮ACALL DELAY ;调用延时子程序SETB P1.7 ;P1.7 输出高电平,使LED8 熄灭ACALL DELAY ;调用延时子程序AJMP START ;8 个LED 流了一遍后返回到标号START 处再循环延时子程序DELAY: MOV R0,#255 ;延时一段时间D1: MOV R1,#255DJNZ R1,$DJNZ R0,D1RET ;子程序返回END ;程序结束ORG 0000H ; 上电复位,程序从 0000H 开始执行END ;程序结束START: MOVSP,#60HMOVDPTR,#LIU_TAB LOOP:CLR AMOVC A,@A+DPTRCJNEA,#0FFH,SHOWAJMPSTARTSHOW:MOV P1,A ACALL DELAYINC DPTRAJMP LOOP延时子程序; 堆栈初始化为 60H;流水花样表首地址送 DPTR;检查流水结束标志;所有花样流完 ,则从头开始重复流;将数据送到 P1 口DELAY: MOV R0,#255;延时一段时间D1:MOV R1,#255DJNZ R1,$DJNZR0,D1RET;子程序返回; ---- 下面是流水花样数据表 -----LIU_TAB:DB 01111111B ;二进制表示的流水花样数据DB 10111111B DB 11011111B DB 11101111B DB 11110111B DB 11111011B DB 11111101B DB 11111110B DB 11111110B DB 11111101B DB 11111011B DB 11110111B DB 11101111B DB 11011111B DB 10111111B DB 01111111BDB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ; 十六进制表示 DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH DB 7EH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH,7EH DB 7FH,3FH,1FH,0FH,07H,03H,01H,00H DB 0FFH;流水花样结束标志 0FFH延时子程序,12M 晶振延时约250 毫秒DELAY:MOV R4,#2L3: MOV R2 ,#250L1: MOV R3 ,#250L2: DJNZ R3 ,L2DJNZ R2 ,L1DJNZ R4 ,L3RETorg 00h ;程序上电从00h 开始ajmp main ;跳转到主程序org 0030h ;主程序起始地址main:mov a,#0feh ;给A 赋值成11111110loop:mov p1,a ;将A 送到P1 口,发光二极管低电平点亮lcall delay ; 调用延时子程序rl a ; 累加器A 循环左移一位ajmp loop ; 重新送P1 显示delay:mov r3,#20 ;最外层循环二十次d1:mov r4,#80 ;次外层循环八十次d2:mov r5,#250 ;最内层循环250 次djnz r5,$ ;总共延时2us*250*80*20=0.8Sdjnz r4,d2djnz r3,d1 ret end如何精确计算延时子程序的执行时间?汇编语言的一大优势就是能够精确控制程序的执行时间,这在编写一些对时序要求严格的外围器件驱动时由为重要!;延时子程序,12M 晶振延时约253 毫秒DELAY:MOV R4 ,#2 ------执行 1 个机器周期,耗时 1 微秒L3: MOV R2 ,#250---执行1 个机器周期,耗时 1 微秒L1: MOV R3 ,#251---执行 1 个机器周期,耗时 1 微秒L2:DJNZ R3 ,L2 ---------- 执行2个机器周期,反复执行251次(2x251) = 502 微秒)DJNZ R2 ,L1 -------------- 执行2个机器周期,反复执行250次(1 + 502+ 2)*250=126250微秒)DJNZ R4丄3 ------------- 执行2个机器周期,反复执行2次(1+1+502+126250+2)*2=253512微秒)RETdelay 加上第一条总共延时1+253512=253513微秒。
实现8个LED流水灯汇编语言程
START:MOV ACC,#0FEH ;ACC中先装入LED1亮的数据(二进制的11111110)MOV P1,ACC ;将ACC的数据送P1口MOV R0,#7 ;将数据再移动7次就完成一个8位流水过程LOOP: RL A ;将ACC中的数据左移一位MOV P1,A ;把ACC移动过的数据送p1口显示ACALL DELAY ;调用延时子程序DJNZ R0,LOOP ;没有移动够7次继续移动AJMP START ;移动完7次后跳到开始重来,以达到循环流动效果;----- 延时子程序-----DELAY:MOV R0,#255;延时一段时间D1:MOV R1,#255DJNZ R1,$DJNZ R0,D1RET;子程序返回END;程序结束START:CLR P1.0 ;P1.0输出低电平,使LED1点亮ACALL DELAY;调用延时子程序SETB P1.0;P1.0输出高电平,使LED1熄灭CLR P1.1;P1.1输出低电平,使LED2点亮ACALL DELAY;调用延时子程序SETB P1.1;P1.1输出高电平,使LED2熄灭CLR P1.2;P1.2输出低电平,使LED3点亮ACALL DELAY;调用延时子程序SETB P1.2;P1.2输出高电平,使LED3熄灭CLR P1.3;P1.3输出低电平,使LED4点亮ACALL DELAY;调用延时子程序SETB P1.3;P1.3输出高电平,使LED4熄灭CLR P1.4;P1.4输出低电平,使LED5点亮ACALL DELAY;调用延时子程序SETB P1.4;P1.4输出高电平,使LED5熄灭CLR P1.5;P1.5输出低电平,使LED6点亮ACALL DELAY;调用延时子程序SETB P1.5;P1.5输出高电平,使LED6熄灭CLR P1.6;P1.6输出低电平,使LED7点亮ACALL DELAY;调用延时子程序SETB P1.6;P1.6输出高电平,使LED7熄灭CLR P1.7;P1.7输出低电平,使LED8点亮ACALL DELAY;调用延时子程序SETB P1.7;P1.7输出高电平,使LED8熄灭ACALL DELAY;调用延时子程序AJMP START;8个LED流了一遍后返回到标号START处再循环;----- 延时子程序-----DELAY:MOV R0,#255;延时一段时间D1:MOV R1,#255DJNZ R1,$DJNZ R0,D1RET;子程序返回END;程序结束ORG0000H;上电复位,程序从0000H开始执行START:MOV SP,#60H;堆栈初始化为60HMOV DPTR,#LIU_TAB;流水花样表首地址送DPTR LOOP: CLR AMOVC A,@A+DPTRCJNE A,#0FFH,SHOW;检查流水结束标志AJMP START;所有花样流完,则从头开始重复流SHOW: MOV P1,A;将数据送到P1口ACALL DELAYINC DPTRAJMP LOOP;----- 延时子程序-----DELAY:MOV R0,#255;延时一段时间D1:MOV R1,#255DJNZ R1,$DJNZ R0,D1RET;子程序返回;----- 下面是流水花样数据表-----LIU_TAB:DB 01111111B ;二进制表示的流水花样数据DB 10111111BDB 11011111BDB 11101111BDB 11110111BDB 11111011BDB 11111101BDB 11111110BDB 11111110BDB 11111101BDB 11111011BDB 11110111BDB 11101111BDB 11011111BDB 10111111BDB 01111111BDB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;十六进制表示DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FHDB 7EH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH,7EHDB 7FH,3FH,1FH,0FH,07H,03H,01H,00HDB 0FFH ;流水花样结束标志0FFHEND;程序结束延时子程序,12M晶振延时约250毫秒DELAY:MOV R4,#2L3: MOV R2 ,#250L1: MOV R3 ,#250L2: DJNZ R3 ,L2DJNZ R2 ,L1DJNZ R4 ,L3RETorg 00h ;程序上电从00h开始ajmp main ;跳转到主程序org 0030h ;主程序起始地址main:mov a,#0feh ;给A赋值成11111110loop:mov p1,a ;将A送到P1口,发光二极管低电平点亮 lcall delay ;调用延时子程序rl a ;累加器A循环左移一位ajmp loop ;重新送P1显示delay:mov r3,#20 ;最外层循环二十次d1:mov r4,#80 ;次外层循环八十次d2:mov r5,#250 ;最内层循环250次djnz r5,$ ;总共延时2us*250*80*20=0.8Sdjnz r4,d2djnz r3,d1retend如何精确计算延时子程序的执行时间?汇编语言的一大优势就是能够精确控制程序的执行时间,这在编写一些对时序要求严格的外围器件驱动时由为重要!;延时子程序,12M晶振延时约253毫秒DELAY:MOV R4,#2------执行1个机器周期,耗时1微秒L3: MOV R2 ,#250---执行1个机器周期,耗时1微秒L1: MOV R3 ,#251---执行1个机器周期,耗时1微秒L2: DJNZ R3 ,L2---执行2个机器周期,反复执行251次(2x251)=502微秒)DJNZ R2 ,L1-----执行2个机器周期,反复执行250次(1+502+2)*250=126250微秒)DJNZ R4 ,L3-----执行2个机器周期,反复执行2次(1+1+502+126250+2)*2=253512微秒)RETdelay 加上第一条总共延时1+253512=253513微秒。
嵌入式技术与应用开发项目教程(STM32版)习题答案
嵌入式技术与应用开发项目教程(STM32版)习题答案项目一LED控制设计与实现1-1 嵌入式系统是如何定义的?嵌入式系统(Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是控制、监视或辅助设备、机器或用于工厂运作的设备。
目前,国内普遍认同的嵌入式系统定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
1-2 嵌入式系统具有哪些特点?嵌入式系统具有以下几个显著特点:(1)嵌入式系统是面向特定应用;(2)软件要求固态化存储;(3)嵌入式系统的硬件和软件都必须具备高度可定制性;(4)嵌入式系统的生命周期较长;(5)嵌入式系统开发需要开发工具和环境。
1-3 ARM Cortex-M3处理器是哪几个部分组成?嵌入式系统一般是由嵌入式处理器、存储器、输入输出和软件(嵌入式设备的应用软件和操作系统是紧密结合的)等4部分组成。
1-4 简述STM32F103系列产品的命名规则。
STM32F103系列产品的命名规则,是按照“STM32F103XXYY”格式来命名的,具体含义如下:(1)产品系列:STM32是基于ARM Cortex-M3内核设计的32位微控制器;(2)产品类型:F是通用类型;(3)产品子系列:101是基本型、102是USB基本型(USB全速设备)、103是增强型、105或107是互联型;(4)引脚数目(第一个X):T是36脚、C是48脚、R是64脚、V是100脚、Z是144脚;(5)闪存存储器容量(第二个X):4是16K、6是32K、8是64K、B是128K、C是256K、D是384K、E是512K;(6)封装(第一个Y):H是BGA、T是LQFP、U是VFQFPN、Y是WLCSP64;(7)温度范围(第二个Y):6是工业级温度范围-400C~850C、7是工业级温度范围-400C~1050C。
最简单的八路跑马灯电路图
最简单的八路跑马灯电路图
文章出处: 发布时间:2009-5-3 0:00:00 | 562 次阅读| 2次推荐| 0条留言
本例实验主要用到了延时子程序,clr,lcall,ajmp 指令,通过轮流点亮p1.0 …..P1.7 实现效果。
用户可以通过此程序的学习,初步掌握单片机的IO端口操作。
参考程序:
;实验1最简单的8路跑马灯。
用一条8PIN的数据排线把CPU部份的P1口(JP44)连接到八路指示灯部份的JP32
;可以看到8路灯轮流闪烁
org 0000h ;开始
ajmp loop
org 0030h ;到0030h处避开00-30的敏感地址
loop:
mov p1,#0ffh;关闭所有灯
clr p1.0 ;点亮灯p1.0
lcall delay ;延时一段时间?
clr p1.1 ;点亮灯p1.1
lcall delay
clr p1.2 ;点亮灯p1.2
lcall delay
clr p1.3 ;点亮灯p1.3
lcall delay
clr p1.4 ;点亮灯p1.4
lcall delay
clr p1.5 ;点亮灯p1.5
lcall delay
clr p1.6 ;点亮灯p1.6
lcall delay
clr p1.7 ;点亮灯p1.7
lcall delay
AJMP LOOP;到最开始loop处重新运行delay: mov r5,#20 ;延时。
d1: mov r6,#40
d2: mov r7,#248
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
end。
单片机课程设计报告八路LED跑马灯实验
目录一、引言—本课程设计的目的 (2)二、八路LED跑马灯实验 (2)2.1设计内容 (2)2.2电路图 (2)2.3上机程序 (3)2.4调试结果及结论: (4)三、二位数码管循环显示00~99的实验 (4)3.1设计内容 (4)3.2电路图 (4)3.3上机程序 (5)3.4调试结果及结论 (6)四、单片机演奏音乐实验 (6)4.1设计内容 (6)4.2电路图 (6)4.3上机程序 (7)4.4调试结果及结论 (9)五、心得体会 (9)六、参考文献 (10)摘要:由于单片机体积小、成本低、使用方便,所以被广泛地应用于仪器仪表、现场数据的采集和控制。
通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用。
关键词:单片机,程序,跑马灯,数码管,测试……一、引言—本课程设计的目的以本学期对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、更深一步的理解,面对一个电子设计,应对出系统的方案,分析出各个板块来,再对各个板块进一步的具体的设计,先进行硬件电路设计,此时一定要考虑好要用什么元件、各个元件的具体参数、是否能实现应有功能,从而得到一个完整的硬件电路。
在根据该电路设计出软件的功能模块、从而完成程序流程图,在根据流程图完成程序的设计,并通过反复的调试、运行、更正,直至完成既定功能为止,最后将软件、硬件结合进行调试、运行,对其功能进行最终测试,并反复思考其测试中遇到相应问题的原因,并将其一一处理,从而完成本次设计的实验要求,以及本次课程设计的最终目的。
二、八路LED跑马灯实验2.1设计内容:八路发光二极管轮流点亮的实验,也就是通常所说的跑马灯实验,首先让我们来完成必须的硬件部分,我们需要焊接上8个发光二极管和8个限流电阻,可以参考下面的原理图和实物图像进行操作,需要注意的是LED是有极性的,引脚长的为正极,引脚短的为负极,负极和电阻一侧连接,如果接错那么相应的那一路可能在实验中不会点亮了。
【8个流水灯来回点亮设计程序】
单片机C语言如何实现8个LED流水灯来回流动?第一部分参考程序#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int//--------------------------------void DelayMS(uint ms){uchar t;while(ms--) for (t=0;t<120;t++);}//----------------------------------void main(){P2= 0xfe;while (1){P2 =_crol_(P2,1);DelayMS(200);}}2012-06-14 17:06 芯DZ|分类:C/C++|浏览267次现在只能从左到右循环流动,怎么才能从左到右再从右到左流动呢?#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit beep=P2^3;uchar p1e;void delay(uint a);void main(){p1e=0xfe;P1=p1e;while(1){p1e=_crol_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}}void delay(uint a){uint x,y;for(x=a;x>0;x--)for(y=150;y>0;y--); }提问者采纳2012-06-14 17:51char i;while(1){for(i=0; i<7; i++){p1e=_crol_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}for(i=0; i<7; i++){p1e=_cror_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}}CYF0316|六级p1e=_cror_(p1e,1);追问这个只是向右移吧...我是说向左移动到第8个LED后再从第8个向左移,实现来回流动回答1,赋值2,右移动3,再赋值4,左移动你程序都写出了只是把程序COPy 粘帖到下面把p1e=_crol_(p1e,1); 改成p1e=_cror_(p1e,1); 就好了呀第二部分参考、归纳、总结得正确程序(仅供参考)#include <AT89X51.H>#include <intrins.h>#define uchar unsigned char#define uint unsigned intvoid DelayMS(uint ms) {uchar t;while(ms--) for (t=0;t<120;t++);}void main(){ char i;P2= 0xfe;while (1){for(i=0; i<7; i++){P2 =_crol_(P2,1);DelayMS(200);}for(i=0; i<7; i++){P2 =_cror_(P2,1);DelayMS(200);}}}以下是附加文档,不需要的朋友下载后删除,谢谢班主任工作总结专题8篇第一篇:班主任工作总结小学班主任特别是一年级的班主任,是一个复合性角色。
八路循环彩灯控制电路设计
课程设计报告书试验大致思路如下:3.器件管脚分配图:图1(4017管脚分配图)CD4017是十进制计数器,它包含译码器。
计数器在时钟禁止输入为低电平时,在时钟脉冲上升沿进位。
在时钟禁止输入为高电平时,时钟被禁止。
复位输入为高电平时,时钟输入独立运行。
该芯片是一个十进制分配器,只要在其脉冲信号输入端接入脉冲信号,每来一个脉冲信号时,该芯片就会从Q0~~Q9~~Q0循环发出高电平,并且能够保持这个脉冲信号没有结束时,一直是高电平。
由此可知,该芯片能够运用于控制端或者是用于循环彩灯等等方面的应用。
引出端功能符号CO:进位脉冲输渊CP:时钟输入端CR:清除端INH:禁止端Q0-Q9 计数脉冲输出端VDD:正电源VSS:地真值表输入输出CP INH CR Q0-Q9 CO× × H Q0↑L LH ↓L计数计数脉冲为Q0-Q4时:CO=HL × L× H L↓× L×↑L保持计数脉冲为Q5-Q9时:CO=L图2(4069管脚分配图)CD4069又称为六反向器,广泛运用于各种电路设计中。
当Vcc=5~10V时,C110uFU1A 4069BCL_5V U2B 4069BCL_5V R210kΩR1200kΩ1234图4图4为电路中的一部分,是用来产生时钟脉冲的多谐振荡器,它仿真图如下图5整个电路的仿真图如下;。
八路LED跑马灯实验(精)
八路LED跑马灯实验杨定安现在让我们开始做第一个实验:八路发光二极管轮流点亮的实验,也就是通常所说的跑马灯实验,首先让我们来完成必须的硬件部分,我们需要焊接上8个发光二极管和8个限流电阻,可以参考下面的原理图和实物图像进行操作,需要注意的是LED是有极性的,引脚长的为正极,引脚短的为负极,负极和电阻一侧连接,如果接错那么相应的那一路可能在实验中不会点亮了,在焊接前要看仔细哦~~~下面我们来完成软件编程设计,这里我们没有采用高深的编程技巧,而是用了最笨、最直接的向端口送数的办法来实现,一来程序比较简单,没必要玩深沉,而且初学者看起来直观易懂。
ORG 0000HSTART:MOV P1,#01111111B;最下面的LED点亮LCALL DELAY;延时1秒MOV P1,#10111111B;最下面第二个的LED点亮LCALL DELAY;延时1秒MOV P1,#11011111B;最下面第三个的LED点亮(以下省略)LCALL DELAYMOV P1,#11101111BLCALL DELAYMOV P1,#11110111BLCALL DELAYMOV P1,#11111011BLCALL DELAYMOV P1,#11111101BLCALL DELAYMOV P1,#11111110BLCALL DELAYMOV P1,#11111111B;完成第一次循环点亮,延时约0.25秒AJMP START;反复循环;延时子程序,12M晶振延时约250毫秒DELAY:MOV R4,#2L3: MOV R2 ,#250L1: MOV R3 ,#250L2: DJNZ R3 ,L2DJNZ R2 ,L1DJNZ R4 ,L3RETEND这是上面程序汇编以后获得的编程器烧写文件:201.hex下载烧写文件的方法:将鼠标移到烧写文件的超级键连处,点击鼠标的右键,选择“目标另存为(A)...”保存文件类型中不要选择“文本文件”,应该选择“所有文件”,这样就能获得*.hex 文件了。
八位流水灯设计报告
八位流水灯循环点亮电路设计1.设计要求采用74LS138芯片,实现8位流水灯循环点亮电路。
2.题目分析74LS138为3-8线译码器,它的工作原理是:①当一个选通端(E1)为高电平,另两个选通端E2和E3为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。
举例说明:如果A2A1A0=001,那么Y1输出0,其余输出1,发光二极管阴极接Y0-Y7,阳极接VCC,接上限流电阻,则Y1端发光二极管发光。
课题要求设计八位二极管循环点亮,则需要一系列脉冲序列,使得A2A1A0电平发生变化。
即依次选通Y0-Y7,脉冲从000-111。
3.方案选择利用74LS138选通发光二极管发光。
利用74LS161产生000-111脉冲控制74LS138的A2A1A0,依次选通Y0-Y7。
产生脉冲序列也可以用74LS191是四位二进制同步加/减计数器,与74LS161相比,它能够实现减计数,此处只需要求产生脉冲序列,而且74LS161是常用的计数器,所以选择74LS161产生脉冲序列。
74LS161计数必须有时钟脉冲,如何获得时钟脉冲:一、函数发生器获得;二、555定时器可以产生方波;三、LM358设计成方波发生器。
因为在电子设计这门课程中,我们做过LED闪烁灯,产生方波的原理前面实验报告中已经有所介绍,所以决定采用555定时器产生方波,而且频率更容易控制。
到此,所需设计已经完成,但如果加上数码管显示第几个LED灯发光,还需要讲信号进行译码,才能输出显示数字。
采用4511芯片驱动数码管,功耗比较低。
4.原理框图5.主要元器件介绍5.1 74LS13874LS138 为3 线-8 线译码器,其工作原理如下:●当一个选通端(E1)为高电平,另两个选通端(E2)和(E3)为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。
●若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。
八路彩灯循环点亮电路设计
数字电子技术课程设计设计题目:八路彩灯循环点亮电路设计学院:专业:____班级:学号:学生姓名:指导教师:2009年 7月 09日目录前言 (3)设计题目 (4)1 设计要求及主要技术指标.. (4)1.1 设计要求 (4)1.2 主要技术指标 (4)2 设计过程 (4)2.1题目分析 (4)2.2 整体构思 (5)2.3 具体实现 (5)3 元件说明及相关计算 (6)3.1 元件说明 (6)3.2 相关计算..................................... . (12)4 调试过程 (12)4.1 调试过程 (12)4.2 遇到问题及解决措施..................... . (13)5 心得体会......... ......... ......... ............. (14)参考文献......................................... (14)附录一:电路原理图 (15)附录二:元件清单 (16)前言电子电路中的信号可分为两类:一类是随时间连续变化的信号,称为模拟信号,例如温度的变化、声音在空气中的传播、表的指针指示的时间、正弦交流信号等。
用来产生、传输、处理模拟信号的电路称为模拟电路。
另一类是时间上和数值上都不连续变化的离散信号,称为数字信号,例如数字电子表显示的时间量、数字万用表测量的量、工厂产品量的统计等。
用来产生、传输、处理数字信号的电路称为数字电路。
数字电路的工作信号在时间上和数值上是不连续变化的。
数字信号反映在电路上只有高电平和低电平两种状态,高电平通常为+3.5 v左右,低电平通常为+0.3 v左右。
这两种状态很方便地用二极管或三极管的导通、截止即开、关状态来实现。
分别用1和。
表示这两个状态,就可以用二进制数进行信息的传输和处理。
所以数字电路就不能采用模拟电路的分析方法。
利用数字电路技术数出给定时间内所通过的脉冲数并显示计数结果的数字化仪器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•
;(SP)←(direct)
• 执行时堆栈指针SP先加1,然后将直接地址direct中的数据压至SP所 指定的地址单元。如:MOV SP ,#50H ;设置栈底为50H单元
• MOV 30H,#25H ;将立即数25H送30H单元
• PUSH 30H ;将30H中的数据25H压入堆栈区51H单元
• 出栈指令格式为:POP direct ;(direct)←(SP)
每执行一次循环转移指令,第一操作数(Rn或direct中的数)减1,并 保存,若减1后结果不为零,则转移至目的地(标号处);若减1后结果为零, 则程序按顺序执行下一条指令。
任务9 用自制的跑马灯电路实现8只LED循环点亮
• 2)移位指令
•
移位指令的功能是对累加器A的内容进行循环移位,除了带进位标
志位CY的移位指令会影响CY外,其它指令都不影响CY、AC、OV等标志
任务9 用自制的跑马灯电路实现8只LED循环点亮
• 9.1.1 明确工作任务 • 用任务3制作的8位LED跑马灯电路,通过编写程序控制与P0口相连
的8个LED灯循环点亮,每个灯点亮的时间为0.5秒。
任务9 用自制的跑马灯电路实现8只LED循环点亮
9.1.2 跟我想 1. 编写跑马灯程序思路
该任务要求通过编写程序,使连接P0口的8个LED灯循环点亮(跑马灯), 每个灯点亮的时间为0.5秒。怎样来编写程序呢?我们用一个寄存器R1存储 用于点亮P0口的LED灯的数据,R1首先存储点亮与P0.0相连的LED灯D0 (数据为:0000001H),可以通过指令MOV P0,R1将与P0.0相连的 LED0点亮,然后调用延时0.5秒的程序,延时时间到后,可以带进位位左移 指令RR A,将R1中的数据左移一位(数据为:00000010),再送给P0口, 点亮与P0.1相连的LED灯D1,依次类推;用寄存器R2存储LED灯从D0移动 到D7的移动次数为8次,每移一次减1,R2的值为0时,表示第1次循环结束, 接下来又从点亮D0开始下一个循环,就这样反复循环点亮,达到跑马灯的效 果。
3)堆栈操作指令 (1)堆栈的概念
堆栈就是按照堆放货物(先堆下面,先搬上面,即后进先出)的思路, 设计一种按后进先出原则组成的存储区,称为堆栈区。在51单片机中,片 内RAM都可用做堆栈区。 在使用堆栈前,应设置一个栈底,告诉CPU从那个地址单元开始堆放数 据,如栈底为40H单元,第1个数(设:#30H)存放在栈底的上一个单元 41H中,则第2个数存放42H单元中,如果有多个数要堆放在堆栈区中, 以此类推,当用户取数时,则先从最顶部开始,即最后存的数先取出。 在51单片机中有一个专门的堆栈指针寄存器SP,用于存放栈顶单元的地址。
任务9 用自制的跑马灯电路实现8只LED循环点亮
• (2)短调用指令ACALL addr11 ;;PC←PC+2
•
;SP←SP+1
•
;(SP)←PC7-0
•
;SP←SP+1
•
;(SP)←PC15-8
•
; PC10-0←addr10-0
执行该指令时,先将PC+2得到下一条指令的16位首地址,并将其压入堆栈, 最后子程序标号所在的子程序入口地址送给PC,CPU转入子程序执行。由于短 调用指令中的PC高5位地址不变,所以其转移的范围为2KB。
任务9 用自制的跑马灯电路实现8只LED循环点亮
• (2)堆栈的作用 • 堆栈的作用是在子程序调用与中断时,用于保存断点地址及片
内数据单元的内容。 • (3)堆栈的使用方法 • 需要用到堆栈时,首先通过MOV SP,#data指令设置栈底,如
:MOV SP,#60H. • 注意:51单片机复位后,默认的栈底为07H,即SP的默认值为
•
AJMP START
;完成8次循环,转移至START重新开始
• ;***************1秒钟延时子程序*************************************
• DEL1S: MOV R3, #5
• DEL: MOV R4, #100
• DEL1: MOV R5, #250
任务9 用自制的跑马灯电路实现8只LED循环点亮 程序分析讲解
•
ORG 0000H
•
AJMP START
;转移至标号START
•
ORG 0030H ;以下程序下载到单片机的ROM时,从ROM的0030地址开始存储
• START: MOV R1, #00000001B ;将立即数01H送R1
•
MOV R2, #08
在编写程序之前,让我们学一学相关指令的功能和用法。
任务9 用自制的跑马灯电路实现8只LED循环点亮
9.1.3 跟我学
1)减1不为零循环转移指令DJNZ DJNZ Rn,rel ;PC←PC+2,Rn←(Rn)-1,若(Rn)≠0,则PC←PC+rel
DJNZ direct,rel ;PC←PC+2, direct←(direct)-1,若(direct)≠0,则 PC←PC+rel;
• DEL2: NOP
•
DJNZ R5, DEL2
•
DJNZ R4, DEL1
•
DJNZ R3, DEL
•
RET
• END
•
;SP←SP+1
•
;(SP)←PC7-0•来自;SP←SP+1
•
;(SP)←PC15-8
•
; PC←addr16
这条指令调用地址为addr16(在写程序时都用子程序标号)处的子程序。执行 时,先将PC+3(因为该指令是3字节指令)以获得下一条指令的首地址(断点地 址),并把它压入SP所指定的堆栈区,然后将子程序标号所在的16位地址送PC 指针,使CPU转去执行子程序。 LCALL 中的addr16取值范围为16位地址,所以子程序可位于程序存储器64KB空 间的任何一处。
07H。因07H地址在RAM的工作寄存器区,所以用07H作为栈底 ,不是很合适,使用时必须另设栈底。 • 在子程序调用或响应中断后,CPU会直接将断点地址压入堆栈 区,但是要将某个数据保存在堆栈区就必须用压栈指令PUSH 和出栈指令POP。
• 压栈指令格式为:PUSH direct ;SP←SP+1
;将立即数8送R2,循环8次(8个灯)
• LOOP: MOV A, R1
;将R1中的数送A
•
MOV P0, A
;将A中的数送P0口,点亮LED灯
•
CALL DEL1S
;调用延时子程序,控制亮灯时间
•
RL A
;A中的数据左移一位,为下一次亮灯作准备
•
MOV R1, A
;左移后的数据存放在R1
•
DJNZ R2, LOOP ;循环了8次吗?没有则继续
位。
• • RL A ;循环左移指令;
图6-1 RL A指令示意图
• RLC A ;带进位位循环左移指令;
图6-2 RLC A 指令示意图
任务9 用自制的跑马灯电路实现8只LED循环点亮
RR A ;循环右移指令; RRC A ;带进位位循环右移指令;
任务9 用自制的跑马灯电路实现8只LED循环点亮
•
;SP←SP-1
• 该指令执行时先将SP所指单元数据弹出至direct所指的地址单元, 然后SP减1指向新的栈顶单元地址。
• 4)子程序调用指令
• 子程序调用指令的功能调用子程序,执行时先将断点地址(调用 指令的下一条指令的首地址)压入堆栈区,然后将子程序的首地址送
PC,执行子程序。
• (1)长调用指令LCALL addr16 ;PC←PC+3