求STC89C52的单片机跑马灯C语言程序

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-07
stc89c52单片机8盏led灯一直闪烁的c语言程序

include
int main(){
while(1){
p1=0xff;

delay();

p1=~p1;
}
}

void delay(){
for(int i=0;i<1000;i++)

for(int j=0;j,1000;j++)

}

太久不碰单片机了,记不清了,大概就是这样

#include
#include
//本例采用89C52, 晶振为11.0592MHZ
//关于如何编制音乐代码, 其实十分简单,各位可以看以下代码.
//频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;
//所以拿出谱子, 试探编吧!
sbit Beep = P1^5 ;

unsigned char n=0; //n为节拍常数变量
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,
0x20, 0x40, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x10,
0x1C, 0x10, 0x18 , 0x40,
0x1C, 0x20, 0x20 , 0x20,
0x1C, 0x20, 0x18 , 0x20,
0x20, 0x80, 0xFF , 0x20,
0x30, 0x1C, 0x10 , 0x18,
0x20, 0x15, 0x20 , 0x1C,
0x20, 0x20, 0x20 , 0x26,
0x40, 0x20, 0x20 , 0x2B,
0x20, 0x26, 0x20 , 0x20,
0x20, 0x30, 0x80 , 0xFF,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x80,
0x20, 0x30, 0x1C , 0x10,
0x20, 0x10, 0x1C , 0x10,
0x20, 0x20, 0x26 , 0x20,
0x2B, 0x20, 0x30 , 0x20,
0x2B, 0x40, 0x20 , 0x15,
0x1F, 0x05, 0x20 , 0x10,
0x1C, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x30,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x40, 0x1C , 0x20,
0x20, 0x20, 0x26 , 0x40,
0x13, 0x60, 0x18 , 0x20,
0x15, 0x40, 0x13 , 0x40,
0x18, 0x80, 0x00
};

void int0() interrupt 1 //采用中断0 控制节拍
{ TH0=0xd8;
TL0=0xef;
n--;
}

void delay (unsigned char m) //控制频率延时
{
unsigned i=3*m;
while(--i);
}

void delayms(unsigned char a) //豪秒延时子程序
{
while(--a); //采用while(--a) 不要采用while(a--); 各位可编译一下看看汇编结果就知道了!
}

void main()
{ unsigned char p,m; //m为频率常数变量
unsigned char i=0;
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(1)
{
a: p=music_tab[i];
if(p==0x00) { i=0, delayms(1000); goto play;} //如果碰到结束符,延时1秒,回到开始再来一遍
else if(p==0xff) { i=i+1;delayms(100),TR0=0; goto a;} //若碰到休止符,延时100ms,继续取下一音符
else {m=music_tab[i++], n=music_tab[i++];} //取频率常数 和 节拍常数
TR0=1; //开定时器1
while(n!=0) Beep=~Beep,delay(m); //等待节拍完成, 通过P1口输出音频(可多声道哦!)
TR0=0; //关定时器1
}
}

你参考这个吧

int runlinght()
{int i,j;
j=1;
for(i=0;i<8;i++)
{P[i]=(j<<i); //假设输出高点亮
timedelay();
};
时间的问题,这里你只要在延时函数里解决就OK了,你在主函数里面计算调用点灯函数的次数,再用这个标志去改变延时函数的参数。

#include<reg51.h>
#define uint unsigned int
void delay(int m);

void main()
{
uint temp=0xfe;
uint k,i,count;
P2=temp;
while(1)
{
while(k<8)
{
switch(count)
{case 0:
case 1:delay(50);break;
case 2:
case 3:delay(25);break;
case 4:
case 5:delay(100);break;
}
if(temp==0xff) temp<<=1;
else temp=(temp<<1)+1;
P2=temp;
k++;
}
count++;
if(count>5) count=0;
}
}
void delay(int m) //要想得到精确的延时,改成用定时器
{
for(i=0;i<m;i++)
for(j=0;j<110;j++);

#define uint unsigned int
#define uchar unsigned int
void fun(uint sec)
{
uchar i,j;
j=1;
for(i=0;i<8;i++)
{P[i]=(j<<i); //假设输出高点亮
timedelay(sec);//根据输入的形参来决定延时的长久
};

int
runlinght()
{int
i,j;
j=1;
for(i=0;i<8;i++)
{P[i]=(j<<i);
//假设输出高点亮
timedelay();
};
时间的问题,这里你只要在延时函数里解决就OK了,你在主函数里面计算调用点灯函数的次数,再用这个标志去改变延时函数的参数。

#define
uint
unsigned
int
#define
uchar
unsigned
int
void
fun(uint
sec)
{
uchar
i,j;
j=1;
for(i=0;i<8;i++)
{P[i]=(j<<i);
//假设输出高点亮
timedelay(sec);//根据输入的形参来决定延时的长久
};

  • 这几天被51单片机书搞得一头雾水,想找一家单片机培训班学习,东莞有吗...
    答:6、单片机软件的开发调试流程 7、嵌入式软件的架构及工作原理 8、C语言的入口,注释、格式 9、for, while ,>>,<<的用法(位运算)以及二进制、16进制 10、使用for, while ,>>,<<控制LED 11、C语言子程序实现 12、使用子程序LED闪烁 (流水灯,跑马灯,花样灯。。。)13、if的应用 14、捕捉一...
  • 自学单片机 希望能自己动手焊接点东西 比如自己做个跑马灯和蜂鸣器结合...
    答:你可以去电子市场买块面包板,一些导线,按原理图购买元器件,好了,直接用线连接就OK。如果非要过一下焊接的瘾,那么你可以买一块实验板,一些导线,按原理图购买元器件,还需要购买烙铁,焊锡,吸锡器(便于修改焊错的地方),基本这些就OK了。最后,就是最好买个开关电源,提供单片机电源。
  • 如何在液晶上显示汉字,单片机用的ATmega16,液晶是1602,求详细代码
    答:(没有并口的电脑 但是有串口的可以采用STC89C52芯片 利用串口下载程序 购买时请说明 我们会配STC89C52...直接支持Atmel 89系列,AVR AT90S8515,Atmega8515系列单片机的烧写,提供丰富的实验例程,附带C源代码和...4、8位LED发光二极管(做 跑马灯实验 交通灯实验 )。 5、一路继电器控制(通过继电器可以控制其他电器...
  • stc12c5a60s2系列单片机 p4 P5这两个端口应该怎么使用?
    答:P4 P5口有对应寄存器地址的,定义好了 就可以直接使用
  • 求STC89C52单片机的详细资料?包括引脚功能,存储器等等的详细介绍,越...
    答:另外,stc89c52可降至0hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu 停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8k字节在系统可编程 flash p0 口:p0口是...
  • LED跑马灯控制系统:共16只LED发光二极管。 按1键,由左到右发光二极管依...
    答:嗯,帮你写写咯 /// //STC89C52单片机12M晶振 //用P1、P2口来控制流水灯 //天天奕想 389509537@qq.com /// include <reg52.h> define uchar unsigned char define uint unsigned int sbit KEY2 = P3^1;sbit KEY2 = P3^2;sbit KEY3 = P3^3;uchar CountNum;//溢出次数计数 void dela...