标题: 单片机八段数码管先显示偶数02468再显示奇数13579 含原理图,源码 [打印本页]

作者: hhxixi    时间: 2021-12-26 00:37
标题: 单片机八段数码管先显示偶数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)


作者: 兴安xa    时间: 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);
}





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