找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2979|回复: 2
打印 上一主题 下一主题
收起左侧

传个流水灯加数码管小程序,流水灯流一次数码管加一

[复制链接]
跳转到指定楼层
楼主
ID:79544 发表于 2015-12-11 14:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /***********************************************
  2.         功能  :流水灯循环一次数码管显示加一
  3.                         P0口是流水灯。P2口通过573锁存器控制数码管的
  4.                         位和段。
  5.         单片机:STC12C5A60S2
  6.         晶振  :11.0592M
  7.         作者  :苏义江
  8.         时间  :2015-12-11
  9. **********************************************/
  10. #include<reg52.h>
  11. #include<intrins.h>
  12. #define uchar unsigned char
  13. #define uint unsigned int
  14. //共阳数码管段码
  15. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
  16.                                 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
  17.                                 0xa1,0x86,0x8e,0x89};
  18. //位码
  19. uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  20. uchar b,i;
  21. uint c;//数的变量
  22. uchar qian,bai,shi,ge;

  23. sbit wei=P0^6;        //位使能573
  24. sbit duan=P0^7;        //段使能573
  25. void display();
  26. void delay(uint z);

  27. void main()
  28. {
  29.         c=0;
  30.         while(1)
  31.         {                               
  32.                 for(c=0;c<9999;c++)//显示到1000从新开始
  33.                 {
  34.                         for(i=0;i<8;i++)
  35.                         {
  36.                                 P0=table1[i];//流水灯
  37.                                 delay(10);                                       
  38.                                 for(b=0;b<20;b++)//循环显示20次增加数码管亮度
  39.                                 {
  40.                                         display();//数码管显示       
  41.                                 }                       
  42.                         }                       
  43.                 }
  44.         }
  45. }
  46. void delay(uint z)
  47. {
  48.         uint x,y;       
  49.         for(x=z;x>0;x--)
  50.         for(y=420;y>0;y--);
  51. }
  52. void display()
  53. {
  54. //数的分解千,百,十,个位
  55.         qian=c/1000;
  56.         bai=c%1000/100;
  57.         shi=c%100/10;
  58.         ge=c%10;
  59.                
  60.         wei=1;                   //使能位选
  61.         P2=0xfe;
  62.         wei=0;                   //使能位选
  63.         duan=1;                  //使能段选
  64.         P2=table[qian]; //显示
  65.         duan=0;                  //使能段选
  66.         delay(3);
  67.         P2=0XFF;
  68.         wei=1;
  69.         P2=0xfd;
  70.         wei=0;
  71.         duan=1;
  72.         P2=table[bai];
  73.         duan=0;
  74.         delay(3);
  75.         P2=0XFF;
  76.         wei=1;
  77.         P2=0xfb;
  78.         wei=0;
  79.         duan=1;
  80.         P2=table[shi];
  81.         duan=0;
  82.         delay(3);
  83.         P2=0XFF;
  84.         wei=1;
  85.         P2=0xf7;
  86.         wei=0;
  87.         duan=1;
  88.         P2=table[ge];
  89.         duan=0;
  90.         delay(3);
  91.         P2=0XFF;
  92. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2015-12-11 19:12 来自手机 | 只看该作者
楼主能分享一下,或者简单的介绍一下数码管的电路图吗
回复

使用道具 举报

板凳
ID:79544 发表于 2015-12-12 10:09 | 只看该作者
admin 发表于 2015-12-11 19:12
楼主能分享一下,或者简单的介绍一下数码管的电路图吗

手画了一张传到论坛啦。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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