Ⅰ 单片机C语言编程点亮LED灯
可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。 具体实现方法可以参考如下程序: #include #include #define uint unsigned int#define uchar unsigned charvoid delay(uint a);void main(){ P1=0xfe; while(1) { // 向左循环点亮LED for(i=0; i<7; i++) { P1=_crol_(P1,1); // 左移一位,点亮下一位LED delay(55); } // 向右循环点亮LED for(i=0; i/ 右移一位,,点亮上一位LED delay(55); } }}// 延时函数,延时a毫秒void delay(uint a){ uint x,y; for(x=a;x>0;x--) for(y=110;y>0;y--);}
Ⅱ 单片机流水灯程序
用的什么单片机?
--------------------
看了电路图,就知道了。
既不是32个串口,也根本不使用串口。
;32个LED显示初版始化:
MOV P0, #3FH
MOV P1, #3CH
MOV P2, #2AH
MOV P3, #47H
;循环移位权:
_LOOP:
MOV A, P0
RRC A
MOV A, P1
RRC A
MOV P1, A
MOV A, P2
RRC A
MOV P2, A
MOV A, P3
RRC A
MOV P3, A
MOV A, P0
RRC A
MOV P0, A
LCALL _DELAY1S
SJMP _LOOP
;延时子程序:
_DELAY1S:
…………
RET
Ⅲ c51单片机中如何用汇编语言编写流水灯
51单片机用汇编语言编写流水灯程序,就是控制多个LED ,使其在特定时间间隔内,只有一个LED 发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果。以下是程序:
;假设晶振12MHZ,P1控制8个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 ;定时时间=50mS
SETB ET1 ;使能定时器1中断
SETB TR1 ;启动定时器1
SETB EA ;开总中断
MOV P1,LED ;初始化流水灯
;
LOOP: JMP LOOP ;循环等待中断
;
;
T1INT: PUSH PSW ;定时器1中断程序
PUSH ACC ;保护现场
;
MOV TH1,#3CH ;定时时间=50mS
MOV TL1,#0B0H ;
INC YSJS ;
PUSH ACC ;保护ACC
MOV A,YSJI ;
CJNE A,#2,QT1 ;50mS*2=100mS
MOV P1,LED ;
MOV A,LED ;
RL A ;累加器A的值循环左移1位
MOV LED,A ;
MOV YSJS,#0 ;
;
QT1: POP ACC ;恢复现场
POP PSW ;
RETI ;返回主程序
END ;汇编程序结束
Ⅳ 单片机制作呼吸灯的C语言程序怎样编写
#include<reg51.h>
sbit LED0=P0^0;
sbit wei=P1^1;
sbit an=P1^0;
sbit lcden=P1^7;
sbit dianzhen=P1^3;
sbit leden=P1^2;
void Delay(unsigned int t);
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值
lcden=0;
P0=0x00;
dianzhen=0;
P0=0xff;
wei=0;
an=0;
while (1) //主循环
{
LED0=1;
Delay(150000); //特意加延时,可以看到熄灭的过程
for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
}
}
void Delay(unsigned int t)
{
while(t--);
}
Ⅳ 单片机流水灯的C语言编程
#include <reg52.h> //52系列单片机头文件
#include <intrins.h>
#define uint unsigned int //宏定义
#define uchar unsigned char
void delayms(uint); //声明子函数
uchar aa;
void main() //主函数
{
aa=0xfe; //赋初值11111110
while(1) //大循环
{
P1=aa;
delayms(500); //延时500毫秒
aa=_crol_(aa,1); //将aa循环左内移1位后再赋容给aa
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}
查表就是在表头加个code table[]={......}
Ⅵ 51单片机32个流水灯编程如何实现指定其中某一个灯亮,如何实现多种花样亮灯
要51单片机控制32个流水灯,关键是要解决电路设计,只要能设计出电路来,编程实现控制指定其中某一个灯亮,并实现多种花样亮灯,就容易了。如果只做32个流水灯,就用单片机的四个并行口,共32个IO引脚全部用上,正好控制32个流水灯。如果引脚还有其他应用,可用四片锁存器,也可以控制32个流水灯了。
Ⅶ 请位高手帮我写个89C51单片机控制流水灯C语言源程序。谢谢
用P2=0xFF&(0x01+2*i)用for循环,之后是P2=0xFF&(0x81+2*i)用for循环,之后类推P2=P2=0xFF&(0xC1+2*i),P2=0xFF&(0xE1+2*i),P2=0xFF&(0xF1+2*i),P2=0xFF&(0xF9+2*i),P2=0xFF&(0xFD+2*i),P2=0xFF;每次循环都比前一次少一次循环就可以了。