找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机74hc138静态扫描8位数码管程序

[复制链接]
跳转到指定楼层
楼主


单片机源程序
  1. #include "reg52.h"

  2. typedef unsigned int u16;
  3. typedef unsigned char u8;

  4. sbit LSA=P2^2;
  5. sbit LSB=P2^3;
  6. sbit LSC=P2^4;
  7. sbit k1=P3^1;

  8. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  9.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  10. u8 ssec,sec,min,hour;
  11. u8 DisplayData[8];

  12. void delay(u16 i)
  13. {
  14.         while(i--);        
  15. }


  16. void Timer0Init()
  17. {
  18.         TMOD|=0X01;
  19.         TH0=0Xd8;
  20.         TL0=0Xf0;        
  21.         TR0=1;
  22. }



  23. void DigDisplay()
  24. {
  25.         u8 i;
  26.         for(i=0;i<8;i++)
  27.         {
  28.                 switch(i)
  29.                 {
  30.                         case(0):
  31.                                 LSA=1;LSB=1;LSC=1; break;
  32.                         case(1):
  33.                                 LSA=0;LSB=1;LSC=1; break;
  34.                         case(2):
  35.                                 LSA=1;LSB=0;LSC=1; break;
  36.                         case(3):
  37.                                 LSA=0;LSB=0;LSC=1; break;
  38.                         case(4):
  39.                                 LSA=1;LSB=1;LSC=0; break;
  40.                         case(5):
  41.                                 LSA=0;LSB=1;LSC=0; break;
  42.                         case(6):
  43.                                 LSA=1;LSB=0;LSC=0; break;
  44.                         case(7):
  45.                                 LSA=0;LSB=0;LSC=0; break;
  46.                 }
  47.                 P0=DisplayData[i];
  48.                 delay(100);
  49.                 P0=0x00;
  50.         }
  51. }

  52. void datapros()
  53. {
  54.         DisplayData[0]=smgduan[hour/10];
  55.         DisplayData[1]=smgduan[hour%10];
  56.         DisplayData[2]=0x40;        
  57.         DisplayData[3]=smgduan[min/10];
  58.         DisplayData[4]=smgduan[min%10];
  59.         DisplayData[5]=0x40;        
  60.         DisplayData[6]=smgduan[sec/10];
  61.         DisplayData[7]=smgduan[sec%10];
  62. }


  63. void keypros()
  64. {
  65.         if(k1==0)
  66.         {        
  67.                 delay(1000);
  68.                 if(k1==0)
  69.                 {
  70.                         TR0=~TR0;
  71.                 }
  72.                 while(!k1);
  73.         }               
  74. }



  75. void main()
  76. {        
  77.         Timer0Init();
  78.         while(1)
  79.         {
  80.                 keypros();
  81.                 if(TF0==1)
  82.                 {
  83.                         TF0=0;
  84.                         TH0=0Xd8;
  85.                         TL0=0Xf0;
  86.                         ssec++;
  87.                         if(ssec>=100)
  88.                         {
  89.                                 ssec=0;
  90.                                 sec++;
  91.                                 if(sec>=60)
  92.                                 {
  93.                                         sec=0;
  94.                                         min++;
  95.                                         if(min>=60)
  96.                                         {
  97.                                                 min=0;
  98.                                                 hour++;
  99.                                                 if(hour>=24)
  100.                                                 {hour=0;}
  101.                                         }
  102.                                 }        
  103.                         }        
  104.                 }        
  105.                 datapros();
  106.                 DigDisplay();        
  107.         }               
  108. }
复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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