‘壹’ 用C语言编写,单片机控制LED灯并用定时器延时,每隔一秒使LED依次点亮,8 个灯
我再帮你补一课,看了你的标题,我写了一个用定时器0来控制一个LED灯第隔1秒钟亮灭一次的程序,希望对你有用,另外我也写了一个你说的那个程序,一起发上来吧
****************这个是用定时器0控制一个灯的亮和灭******************************
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/**************************************/
uchar num;
bit tt;
sbit d=P1^0;
/******************主程序入口********************/
void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TCON=0x10;
EA=1;
ET0=1;
tt=255;
while(1)
{
if(num==20)
{
tt=!tt;
d=tt;
num=0;
}
}
}
void timer() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++;
}
****************这个程序是逐个点亮的(思路:由256逐减1,值由LED灯显示)***********************
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/**************************************/
uchar num,tt;
//bit tt;
sbit d=P1^0;
/******************主程序入口********************/
void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TCON=0x10;
EA=1;
ET0=1;
tt=255;
while(1)
{
if(num==20)
{
tt--;
P1=tt;
num=0;
}
}
}
void timer() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++;
}
‘贰’ 单片机延时一秒的c程序
单片机延时一秒
程序是不固定的
要根据你的晶振 计算出一次循环执行需要的时间
然后 写循环次数
一般是
voiddelay_one_second(void)
{
inti;
for(i=0;i<TIMES;i++);
}
这样就可以了。 TIMES是要计算的。或者 根据示波器 自己尝试。
‘叁’ 51单片机延时一秒函数,晶振12MHZ
我这有个函数自己实验出来的,在KEIL里看差不多就是延时1毫秒
void delay1ms(unsigned int t)
{
unsigned x,y;
for(x=t;x>0;x--)
for(y=124;y>0;y--);
}
把t 改为你要延时的数就可以了,1毫秒就把t改为1 500毫秒就把t改为500