找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stc单片机按键功能不能实现

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



  1. #include<STC15F2K60S2.h>
  2. #include<DS1302.H>
  3. #include<DS18B20.h>
  4. #include<KEY.H>

  5. unsigned char discom=0;
  6. unsigned char shuma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};
  7. unsigned char disbuff[]={10,10,10,10,10,10,10,10};
  8. unsigned char flag=1;
  9. unsigned char jiange,keyzhi,shi,fen,miao,caiflag=0,wancheng=0, Lflag=0x00;
  10. unsigned char wendu[10];
  11. void display()
  12. {
  13.       
  14.   P2=0xe0;
  15.   P0=0xff;
  16.   P2=0x1f;


  17.   P2=0xc0;
  18.   P0=(1<<discom);
  19.   P2=0x1f;
  20.   P0=0xff;
  21.   P2=0xe0;
  22.   P0=shuma[disbuff[discom]];
  23.   P2=0x1f;

  24.   if(++discom==8)
  25.   {
  26.     discom=0;
  27.   }
  28. }      

  29. void comment()
  30. {
  31.         P2=0XA0;
  32.         P0=0X00;
  33.         P2=0X1F;
  34.       
  35.         P2=0X80;
  36.         P0=0XFF;
  37.         P2=0X1F;
  38. }

  39. void Timer0Init()                //1毫秒@11.0592MHz
  40. {
  41.         AUXR |= 0x80;                //定时器时钟1T模式
  42.         TMOD &= 0xF0;                //设置定时器模式
  43.         TL0 = 0xCD;                //设置定时初值
  44.         TH0 = 0xD4;                //设置定时初值
  45.         TF0 = 0;                //清除TF0标志
  46.         TR0 = 1;                //定时器0开始计时
  47.         EA=1;
  48.         ET0=1;
  49. }
  50. void Timer0() interrupt        1
  51. {
  52.          unsigned int tt=0,a=0,t=0;
  53.         display();
  54. if(caiflag==1)
  55.   {
  56.     tt++;
  57.         if(tt==jiange*1000)
  58.           {
  59.             tt=0;
  60.                 wendu[a]=DS18B20read();
  61.                 a++;
  62.                 if(a==10)
  63.                 {
  64.                   a=0;
  65.                   caiflag=0;
  66.                   wancheng=1;
  67.                 }
  68.           }
  69.   }
  70.         if(wancheng==1)
  71.         {
  72.                 t++;
  73.                 if(t==500)
  74.                 {
  75.                         t=0;
  76.                           Lflag=~(Lflag);
  77.                 }
  78.                
  79.                
  80.         }
  81.       
  82. }      
  83. void main()
  84. {
  85.         comment();
  86.         Ds1302init();
  87.         Timer0Init();      
  88.         while(1)
  89.         {
  90.                 disbuff[0]=10;
  91.                 disbuff[1]=10;
  92.                 disbuff[2]=10;
  93.                 disbuff[3]=10;
  94.                 disbuff[4]=10;
  95.                 disbuff[5]=11;
  96.                 disbuff[6]=jiange/10;
  97.                  disbuff[7]=jiange%10;
  98.                 keyzhi=keyscan();
  99.                 switch (flag)
  100.                 {
  101.                         case 1:jiange=1;break;
  102.                         case 2:jiange=5;break;
  103.                         case 3:jiange=30;break;
  104.                         case 4:jiange=60;break;
  105.                 }
  106.                 if(keyzhi==4)
  107.                 {
  108.                         flag++;
  109.                         if(flag==5)
  110.                                 flag=1;
  111.                 }
  112.                 if(keyzhi==5)
  113.                 {
  114.                         caiflag=1;
  115.                         while (wancheng==0)
  116.                         {
  117.                                 shi=Ds1302_Single_Byte_Read(0x85);
  118.                         fen=Ds1302_Single_Byte_Read(0x83);
  119.                         miao=Ds1302_Single_Byte_Read(0x81);
  120.                         disbuff[0]=shi/16;
  121.                         disbuff[1]=shi%16;
  122.                
  123.                         disbuff[3]=fen%16;
  124.                         disbuff[4]=fen/16;
  125.                        
  126.                         disbuff[6]=miao/16;
  127.                         disbuff[7]=miao%16;
  128.                         if(miao%2==0){disbuff[2]=11;disbuff[5]=11;}
  129.                         else {disbuff[2]=10;disbuff[5]=10;}
  130.                         }      
  131. }
  132.                        
  133.     if(wancheng==1)
  134.       {

  135.                 while(1)
  136.            { if(Lflag==0xff)
  137.                 {
  138.                   P0=0xff;
  139.                   P2=0x80;
  140.                   P0=0xfe;
  141.                   P2=0x1f;
  142.                 }
  143.                 else
  144.                 {
  145.                   P0=0xff;
  146.                   P2=0x80;
  147.                   P0=0xff;
  148.                   P2=0x1f;
  149.                 }
  150.                 disbuff[0]=11;
  151.             disbuff[1]=0;
  152.             disbuff[2]=0;
  153.             disbuff[3]=10;
  154.             disbuff[4]=10;
  155.             disbuff[5]=11;
  156.             disbuff[6]=wendu[0]/10;
  157.             disbuff[7]=wendu[0]%10;
  158.                 keyzhi=keyscan();
  159.          
  160.                         }
  161.   }      
  162.         }
  163. }
复制代码



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

使用道具 举报

沙发
ID:287115 发表于 2018-3-3 10:38 | 只看该作者
unsigned char shuma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};
unsigned char disbuff[]={10,10,10,10,10,10,10,10};
回复

使用道具 举报

板凳
ID:257618 发表于 2018-3-3 11:43 | 只看该作者
有人指点下吗
回复

使用道具 举报

地板
ID:123289 发表于 2018-3-4 08:04 | 只看该作者
指点你一下:先画出程序流程图,在流程图上走通了,再写出程序!
晒出你的流程图吧.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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