找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机控制按键s6本应该只亮一个led灯,但是其他的led也会隐隐约约的亮

[复制链接]
跳转到指定楼层
楼主
ID:257618 发表于 2017-12-5 17:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实现的功能:
开发板上电关闭LED,关闭蜂鸣器继电器,数码管依次显示自己QQ号前8位(人眼分辨不出闪烁);
按下S7按键,数码管前五位熄灭,后三位数码管以自己QQ号前三位为基础顺序开始倒计时(用定时器实现);
按下S6按键,当数码管倒计时为偶数时L1灯点亮(其他灯保持熄灭),计时为奇数时所有LED灯熄灭;
按下S5按键,关闭LED灯灯闪烁功能,倒计时依然继续;
按下S4按键,打开继电器,L10灯点亮,倒计时依然继续;


程序没问题,就是按s6按键应该p01亮,但是按下s6,其他七个也会亮,只是亮的不明显不知为啥,

单片机源程序:
  1. #include <STC15F2K60S2.H>
  2. #include<intrins.h>

  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. uchar tab[]={0xc0,0xf9,0xa4,
  6. 0xb0,0x99,0x92,0x82,0xf8,
  7. 0x80,0x90,0xff};
  8. uchar tab1[]={0xfe,0xff};
  9. uchar wei,pian,temp,s1=16;
  10. uchar wl0=0,wl1=0,wl2=0;
  11. uchar yi,er,san,si,count=0;
  12. uchar wu,liu;qi;ba;
  13. uint adc,num=202;

  14. void allinit();
  15. void delayms(uint b);
  16. void Timer0Init(void);

  17. void led(uint c);
  18. void smgxianshi0(uchar yi,uchar er);
  19. void smgxianshi1(uchar san,uchar si);
  20. void smgxianshi2(uchar wu,uchar liu);
  21. void smgxianshi3(uchar qi,uchar ba);
  22. void keycan();
  23. void anxiaanjian();

  24. void main()
  25. {
  26.         allinit();
  27.         smgxianshi0(2,0);
  28.         smgxianshi1(2,0);
  29.         smgxianshi2(1,0);
  30.         smgxianshi3(4,5);
  31.         keycan();
  32.         if(s1==0)
  33.         {
  34.                 anxiaanjian();
  35.         }
  36. }

  37. void anxiaanjian()
  38. {
  39.         liu=2;qi=0;ba=2;
  40.         Timer0Init();
  41.         
  42.         while(1)
  43.         {
  44.                 keycan();
  45.                 smgxianshi0(10,10);
  46.                 smgxianshi1(10,10);
  47.                 smgxianshi2(10,liu);
  48.                 smgxianshi3(qi,ba);
  49.                 if(s1==1)
  50.                 {
  51.                         if(ba%2==0)
  52.                         {
  53.                                 led(0);
  54.                         }
  55.                         else
  56.                         {
  57.                                 led(1);
  58.                         }
  59.                 }
  60.                 else if(s1==2)
  61.                 {
  62.                         led(1);
  63.                         P2=0xa0;
  64.                         P0=0x00;
  65.                 }
  66.                 else if(s1==3)
  67.                 {
  68.                         P2=0xa0;
  69.                         P0=0x10;
  70.                         led(1);
  71.                 }
  72.         }
  73. }        

  74. void allinit()
  75. {
  76.         P2=0x80;P0=0xff;
  77.         P2=0xa0;P0=0x00;
  78.         P2=0xc0;P0=0xff;
  79.         P2=0xe0;P0=0xff;
  80. }

  81. void delayms(uint b)
  82. {
  83.         uint i,j;
  84.         for(i=b;i>0;i--)
  85.                 for(j=845;j>0;j--);
  86. }

  87. void Timer0() interrupt 1
  88. {
  89.         TH0=0x3c;
  90.         TL0=0xbb;
  91.         count++;
  92.         if(count==19)
  93.         {
  94.                 count=0;
  95.                         num=num-1;//num--;
  96.                         liu=num/100;
  97.                         qi=num%100/10;
  98.                         ba=num%10;
  99.         }
  100.         if(num==0)num=202;
  101. }


  102. void Timer0Init(void)
  103. {
  104.         AUXR&=0x7f;
  105.         TMOD|=0x01;
  106.         TL0=0xbb;
  107.         TH0=0x3c;
  108.         ET0=1;
  109.         EA=1;
  110.         TR0=1;
  111. }



  112. void led(uint c)
  113. {
  114.         P2=0x80;
  115.         P0=tab1[c];
  116. }

  117. void smgxianshi0(uchar yi,uchar er)
  118. {
  119.         P2=0xc0;
  120.         P0=0x01;
  121.         P2=0xe0;
  122.         P0=tab[yi];
  123.         delayms(1);
  124.         
  125.         P2=0xc0;
  126.         P0=0x02;
  127.         P2=0xe0;
  128.         P0=tab[er];
  129.         delayms(1);
  130. }

  131. void smgxianshi1(uchar san,uchar si)
  132. {
  133.         P2=0xc0;
  134.         P0=0x04;
  135.         P2=0xe0;
  136.         P0=tab[san];
  137.         delayms(1);
  138.         
  139.         P2=0xc0;
  140.         P0=0x08;
  141.         P2=0xe0;
  142.         P0=tab[si];
  143.         delayms(1);
  144. }
  145. void smgxianshi2(uchar wu,uchar liu)
  146. {
  147.         P2=0xc0;
  148.         P0=0x10;
  149.         P2=0xe0;
  150.         P0=tab[wu];
  151.         delayms(1);
  152.         
  153.         P2=0xc0;
  154.         P0=0x20;
  155.         P2=0xe0;
  156.         P0=tab[liu];
  157.         delayms(1);
  158. }

  159. void smgxianshi3(uchar qi,uchar ba)
  160. {
  161.         P2=0xc0;
  162.         P0=0x40;
  163.         P2=0xe0;
  164.         P0=tab[qi];
  165.         delayms(1);
  166.         
  167.         P2=0xc0;
  168.         P0=0x80;
  169.         P2=0xe0;
  170.         P0=tab[ba];
  171.         delayms(1);
  172. }

  173. void keycan()
  174. {
  175.         P3=0x7f;P4=0xef;
  176.         temp=P3;
  177.         if(P3!=0x7f)
  178.         {
  179.                 delayms(5);
  180.                 temp=P3;
  181.                 if(P3!=0x7f)
  182.                 {
  183.                         switch(temp)
  184.                         {
  185.                                 case 0x7e : s1=0; break;
  186.                                 case 0x7d : s1=1; break;
  187.                                 case 0x7b : s1=2; break;
  188.                                 case 0x77 : s1=3; break;
  189.                         }
  190.                         while(temp!=0x7f)
  191.                         {
  192.                                 temp=P3;
  193.                                 delayms(5);
  194.                         }
  195.                 }
  196.         }
  197. }
复制代码





评分

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

查看全部评分

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

使用道具 举报

沙发
ID:257618 发表于 2017-12-5 17:07 | 只看该作者
为了描述清楚,拍了个视频不是很清,但是还是可以看键p01亮的时候,其他几个也有亮度

VID_20171205_170218.zip

16.43 MB, 下载次数: 2

回复

使用道具 举报

板凳
ID:257618 发表于 2017-12-5 22:11 | 只看该作者
谁来解答下啊
回复

使用道具 举报

地板
ID:257618 发表于 2017-12-6 16:32 | 只看该作者

帖子要沉了吗
回复

使用道具 举报

5#
ID:213173 发表于 2017-12-6 18:04 | 只看该作者

你这个程序框架结构本身就有致命问题,出现稀奇古怪的现象就不足为怪,就这一点功能洋洋洒洒写这么啰嗦,不会有人去耐心逐条分析。
回复

使用道具 举报

6#
ID:257618 发表于 2017-12-6 20:58 | 只看该作者
wulin 发表于 2017-12-6 18:04
你这个程序框架结构本身就有致命问题,出现稀奇古怪的现象就不足为怪,就这一点功能洋洋洒洒写这么啰嗦 ...

我是新手啊,多多指教
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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