㈠ 利用8031单片机,设计跑马灯和流水灯。急急急。
;以下程序,仿真调试成功.
ORG 0000H ;程序开始地址.
SJMP MAIN ;跳转到MAIN.
ORG 0030H ;程序入口.
MAIN:
MOV 30H, #7FH
MOV 31H, #55H
LOOP1:
MOV A, 30H
LOOP11:
RL A
MOV P1, A
LCALL DELAY
JNB P3.2, LOOP2
SJMP LOOP11
LOOP2:
MOV A, 31H
LOOP22:
CPL A
MOV P1, A
LCALL DELAY
JB P3.2, LOOP1
SJMP LOOP22
DELAY:
MOV R7, #250
DL1:MOV R6, #100
DL2:MOV R5, #10
DL3:DJNZ R5, DL3
DJNZ R6, DL2
DJNZ R7, DL1
RET
END
㈡ 单片机跑马灯C语言程序,只要实现跑马灯功能,要简单点
#include<stdio.h>
#include<reg51.h>
void main()
{
int a;
unsigned char tmp=0;
while(1)
{
if(tmp==0) tmp=0x80;
else tmp = (tmp>>1);
P1 = tmp; //P1.0到P1.7控制8个灯
for(a=50000;a;a--); //延时一下
}
}
//只是示例,凑和一下
㈢ 很简的51单片机C语言流水灯程序
1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。
例程:
#include<reg51.h> //51单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit beep=P2^3;
void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{ //delay(500);大约延时500ms.
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() //主函数
{
uchar a,i,j;
while(1) //大循环
{
a=0xfe; //赋初值
for(j=0;j<3;j++) for(i=0;i<8;i++) //左移三次
{
P1=a; //点亮小灯
beep=0; //开启蜂鸣器
delay(50); //延时50毫秒
beep=1; //关闭蜂鸣器
delay(50); //再延时50毫秒
a=_crol_(a,1); //将a变量循环左移一位
}
a=0x7f;
for(j=0;j<3;j++) for(i=0;i<8;i++) //右移三次
{
P1=a; //点亮小灯
beep=0; //开启蜂鸣器
delay(50); //延时50毫秒
beep=1; //关闭蜂鸣器
delay(50); //再延时50毫秒
a=_cror_(a,1); //将a变量循环右移一位
}
}
}
2、51单片机是对所有兼容Intel
8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash
rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。
㈣ 51单片机设计跑马灯的程序用(c语言)编写
|P1口接8个发光二极管共阳
#include <AT89X51.H>
unsigned char i;
unsigned char temp;
unsigned char a,b;
void delay(void)
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
void main(void)
{
while(1)
{
temp=0xfe;
P1=temp;
delay();
for(i=1;i<8;i++)
{
a=temp<<i;
b=temp>>(8-i);
P1=a|b;
delay();
}
for(i=1;i<8;i++)
{
a=temp>>i;
b=temp<<(8-i);
P1=a|b;
delay();
}
}
}
(4)单片机跑马灯和流水灯C语言扩展阅读:
Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程/仿真/调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。
㈤ 单片机跑马灯c语言程序:数码管倒计时10秒流水灯开始工作的仿真图
#include <reg51.h>
void delay(unsigned int i); char LED;
char TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,//共阳极0~4数码管显示数据
0x92,0x82,0xF8,0x80,0x98,//共阳极4~9数码管显示数据
0xA0,0x83,0xa7,0xa1,0x84,0x8e};
main()
{
unsigned char i;
while (1)
{ LED = 0xfe;
for (i = 0 ;i < 8 ; i++)
{
P0 = LED;
delay(500);
LED = LED << 1; LED = LED | 0x01; if (LED == 0x7f) break; }
for (i = 0 ;i < 8 ; i++)
{
P0 = LED;
delay(500);
LED = LED >> 1; LED = LED | 0x80;
}
}
}
while(1)
{
a[0]=*s%10; //给显示数组赋值
a[1]=*s/10;
a[2]=10;
a[3]=*m%10;
a[4]=*m/10;
a[5]=10;
/*******延时函数*************/
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 255; j > 0; j--);
}
㈥ 单片机流水灯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++);
}
(6)单片机跑马灯和流水灯C语言扩展阅读
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);
}
}
}
㈦ 单片机流水灯的程序怎么打(C语言)顺便解释解释。
你的事C语言 回答的是汇编 如下 //led显示程序,简单地显示led的程序
//展示了如何控制端口的方法
//现象 : led 8个灯从左到右,然后从右到左显示;#include <8051.h>void delay(unsigned char times);void main()
{
int k,m;
P0 = 0; //关闭数码显示
P2 = 0; //
P3_7 = 0; //关闭蜂鸣器
while(1) //设置一个无限制循环
{ m = 254;
P1 = m; //从第一个灯开始显示
for(k=0;k<8;k++)
{delay(255);<br> m <<=1;<br> P1 = m; //表示,P1每次向左一位<br> }
m = 128;
for(k=0;k<8;k++) //第二次重复
{delay(255);<br> m >>= 1;<br> P1 = m; //表示,P1每次向右一位<br> }
}
}
㈧ 用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)
#include<reg51.h>
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();
}
}
(8)单片机跑马灯和流水灯C语言扩展阅读
单片机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;//点亮第八个发光管
}
}
㈨ 问有关用C语言单片机做的流水灯的问题
这个核心的东西是单片机控制的原理,代码比较简单。
我想你不明白的是管脚是如何被控制的:
单片机的通用端口可以通过控制输出高、低电平,想输出高电压那就给控制此管脚的寄存器赋值1,低电压那么就给值0。
这里P1寄存器控制着8个管脚,每个管脚控制着一个灯。同样P0也控制着8个灯。这里P1即表示寄存器。
硬件电路上,灯的两个脚接的都是高电平,那么没有电流通过,不亮。当有一个脚电平变低,那么有了电压降,灯亮了。
P1=0xFE,2进制是1111 1110,表示p1.0=0,即第一个管脚是0值,低电平,而其他的管脚都是高。那么第一个灯亮了。
通过延时,让第一个灯亮了一会。
P2=0xFD,即1111 1101,关了第一个灯,然后让第二灯亮了。
其他同理。
从数组的值,可以看出灯亮灭的顺序:
1111 1110
1111 1101
1111 1011
1111 0111
1110 1111
1101 1111
1011 1111
0111 1111
....
此数组值是先让灯亮一个,从头到尾灯挨个亮,接着再从头跑一遍。
然后反方向跑一遍,再1遍。
最后全亮,全灭,全亮,全灭
再从头循环..........
你如果设计8个,那么就用P0或者p1中的一个即可。
即删除程序中的:
P0=table[i];//P0灯亮
或者
P1=table[i];//P0灯亮
流程如下:
开始
进入主循环
判断是否到一次跑马灯结束
是结束就将i值为0,即从头开始又一轮的跑马灯。
否就继续本轮的跑马灯
先让给P1赋值让P1上指定的灯亮。
然后延时让这个灯亮一会。
接着给P0赋值让P0上指定的灯亮。
继续主循环