‘壹’ 单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)
单片机流水灯C语言程序的源代码如下:
#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(100); //调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8个流水灯反向逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp>>=1;
}
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); //调用延时函数
temp>>=1;
}
void delay(uint t) //定义延时函数
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
(1)单片机感应灯程序扩展阅读
51单片机流水灯的源代码如下
#include<reg51.h>
#include<intrins.h>
voiddelay(inta)
{
inti;
while(a--)for(i=0;i<110;i++);
}
main()
{
inti;
while(1)
{
P0=0xfe;
for(i=0;i<8;i++)
{
P0=_crol_(P0,1);
delay(500);
}
}
}
‘贰’ 80c51单片机控制人体感应灯的汇编程序怎么写
KEYVAL EQU 30H
KEYSCAN EQU 31H
KEYTM EQU 32H
KEYSEL:
MOV KEYVAL,#0
MOV KEYSCAN,#0EFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS1
MOV KEYVAL,A
SJMP KEYRTN
KEYS1:
MOV KEYSCAN,#0DFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS2
CLR C
ADD A,#4
MOV KEYVAL,A
SJMP KEYRTN
KEYS2:
MOV KEYSCAN,#0BFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS3
CLR C
ADD A,#8
MOV KEYVAL,A
SJMP KEYRTN
KEYS3:
MOV KEYSCAN,#7FH
LCALL GETKEY
MOV A,KEYTM
JZ KEYRTN
CLR C
ADD A,#12
MOV KEYVAL,A
KEYRTN:
RET
;--------------------
GETKEY:
MOV KEYTM,#0
MOV A,KEYSCAN
MOV P3,A
NOP
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOV R2,#10
LCALL DELAY
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOV A,P3
ANL A,#0FH
MOV R7,A
SF:
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ SF
MOV A,R7
CJNE A,#0EH,NK1
MOV KEYTM,#1
SJMP NOKEY
NK1:
CJNE A,#0DH,NK2
MOV KEYTM,#2
SJMP NOKEY
NK2:
CJNE A,#0BH,NK3
MOV KEYTM,#3
SJMP NOKEY
NK3:
CJNE A,#07H,NOKEY
MOV KEYTM,#4
NOKEY: RET
深奥点就是,你执行了这段代码,int a = 10; 程序就会在你电脑的内存中,创建一个小空间,这个空间的名字就是a, 这空间里面的内容就是10,这个空间只能存放整数类型的数据。
‘叁’ 89c51单片机控制感应灯,怎么用汇编语言程序设计
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
P1=0x55; //P1口初始值
EA=1; //全局中断开
EX1=1; //外部中断0开
IT1=1; //边沿触发,IT1=0表示电平触发
while(1)
{
//在此添加其他程序
}
}
/*------------------------------------------------
外部中断程序
------------------------------------------------*/
void ISR_Key(void) interrupt 2 using 1
{
//在此处可以添加去抖动程序,防止按键抖动造成错误
P1=~P1;
}
// 判断列表里是否包含某个数据
‘肆’ 单片机灯亮程序,急!
确实很简单,当红外传感器前面被挡一下,红外接收管接收不到红外信号就会截止,输出一个低电平,将红外接收管连接到单片机的一个I/O口上,然后在主程序里面写条件判断语句,若检测到那个引脚为低电平,就输出一个信号,将对应的灯点亮,调用10秒的延时函数,然后再取反,继续检测。其实这个原理跟流水灯的原理差不多,因为我之前做过一个红外防盗器,其实原理好简单的 ...不信你可以去试一下!
‘伍’ 红外线感应灯单片机程序
这程序不难,你可以买个反射型红外探头,不过要能根据电源来调整你所需要的距离。如果人在你的距离内,探头就能发出一个信号给你,你就可以控制了。
‘陆’ 单片机的点亮一盏灯程序
MAIN: MOV P1,#11111110B;点亮P1.0所接的灯
ACALL YS ;调用延时子程序,让P1.0所接的灯亮一小段时间
MOV P1,#11111101B;点亮P1.1所接的灯
ACALL YS ;调用延时子程序,让P1.1所接的灯亮一小段时间
MOV P1,#11111011B;点亮P1.2所接的灯
ACALL YS ;调用延时子程序,让P1.2所接的灯亮一小段时间
MOV P1,#11110111B;点亮P1.3所接的灯
ACALL YS ;调用延时子程序,让P1.3所接的灯亮一小段时间
MOV P1,#11101111B;点亮P1.4所接的灯
ACALL YS ;调用延时子程序,让P1.4所接的灯亮一小段时间
MOV P1,#11011111B;点亮P1.5所接的灯
ACALL YS ;调用延时子程序,让P1.5所接的灯亮一小段时间
MOV P1,#10111111B;点亮P1.6所接的灯
ACALL YS ;调用延时子程序,让P1.6所接的灯亮一小段时间
MOV P1,#01111111B;点亮P1.7所接的灯 ACALL YS ;调用延时子程序,让P1.7所接的灯亮一小段时间
LJMP MAIN ;循环.这回用长调用指令LJMP,当程序比较长的时候就用
LJMP YS: ;延时子程序YS,功能是能让LED亮起来或者灭掉一小段时间
MOV R1,#200 ;让灯亮灭时间的长短也就是延时的长短跟#号后面的数据有关
D: MOV R2,#200 ;延时长点#号后面的数据就大点,延时短点#号后面的数据
T: MOV R3,#200 ;就小点,但#号后面最大的数据是255
DJNZ R3,$
DJNZ R2,T
DJNZ R1,D
RET ;子程序返回指令,子程序的设计一般都是因为主程序要调用它, ;调用完是要返回到主程序继续运行下一个语句的
END
‘柒’ 单片机编程,一个感应信号,灯亮,十秒后灭,循环
利用红外对管作感应器的话,只要将单片机设置为计数模式就行,然后红外接收管接到单片机的P3^4或者P3^5口,这是51系列单片机计数功能口,然后设置好TMOD寄存器和TCON寄存器选择工作方式和触发方式即可,计数变量定义为全局变量,然后传递给显示函数。 如有不懂的地方随时回复我。 希望我的回答能帮助到你。
‘捌’ 单片机开关点亮LED灯程序
#include <reg52.h>
#define uchar unsigned char
sbit K1=P3^4;
sbit LED1=P0^5;
void delay(uchar i)
{
uchar j;
while(i!=0)
{
i--;
for(j=0;j<100;j++);
}
}
void main()
{
while(1)
{
if(K1==0)//下拉方式连接按键
{
delay(5);
if(K1==0)//消抖
{
while(K1==0){};//松手检测
LED1=!LED1;
}
}
delay(10);
}
}
根据实际,可能会有所修改才行
‘玖’ 跪求高手单片机做声控灯程序!!谢谢!!!
直接用avr单片机不更好?
内部自带AD转换,自带增益放大。和s51相同价位的avr单片机,明显强多了!
‘拾’ 急求一个基于89c51单片机人体感应控制灯的亮灭的程序及电路图,尽量简单。感谢感谢
可以使用热释电传感器来做感应,信号送入单片机即可做处理。