找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4681|回复: 2
收起左侧

基于51单片机控制的蜂鸣流水灯数码管显示

[复制链接]
ID:294657 发表于 2018-7-18 17:28 | 显示全部楼层 |阅读模式
该程序适用于刚刚熟悉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

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:651852 发表于 2019-12-9 22:07 | 显示全部楼层
有图?
回复

使用道具 举报

ID:294657 发表于 2020-2-5 20:10 | 显示全部楼层

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表