久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1390|回復: 3
打印 上一主題 下一主題
收起左側

想問一下 為什么按鍵按下“set”這個按鈕,數碼管沒有變化

[復制鏈接]
跳轉到指定樓層
樓主
ID:679842 發表于 2020-1-4 21:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <STC89C5xRC.H>
#include "onewire.h"
#include"intrins.h"        //左移右移.h文件
void shizhong();
void Delay1ms();                //@11.0592MHz         2ms顯示
void display_time();


unsigned char key();
void anjian();
unsigned char key_var();
typedef     unsigned char   u8;
typedef     unsigned int    u16;
typedef     unsigned long   u32;
void xianshi();

u8 code shijian[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};  //數碼管顯示0-9  0x40表示杠杠,0x00全滅  后面取反
unsigned char com[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};    //com口從左到右
unsigned char  shifenmiao[]={10,10,10,10,10,10,10,10,};
unsigned int temp,Low=25,High=29;

int num,flag,set=0,varue,key_flag=0;
void main()
{
        P2=0xa0;P0=0;P2=0;//設備初始化           //關閉聲音
        P2=0x80;P0=0xff;P2=0;//設備初始化  //關閉LED燈
         
                   while(1)
                 {          
                          temp=rd_temperature();
                     
                             shizhong();
                                  key_var();
                            anjian();
                               
}
                                            
                 
}

void shizhong()
{
        static unsigned char q=0;
           P2=0xc0;
           P0=com[q];
           P2=0;
       P2=0xe0;
           P0=~shijian[shifenmiao[q]];
           P2=0;  
           Delay1ms();

           ++q;
                if(q==8)                          
                q=0;
        }

void Delay1ms()                //@11.0592MHz         2ms顯示
{
        unsigned char i, j;
        i = 11;
        j = 190;
        do
        {
                while (--j);
        } while (--i);
}


void display_time()
{          
       
        if(temp<Low)
                shifenmiao[1]=0;
        if(temp<=High && temp>=Low)
                shifenmiao[1]=1;
        if(temp>High)
                shifenmiao[1]=2;
        shifenmiao[0]=10;
        shifenmiao[2]=10;
        shifenmiao[3]=11;
        shifenmiao[4]=11;
        shifenmiao[5]=11;
        shifenmiao[6]=temp/10;
        shifenmiao[7]=temp%10;

}

void anjian()  //11是設置,10是刪除
{       
        if(set==11)
        {         P2=0x80;P0=0xfe;P2=0;
                shifenmiao[0]=10;
                shifenmiao[1]=11;
                shifenmiao[2]=11;
                shifenmiao[3]=11;
                shifenmiao[4]=11;
                shifenmiao[5]=10;
                shifenmiao[6]=11;
                shifenmiao[7]=11;
        }
        else
          display_time();
}
unsigned char key()         //按鍵掃描函數
{        unsigned char key_loop;
        unsigned char key_var=0xff,key_ini=0xfe;
        for(key_loop=0;key_loop<4;key_loop++) //循環掃描四次
        {         
                P3=key_ini;        //P3口賦初值
                if(P3!=key_ini||P42==0||P44==0)          //如果按鍵被按下了 就進入函數
                {        P2=0x80;P0=0xfe;P2=0;
                        key_var=(P3&0x3f)|((P4&0x04)<<4)|((P4&0x10)<<3);                 // 把P42與P44按位與到P36 P37上
                        break;
                                 
                }
                key_ini=_crol_(key_ini,1);         //每次循環左移一次 由0xfe 到0xf7
          
        }

          
        return key_var;       
}

unsigned char key_var()
{         
   varue=key();        //進入按鍵掃描函數
  if(varue!=0xff&&key_flag==0) //當按鍵被按下 且防抖動標志為0時
  {         
          key_flag=1;        //改變防抖動標志
        switch(varue) //判斷是哪個按鍵被按下 后改變按鍵標志 然后在定時器中判斷按鍵標志 執行相應程序
        {       
                case 0x7e:  flag=0; break;
                case 0x7d:        flag=3; break;
                case 0x7b:        flag=6;        break;
                case 0x77:        flag=9;         break;
               
                case 0xbe:  flag=1; break;
                case 0xbd:        flag=4; break;
                case 0xbb:        flag=7; break;
                case 0xb7:        set=11; break;
               
                case 0xde: flag=2; break;
                case 0xdd: flag=5; break;
                case 0xdb: flag=8; break;
                case 0xd7: set=12; break;
         
          
         default:break;
        }

  }
  if(varue==0xff){key_flag=0;}                //當按鍵沒被按下 還原防抖動標志

  return flag;
  return set;
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:25310 發表于 2020-1-5 10:22 | 只看該作者
上個原理圖·看看
回復

使用道具 舉報

板凳
ID:213173 發表于 2020-1-5 11:25 | 只看該作者
  return flag;//程序到此退出,不會執行下面語句。
  return set;
回復

使用道具 舉報

地板
ID:681479 發表于 2020-1-5 12:31 | 只看該作者
謝謝樓主了哈~
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91看片在线| 国产一级视屏 | 成人欧美一区二区三区在线播放 | 久草青青 | 一区二区三区四区电影 | 国产成人精品在线播放 | 国产成人综合在线 | 午夜成人免费视频 | 精品九九九 | 亚洲第一区久久 | 久久久久久久久久久成人 | 99在线免费观看视频 | 伊人狠狠干| 草久久免费视频 | 中文字幕视频一区二区 | 天天干夜夜拍 | 久久中文一区二区 | 毛片视频免费 | 粉嫩一区二区三区性色av | 成人欧美一区二区三区在线观看 | 国产精品美女久久久久久免费 | 国产精品精品久久久 | 正在播放国产精品 | 亚洲高清在线观看 | 91在线视频免费观看 | 91小视频| 欧美色视频免费 | 九九热在线免费观看 | 久久久久精 | 日韩免费视频一区二区 | 黄色免费网 | 日韩在线一区二区三区 | 国产精品久久99 | 成人亚洲 | 91视频国产精品 | 久久久久久成人 | 亚洲精选一区 | 91精品国产一区 | 91精品无人区卡一卡二卡三 | 亚洲日日操 | 欧美高清视频在线观看 |