导航:首页 > 操作系统 > 单片机亮灯

单片机亮灯

发布时间:2022-02-04 04:33:06

单片机三种亮灯方式,时间间隔1秒,用到中断

非精确延时控制
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit led P1^0;
void delay(uint x)
{
for(i=0;i<x;i++)

for(j=0;j<120;j++);
}
void main()
{
P1=0xff;

while(1)

{
led=0;

delay(1000);

led=1;

delay(1000);

}
}
定时器控制
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint num;
sbit led=P1^0;
void main()
{
uchar counter;
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
while(1)
{
if(TF0==1)
{
TR0=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
counter++;
}
if(counter==20)
{
counter=0;
led=~led;
}
中断控制,来一个中断就跳转到中断里的程序
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void init()
{
IT0=1;
EX0=1;
EA=1;
}
void main()
{
uchar i,temp;
temp=0xfe;
init();
while(1)
{
for(i=0;i<8;i++)
{
P1=temp;
delay(500);
temp=_crol_(temp,1);
}
}
}
void timer1() interrupt 0
{
uchar i;
for(i=0;i<6;i++)
{
P1=0x00;
delay(1000);
P1=0xff;
delay(1000);
}
}
没有用keil运行了,纯手打,看了看,应该是没有问题的

❷ 51单片机亮灯问题

#include<reg51.h>

#include<stdio.h>

#include<intrins.h>

void delay(void)

{

unsigned char a,b,c;

for(c=50;c>0;c--)

for(b=140;b>0;b--)

for(a=16;a>0;a--);

_nop_();

}

void main(void)

{

int i,j;

P1=0x00;

for(i=0;i<10;i++)//奇偶闪烁,间隔1s

{

P1=0xAA;

delay();

P1=0x55;

delay();

}

P1=0x00;

P1=0x01;

for(j=0;j<10;j++)//10次从左到右流水灯

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

{

delay();

P1=_crol_(P1,1);

}

P1=0XFF;

while(1);

}

❸ 关于51单片机的一个亮灯程序

不知道你说的是啥板子,但是就现象而言,如果P0=0xff全灭而P0=0x01时只有数码管亮,那么很可能你送P0=0xfe就只有灯亮了,因当P0=0x01=0000 0001时恰好是前7位得电点亮一个8字。

❹ 单片机c语言按键亮灯

这个应该不用加按键消抖吧,而且你的意思是按下P5^0后变为P5=0x4f吗?是的话,改成这样:
void main ()
{
Init_Device();
do
{
P5=0x3f;
while (P5^0==0)
P5=0x4f;
} while(1);
不过这加入死循环了,不过应该可以实现上述功能。

❺ 单片机c语言LED灯奇数亮灯。

//LED低电平点亮
//LED1-LED8分别接P2.0-P2.7
#include <REGX51.H>
#define uchar unsigned char
#define uint unsigned int
void delay(unsigned char a) //延时
{
unsigned char i;
while(a--)
for(i=100;i>0;i--);

}
void main(void)
{
uchar i;
P2=0XFF;
while(1)
{
for(i=0;i<8;i=i+2)
{
P2=~(1<<i);
}
}
}

❻ 单片机亮灯系统

这里给你给个单片机控制P1口的8个LED分别亮的程序。如果你需要点亮的不是LED,那就加一个ULN2003A,然后加一个继电器,然后驱动220V的电灯工作。

#include<reg52.h>

unsignedchardis_num[4]={0x05,0x0a,0x50,0xa0};

unsignedcharled_flag=0,led_on;

unsignedchartime_1s=0;

voidmain()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

EA=1;

TR0=1;

P1=0x00;

while(1)

{

if(led_flag==1)

{

led_flag=0;

P1=dis_num[led_on];

}

}

}

voidtimer0_isr(void)interrupt1using1

{

time_1s++;

if(time_1s==20)

{

time_1s=0;

led_flag=1;

led_on++;

if(led_on==4)led_on=0;

}

}

///图片是这个程序中proteus下仿真运行的截图,希望对你有用

❼ 单片机工作状态LED指示灯

我最近做了个测温电路,通过串口传到上位机
led不亮表示温度过低,
长灭短亮表示偏低
常亮表示正常
长亮短灭表示偏高
用定时器计数实现闪烁。一般不用延时,尽量用定时中断。

❽ 怎么用一个LED指示灯用来显示单片机是否正常工作

仿照看门狗的处理方法,零点几秒,能够喂狗一次,这就说明单片机在正常工作。
喂狗的操作,如果没有出来,就说明单片机没有正常工作。

那么,喂狗同时,令 LED 取反,于是,就可以显示出,喂狗在正常进行。
LED 闪动,也就可以说明单片机在正常工作。

LED 静止发光,说明不了单片机正常工作。
只能说明电源,没有掉而已。

❾ 单片机亮灯程序怎么让8盏灯亮10次然后不亮

用51单片机来简单说明一下:

用8只LED代表8盏灯(D1~D8),限流电阻用一个9脚排阻RP1,原理图如下:


以上仅供参考。

阅读全文

与单片机亮灯相关的资料

热点内容
实况为什么安卓看不了 浏览:127
Java多线程Queue 浏览:90
云服务器499元三年 浏览:974
nbd源码 浏览:844
x86在arm上编译 浏览:7
linux怎么配置网络 浏览:307
程序员想要的小礼物 浏览:186
java获取网页url 浏览:624
怎么做解压神器泡泡版 浏览:966
自己动手做一个c编译器 浏览:929
手机如何链接谷歌服务器地址 浏览:137
废掉一个程序员的武功 浏览:249
java树形算法 浏览:641
通达信加锁指标源码怎么看 浏览:754
将同名文件移动到部分同名文件夹 浏览:403
摆荡指标加压力线源码 浏览:915
新一代单片机特征 浏览:770
王者的服务器什么时候才修好 浏览:281
cad历史命令 浏览:41
php博客源代码 浏览:24