{ loop: if(sb1==1){ keyzhi++;if(keyzhi>3) keyzhi=0;} else goto loop;} } switch(keyzhi){ case 0: L1=0;L2=1;L3=1;L4=1;break;case 1: L1=1;L2=0;L3=1;L4=1;break;case

L4=1; //第四盏灯亮 delay(100); //调用延时子程序 while(1); //这里我用了个死循环,目的程序只运行一次,如果需要自动重新运行,可以把这句删掉 } 纯手工书写,并仿真调试过,记得加分哟~

下面是一段示例代码,使用 C 语言编写,可以在 AT89C51 微控制器上运行:include sbit LED1 = P2 ^ 0;sbit LED2 = P2 ^ 1;sbit LED3 = P2 ^ 2;sbit LED4 = P2 ^ 3;void delay(unsigned int

MOV R2,#20 ;每次中断定时50ms,20次中断后即为1秒,亮灯LED改变到下一个 DJNZ R3,RRT MOV R3,#4 ;4个灯,左移4次 MOV A,R0 RL A ;第四次左移后,低电平到了P1.4,显然已经过头了 SWAP A ;进行

MAIN: MOV A , #0FEH MOV R3, #04H ; 这里 改为 08H 为 8个灯 流水 MAIN2: MOV P1, A ; 循环轮流点亮 RL A LCALL DELAY ;延时 DJNZ R3, MAIN2 SJMP MAIN ; 继

sbit led2=P1^1;sbit led3=P1^2;sbit led4=P1^3;void delayms(unsigned int i)//晶振12MHZ时延时1ms { unsigned int j,k;for(j=i;j>0;j--)for(k=121;k>0;k--);} void main (void){ while(1){

求计时器控制4个LED灯滚动闪烁的汇编语言程序

程序如下:include sbit led1 = P2^0;sbit led2 = P2^1;sbit led3 = P2^2;sbit led4 = P2^3。让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,单片机技术

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、

/*闪烁点亮LED*/ void flash(void){ P3=0xff; //关闭8个LED led_delay();P3=0x00; //点亮8个LED led_delay();} void main(void){ TMOD=0x01;EA=1;

文件名 : 流水灯.c 描述 : 该程序实现LED的流水灯显示。该程序用于学习 LED流水灯 的控制方法。本例中是调用的 intrins.h 中的函数实现的循环移位。创建人 : 东流,2009年8月27日 版本号 : 1.0 / inc

不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;

假设用单片机P1口。延时函数自己写吧。#include#include #define unsigned char uchar#define unsigned int uintvoid delay(){}void main(){uchar i=1,;P1=0x0f; while(1) { delay();

单片机C语言编程求解:让四个流水灯同时点亮然后...(内详附示意图)

程序如下,仿真见附件。有问题请追问。#include #define uchar unsigned char#define uint unsigned intbit flag_1s=0;uchar code tab[8]={1,2,4,8,16,32,64,128};//[第1小题用这个表]//uchar

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(100);

led8 = 0;//点亮剩余的灯 //省略……while(1);}

proteus电路图 画法依旧不说,给出元件清单,其实都差不多,与上篇一致51单片机 电容 瓷片电容 晶振 红色二极管 电阻 电路图如图 程序清单 说明:流水灯的闪亮方法肯定不是唯一的,按照各种形式都可以写出所需的程序,这里只用

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

51单片机流水灯程序

描述 : 该程序实现LED的流水灯显示。该程序用于学习 LED流水灯 的控制方法。本例中是调用的 intrins.h 中的函数实现的循环移位。创建人 : 东流,2009年8月27日 版本号 : 1.0 / include include<

希望能帮到你 共阳极,低电平亮,到时候自己调整。假设用单片机P1口。延时函数自己写吧。#include#include #define unsigned char uchar#define unsigned int uintvoid delay(){}void main(){uchar i

delay(100); //调用延时子程序 L4=1; //第四盏灯亮 delay(100); //调用延时子程序 while(1); //这里我用了个死循环,目的程序只运行一次,如果需要自动重新运行,可以把这句删掉 } 纯手工书写,并仿真调

include define uint unsigned int define uchar unsigned char uchar aa,num,ge,shi;void delay500ms(void);void main(void){ uchar i;P2=0xFF;//4LED 共阳 while(1){ for(i=0;i<4;i++){ P2&

LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 LCALL DELAY ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: ;大约值:2us*256*256*2=260ms,也

单片机汇编语言流水灯程序延时0.5秒 一共四个灯循环

;p3.0 p3.1 p3.2 p3.3 是接4个铵键 p3.4 p3.5 p3.6 p3.7 是接4个LED, 输出低电平亮;按一下键亮,再按一下灭. 4 个独立org 000main:jb p3.0,next1lcall t30msjb p3.0,next1

void main (void){ unsigned char mask = 1, j = 0;unsigned int i;while (1) { if (j < 7) mask = _crol_(mask, 1);else mask = _cror_(mask, 1);P1 = ~mask; for(i = 0; i <

KEY_0 ) { // 按键KEY_0被按delayus(20); //消抖动 if (!KEY_0 ) { //确认被按下 LED_7=~LED_7 //灯亮或灭}}} 其余一样即可。

按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄?单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极

{ for(i=0;i<8;i++){P0=ledtab[i];delay(100);} for(i=0;i<8;i++){P0=ledtab[7-i];delay(100);} } }

LED30: MOV DPTR,#TAB MOV A,R1 DEC A LED301: MOVC A,@A+DPTR MOV P1,A LCALL DLY200 MOV A,R1 DJNZ R1,LED301 AJMP DISP LED40: MOV DPTR,#TAB MOV A,R1 DEC A LED401: MOVC A,@A+DPTR CPL A

单片机按键控制4个LED,第一次按从左到右亮,第二次按从右到左亮。跪求程序!!我是stc89c52的。急!!

4只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 MOV P1,#1011111

1、布尔型控件具有两种状态,首先打开Labview创建一个空的项目。2、首先在前面板选择布尔控件,选择按钮和一个指示灯,都在布尔控件中。3、接着将选择好的控件拖动到前面板,双击单个控件进入对应的程序面板。4、接着进入到

LED1: CJNE R0,#1,LED2 AJMP LED10 LED2: CJNE R0,#2,LED3 AJMP LED20 LED3: CJNE R0,#3,LED4 AJMP LED30 LED4: CJNE R0,#4,LEDRT AJMP LED40 LEDRT: RET LED10: MOV A,#0FFH MOV P1,A ACALL

include#include //头文件中的循环移动函数void SoftDelay(unsigned int us);void main(void){unsigned char temp;temp=0x3f; //先点亮1,2 while(1) { P1=temp; SoftDelay(2

delay(50000);LED4 = 1;delay(50000);LED4 = 0;delay(50000);LED3 = 0;delay(50000);LED2 = 0;delay(50000);LED1 = 0;delay(50000);} } 上述代码实现了四个 LED 灯逐个亮起来然后再逐个灭掉的效果。其中,

i++;} 定时器, LED灯

更改程序实现四盏LED灯依次轮流亮起,即流水灯的效果?

;实验目的:本程序主要实现一个简单的流水灯程序 ;即轮流点亮C口的8个灯(先点亮RC0,再熄灭RCO点亮RC1。。。。) ;硬件要求:拨码开关S2全部置ON。 #include ;调用头文件 __CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC ;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 ;**********************用户寄存器定义******************** count equ 20h ;移位次数寄存器 del_va1 equ 0ffh ;外层延时参数 del_va2 equ 0ffh ;内层延时参数 org 00h ;程序人口地址 ; addlw 0ffh ;**********************主程序开始*********************** main nop ;ICD所需要的一条空指令 clrf PORTC ;先清楚C口所有显示 banksel TRISC ;选择I/O口方向寄存器所在的体 clrf TRISC ;设置C口全为输出 clrf STATUS ;返回体0 movlw .8 movwf count ;装载循环次数8(C口共8位) bsf STATUS,C ;置进位标志位为1,因循环移位是带进位循环的 loop rlf PORTC,1 ;C口左移1位 call delay call delay CALL delay ;调用三次延时程序(保证亮度,以及流水灯闪烁速度) bcf STATUS,C ;清0进位标志位(永远只有一只LED亮) DECFSZ count,1 ;判断是否一轮循环结束 goto loop ;否,继续循环移位 GOTO main ;是,程序重头开始 ;***********************延时程序************************* delay movlw del_va1 ;延时程序外层参数 movwf 30h movlw del_va2 ;延时程序内层参数 movwf 31h decfsz 31h,1 goto $-1 decfsz 30h,1 goto $-4 return ;********************程序结束**************************** end
四个灯按规律轮流亮灭?
您的问题我已经解决,外加一张电路图。实现的主要功能为:按一次按键开关,二极管实现左到右的点亮;再按一次按键开关,二极管实现右到左的点亮;再按一次按键开关,又实现二极管做到右的点亮.........即:若按奇数次开关时,二极管实现左到右点亮;若按偶数次开关时,二极管实现右到左点亮。 电路图: 程序如下: #include #define uint unsigned int #define uchar unsigned char uchar code table_1[]={ 0xf7,0xfb,0xfd,0xfe}; uchar code table_2[]={ 0xfe,0xfd,0xfb,0xf7}; sbit key=P2^0; uint num; //延时子程序 void relay(uint xm) { uint i,j; for(i=xm;i>0;i--) for(j=110;j>0;j--); } //实现左移 void left_shift() { uint i; while(1) { for(i=0;i<4;i++) { P1=table_1[i]; relay(500); } } } //实现右移 void right_shift() { uint i; for(i=0;i<4;i++) { P1=table_2[i]; relay(500); } } void main() { while(1) { if(key==0) { relay(5); //防抖延时 if(key==0) { while(key) //按键是否起来 { num++; switch(num%2) { case 1:left_shift();break; case 0:right_shift();break; } } } } } } 芯芯之火2011/6/13
#include #include #define uchar unsigned char #define uint unsigned int uchar i,a,b=0,c=0,num; void Delay(uint x)//延时函数 { uchar s; while(x--) { for(s=125;s>0;s--); } } void main() { a=0x01; P2=a; EA=1;//开总中断 EX0=1;//开外部中断0 IT0=1;//跳变沿触发 for(i=7;i>0;i--)//上电后灯先从左向右亮 { Delay(100); a=_crol_(a,1); P2=a; } while(1); } void Init0() interrupt 0 { b++; c++; if(b==0)//检测是否按键 return; b=0;//按键后置0 if(c&0x01)//如果是奇数次按键,给num赋值为0 num=0; else//如果是偶数次按键,给num赋值为1 num=1; switch(num) { case 0: for(i=7;i>0;i--)//灯从右向左亮 { a=_cror_(a,1); P2=a; Delay(100); }break; case 1: for(i=7;i>0;i--)//灯从左向右亮 { a=_crol_(a,1); P2=a; Delay(100); }break; } } 刚写完 仿真也OK 不知道能否帮助到你
ORG 0000H AJMP MAIN ORG 0030H MAIN:clr p2.1 SETB P2.0 mov P0 , #01h MOV A ,P0 LOOP:RL A LCALL DELAY MOV P0,A LCALL DELAY SJMP LOOP DELAY:MOV R6,#255 D1: MOV R7,#255 DJNZ R7,$ DJNZ R6,D1 RET
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。 2、#include "reg51.h"首先写出单片机的头函数。 3、#include "intrins.h"输入位移函数。 4、unsigned int count=0,led;定义函数。 5、输入主函数,定义单片机的端口,写入延时函数。 6、中断跳转,使流水灯运行起来。
流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下: ORG 0000H ;复位启动AJMP START ;ORG 001BH ;T1中断AJMP T1INT ; ;定义变量========================YSJS EQU 30H;延时计数器LED EQU 31H;LED控制缓冲器 ;主程序==========================START: MOV LED,#0FEH ;初始化数据MOV YSJS,#0 ;MOV TMOD,#10H ;定时器1工作于方式1,16位定时器MOV TL1,#0B0H ;设置定时初值MOV TH1,#3CH ;定时时间=50mSSETB ET1 ;使能定时器1中断SETB TR1 ;启动定时器1SETB EA ;开总中断 MOV P1,LED ;初始化流水灯LOOP: JMP LOOP ;循环等待中断T1INT: PUSH PSW ;定时器1中断程序PUSH ACC ;保护现场MOV TH1,#3CH ;定时时间=50mSMOV TL1,#0B0H ;INC YSJS ; PUSH ACC ;保护ACCMOV A,YSJI ;CJNE A,#2,QT1 ;50mS*2=100mSMOV P1,LED ;MOV A,LED ;RL A ;累加器A的值循环左移1位MOV LED,A ;MOV YSJS,#0 ;QT1: POP ACC ;恢复现场POP PSW ;RETI ;返回主程序END ;汇编程序结束 扩展资料: 实现流水灯的三个方法: 第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。 第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。 第三种,库函数实现流水灯。利用左移函数进行。
程序如下,仿真见附件。有问题请追问。#include #define uchar unsigned char#define uint unsigned intbit flag_1s=0;uchar code tab[8]={1,2,4,8,16,32,64,128};//[第1小题用这个表]//uchar code tab[8]={0x05,0x0a,0x50,0xa0,0xaa,0x55,0xff,0x00};//[第2小题用这个表]void InitTimer1(void){ TMOD = 0x10; TH1 = 0x3C; TL1 = 0x0B0; EA = 1; ET1 = 1; TR1 = 1;}void main(void){ static uchar j; InitTimer1();P0=0;P1=0;P2=0;P3=0;flag_1s=1;while(1){if(flag_1s==1){flag_1s=0;P2=tab[j];j++;if(j>=8) j=0;}}}void Timer1Interrupt(void) interrupt 3{ static uchar i; TH1 = 0x3C; TL1 = 0x0B0; //add your code here! i++; if(i>=20)//50ms*20=1000ms { i=0; flag_1s=1; }}
#include #include void delay(unsigned int z ); void main() { unsigned int a; unsigned char b=0xfe; for(a=0;a<8;a++) { P1=b;//P1口接8个LED灯 delay(200); b=_crol_ (b,1); } } void delay(unsigned int z) { unsigned int i; for(;z>0;z--) //延迟时间自己算吧 for(i=110;i>0;i--); } 用汇编写这个容易点 main: mov a,#0feh mov r0,#8 loop: mov p1,a acall delay rl a djnz r0,loop delay:mov r6,#0ffh loop1: mov r7,#01h djnz r7,$ djnz r6,loop1 ret end 好像是这样,延迟时间可能不太准,也是P1口接8个LED灯
#include voiddelay(void) { unsignedinti,j; for(i=0;i<200;i++) for(j=0;j<1000;j++) ; } voidmain(void) { while(1) { P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay(); P3=0xfb;//第三个灯亮 delay(); P3=0xf7;//第四个灯亮 delay(); P3=0xef;//第五个灯亮 delay(); P3=0xdf;//第六个灯亮 delay(); P3=0xbf;//第七个灯亮 delay(); P3=0x7f;//第八个灯亮 delay(); } } 扩展资料 单片机C语言16种方式流水灯 voidmain() { while(1) { P1=0xfe;//点亮第一个发光管 Delay(5000); P1=0xfd;//点亮第二个发光管 Delay(5000); P1=0xfb; Delay(5000); P1=0xf7; Delay(5000); P1=0xef; Delay(5000); P1=0xdf; Delay(5000); P1=0xbf; Delay(5000); P1=0x7f;//点亮第八个发光管 } }
可以参考一下这个 仿真实例。要怎么显示 在原程序 中修改,很简单看了就知道怎么改。
单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4 程序: ORG 00H START: MOV A,P1 ANL A,#0F0H RR A RR A RR A RR A ORl A,#0F0H MOV P1,A SJMP START 可以检测单个按键,也可以同时检测多个按键 过程:开始——读P1口数据到A——A中的数据右移4次——A中的内容和F0H相或——A中的数据送到P1口——回到开始