找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机八段数码管先显示偶数02468再显示奇数13579 含原理图,源码

[复制链接]
跳转到指定楼层
楼主
用单片机控制一个八段数码管先显示偶数02468再显示奇数13579,循环显示。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include "reg51.h"
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define out  P0
  6. uchar code seg[]={0xc0,0xa4,0x99,0x82,0x80,0xf9,0xb0,0x92,0xf8,0x90,0x01};

  7. void delayms(uint);

  8. void main(void)
  9. {
  10. uchar i;
  11. while(1)
  12.         {
  13.         out=seg[i];
  14.         delayms(900);
  15.         i++;
  16.         if(seg[i]==0x01)i=0;
  17.         }

  18. }

  19. void delayms(uint j)
  20. {
  21. uchar i;
  22. for(;j>0;j--)
  23.           {i=250;
  24.             while(--i);
  25.             i=249;
  26.             while(--i);
  27.            }
  28. }
复制代码


Proteus仿真7.5版本dsn文件下载: 文件.zip (15.76 KB, 下载次数: 9)

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:979299 发表于 2021-12-26 16:01 | 只看该作者
这个程序这样更简明
#include "reg51.h"
#define uchar unsigned char
void delay(unsigned long int t);
uchar code seg[]={0xc0,0xa4,0x99,0x82,0x80,0xf9,0xb0,0x92,0xf8,0x90,0x01};
void delay(unsigned int t);
void main(void)
{
        uchar i;
        while(1)
    {
                P0=seg[i];
                delay(20000);
                i++;
                if(seg[i]==0x01)i=0;
    }
}
void delay(unsigned long int t)
{
        while(--t);
}

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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