当前位置:首页 » 编程语言 » c语言单片机延时1秒走马灯
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言单片机延时1秒走马灯

发布时间: 2022-06-07 19:15:51

A. 请问以下有关单片机跑马灯的c语言程序各语句的含义(详细)

#include <reg51.h> //51头文件
#include <intrins.h> //包含移位函数_crol_
void Delay10ms(unsigned int c); //延时函数声明

void main(void)
{
unsigned char LED;

LED = 0x01; //一个unsigned char有8位,每一位代表了一个灯,初始点亮第一盏灯
while(1)
{
P0 = LED; //点亮一盏灯

Delay10ms(50); //延时500ms,让其量一会儿

LED = _crol_(LED,1); //向左移位函数,比如 0x01 --> 0x02 --> 0x04 -->0x08 ---> 0x10
}
}

void Delay10ms(unsigned int c) //延时函数
{
unsigned char a, b;

for (;c>0;c--) //三重循环延时,大约延时10ms
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}

B. 51单片机 ,设计一个跑马灯程序,用软件延时,p0输出,怎么设计c语言,用p1口的开关控制灯循环的速率

51单片机是单片机接触最早的,下边这个程序希望能帮到你。(只有主函数,就不进行硬件什么定义以及头文件包含什么的了)

void delay(int times){//延时函数,times控制延时时间
int i, j;

for(i = 0; i < times; i++)

for(j = 0; j < 210; j++)

;

}
int main(void){
unsigned char data, i;
while(1){

data = P1;//把开关值读回来
for(i = 0; i < 8; i++){
P0 = ~(0x01 << i); //某位为高电平某位对应的灯亮
delay(data);//把读取的开关值用来控制延时

}
}
}

C. 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();

}

}

}

(3)c语言单片机延时1秒走马灯扩展阅读:

Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程/仿真/调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。

D. 单片机延时1秒如何计算要最详细一点的要过程用C语言

unsigned char rSecondCount; //秒计时数
unsigned char rMinuteCount; //分计时数
sbit IsOneSecondReach;
sbit Pulse_Sec=P1^0;
sbit Pulse_Min=P1^1;
main()
{
rSecondCount=0;
rMinuteCount=0;
TH1=0x3C;
TL1=0xAF; //定时器50ms产生一次中断 (FFFF-3CAF)us
MOD = 0x10; //定时器1工作于模式1,(用工作于模式2也可以,而且更 简便)
TR1=1; //使能定时器1
ET1=1; //开中断
EA=1; //开全局中断
while(1)
{
if (IsOneSecondReach)
{
IsOneSecondReach = 0;
//do something,如果一秒延时标志为1,则清除此标志,等待下次1秒,在此处
//执行需要执行的程序
}
}
}
/* 定时器50ms产生一次中断 */
void Timer(void) interrupt 3
{
/* 重新载入T1参数 */
TH1=0x3C;
TL1=0xAF;
/* 一秒累加 */
rSecondCount++;//秒计时+1
if (rSecondCount==20) //1sec到,50ms*20
{
IsOneSecondReach = 1;
}
}
//
脉冲宽度为50ms,如果有其他要求的话,修改T1参数和“秒分”的参数凑下就行了.

E. 单片机跑马灯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--); //延时一下
}
}
//只是示例,凑和一下

F. 关于定时计数编写延时函数应用于跑马灯的问题,单片机初学者求解

#include "reg51.h"
#include "intrins.h"
#define uint unsigned int
#define uchar unsigned char
void DELAYms( uint x )
{
uint t;
t=x/50;
while(1)
{
if(TF0==1)
{
t--;
TF0=0;
if(t==0)
break;
TH0=0x3c;
TL0=0xb0;
}
}
}

void main(void)
{
uchar i;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TF0=0;
TR0=1;
P0=0xfe;
while(1)
{
for(i=0;i<2;i++)
{
DELAYms(1000);
P0=_crol_(P0,1);
}
for(i=0;i<2;i++)
{
DELAYms(1000);
P0=_cror_(P0,1);
}
}
}

G. 求单片机一秒延时程序(12M晶振),要用C语言且用定时和中断

我以前写的控制跑马灯的程序,有1s定时,也有中断,
根据需要修改修改就可以了。
#include<reg51.h>
#define
uchar
unsigned
char
#define
uint
unsigned
int
void
delay(uchar
uu);
main()
{
EA=1;
EX0=1;//开总中断和外部中断0;
EX1=1;//开中断1?
ET0=1;
PX0=1;
PX1=1;
IT0=1;
IT1=1;
while(1)
{
P2=0;
delay(20);
P2=0xff;
delay(20);
}
}
void
int1()
interrupt
0
using
2
{
uchar
aa,i,j,k;
i=0xfe;
for(aa=0;aa<4;aa++)
{
P2=i;
j=i>>7;
k=i<<1;
i=k|j;
delay(20);
}
}
void
int2()
interrupt
2
using
3
{
uchar
bb,ii,jj,kk;
ii=0x7f;
for(bb=0;bb<4;bb++)
{
P2=ii;
jj=ii<<7;
kk=ii>>1;
ii=kk|jj;
delay(20);
}
}
void
delay(uchar
uu)
//uu*5ms定时;
{
uchar
aaa;
for(aaa=0;aaa<uu;aaa++)
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
while(!TF0);
TF0=0;
}
}

H. 利用单片机c语言编程设计闪烁时间为1秒流水灯程序

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=120;i>0;i--);
}
}
void main()
{
P0 = 0xFE;
while(1)
{
P0 = _crol_(P0,1);
DelayMS(500);
}
}