标题:
如何用51单片机和定时计数器设计一个按2s交替闪烁的三盏灯系统 求思路
[打印本页]
作者:
xiaohukiku
时间:
2020-5-19 09:20
标题:
如何用51单片机和定时计数器设计一个按2s交替闪烁的三盏灯系统 求思路
如题
作者:
stcx
时间:
2020-5-19 17:27
点亮灯1
关闭灯3
延时2s
点亮灯2
关闭灯1
延时2s
点亮灯3
关闭灯2
延时2s
作者:
老帅比
时间:
2020-5-20 11:39
stcx 发表于 2020-5-19 17:27
点亮灯1
关闭灯3
延时2s
做一个循环,在循环体内,三个灯依次轮流为低电平,并加入延时函数为两秒
作者:
新征途
时间:
2020-5-20 16:09
如果楼主想要精确延时的话,推荐使用定时器中断,再加一个全局变量或者是静态的局部变量实现。每2s进一次中断,变量值也随之改变,当第三次进入时,再将其赋初值,然后主函数里通过判断变量值来点亮不同的灯。
作者:
cuihaodianzi
时间:
2020-5-20 18:38
51单片机和定时计数器是什么意思,既要单片机又要定时 又要计数 ?
单片机不是带定时器吗?
作者:
渣渣馬
时间:
2020-5-20 21:12
灯的端口为0时为亮
作者:
渣渣馬
时间:
2020-5-20 21:13
#include<reg51.h>
sbit D1=P0^0; //可以找I/O口的任意三个端口
sbit D2=P1^1;
sbit D3=P2^2;
void DelayMs(int x) //延时
{
int i;
while(x--) for(i=0;i<120;i++);
}
void init() //初始化
{
TMOD=0x02; //T0方式2定时 自动重装的方式
TR0=1; //开寄存器
TH0=256-200; //设置200us的初值
}
void main()
{
int t=0,t1=0;
init();
while(1)
{
if(TF0) TF0=0,t++; //清除溢出标志
if(t==10000) t=0,t0++; //当t为10000为2s
switch(t0)
{
case 0:D1=0,D2=1,D3=1;break;
case 1:D1=1,D2=0,D3=1;break;
case 2:D1=1,D2=1,D3=0;break;
default:t=0;
}
}
}
作者:
渣渣馬
时间:
2020-5-20 21:14
灯的端口为0时为点亮,希望有用!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1