找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机电子表可加可减可暂停 Proteus仿真程序

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<reg52.h>
  2. #define codport P0                  //显示段码输出口
  3. #define sitport        P2                //显示位码输出口
  4. sbit PB1=P1^0;
  5. sbit PB2=P1^1; // second 调整定义
  6. sbit PB3=P1^2;
  7. sbit PB4=P1^3;  //second//minite 调整定义
  8. sbit PB5=P1^4;
  9. sbit PB6=P1^5; //hour 调整定义
  10. sbit PB7=P1^6;        //暂停
  11. void delay(int); // 延时子程序
  12. void keyscan( ); // 按键作用
  13. unsigned char code ledcode[]     /*显示0~9的代码*/
  14. ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  15. unsigned char data hou,min,sec,num; //时分秒中断数
  16. unsigned char data disbuf[]={0,0,0,0,0,0};
  17. //显示数组,0元素为最高位
  18. void delay(int x)                          
  19. { int i,j;
  20.        for(i=0;i<x;i++)
  21.             for(j=0;j<120;j++);
  22.         }
  23. void keyscan (void)
  24. {
  25. if(PB1==0) // 按键1 秒加
  26. {   
  27. delay(200);
  28. {
  29. sec++;
  30. if(sec==60)
  31. {sec=0; }
  32. }
  33. }

  34. if(PB2==0) // 按键2 秒减
  35. {  
  36. delay(200);
  37. {
  38. sec--;
  39. if(sec==-1)
  40. {sec=59;}
  41. }
  42. }

  43. if(PB3==0) // 按键3 分加
  44. {
  45. delay(200);
  46. {
  47. min++;
  48. if(min==60)
  49. {min=0; }
  50. }
  51. }

  52. if(PB4==0) // 按键4 分减
  53. {   
  54. delay(200);
  55. {
  56. min--;
  57. if(min==-1)
  58. {min=59; }
  59. }
  60. }
  61.   
  62. if(PB5==0) // 按键5 时加
  63. {  
  64. delay(200);
  65. {
  66. hou++;
  67. if(hou==60)
  68. {hou=0;}
  69. }
  70. }

  71. if(PB6==0) // 按键7 暂停
  72. {
  73. delay(200);
  74. {
  75. hou--;
  76. if(hou==-1)
  77. {hou=23; }
  78. }
  79. }

  80.   if(PB7==0) // 按键6 时减
  81. {
  82. delay(200);
  83. {
  84. EA=~EA;
  85. }
  86. }

  87. }
  88. void display()                //显示函数
  89. {        unsigned int j;                //j用于循环延时
  90.         unsigned char i,scan;        //scan为扫描码
  91.         scan=0x01;
  92.         for(i=0;i<6;i++)
  93.         {        sitport=0xff;                //先关闭各位
  94.                 codport=ledcode[disbuf[i]];        
  95.                                         //输出显示数的段码
  96.                 sitport=~scan;                //输出位码
  97.                 scan=(scan<<1);                   //指向下一个数位
  98.                 for(j=0;j<360;j++);        //延时3ms
  99. }        }       
  100. void time0() interrupt 1        //定时器0中断函数
  101. {        TL0=55536%256;         //给T0赋初值
  102.         TH0=55536/256;
  103.         num=num+1;                //百分之一秒加1
  104.         if(num>99)
  105.         {    num=0;             sec++;                //秒加1
  106.              if(sec>59)
  107.              {        sec=0;    min++;                 //分加1
  108.                 if(min>59)
  109.                 {    min=0;        hou++;         //时加1
  110.                       if(hou>23)        hou=0;
  111.              }        }                 //把时间变量分离成要显示的各位
  112.             disbuf[0]=hou/10;         disbuf[1]=hou%10;
  113.             disbuf[2]=min/10;        disbuf[3]=min%10;
  114.             disbuf[4]=sec/10;        disbuf[5]=sec%10;
  115. }        }
  116. void main()                        //主函数
  117. {
  118.         TMOD=0x01;                //设置T0以模式1定时
  119.         TL0=55536%256;         //设置T0定时10ms初值
  120.         TH0=55536/256;
  121.         ET0=1;                         //开T0中断
  122.         EA=1;                        //开总中断
  123.         TR0=1;                        //定时器0开运行
  124.         hou=12;        min=0;         //时间初始化       
  125.         sec=0;        num=0;
  126.         while(1)                //循环,并随时处理中断
  127.           {         
  128.              display();        //调用数码管进行扫描显示
  129.          keyscan( );            // 按键扫描         
  130. }                   }
复制代码

所有资料51hei提供下载:
电子表可加可减可暂停.rar (16.96 KB, 下载次数: 24)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:660771 发表于 2019-12-10 17:04 | 只看该作者
欢迎大家来看
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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