标题: 基于51单片机控制的蜂鸣流水灯数码管显示 [打印本页]

作者: 超级无敌磊果果    时间: 2018-7-18 17:28
标题: 基于51单片机控制的蜂鸣流水灯数码管显示
该程序适用于刚刚熟悉51单片机编程的初学者,对于编程思路具有一定的锻炼效果,个人建议先尝试自己编写,完成之后在查看。
该程序对于刚刚掌握51单片机编程的学者而言,难度主要在于多个功能的嵌套
能实现流水灯的同时,蜂鸣器间歇鸣叫,数码管同时流水显示
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #include <intrins.h>

  5. sbit DUAN=P2^6;
  6. sbit WEI=P2^7;
  7. sbit FM=P2^3;

  8. uchar code sz[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
  9. 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

  10. void delay(uint xms)        //延时函数 xms为延时的毫秒
  11. {
  12.         uchar i,j;
  13.         for(i=xms;i>0;i--)
  14.                 for(j=112;j>0;j--);
  15. }

  16. void main()
  17. {
  18.         P1=0xfe;                        //定义led 1111 1110
  19.         while(1)
  20.         {
  21.                 uchar i,j;
  22.                 P3=0xfe; //1111 1110                                   //借用P3引脚,给P0赋值
  23.                 FM=0;
  24.                 for(i=8;i>0;i--)                                          //八个数码管同时显示,运行八次   作用:增加延迟时间
  25.                 {       
  26.                         for(j=1;j<=8;j++)                                  //八个数码管同时显示
  27.                         {
  28.                                 P0=sz[j];
  29.                                 DUAN=1;
  30.                                 DUAN=0;
  31.                                 P0=P3;                                                //位选
  32.                                 WEI=1;
  33.                                 WEI=0;
  34.                                 P3=_crol_(P3,1);                        //P3左移一位
  35.                                 delay(10);
  36.                         }
  37.                 }
  38.                 FM=1;                                                                //蜂鸣器关闭
  39.                 P1=_crol_(P1,1);                                        //P1左移一位
  40.                 for(i=8;i>0;i--)                                                  //八个数码管同时显示,运行八次   作用:增加延迟时间
  41.                 {       
  42.                         for(j=1;j<=8;j++)                                        //八个数码管同时显示
  43.                         {
  44.                                 P0=sz[j];
  45.                                 DUAN=1;
  46.                                 DUAN=0;
  47.                                 P0=P3;
  48.                                 WEI=1;
  49.                                 WEI=0;
  50.                                 P3=_crol_(P3,1);
  51.                                 delay(10);
  52.                         }       
  53.                 }
  54.                 FM=0;                                                           //蜂鸣器关闭
  55.         }
  56. }
复制代码


蜂鸣流水灯数码管.zip

3.13 KB, 下载次数: 19, 下载积分: 黑币 -5

main.zip

727 Bytes, 下载次数: 11, 下载积分: 黑币 -5


作者: qyh1998    时间: 2019-12-9 22:07
有图?

作者: 超级无敌磊果果    时间: 2020-2-5 20:10
qyh1998 发表于 2019-12-9 22:07
有图?

以前做的 图没拍 基本上就是8个led灯共阳接在P1口 然后蜂鸣器接2.3口 数码管接P0口 用了两个74hc573锁存芯片





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1