㈠ 单片机花样灯三种显示方式
程序和模块化编程可以实现基本的花样灯显示。
例如16个花样灯,由于16个花样灯的功能较为复杂,将所有程序代码写在一个文件中不是一个好的程序设计习惯,此时一般采用模块化编程。所谓模块化编程是指将一个较大的程序划分为若干功能独立的模块,对各模块进行独立开发,然后再将这些模块统一合并为一个完整的程序。这种方法是C语言中的面向过程的编程方法,可以缩短开发周期,提高程序的可读性和可维护性。
实际上,模块化编程就是模块合并的过程,也是建立每个模块的头文件和源文件并将其加入到主体程序的过程。主体程序调用模块的函数是通过包含模块的头文件来实现的,模块的头文件和源文件是模块密不可分的的两个部分,缺一不可。所以,模块编编程必须提供每个模块的头文件和源文件。
㈡ 关于花样流水灯单片机程序。
程序我不写了。
给你个思路:
定义一个全局变量,用于表示按键K的状态。主程序上来就开始监测按键K的状态并记录到变量中,这是一个按键扫描程序。然后是一个分支程序,判断条件就是按键K的状态。 两个分支中分别是循环点亮和交替点亮。然后死循环返回到开始的按键监测。
㈢ C51单片机的花样灯
#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(uinta)
{
uchari;
while(a--)for(i=0;i<120;i++);
}
main()
{
uchari,led;
while(1)
{
led=0xfe;
for(i=0;i<8;i++)
{
P2=led;
led=_crol_(led,1);
delay(1000);
}
for(i=0;i<8;i++)
{
P2=led;
led=_cror_(led,1);
delay(1000);
}
for(i=0;i<3;i++)
{
P2=0xaa;
delay(1000);
P2=0x55;
delay(1000);
}
for(i=0;i<2;i++)
{
P2=0xf0;
delay(1000);
P2=0x0f;
delay(1000);
}
for(i=0;i<3;i++)
{
P2=0x33;
delay(1000);
P2=0xcc;
delay(1000);
}
}
}
㈣ 单片机怎么用一个按钮控制多种花样流水灯,只要一按就马上执行下一种花样。
程序里面,给你说一种思路。首先在中断中设置一个整体变量。中断时对这个变量赋值。
比如CNT++。IF(CNT>=设置的花样)CNT==0;
然后编写各个花样的流水灯子程序。
在主函数中加上判断函数。
㈤ 单片机花样流水灯C语言问题
#include<reg52.h> //包含头文件,一般情况不需要改
void Delay(unsigned int t); //函数声明
/*------------------------------------------------
主函数
------------------------------------------------*/
void main (void)
{
unsigned char i,j,temp; //定义一个无符号字符型局部变量 i 取值范围 0~255
Delay(50000);
P1=0xfe; //赋初始值
while (1) //主循环
{
/**********下面是从1~8闪烁两次*****/
for(i=0;i<8;i++) //加入 for循环,表明for循环大括号中的程序循环执行8次
{
temp=P1;
for(j=0;j<2;j++)
{
Delay(50000);
P1=0xff;
Delay(50000);
P1=temp;
}
P1<<=1;
P1=P1|0x01; //左移后,最右端自动赋值0,所以需要该语句赋值1
}
P1=0xfe; //重新赋初始值
/*********下面是从1~8闪烁一次*********/
for(i=0;i<8;i++)
{
Delay(50000);
P1<<=1;
P1=P1|0x01;
}
/********下面是全部闪烁两次********/
for(i=0;i<2;i++)
{
P1=0x00;
Delay(50000);
P1=0xff;
}
P1=0xfe; //重新初始化P1
//主循环中添加其他需要一直工作的程序
}
}
/*------------------------------------------------
延时函数,含有输入参数 unsigned int t,无返回值
unsigned int 是定义无符号整形变量,其值的范围是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}/*-----------------------------------------------
名称:IO口高低电平控制
论坛:www.doflye.net
编写:shifang
日期:2009.5
修改:无
内容:循环左移,始终一个led点亮,并循环执行流水动作,左移符号 << 逻辑或符号 |
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
void Delay(unsigned int t); //函数声明
/*------------------------------------------------
主函数
------------------------------------------------*/
void main (void)
{
unsigned char i,j,temp; //定义一个无符号字符型局部变量 i 取值范围 0~255
Delay(50000);
P1=0xfe; //赋初始值
while (1) //主循环
{
/**********下面是从1~8闪烁两次*****/
for(i=0;i<8;i++) //加入 for循环,表明for循环大括号中的程序循环执行8次
{
temp=P1;
for(j=0;j<2;j++)
{
Delay(50000);
P1=0xff;
Delay(50000);
P1=temp;
}
P1<<=1;
P1=P1|0x01; //左移后,最右端自动赋值0,所以需要该语句赋值1
}
P1=0xfe; //重新赋初始值
/*********下面是从1~8闪烁一次*********/
for(i=0;i<8;i++)
{
Delay(50000);
P1<<=1;
P1=P1|0x01;
}
/********下面是全部闪烁两次********/
for(i=0;i<2;i++)
{
P1=0x00;
Delay(50000);
P1=0xff;
}
P1=0xfe; //重新初始化P1
//主循环中添加其他需要一直工作的程序
}
}
/*------------------------------------------------
延时函数,含有输入参数 unsigned int t,无返回值
unsigned int 是定义无符号整形变量,其值的范围是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}
我用的是P1端口,当端口为低电平时点亮LED
㈥ 单片机,花样流水灯(用循环结构实现):先下面4个LED灯闪烁3次,再上面4个
#include<reg51.h>
#define uchar unsigned char
uchar num;
sfr led=P0;
sbit speaker=P1^0;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
main()
{
uchar i;
while(1)
{
for(i=0;i<3;i++)
{
led=0xf0;
delay(200);
clr speaker;
led=0xff;
delay(200)
setb speaker;
for(i=0;i<3;i++)
{
led=0x0f;
delay(200);
clr speaker;
led=0xff;
delay(200)
setb speaker;
}
for(i=0;i<2;i++)
{
led=0x00;
delay(200);
clr speaker;
led=0xff;
delay(200)
setb speaker;
}
}
㈦ 基于单片机的花样流水灯控制
单片机流水灯,是学习单片机的基础实验,花样+按键是稍微进一步,可以多看一些实例,网上有很多仿真实例可以参考学习。
㈧ 一个花样流水灯单片机程序(要求1,3,5,7灯亮,2,4,6,8灯亮然后全灭)
先把P1口全部接低电平。
ORG 0000H。
AJMP START。
ORG 0040H。
AA:MOV P1,#55H。
ACALL DELAY。
MOV P1,#0AAH。
ACALL DELAY。
MOV P1,#00H。
ACALL DELAY。
AJMP AA。
DELAY:MOV R5,#256。
LOOP2:MOV R4,#256。
LOOP1:NOP。
NOP。
DJNZ R4,LOOP1。
DJNZ R5,LOOP2。
RET。
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。
在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
㈨ 请帮忙编写一个花样流水灯单片机程序(要求1,3,5,7灯亮,2,4,6,8灯亮然后全灭)
先把P1口全部接低电平!
ORG 0000H
AJMP START
ORG 0040H
AA:MOV P1,#55H
ACALL DELAY
MOV P1,#0AAH
ACALL DELAY
MOV P1,#00H
ACALL DELAY
AJMP AA
DELAY:MOV R5,#256
LOOP2:MOV R4,#256
LOOP1:NOP
NOP
DJNZ R4,LOOP1
DJNZ R5,LOOP2
RET
㈩ 单片机,花样流水灯
K1 BIT P3.0
K2 BIT P3.1
ORG 0000H
JMP START
START:
MOV TMOD, #01H
SETB TR0
MOV R4, #7FH
MOV R5, #7FH
MOV R6, #0FEH
M_LOOP:
JNB K1, K1_PROG
JNB K2, K2_PROG
MOV P1, R4
MOV A, R4
RR A
MOV R4, A
CALL DL1S
JMP M_LOOP
;---------------------------------
K1_PROG:
MOV A, R5
ANL A, R6
MOV P1, A
MOV A, R5
RR A
MOV R5, A
MOV A, R6
RL A
MOV R6, A
CJNE R6, #0EFH, K1_DL
MOV R5, #7FH
MOV R6, #0FEH
K1_DL:
CALL DL1S
JMP M_LOOP
;---------------------------------
K2_PROG:
MOV R3, #16
LP2:XRL P1, #255
CALL DL1S
DJNZ R3, LP2
JMP M_LOOP
;---------------------------------
DL1S:
MOV R2, #20
LP1:MOV TL0, #LOW (65536-50000)
MOV TH0, #HIGH(65536-50000)
JNB TF0, $
CLR TF0
DJNZ R2, LP1
RET
;---------------------------------
END