设计8个流水灯灯从中间依次向两边闪烁的C语言程序,不胜感激

如题所述

1.51单片机C语言实现循环8个流水灯左移三次,后右移三次。
例程:

#include<reg51.h>  //51单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int    //宏定义
#define uchar unsigned char  //宏定义
sbit beep=P2^3;
void delay(uint z)  //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{                    //delay(500);大约延时500ms.
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);    
}
void main()            //主函数
{
    uchar a,i,j;
    while(1)        //大循环
    {
        a=0xfe;     //赋初值
        for(j=0;j<3;j++) for(i=0;i<8;i++)   //左移三次
        {
            P1=a;       //点亮小灯
            beep=0;     //开启蜂鸣器
            delay(50); //延时50毫秒
            beep=1;     //关闭蜂鸣器
            delay(50);  //再延时50毫秒
            a=_crol_(a,1); //将a变量循环左移一位
        }
        a=0x7f;
       for(j=0;j<3;j++) for(i=0;i<8;i++)  //右移三次
        {
            P1=a;       //点亮小灯
            beep=0;     //开启蜂鸣器
            delay(50); //延时50毫秒
            beep=1;     //关闭蜂鸣器
            delay(50);   //再延时50毫秒
            a=_cror_(a,1); //将a变量循环右移一位
        }        
    }
}


2.51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-16
假设你的数码管是共阴极的
11100111
11011011
10111101
01111110
1、传递这个给它就从中间往两边走了
2、循环上面的就能不停地流水追问

#include
void main(void)
{

/* 中间到两边亮 */
P1 = 0xe7; //P1 = 1110 0111
P1 = 0xdb; //P1 = 1101 1011
P1 = 0xbd; //P1 = 1011 1101
P1 = 0x7e; //P1 = 0111 1110
请问这个程序还需要怎么改动?

追答

不需要怎么改了,这已经可以流水一次了吧
while(1)
{
P1 = 0xe7; //P1 = 1110 0111
P1 = 0xdb; //P1 = 1101 1011
P1 = 0xbd; //P1 = 1011 1101
P1 = 0x7e; //P1 = 0111 1110
}
这样就能一直流啊流啊了~

本回答被提问者采纳
相似回答