找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机数码管小程序:2组数码管分别显示加一和减一

[复制链接]
跳转到指定楼层
楼主
ID:79544 发表于 2016-1-2 08:53 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
  1. /******************************************************
  2.         功能  :二组2位数码管分别显示1秒加一和减一
  3.                         
  4.         单片机:STC12C5A60S2
  5.         晶振  :11.0582M
  6.         作者  :苏义江
  7.         时间  :2016-1-2
  8.         注释  :在大数码管实验板实验通过,用定时器0定时
  9. ****************************************************/
  10. #include <reg52.h>
  11. //#include <intrins.h>

  12. sbit  wei= P0^6;   //
  13. sbit  duan = P0^7;   //

  14. #define uchar unsigned char
  15. #define uint  unsigned int

  16. uchar code table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
  17. 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};//共阳LED段码表

  18. uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//位码
  19. uchar t,a,b,c,d,shi=90,ge=0;//定义变量
  20. void delay(uint z)
  21. {
  22.         uint x,y;
  23.         for(x=z;x>0;x--)
  24.         for(y=610;y>0;y--);     
  25. }
  26. void init()//定时器0初始化
  27. {
  28.         TMOD=0X01;
  29.         TH0=0X4C;//11.0592M 50ms初值
  30.         TL0=0X00;
  31.         ET0=1;
  32.         TR0=1;
  33.         EA=1;
  34.         t=0;//计数初始为0
  35. }
  36. void display()//显示函数
  37. {
  38.         a=ge/10;
  39.         b=ge%10;

  40.         c=shi/10;
  41.         d=shi%10;
  42.     wei=1;
  43.         P2=0xfe;
  44.         wei=0;
  45.         duan=1;
  46.         P2=table1[a];
  47.         duan=0;
  48.         delay(5);
  49.     P2=0xff;

  50.         wei=1;
  51.         P2=0xfd;
  52.         wei=0;
  53.         duan=1;
  54.         P2=table1[b];
  55.         duan=0;
  56.         delay(5);
  57.     P2=0xff;
  58.         wei=1;
  59.         P2=0xfb;
  60.         wei=0;
  61.         duan=1;
  62.         P2=table1[c];
  63.         duan=0;
  64.         delay(5);
  65.     P2=0xff;
  66.         wei=1;
  67.         P2=0xf7;
  68.         wei=0;
  69.         duan=1;
  70.         P2=table1[d];
  71.         duan=0;
  72.         delay(5);
  73.     P2=0xff;
  74. }

  75. void main()
  76. {
  77.         init();
  78.     while(1)
  79.    {
  80.                 display();                                
  81.    }
  82. }
  83. void t0() interrupt 1//定时器0中断服务函数
  84. {
  85.         TH0=0X4C;
  86.         TL0=0X00;
  87.         t++;
  88.         if(t==20)//1秒到
  89.         {
  90.                 t=0;//计数清零
  91.                 ge++;
  92.                 shi--;
  93.                 if(ge==90)               
  94.                         ge=0;                                                               
  95.                  if(shi==0)
  96.                         shi=90;
  97.         }
  98. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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