找回密码
 立即注册

QQ登录

只需一步,快速开始

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

这个单片机程序怎么改,使K1为模式选择键,K2调整秒值的个位,K3调整秒值的十位

[复制链接]
跳转到指定楼层
楼主
ID:985733 发表于 2021-12-1 20:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg51.h>
  2. sbit S1 = P1^0;//K1模式选择键,按一次为设置倒计时间模式,按第二次为启动倒计时模式
  3. sbit S2 = P1^1;//K2调整秒值的个位
  4. sbit S3 = P1^2;//K3调整秒值的十位
  5. unsigned char code Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

  6. unsigned char int_time;
  7. unsigned char second;
  8. void delay(void)
  9. {
  10. unsigned char i;
  11. for(i=0;i<200;i++) ;
  12. }
  13. void DisplaySecond(unsigned char k)
  14. {
  15. P0=Tab[k/10];
  16. P2=0x01;
  17. delay();
  18. P2=0xfc;
  19. P0=Tab[k%10];
  20. P2=0x02;
  21. delay();
  22. P2=0xfc;
  23. }
  24. void main(void)
  25. {
  26. TMOD=0x01;
  27. TH0=(65536-5000)/256;
  28. TL0=(65536-5000)%256;
  29. EA=1;
  30. ET0=1;
  31. TR0=1;
  32. int_time=0;
  33. second=99;
  34. while(1)
  35. {
  36. DisplaySecond(second);
  37. while(second==0)
  38. DisplaySecond(second);
  39. }
  40. }
  41. void interserve(void ) interrupt 1 using 1
  42. {
  43. TR0=0;
  44. int_time ++;
  45. if(int_time==20)
  46. {
  47. int_time=0;
  48. second--;
  49. }
  50. TH0=(65536-5000)/256;
  51. TL0=(65536-5000)%256;
  52. TR0=1;
  53. if(second==0)
  54. TR0=0;
  55. }

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

使用道具 举报

沙发
ID:985733 发表于 2021-12-1 20:52 | 只看该作者
求大神帮一下忙
回复

使用道具 举报

板凳
ID:139866 发表于 2021-12-2 17:52 | 只看该作者
  1. char keySeclet()
  2. {
  3.         static char mode_count;

  4.         if(S1 == 1) {
  5.                 delay_ms(10);//10ms消抖
  6.                 if(S1 == 1) {
  7.                         mode_count ++;
  8.                        
  9.                         switch(mode_count){
  10.                         case 0:
  11.                                 return 1;//1表示模式1
  12.                         case 1:
  13.                                 return 2;//2表示模式2
  14.                         case 2:
  15.                                 mode_count = 1;
  16.                                 return 1;
  17.                         }
  18.                 }
  19.         }
  20.        
  21.         if(S2 == 1) {
  22.                 delay_ms(10);//10ms消抖
  23.                 if(S2 == 1) {
  24.                         second += 10;
  25.                 }
  26.         }       
  27.        
  28.         if(S3 == 1) {
  29.                 delay_ms(10);//10ms消抖
  30.                 if(S3 == 1) {
  31.                         second += 1;
  32.                 }
  33.         }
  34.        
  35.     return mode_count;
  36. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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