/*** 程序名称: 八位LED双灯右移动流水灯显示 说明:使用本程序你必须把 SE3设置为2-3短接 SE4设置为1-2短接 ***/ /*头文件*/ #include
用 C51 给你写一个吧:假设开关接到P3.0,8个 LED灯 接到P1.0~P1.7,低电平 点亮。ms延时 子程序 书上都有例子,我就不再写出来了。include
/* 实验目的:初步了解单片机I/O口的工作原理,进一步掌握51单片机的汇编指令。实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭。/ /* 程序详细功能介绍:做单一灯的左移右移,八个发光二极管L0
51单片机是单片机接触最早的,下边这个程序希望能帮到你。(只有主函数,就不进行硬件什么定义以及头文件包含什么的了)void delay(int times){//延时函数,times控制延时时间 int i, j;for(i = 0; i < times; i++)
{ P1=LEDA[i]; delay(); }
include
|P1口接8个发光二极管共阳 include
51单片机设计跑马灯的程序用(c语言)编写
设LED驱动端口为 P1,输出高电平为LED亮,则建立一个数组,如下图;数组赋值:char LEDA[23]={0x18,0x3c,};输出:for(i=0;i<23;i++){ P1=LEDA[i]; delay(); }
给个你参考 /* 实验目的:初步了解单片机I/O口的工作原理,进一步掌握51单片机的汇编指令。实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭。/ /* 程序详细功能介绍:做单一灯的左移右移,八个
把灯的正极接电源正极 即vcc 负极分别接p0.0-p0.5 此时 给p0 送0灯就亮 1灯就不亮 程序已经过调试 可用 仿真如下:
|P1口接8个发光二极管共阳 include
SJMP LOOP1 DELAY:MOV R2,#60 DELAY1:MOV R3,#250 DJNZ R3,DJNZ R2,DELAY1 RET END 程序2:ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV SP,#5FH JNB P2.0,LOOP1 ;JNB P2.1,LOOP2 ;SJMP MAIN LOOP1
用51单片机(汇编语言写)写一个跑马灯程序??知道的帮个忙写写。
LJMP MAIN ORG 0003H LJMP EXT0 ORG 0013H LJMP EXT1 ORG 0030H MAIN:SETB EX0 SETB EX1 SETB IT0 SETB IT1 SETB EA MOV A,#0FEH MOV P1,A CLR 00H LOOP:JB 00H,LOOP1 LCALL DELAY RL A MOV P1,A SJ
用intrins.h库中的_crol_函数,时间用定时器,很简单,自己看看就会了
START:MOV A ,#00 SETB C MOV R0,#9 ;从左到右 LOOP1:RLC A MOV P1, A ACALL DELAY DJNZ R0, LOOP1 ;从右到左 MOV R0,#9 LOOP2:RRC A MOV P1, A ACALL DELAY DJNZ R0, LOOP2 SJMP START DELAY:M
二,程序的结构调整一下,做一个输出的BUF,按键按下时填BUF全亮的数据,这时跑马灯的数据是停在那里的,不按下时BUF放入跑马灯的数据,开始继续运行,这个结构放在这实际不实用,但当很多地方同时操作同一设备时就有用了,
//P1外接8 LED 低电平发光.// 列程序 PROTEUS 仿真 功 include
//假设晶振12MHZ,P1控制8个LED低电平亮 include "reg51.h"unsigned int YSJS=0;signed char LED=0XFF;void main(void){ TMOD |= 0X10; //定时器1工作于方式1,16位定时器 TH1 = 0XFE; //定时器1定时
单片机 跑马灯 代码详解
加一。include
MOV R2, #08H ;R2左转循环计数器 LOOP: RLC A <
写入“2”将D228~D232 D238~D242 D248~D252 D258~D262 D268~D272 D278~D282 分别写入“4”即可 另外 将程序中 “k88”及D200开始的寄存器分别写入不同的值即可变换成 以1s为单位的跑马灯程序
void main(){ int a;unsigned char tmp=0;while(1){ if(tmp==0) tmp=0x80;else tmp = (tmp>>1);P1 = tmp; //P1.0到P1.7控制8个灯 for(a=50000;a;a--); //延时一下 } } //只是示例,凑和一
void Delay10ms(unsigned int c); //延时函数声明 void main(void){ unsigned char LED;LED = 0x01; //一个unsigned char有8位,每一位代表了一个灯,初始点亮第一盏灯 while(1){ P0 = LED; //点亮
这种在网上很多啊……自己可以查到跑马灯(流水灯)的C程序
|P1口接8个发光二极管共阳 include
单片机,跑马灯,交替闪烁,C语言代码
加一。include
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay();P3=0xbf;//第七个灯亮 delay();P3=0x7f;//第八个灯亮 delay();} }
leda=1;//全部灯亮 //从左到右依次熄灭 led1=0;delay(50000);//大约延时450ms led2=0;delay(50000);//大约延时450ms led3=0;delay(50000);//大约延时450ms led4=0;delay(50000);//大约延时450ms led5=0;
sbit LED1 = P0^1;sbit LED2 = P0^2;sbit LED3 = P0^3;sbit LED4 = P0^4;sbit LED5 = P0^5;sbit LED6 = P0^6;sbit LED7 = P0^7;unsigned char Maikuan=0;static unsigned char ledon[8] = {0x
temp=0xFE;for(i=0;i<8;i++) //8个流水灯依次全部点亮 { P1=temp;delay(100); //调用延时函数 temp<<=1;} temp=0x7F;for(i=0;i<8;i++) //8个流水灯依次反向全部点亮 { P1=temp;delay(100); //
while(1) { for(j = 0; j < 8; j++) { P1 = 255; //全灭, P1外接LED, 是低电平发光.delay_ms(500); //稍等片刻.for(i = 0; i < 8; i++) { P1 <<= 1;delay_ms(900 - 100 * j
单片机的跑马灯C程序如何编写八个LED灯依次点亮而且速度渐变的代码
答疑解难 跑马灯程序 ORG 0000H LJMP MAIN ORG 0100H MAIN: JB P0.7,MAIN ;等待开始键按下 LCALL YS ;按键延时 JB P0.7,MAIN MOV A,#7FH ;是开始键按下 则跑马灯开始
} void TIMER1(void) interrupt 3 //定时器1中断函数使用默认寄存器组 { TH1 = 0XFE; //定时器1定时时间=500us TL1 = 0X0C;YSJS++;if(YSJS==1000) //500uS*1000=500000us=0.5s,可调整 { P1 = L
程序1: ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV SP,#5FHLOOP: MOV A,P2 MOV B,A MOV P0,A MOV P1,#0FFHLOOP1: LCALL DELAY MOV C,P1.7 MOV A,P0 RLC A MOV
单片机如何控制跑马灯做单一流动?单片机源程序如下:include
请问如何用单片机编写跑马灯程序啊?
很简单的 具体hi我/***************************************** *用P1口接LED *****************************************/ #include //51系列单片机定义文件 #define uchar unsigned char //定义无符号字符 #define uint unsigned int //定义无符号整数 void delay(uint); //声明延时函数 void main(void) { uint i; uchar temp; while(1) { temp=0x01; for(i=0;i<8;i++) //8个流水灯逐个闪动 { P1^=temp; delay(500); //调用延时函数 temp<<=1; } temp=0x80; for(i=0;i<8;i++) //8个流水灯反向逐个闪动 { P1^=temp; delay(500); //调用延时函数 temp>>=1; } temp=0xFE; for(i=0;i<8;i++) //8个流水灯依次全部点亮 { P1=temp; delay(500); //调用延时函数 temp<<=1; } temp=0x7F; for(i=0;i<8;i++) //8个流水灯依次反向全部点亮 { P1=temp; delay(500); //调用延时函数 temp>>=1; } } } void delay(uint t) //定义延时函数 { register uint bt; //register为寄存器变量 即将无符号整形变量bt放在CPU的寄存器中而不是放在内存中 因为该 变量使用频率高 这样可以提高执行效率 for(;t;t--) for(bt=0;bt<255;bt++); }
ORG 0000H SJMP START ORG 0030H START: MOV A, #0FEH ; 先让第一个发光二极管点亮 LOOP: MOV P1, A ; 从P1口输出到发光二极管 MOV R1, #100 ; 延时0.5秒 DEL1: MOV R2, #200 DEL2: MOV R3, #7 DEL3: DJNZ R3, DEL3 DJNZ R2, DEL2 DJNZ R1, DEL1 RL A ; 左移一位,点亮下一个发光二极管 LJMP LOOP END 这个是我写的跑马灯程序,没有左右振荡,自己参考参考加上去吧
ORG 0000H AJMP START ORG 0030H START:MOV A,#0FEH MOV P1,A LOOP: RL A ;这里是RL。不是R1 MOV P1,A CALL DELAY CJNE A,#07FH,LOOP ;判断是否左移到最后一个灯 LOOP1: RR A MOV P1,A CALL DELAY CJNE A,#0FEH,LOOP1 ;判断是否右移到最后一个灯 JMP START DELAY: MOV R5,#02H D1: MOV R6,#255D ;这里还需要有冒号 D2: MOV R3,#数值(数值为你自己根据亮灯持续时间来定) ;设置内层循环参数 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END
程序1: ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV SP,#5FH LOOP: MOV A,P2 MOV B,A MOV P0,A MOV P1,#0FFH LOOP1: LCALL DELAY MOV C,P1.7 MOV A,P0 RLC A MOV P0,A MOV A,P1 RLC A MOV P1,A MOV A,P2 CJNE A,B,LOOP SJMP LOOP1 DELAY: MOV R2,#60 DELAY1: MOV R3,#250 DJNZ R3,$ DJNZ R2,DELAY1 RET END 程序2: ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV SP,#5FH JNB P2.0,LOOP1 ; JNB P2.1,LOOP2 ; SJMP MAIN LOOP1: MOV P0,#0FEH MOV P1,#0FFH LOOP11: MOV C,P1.7 MOV A,P0 RLC A MOV P0,A MOV A,P1 RLC A MOV P1,A JNB P2.1,LOOP2 SJMP LOOP11 LOOP2: MOV P0,#0FCH MOV P1,#0FFH LOOP21: MOV C,P1.7 MOV A,P0 RLC A MOV P0,A MOV A,P1 RLC A MOV P1,A JNB P2.0,LOOP1 SJMP LOOP21 DELAY: MOV R2,#60 DELAY1: MOV R3,#250 DJNZ R3,$ DJNZ R2,DELAY1 RET END
给个你参考 ******* /* 实验目的:初步了解单片机I/O口的工作原理,进一步掌握51单片机的汇编指令。 * 实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭。 */ /* 程序详细功能介绍: *做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上, *输出“0”时,发光二极管亮,开始时P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→P0.0亮,重复循环。 */ ORG 0000H LJMP START ORG 0030H START: MOV R2,#8 ;左移次数 MOV A,#0FEH ;A的初始值,即 P0.0的L0 点亮 SETB C LOOP: MOV P0,A LCALL DELAY RLC A ;左移流水灯(带进位的左移),即亮点向P0口的高位移动 DJNZ R2,LOOP MOV R2,#8 ;右移次数 LOOP1: RRC A ;右移流水灯 MOV P0,A LCALL DELAY DJNZ R2,LOOP1 LJMP START DELAY: MOV R5,#10 ;延时子程序,改变R5,R6,R7 的值,可以改变延时的时间,从而改变流水灯移动速度 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END