阳光豆苗的个人空间 https://bbs.21ic.com/?881050 [收藏] [复制] [RSS]

日志

数码管显示3位数

已有 527 次阅读2018-3-26 23:49 |个人分类:单片机数码管|系统分类:单片机

采用动态显示,利用子函数display。

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char 
  5. sbit dula=P2^6;
  6. sbit wela=P2^7;
  7. uint temp;
  8. uchar bai,shi,ge;
  9. void delay(uint z);
  10. void desplay(uchar bai,uchar shi,uchar ge);
  11. uchar code table[]={
  12. 0x3f,0x06,0x5b,0x4f,
  13. 0x66,0x6d,0x7d,0x07,
  14. 0x7f,0x6f,0x77,0x7c,
  15. 0x39,0x5e,0x79,0x71,0x00};
  16. void main()
  17. {
  18.         temp=125;
  19.         bai=temp/100;
  20.         shi=temp%100/10;
  21.         ge=temp%10;
  22.         while(1)
  23.         {
  24.                 desplay(bai,shi,ge);
  25.         }
  26. }

  27. void delay(uint z)
  28. {
  29.         uint x,y;
  30.         for(x=z;x>0;x--)
  31.                 for(y=110;y>0;y--);
  32. }
  33. void desplay(uchar bai,uchar shi,uchar ge)
  34. {       
  35.         wela=1;
  36.         P0=0xfe;
  37.         wela=0;
  38.                
  39.         dula=1;
  40.         P0=table[bai];
  41.         dula=0;
  42.         delay(5);
  43.                
  44.         wela=1;
  45.         P0=0xfd;
  46.         wela=0;
  47.                
  48.         dula=1;
  49.         P0=table[shi];
  50.         dula=0;
  51.         delay(5);
  52.                
  53.         wela=1;
  54.         P0=0xfb;
  55.         wela=0;
  56.                
  57.         dula=1;
  58.         P0=table[ge];
  59.         dula=0;
  60.         delay(5);
  61. }

  1. // !!注意不能直接打开3个数码管,必须一个一个打开。动态扫描...

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)