编写LED控制程序,完成LED奇数号灯和偶数号灯的交替显示

来源:互联网 发布:怎么看b超单子的数据 编辑:程序博客网 时间:2024/05/16 05:13

/*
编写LED控制程序,完成LED奇数号灯和偶数号灯的交替显示。
要求:
一、P0口外接8个LED、P1.0~P1.2外接三个按键。
二、T0做延时,溢出定为10ms。
三、按键0~2分别控制闪烁间隔时间分别为,0.5s,1s,2s。
四、开机后,LED全部点亮,3s后以0.5s交替。
单片机高手帮下忙,最好用C写。

悬赏分:80 - 解决时间:2010-1-21 21:42
*/
//最佳答案:
=======================================================
//以下程序通过了PROTEUS仿真试验,可以满足要求。

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit K0 = P3^2;
sbit K1 = P3^3;
sbit K2 = P3^4;

uchar t1 = 0, t2 = 0, t3 = 0, aaa = 0x55, delay_time = 0;
//-------------------------------
void TIME0()interrupt 1
{
    TH0 = 0xD8;                //初值
    TL0 = 0xF0;                //10ms @ 12MHz
    t1++;
    if(t1 == 50) {             //每到500ms
      t1 = 0;
      t2++;
      if(t2 == 6) {            //到了3s
        t2 = 5;
        t3++;
        if (t3 >= delay_time) {
          t3 = 0;
          aaa = 255 - aaa;
          P0 = aaa;
    } } }
}
//-------------------------------
void main()                    //主函数
{
    TMOD = 0x01;               //T0定时
    TH0 = 0xD8;                //初值
    TL0 = 0xF0;                //10ms @ 12MHz
    TR0 = 1;
    ET0 = 1;
    EA = 1;
    P0 = 0x00;
    delay_time = 1;
    while (1) {
      if (K0 == 0) delay_time = 1;
      if (K1 == 0) delay_time = 2;
      if (K2 == 0) delay_time = 4;
    }
}

用 PROTEUS 仿真截图如下:

编写LED控制程序,完成LED奇数号灯和偶数号灯的交替显示 - 非著名博主 - 电子信息角落

图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/b20572ca39dbb6fd457e3f930924ab18962b37bb.html

=======================================================
回答者:做而论道 - 十二级   2010-1-5 20:57
原题网址:http://zhidao.baidu.com/question/132137803.html
=======================================================

0 0
原创粉丝点击