用51单片机控制八个发光二极管

作者&投稿:战俗 (若有异议请与网页底部的电邮联系)
用51单片机控制八个发光二极管,从左到右轮流点亮,并循环~

ORG 0000H
AJMP MAIN
ORG 0003H

MAIN: MOV P1,#0FFH
LCALL DELAY
MOV R1,#0
MOV DPTR,#TAB
MAIN1: MOV A,R1
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
INC R1
CJNE R1,#8,MAIN1
AJMP MAIN

DELAY: MOV R4,#08H
DL01: MOV R3,#74H
DL00: MOV R2,#0D6H
DJNZ R2,$
DJNZ R3,DL00
DJNZ R4,DL01
NOP
RET
TAB: DB 11111110B
DB 11111100B
DB 11111000B
DB 11110000B
DB 11100000B
DB 11000000B
DB 10000000B
DB 00000000B

END

KEY1 BIT P3.2
KEY2 BIT P3.3
ORG 00H
MOV P3,#255
MOV A,#254
MOV P1,A
continue:
JNB KEY1,right
JNB KEY2,left
JMP continue
right:
RR A
MOV P1,A
ACALL DELAY
JMP continue
left:
RL A
MOV P1,A
ACALL DELAY
JMP continue
DELAY:
MOV R7,#250
LP2:MOV R6,#200
LP1:NOP
DJNZ R6,LP1
DJNZ R7,LP2
RET
END

// 51单片机控制八个发光二极管 左右循环。

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

unsigned char TAB[]= {0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff}; // 改变这里 LED 各种花样

uchar t,i;

void main()

{

TMOD=0x10;

TH1=(65535-50000)/256;  // 50ms一次

TL1=(65535-50000)%256;

EA=1; 

ET1=1;//开定时器1中断

TR1=1;//启动定时器1

t=0;

i=0;

while(1)

{

}

}

void timer1() interrupt 3

{

TH1=(65535-50000)/256;  // 50ms一次

TL1=(65535-50000)%256;

t++;

if(t==20)

{

t=0;

P2=TAB[i];

i++;

if(i==18) { i=0;}

}



#include<reg51.h>
#include <intrins.h>
unsigned char temp;
void delay(unsigned int );
void main()
{
temp=0xfe;
P1=temp;

while(1)
{
temp=_crol_(temp,1);//循环左移函数
delay(600);
P1=temp;
}
}
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=20;y>0;y--);
}


八个51单片机实验的实验报告
八大51单片机实验探索实验一:LED灯点亮的艺术 点亮初心:通过LED灯实验,我们开始对单片机的硬件连接、软件编程有了初步认识,目的不仅限于闪烁和跑马灯,而是要理解基础电路原理。 硬件配置:借助Keil uVision4开发工具,配合PZISP和HC6800S开发板,我们搭建起控制LED的实验平台。 原理解读:单片机通过P0...

我想用51单片机实现在八个LED上从00-00-00开始计时,请高手指点_百度知 ...
还有一点,你的switch也感觉有点不对劲,不仅感觉不对,而且case 0和case 1控制着小时hour的十位和个位的显示,但switch每次只能选择一个case,,第一次判断a时,显示hour的十位,当下一次判断a时,hour的值都已经改变了,显示hour的个位也就没有意义了,同理,分钟和秒的显示也是如此,还是换个思路...

51单片机双键控制八位流水灯C程序
include<reg51.h> define uchar unsigned char uchar num,flag=0;sbit K1=P1^0;sbit K2=P1^1;void t0isr() interrupt 1 { TH0=(65536-50000)\/256;TL0=(65536-50000)%256;num++;if(num>=20){ num=0;flag=1;} } main(){ uchar LED;TMOD=0x01;TH0=(65536-50000)\/256;TL0=(65536...

基于51单片机利用八个数码管花样显示如下
C语言)或者表里(汇编语言查表法),在P0口和P2口接上8个7段数码管,P2口做位选,P0口做段选,每次从表中查询你要显示的数据的编码写到P0口,再把你要在哪一个数码管上显示写到P2口(比如位选为低电平有效,向P2口写入0xFE就能显示在P2.0对应的数码管上)。有不懂得可以QQ我。

51单片机怎样用8个IO口控制4位数码管
每个数码管都要用8个信号来控制,你要控制4位数码管就还需要4个片选,所以你可以用一个8位的移位寄存器,可以用74HC164,8位串行输入,2转8;或者用3转8译码器,74LS138;

用C语言编写51单片机三个开关控制八个LED灯的点亮,开关接P3端口,LED...
虽然编程51单片机。而且让每个LED灯都亮得非常好。这可太好了问题。这个技术应该有专门的负责人员来搞定。

51单片机八个灯的流水灯代码
51单片机八个灯的流水灯代码:1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;定义函数。5、输入主函数,定义单片机的端口,写入延时函数。编辑推荐 对于刚接触...

51单片机用汇编语言如何设计8个轮流呼吸的呼吸灯?
因为我不知道你这个板子的硬件,我就假设一下吧,你自己对照着看看,关键是流程 假设如下这八个灯依次接在P0口的八个口上,高电平为灯亮,低电平为灯灭,程序如下 ORG 0000H AJMP START START:MOV P0,#01H;()只有第一个灯亮 ACALL DELAY;延迟,不加延迟的话 你根本看不起清到底那个灯亮的 ...

c51单片机汇编语言,八个小灯,依次亮灯,间隔0.5s,最后一个点亮后,全部灭...
ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,#0FEH MOV R2,#8LOOP: MOV P0,A LCALL DELAY CLR C RLC A DJNZ R2,LOOP MOV P0,#0FFH SJMP $DELAY: MOV R3,#10DLY1: MOV R4,#100DLY2: MOV R5,#250 DJNZ R5,$ DJNZ R4,DLY2 DJNZ R3,...

51单片机用汇编语言实现八个LED的全亮全灭
;以89c51单片机为例,假定用P1控制LED:IO_LED EQU P1;led_0 BIT P1.0;led_1 BIT P1.1;led_2 BIT P1.2;led_3 BIT P1.3;led_4 BIT P1.4;led_5 BIT P1.5;led_6 BIT P1.6;led_7 BIT P1.7;;定义开关LED的数据,...

大兴区14792629263: 用51单片机汇编语言控制8个发光二极管 -
姓果安捷: KEY1 BIT P3.2KEY2 BIT P3.3ORG 00HMOV P3,#255MOV A,#254MOV P1,A continue:JNB KEY1,rightJNB KEY2,leftJMP continue right:RR AMOV P1,AACALL DELAYJMP continue left:RL AMOV P1,AACALL DELAYJMP continue DELAY:MOV R7,#250 LP2:MOV R6,#200 LP1:NOPDJNZ R6,LP1DJNZ R7,LP2RETEND

大兴区14792629263: 单片机实验80C51 外中断 P1口接8个发光二极管,设计实验:S1加1键,S2减1键(INT0,INT1)要求:上电全灭,八个发光二极管显示的顺序为每按一次加... -
姓果安捷:[答案] 既可用外部中断方式来实现; 也可以用查询方式读键处理. 灯的亮灭,就是对P1口的赋值操作, 每次多一盏,可以让初值为0xff.此后,每次左移或右移实现. 每次少一盏,可以与前面相反,右移或左移,并在移入位补1. 注意去抖动处理,好好写吧,...

大兴区14792629263: 编写一个51单片机程序实现八个发光二极管交叉点亮,即D1、D3、D5、D7亮,其他不亮,直到电源关 -
姓果安捷: pre t="code" l="cpp"> ORG 0000H MOV END 即可; P1, #01010101B SJMP $

大兴区14792629263: 求求好心人出现吧51单片机8个按键控制8个发光二极管,单个控制,使用汇编语言,急 -
姓果安捷: 汇编语言的变成已经很不习惯了.假设 八个开关分别接在 P1.0—— P1.7,八个发光二极管接在 P0.0 -P0.7 .汇编语言编程如下.ORG 0000H start: mov P1,#0ffH mov P0,#0ffH mov A,P1 mov P0,A lcall delay ljmp start delay: mov r7,#100 loop: mov r6,#100 djnz r6,$ djnz r7,loop ret END

大兴区14792629263: 通过AT89C51单片机控制8个发光二极管发光,实现暗点以1HZ频率由低位到高位循环移动 -
姓果安捷: 1HZ就是1秒,AT89C51,你硬件连接的时候把8个发光二极管放在P2口上,晶振用11.0592M的.#include <reg52.h> int ms,tag; void delay_ms(unsigned int ms_number) //ms_number=500,延时1秒 { unsigned int i; unsigned char j; unsigned ...

大兴区14792629263: msc - 51单片机怎样编写八只发光二极管循环点亮每只闪烁五次延时时间为2秒的程序 -
姓果安捷: #include<reg52.h> #define uint unsigned int #define uchar unsigned charuchar code led[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //定义LED循环显示列表 uint xunhuan, //声明循环显示标志位 cishu; //声明5次闪烁标志位 void delay(uint z) //...

大兴区14792629263: 利用单片机控制8个发光二极管,设计8个灯同时闪烁的控制程序 - 上学...
姓果安捷: 假设高电平点亮LED,LED接在P0口,主要程序语句如下: uchar c=0; uchar i; while(c<3) { for(i=0;i<8;i++} { P0=1<<i; DELAY_MS(500); } c++; } P0=0X00;

大兴区14792629263: 求助,51单片机使8个发光二极管按0,2,4,6,1,3,5,7的顺序间隔点亮 -
姓果安捷: ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV A,#0FEH MOV R2,#4 LOOP1:MOV P0,A LCALL DELAY DJNZ R2,LOOP1 MOV R2,#4 MOV A,#0FDH LOOP2:MOV P0,A LCALL DELAY DJNZ R2,LOOP2 SJMP MAIN DELAY:MOV R2,#200 DLY:MOV R3,#250 DJNZ R3,$ DJNZ R2,DLY RET END

大兴区14792629263: 跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依次点亮,从左向右移动,时间间隔0.5秒. -
姓果安捷: /* 实验目的:初步了解单片机I/O口的工作原理,进一步掌握51单片机的汇编指令. * 实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭. */ /* 程序详细功能介绍: *做单一灯的左移右移,八个发光二极管L0-L7分别接...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网