历史上的今天
返回首页

历史上的今天

今天是:2024年11月27日(星期三)

正在发生

2020年11月27日 | 单片机P1开关控制低四位流水灯

2020-11-27 来源:51hei

P1开关控制低四位流水灯,速度有点快自己调,有备注。

单片机源程序如下:

#include

#define led P1                //可以改为其他口

void delay(int x);

void left(int x);

void right(int x);

void flash1(int x);

void flash2(int x);

void delay(int x)            //延迟函数1ms(大概)

{int i;

while(x)

{

  for(i=0;i<125;i++);

  x--;

}

}

void left(int x)                //从P1^3到P1^0(我叫它左移)

{int i,j;

while(x)

  {for(i=0;i<3;i++)            // 循环3遍

   {led=0xfe;                  

    delay(50);                    //每个灯亮50ms

    for(j=0;j<3;j++)        //一共四位

     {

      led=led<<1|0xf1;

      delay(50);

     }

   }

   x--;

}

}

void right(int x)            //从最低位的最高位(我叫它右移)

{int i,j;

while(x)                        //其他同左移

  {for(i=0;i<3;i++)

   { led=0xf7;

     delay(50);

     for(j=0;j<3;j++)

     {

      led=led>>1|0xf8;

      delay(50);

     }

   }

  x--;

}

}

void flash1(int x)                //四位全闪 (可以改很多种)

{int i;

while(x)

{led=0xf0;

  delay(100);                //一次亮100ms

  for(i=0;i<1;i++)      //可以改循环次数

   {

    led=~led|0xf0;                //屏蔽高四位

    delay(100);

   }

   x--;

}

}

void flash2(int x)                //隔一位闪烁(全闪改)

{int i;

while(x)                                //基本和全闪一样

{led=0xf5;

  delay(100);

  for(i=0;i<1;i++)

  {

   led=~led|0xf0;

   delay(100);

  }

  x--;

}

}

main()

{while(1)

{led=0xff;

switch(led)                                         //在灯全灭的情况下,多个按键同时按下时不会动作;

   {case 0xef :{left(2);}break;         //按下P1^4,执行左移,可以修改循环次数

    case 0xdf :{right(2);}break; //按下P1^5,执行右移

    case 0xbf :{flash1(2);}break;//按下P1^6,执行全闪

    case 0x7f :{flash2(2);}break;//按下P1^7,执行全闪改

        default:{led=0xff;}

   }

}

}

复制代码

#include

#define led P1                //可以改为其他口

void delay(int x);

void left(int x);

void right(int x);

void flash1(int x);

void flash2(int x);

void delay(int x)            //延迟函数1ms(大概)

{int i;

while(x)

{

  for(i=0;i<125;i++);

  x--;

}

}

void left(int x)                //从P1^3到P1^0(我叫它左移)

{int i,j;

while(x)

  {for(i=0;i<3;i++)            // 循环3遍

   {led=0xfe;                  

    delay(50);                    //每个灯亮50ms

    for(j=0;j<3;j++)        //一共四位

     {

      led=led<<1|0xf1;

      delay(50);

     }

   }

   x--;

}

}

void right(int x)            //从最低位的最高位(我叫它右移)

{int i,j;

while(x)                        //其他同左移

  {for(i=0;i<3;i++)

   { led=0xf7;

     delay(50);

     for(j=0;j<3;j++)

     {

      led=led>>1|0xf8;

      delay(50);

     }

   }

  x--;

}

}

void flash1(int x)                //四位全闪 (可以改很多种)

{int i;

while(x)

{led=0xf0;

  delay(100);               //一次亮100ms

  for(i=0;i<1;i++)     //可以改循环次数

   {

    led=~led|0xf0;           //屏蔽高四位

    delay(100);

   }

   x--;

}

}

void flash2(int x)                //隔一位闪烁(全闪改)

{int i;

while(x)                                //基本和全闪一样

{led=0xf5;

  delay(100);

  for(i=0;i<1;i++)

  {

   led=~led|0xf0;

   delay(100);

  }

  x--;

}

}

main()

{while(1)

{led=0xff;                         //在灯全灭的情况下,多个按键同时按下时不会动作;

if(led==0xef)                 //按下P1^4,执行左移,可以修改循环次数 ;

   {left(2);}

  else if(led==0xdf) //按下P1^5,执行右移

   {right(2);}

  else if(led==0xbf) //按下P1^6,执行全闪

   {flash1(2);}

  else if(led==0x7f) //按下P1^7,执行全闪改

   {flash2(2);}

}

}



推荐阅读

史海拾趣

Global Communications公司的发展小趣事
将温度传感器与晶体振荡器直接相连,通过调整晶体振荡器的某个参数(如负载电容)来补偿温度变化引起的频率漂移。这种方法简单直接,但可能需要较复杂的电路设计来确保补偿的准确性和稳定性。
飞翼科技(FEIYI)公司的发展小趣事
温度传感器的输出与温度之间的线性关系可能不理想,导致补偿效果不准确。此时,可以采用非线性补偿技术或选择具有更好线性度的温度传感器来解决问题。
Fine Products Microelectronics Corp公司的发展小趣事
温度传感器的输出与温度之间的线性关系可能不理想,导致补偿效果不准确。此时,可以采用非线性补偿技术或选择具有更好线性度的温度传感器来解决问题。
AEL [AEL Crystals Ltd]公司的发展小趣事

AEL Crystals Ltd公司成立于1960年,最初专注于石英频率控制元件的研发与生产。在创立初期,公司面临着技术挑战和市场竞争的双重压力。然而,凭借创始人的远见卓识和团队的不懈努力,AEL Crystals逐渐在石英频率控制领域站稳了脚跟。公司通过持续改进生产工艺和提高产品质量,逐渐赢得了客户的信任和支持。

Actel公司的发展小趣事

AEL Crystals一直注重技术创新和产品升级。公司拥有一支专业的研发团队,致力于开发具有竞争力的新产品。通过不断引进新技术和新材料,AEL Crystals成功推出了一系列具有高性能和稳定性的频率控制产品。这些产品不仅满足了客户的多样化需求,也进一步巩固了公司在行业内的领先地位。

洲光源(Chau Light)公司的发展小趣事

随着技术的不断发展和市场的不断变化,洲光源公司意识到单一的产品线已经无法满足市场的多样化需求。因此,公司开始实施多元化战略,积极拓展新的应用领域和市场。通过与国内外知名企业和研究机构的合作,洲光源成功将红外LED技术应用于汽车电子、医疗电子、生物识别等领域,并取得了显著的成果。这些新的应用领域不仅为洲光源公司带来了更多的商机,也进一步提升了公司的技术实力和品牌影响力。

问答坊 | AI 解惑

倒车雷达系统的研究与设计(报告+代码).

本帖最后由 paulhyde 于 2014-9-15 03:02 编辑 倒车雷达系统的研究与设计(报告+代码).    …

查看全部问答>

华硕pda上开发蓝牙问题

开始使用in the hand的类库开发,在山寨机上可用,但是到华硕 mypal 632n上就不能用了。不能发现蓝牙设备,后来用mobile 6.0sdk里的两个蓝牙例子(一个spacewar 一个btchat)试了试,也都是不能发现蓝牙设备,把搜索蓝牙设备的代码try catch起来 ,也 ...…

查看全部问答>

[急!!!]怎么会这样呢?

代码如下:BYTE *buf=NULL;          int bufLen = m_strSend.GetLength();          CString str;          str.Format(L\"%ld\",bufLen);   ...…

查看全部问答>

如何打印上网时app层与3g模块驱动程序之间的收发数据?

    我使用2440+wince 5.0+3G模块实现上网功能,现在浏览网页时总是会出现突然不能浏览的现象,不能浏览网页时系统也不会提示网络连接断开;3g模块usb驱动程序由代理商提供,总说我们的app有问题,我想把app层与3g模块驱动程序的收发数据 ...…

查看全部问答>

求助:继电器APA3319的使用

这种继电器的资料很不好找到,多数销售厂家只介绍了元件外观上的参数(负载),datasheet根本找不到。请熟悉这种继电器的人帮忙,最好能有元件资料。另外想请教,继电器负载 5A 250VAC/30VDC指的是什么,是可以提供给所带负载电路的最大电压?对于 ...…

查看全部问答>

请教2812的flash烧写的问题

仿真环境下,程序调试正确,经过以下步骤烧写flash后,程序不运行,请教是什么原因.谢谢!谢谢! 1.MC/MP=0 2.bootload方式选择为1***,选flash方式 3.cmd文件使用的是2812.cmd,定位flash地址,    .reset   0x3f7ff6   &nbs ...…

查看全部问答>

请熟悉6000系列的朋友近来点评一下这张6713的图(完整原理图PDF格式)

基本情况是:用6713做一个浮点计算器,对外的通信只有McBSP和EMIF外扩了一片FLASH用来放程序,运行时BOOT到内部RAM中,为了防止外部高速总线带来的干扰问题,没有外扩RAM和其它任何存储器,没有使用音频接口。 芯片:TMS320C6713BPYP 1、仅使用6 ...…

查看全部问答>

OLED_12896_GR_Lib函数(二)——_PSET及PSET函数的实现

前面已经定好函数构架了,下面就从最基本的函数开始实现,首先是画点函数。即_PSET函数和PSET函数。不过在绘制图像前还有一个十分重要的问题需要解决,那就是我们的显示缓冲区该定义为多大呢?这当然要根据显示的模式来确定,函数中用一个宏定义Col ...…

查看全部问答>

键盘问题

#include #define unt unsigned int void Delay(void); int KeyProcess(void); void Init_Port(void); void Init_CLK(void); int KeyScan(void); void delay1(unt); void main(void) {   int t,i;   int ch[8] = { ...…

查看全部问答>