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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機按鍵點動與自鎖的proteus仿真及源程序

[復制鏈接]
跳轉到指定樓層
樓主
單片機按鍵點動與自鎖,按下后三秒自鎖,再按一下斷開,下面是原理圖:



仿真工程文件及所有完整程序等資料下載地址(壓縮包一共有45個單片機仿真,全部下載后找到這個項目即可):
http://www.zg4o1577.cn/bbs/dpj-56298-1.html


單片機源碼:
  1. /********************************************************************
  2.                             天馬電子
  3. *********************************************************************/

  4. #include<reg52.h>   
  5. /*****************************************************************
  6.                  宏定義字符型和整型
  7. *****************************************************************/
  8. #define uchar unsigned char
  9. #define uint  unsigned int
  10. /*****************************************************************
  11.                 鍵值定義
  12. *****************************************************************/
  13. sbit IN0=P2^0;         //         按鍵輸入0
  14. sbit OUT0=P1^0;         //         按鍵輸出0

  15. sbit IN1=P2^1;         //         按鍵輸入1
  16. sbit OUT1=P1^1;         //         按鍵輸出1

  17. uchar sec; //定義計數值,每過1/10 秒,sec 加一
  18. uchar keycnt=2;//按下次數值
  19. uint tcnt; //鍵值判斷
  20. uchar t=0;
  21. //uchar s=0;
  22. //uchar s1=0;
  23. /********************************************************************
  24.                             延時消抖函數
  25. *********************************************************************/
  26. void delay(uchar t)
  27. {
  28.   uchar i,j;
  29.    for(i=0;i<t;i++)
  30.    {
  31.             for(j=13;j>0;j--);
  32.          { ;
  33.          }
  34.    }
  35. }
  36. /********************************************************************
  37.                             按鍵掃描函數
  38. *********************************************************************/
  39. void KEY() //按鍵掃描程序
  40. {

  41. if(IN0==0)           //當按鍵按下執行
  42.         {
  43.         delay(20); //消抖
  44.         keycnt=0;  //解鎖
  45.         if(IN0==0) //確定按鍵按下
  46.                 {
  47.                 TR0=1; //開始定時
  48.                 OUT0=0;//指示燈亮
  49.                 while(!IN0);//等待輸入0置位
  50.                 OUT0=1;//指示燈滅
  51.                 if(t==1) //如果定時時間到
  52.                 {
  53.                 keycnt=1;
  54.             t=0;
  55.                 TR0=0; //定時結束
  56.                 tcnt=0;
  57.                 sec=0;
  58.                 }
  59.                 TR0=0; //定時結束
  60.                 tcnt=0;
  61.                 sec=0;
  62.                 }
  63.         }
  64. if(IN1==0)
  65.         {
  66.         delay(20);
  67.         keycnt=2;  //解鎖
  68.         if(IN1==0)
  69.                 {
  70.                 TR0=1; //開始定時
  71.                 OUT1=0;
  72.                 while(!IN1);
  73.                 OUT1=1;
  74.                 if(t==1)
  75.                 {
  76.                 keycnt=3;
  77.             t=0;
  78.                 TR0=0; //定時結束
  79.                 tcnt=0;
  80.                 sec=0;
  81.                 }
  82.                 TR0=0; //開始定時
  83.                 tcnt=0;
  84.                 sec=0;
  85.                 }
  86.         }

  87. }        
  88. /********************************************************************
  89.                             按下次數判斷函數
  90. *********************************************************************/
  91. void jianzhi()
  92. {
  93. switch(keycnt) //按下次數判斷
  94.                         {
  95.                         case 0: OUT0=1;break; //輸出解鎖
  96.                         case 1: OUT0=0;break; //輸出自鎖
  97.                         case 2: OUT1=1;break; //輸出解鎖
  98.                         case 3: OUT1=0;break; //輸出自鎖
  99.                         }
  100. }
  101. /********************************************************************
  102.                             定時中斷服務函數
  103. *********************************************************************/
  104. void t0(void) interrupt 1 using 0 //定時中斷服務函數
  105. {
  106.         TH0=0x06; //對TH0 TL0 賦值
  107.         TL0=0x06;
  108.         tcnt++; //每過250ust tcnt 加一
  109.         if(tcnt==400) //計滿400 次(1/10 秒)時
  110.         {
  111.                 tcnt=0; //重新再計
  112.                 sec++;
  113.                 if(sec==20) //定時2 秒,在從零開始計時
  114.                 {
  115.                 t=1;
  116.                 //sec=0;         
  117.                 //t++;
  118.             //keycnt=t%2;
  119.             //if(t==100)t=0;
  120.                 }
  121.         }
  122. }
  123. /**********************************************************************
  124.                                            初始化I/O                                   
  125. **********************************************************************/
  126. void Init_IO(void)             //初始化I/O口
  127. {

  128.         OUT0=1;//輸出燈熄滅
  129.         OUT1=1;//輸出燈熄滅

  130. }
  131. /********************************************************************
  132.                             主函數
  133. *********************************************************************/
  134. void main()

  135. {
  136.         TMOD=0x02; //定時器工作在方式2
  137.         ET0=1;
  138.         EA=1;
  139.         TH0=0x06; //對TH0 TL0 賦值
  140.         TL0=0x06;
  141.         //TR0=1; //開始定時
  142.         Init_IO();

  143.         while(1)/*永遠為真,一直執行下去*/
  144.         {
  145.         KEY();           //取鍵函數
  146.         jianzhi(); //執行函數
  147.         }
  148. }
  149. /********************************************************************
  150.                               結束
  151. *********************************************************************/
復制代碼



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

使用道具 舉報

沙發
ID:301491 發表于 2018-5-21 10:51 | 只看該作者
感謝分享!!!!!!!
回復

使用道具 舉報

板凳
ID:331575 發表于 2018-5-22 21:37 | 只看該作者
簡單實用 謝謝
回復

使用道具 舉報

地板
ID:66287 發表于 2018-7-25 15:27 | 只看該作者
已驗證通過,感謝分享!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美性猛片aaaaaaa做受 | 91久久国产综合久久91精品网站 | 啪啪av| 美女黄视频网站 | 天天搞天天搞 | 精品免费 | 精品久久久久久 | 亚洲视频中文字幕 | 希岛爱理在线 | 一区二区三区视频在线观看 | 午夜在线 | 国产精品99久久久久久久久久久久 | 亚洲成年影院 | 一区二区三区不卡视频 | 亚洲一区在线播放 | 欧美一区二区三区在线看 | 亚洲高清视频在线观看 | 午夜一区二区三区在线观看 | 久久香焦 | 欧美福利专区 | 2021狠狠天天天 | 国产精品美女久久久久久久网站 | 野狼在线社区2017入口 | 国产黄色av网站 | 久久精品国产一区二区电影 | 成人免费网站www网站高清 | 欧美日韩亚洲一区 | 亚洲成人av| 精品视频一区二区三区四区 | 97福利在线 | 欧美日韩在线精品 | 91在线观看视频 | 国产h视频 | 国产成人精品视频在线观看 | 久久久久久久一区二区三区 | 综合网中文字幕 | 国产一区二区欧美 | 久久婷婷国产麻豆91 | 国产乱码久久久久久 | 91久久爽久久爽爽久久片 | 午夜伊人 |