A. 单灯闪烁 汇编
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
CLR P1.1
CALL DELAY
SETB P1.1
CALL DELAY
SJMP MAIN
DELAY:
MOV R7,#0A7H
DL1:
MOV R6,#0ABH
DL0:
MOV R5,#10H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
RET
END
8灯的流水灯,其实简单来说给A赋一个初值,如
MOV A,#01H
然后将A循环左移或循环右移
然后把A输出
下面是一个简单的循环右移的8灯流水灯
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV A,#01H
LOOP:
RR A;循环右移,或改成RL A(循环左移)
MOV P1,A
CALL DELAY
SJMP MAIN
DELAY:
MOV R7,#0A7H
DL1:
MOV R6,#0ABH
DL0:
MOV R5,#10H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
RET
END
B. 急求51单片机c语言四个开关控制四个灯!(单灯闪烁)
程序的思路如下:(假设你的LED依序连接到51的I/O口,键盘也连接到对应的I/O)
在51的主循环里面加入一个判断语句,是否有按键按下,之后软件除抖,调用相应的子功能函数即可.
C. 单片机单灯闪烁每0.5秒亮一次
I/O管脚接LED灯,接电阻,接地。然后I/O口输出高电平,灯就会亮了。让灯闪烁可以用延时程序,这个比较简单。在一个循环里(可以用while(1)语句),先让i/o口输出高电平,然后调用延时函数,再让i/o口输出低电平,再调用延时函数。这样调节一下延时的参数就差不多了。要是想弄的时间比较精确,可以用定时器。学的比较深入的时候可以试试啊!
D. 单片机,用c语言编,单灯约1hz闪烁,怎么编
首先,是单灯如何点亮的问题,无非就是某个GPIO口输出高电平或者低电平(由外部电路决定)使灯亮灭,假设输出高电平为亮,输出低电平为灭。
其次,1hz闪烁,即代表定时1s开、关灯。所以要用到定时器。
代码如下:
#include "stdio.h"
#define LED_ON P1.1 = 1;
#define LED_OFF P1.1 = 0;
bit flag_1s;
bit flag_cnt;
void main(void) {
Sys_Init();
while(1) {
if(flag_1s == 1) {
flag_1s = 0;
if(flag_cnt ^= 1)
LED_ON;
else
LED_OFF;
}
}
}
Sys_Init() {
// 初始化MCU的IO口
// 初始化定时器
}
void Timer_ISR (void) interrupt 1 { // 定时器中断处理函数 1s 进入一次
flag_1s = 1;
}
E. PLC单灯闪烁梯形图,谁知道怎么设计
什么品牌plc?
I0.0运行开关,Q0.0灯按照亮0.5秒,停0.5秒闪烁。编程方法很多,下面介绍两个常用的。
方法1:
F. 51单片机灯闪烁怎么编程
51单片机闪烁灯的编程程序要与相对应的机器连接之后,固定编码操作。
G. 设计一个流水灯的实验,是6个led灯依次亮起来,请问可以帮我编写一下程序吗,谢谢各位了
;实验目的:本程序主要实现一个简单的流水灯程序
;即轮流点亮C口的8个灯(先点亮RC0,再熄灭RCO点亮RC1。。。。)
;硬件要求:拨码开关S2全部置ON。
#include<p16f877A.inc> ;调用头文件
__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
H. 单片机实验 :实现LED灯的循环依次闪烁
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
void delay(uint z)//延时2ms程序
{uint x,y;
for(x=z;x<z;x++)
for(y=0;y<110;y++);
}
void main()
{
while(1)
{
P1_3=1;
P1_0=0;
delay(250);
P1_0=1;
P1_1=0;
delay(250);
P1_1=1;
P1_2=0;
delay(250);
P1_2=1;
P1_3=0;
delay(250);
}
}
方法2:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
void main()
{ TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
while(1)
{if(j==5)
P0_0=0;
if(j==10)
{P0_1=0;
P0_0=1;}
if(j==15)
{P0_2=0;
P0_1=1;
}
if(j==20)
{P0_3=0;
P0_2=1;
j=0;
}
}
}
void timer0_init() interrupt 1
{TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
j++;
}
I. 西门子PLC单灯循环编程
比较简单的方法,程序长,抛砖引玉,大家考虑用简单的。图片不好显示全,步骤是这样的。
1、按键按下后置位一个标志位。用这个标志位去控制下面的计数器。
2、用CPU的始终MB0来做状态变化频率。M0.3是500MS,2HZ
3、用一个单向加计数器和整数比较器,加1等于1的时候置位Q1
4、以此类推,计数到9的时候,清除计数器的初值,并且将Q1-Q7,
5、以此类推,最后计数到Q1的时候第一次循环结束。
6、全部复位计数器和输出Q1-Q8
7、重复2次后,全部置位Q1-Q8
9、按下停止按钮后,复位标志位、计数器、Q1-Q8
J. 帮忙解释如下单片机程序,想实现单灯闪烁,但是只能做到一个灯亮,怎么修改在线等
org 0000h
l1:cpl p0.0;输出取反,不断翻转 产生闪烁
mov r7,#0ffh;延时计数器R7取255次
l2:mov r6,#0ffh;延时计数器R6取255次
l3:nop;
djnz r6,l3;R6减一次,不为0就转 L3继续
djnz r7,l2;R7减一次,不为0就转 L2继续(总延时≈255X255X(2+1)机器周期)12MHZ晶振时约0.2秒
sjmp l1;重复执行上述程序
end
用12MHZ晶振,上述程序是亮0.2 秒灭0.2秒,每秒闪2-3次,应该可以看到的.如果只长亮就要看硬件方面了.