A. 单片机怎么写才能让led灯每隔5秒亮下一个并且数码管一直从5到0显示倒计时
设为共阳极七段数码管;
char segCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} //共阳极七段码
char bitCode[]={0x01,0x02,0x04,0x08,0x10,0x20} //共阳极6位位码,高电平有效
/***在指定位显示数据***/
// m为待显示的七段码数据
// k为指定的位显示数据
void show(char m,char k)
{ char dat;
dat = segCode[m]; // m=0,1,2,3,4,5,6,7,8,9
HC573(dat,1); //输出段码
dat = bitCode[k]; // k=0,1,2,3,4,5
HC573(dat,2); //输出位码
}
sbit segm = P2^6; //段锁存
sbit bitc = P2^7; //位锁存
/*** HC573 接收锁存数据***/
void HC573(char dat,char nub)
{
P0=dat;
if(nub==1)
{ segm=1;segm=0;} //输出段锁存信号
if(nub==2)
{ bitc = 1;bitc = 0;} //输出位锁存信号
}
bit intflag;
void main()
{ char times;
intflag=0; times=5;
P1=0xff;
initime0() ; //初始化定时器0
while(1)
{ if(intflag)
{ intflag=0 ;
show(times,0) ; // 因为仅有一位显示,不考虑位扫描问题
times--;
if(times==0) { times=5; P1=~P1; }
}
}
}
B. 用单片机中断控制LED闪烁
假设counter3每秒计数一次,并且一直不断的 自身加1
bit f; ///定义一个标志位,0表示亮,1表示灭
f=0;
if(100<m&&m<125) ///我不清楚你这个m变化的过程,有可能会影响以下代码的执行
{
if(f==0)
{
if(counter3==3)
{
f=1;
led2=1; // LED2亮灯3秒后熄灯
counter3=0;
}
}
if(f==1)
{
if(counter3==4)
{
f=0;
led2=0; // LED2熄灯4秒后亮灯
counter3=0;
}
}
}
C. 单片机控制单个LED闪烁五下的c程序,希望能加讲解,谢谢啦
c语言程序很简单:
#include<reg51.h>//包含头文件
sbit LED=P1^0;//位变量定义
void main()//主程序
{
unsigned char i;//声明一个变量
for(i=0;i<5;i++)/循环5次
{
LED=0;//亮
delayms(500);//延时
LED=1;//灭
delayms(500);//延时
}
while(1);//停止不动
}
延时子程序随便搜一个,如果时间差别太大,可调某些参数
D. 在52单片机上实现:点亮任意一个LED,先以1HZ的频率闪烁5秒,再以100HZ的频率闪烁5秒,以此循环.
大体思路:设P0^0控制LED的亮灭,当P0.0=0时灯点亮。有两种闪烁方式,可以让1HZ的在main()函数里闪烁。然后开个定时器,让100HZ的在定时器中断里闪烁,就行了。
1HZ就是1S亮一次,100HZ是10ms亮一次
#include<reg52.h>
void delay(int x)
{
时间是5ms;
}
void timer1()interrupt 1 定时器0中断
{
static unsigned int a;
unsigned int b;
if(++a==5) 看是否到了5S
{
TR0=0;先把定时器关了,防止在送段运行时再次进入中断。
a=0;
for(b=1000;b>0;--b)
{
P0.0=0; 让灯亮灭的间隔为5MS。一共闪5S
delay(1);
p0.0=~p0.0;
delay(1);
}
}
TH0=XX; 再次 设置好定时器,让它每隔1S进一次中断;
TL0=XX;
TR0=1;
}
void main()
{
TH0=XX; 设置好定时器,让它每隔1S进一次中断;
TL0=XX;
TR0=1;
while(1)
{
P0.0=0; 灯开始以500ms为间隔开始亮灭。
delay(100);
p0.0=~p0.0;
delay(100);
}
}
E. 用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!
C语言实现LED灯闪烁控制配套51单片机开发板。
#include //包含单片机寄存器的头文件
/****************************************
函数功能:延时一段时间
*****************************************/
void delay(void) //两个void意思分别为无需返回值,没有参数传递。
{
unsigned int i; //定义无符号整数,最大取值范围65535。
for(i=0;i<20000;i++) //做20000次空循环。
; //什么也不做,等待一个机器周期。
}
/*******************************************************
函数功能:主函数 (C语言规定必须有也只能有1个主函数)。
********************************************************/
void main(void)
{
while(1) //无限循环。
{
P0=0xfe; //P1=1111 1110B, P0.0输出低电平。
delay(); //延时一段时间。
P0=0xff; //P1=1111 1111B, P0.0输出高电平。
delay(); //延时一段时间。
}
}
单片机驱动LED灯的源程序:
#include<reg52.h> //头文件。
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P1^7; //位定义。
void delay_ms(uint);//mS级带参数延时函数。
void main()
{
while(1)
{
LED1=0;
delay_ms(1000);
LED1=1;
delay_ms(1000);
}
}
void delay_ms(uint z) //延时子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
(5)用单片机控制一个led灯闪烁五秒扩展阅读:
单片机应用分类:
通用型:
这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。
总线型:
这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。
另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。
控制型:
这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。
通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。
参考资料来源:网络-单片机
F. 51单片机怎么只控制一颗LED灯闪烁
1、新建项目,如图所示。
注意事项:
很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。
G. 51单片机led灯亮一秒停五秒程式怎么写
void delay_s(unsigned char t);
void main()
{
while(1)
{
led = 1;//led 亮
delay_s(1);//延时1s
led = 0;//led 暗
delay_s(5);//延时5s
}
}
这是主循环,你要把delay_s()这个延时函数补充进去,另外,led亮和暗的电平你得根据你得具体电路看是1亮还是0亮。
H. 求单片机c51的C语言编程:设当开关为1时,控制2个led交替闪烁,闪烁时间为5秒
#include#,led;sbitkey1=P1^0;sbitkey2=P1^1;voidt0isr()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;times++;}voidrolled(){P0=led;led=(led>>1)|0x80;if(led==0xff)l