51单片机流水灯程序

p0-p7八个二极管。1使发光二极管每隔1秒循环点亮。循环时间由定时器控制。要求使用51内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1益出中断一次。... p0-p7八个二极管。
1 使发光二极管每隔1秒循环点亮。循环时间由定时器控制。要求使用51内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1益出中断一次。
2 模拟一时序控制装置。开机后一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮…… 一直循环下去。
要求C语言或者51单片机语言
展开
 我来答
百度网友7247a56
2013-08-13 · TA获得超过4616个赞
知道大有可为答主
回答量:1422
采纳率:92%
帮助的人:490万
展开全部
程序如下,仿真见附件。有问题请追问。

#include <AT89X51.h>
#define uchar unsigned char
#define uint unsigned int
bit flag_1s=0;
uchar code tab[8]={1,2,4,8,16,32,64,128};//[第1小题用这个表]
//uchar code tab[8]={0x05,0x0a,0x50,0xa0,0xaa,0x55,0xff,0x00};//[第2小题用这个表]
void InitTimer1(void)
{
    TMOD = 0x10;
    TH1 = 0x3C;
    TL1 = 0x0B0;
    EA = 1;
    ET1 = 1;
    TR1 = 1;
}
void main(void)
{
    static uchar j;
    InitTimer1();
P0=0;
P1=0;
P2=0;
P3=0;
flag_1s=1;
while(1)
{
if(flag_1s==1)
{
flag_1s=0;
P2=tab[j];
j++;
if(j>=8) j=0;
}
}
}
void Timer1Interrupt(void) interrupt 3
{
    static uchar i;
    TH1 = 0x3C;
    TL1 = 0x0B0;
    //add your code here!
    i++;
    if(i>=20)//50ms*20=1000ms
    {
    i=0;
    flag_1s=1;
    }
}
意法半导体(中国)投资有限公司
2021-01-14 广告
单片机中流水灯控制: 硬件连接很简单,只要将8个led指示灯接在p1口上 另一端通过20欧姆的电阻接+5v电源上,就可以了。 主要靠软件控制,简单的可以使用左移或右移指令,将低电平0 逐渐移入寄存器中,即控制led指示灯逐渐一个一个地点亮或... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式