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

標題: 單片機最小系統與按鍵消抖 [打印本頁]

作者: 七月雨    時間: 2018-10-5 20:43
標題: 單片機最小系統與按鍵消抖
日常連載8

單片機最小系統:
晶振:
              

有源晶振:信號質量好精度高,價格較高,依賴特定的工作電壓。
無源晶振:需要外部電路,價格低,不依賴于電壓(有電壓就能起振),依賴電容,又稱為晶體。

復位電路:
1、上電復位分析
                            2、復位時間計算  t = 1.2RC(1.2*電阻*電容)
         3、手動復位分析
圖中R60是當按鍵按下的一瞬間,電容需要放電,如果沒有這個電阻,會產生很大的電流產生電磁干擾,降低系統的穩定性,故加了這個電阻給電容放電保持系統的穩定。

按鍵消抖的更優方法1:
http://www.360doc.com/showweb/0/0/782209534.aspx(在此網址有詳細介紹,這里只作簡短介紹)


單片機源程序:

  1.     /*————備注:———————*
  2.     平臺:Keil4  STC89C52RC  
  3.     功能:
  4.     作者:西片                                         
  5.     聯系方式:18724145220@163.com
  6.     日期:2018/ /                     
  7.     備注: 晶振12MHz
  8.           更有效率的消抖方法                                    
  9.     *——————————————————*/  
  10.    
  11.    
  12. //====頭文件定義===*  
  13. #include<reg52.h>  
  14. #include<intrins.h>   
  15. //=================*  
  16.    
  17.    
  18. //====宏定義=======*  
  19. #define uchar unsigned char  
  20. #define uint unsigned int  
  21. //=================*  
  22.    
  23.    
  24. //====引腳說明=====*  
  25. sbit LSA=P2^2;  
  26. sbit LSB=P2^3;  
  27. sbit LSC=P2^4;  
  28. sbit key1=P1^7;//將矩陣鍵盤變為獨立按鍵,讓第一行的按鍵左端均為低電平,然后通過列的一個高低電平判斷按鍵是否按下  
  29. sbit KEY=P1^3;//第一個按鍵對應的列  
  30. //=================*  
  31.    
  32. bit KeySta=1;//按鍵狀態標志位  
  33.    
  34. //====全局變量=====*  
  35. //=================*  
  36.    
  37.    
  38. //====編碼數組=====*  
  39. uchar code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,  
  40.                          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};//0~F,加無顯示碼  
  41. //=================*  
  42.    
  43.    
  44. //====定時器0設定==*  
  45. void SetT0()  
  46. {  
  47.      TMOD=0x01;  
  48.      TH0=0xf8;  
  49.      TL0=0x30;  
  50.      EA=1;  
  51.      ET0=1;  
  52.      TR0=1;  
  53. }  
  54. //=================*  
  55.    
  56.    
  57. //====要添加的函數=*  
  58. //=================*  
  59.    
  60.    
  61. //====主函數=======*  
  62. void main()  
  63. {         
  64.      bit backup = 1;//備份上一次的狀態,判斷狀態是否變化,和怎樣變化。從0到1表示已經松開,從1到0表示在按下  
  65.      uchar cnt=0;  
  66.      LSA=0;  
  67.      LSB=0;  
  68.      LSC=0;//點亮第一個數碼管(最右邊的)  
  69.      key1=0;  
  70.      P0=smgduan[cnt];  
  71.      SetT0();  
  72.      while(1)      
  73.      {  
  74.          if(KeySta != backup)  
  75.         {  
  76.              if(backup == 0) //從0到1的變化表示按鍵已經松開,可以執行操作  
  77.              {  
  78.                  cnt++;  
  79.                  if(cnt >= 16)  
  80.                  {  
  81.                      cnt = 0;  
  82.                  }  
  83.                  P0 = smgduan[cnt];  
  84.              }  
  85.              backup = KeySta;//記錄上一次的狀態留作下一次的對比  
  86.         }      
  87.      }  
  88. }  
  89. //=================*  
  90.    
  91.    
  92. //====定時器0中斷==*  
  93. void Timer0()interrupt 1  
  94. {     
  95.      static uchar keybuf = 0xFF;//定義一個靜態變量以記錄按鍵8次狀態是否都相同,相同則為穩定態,認定不是抖動。按鍵掃描緩沖區,保存一段時間內的掃描值。  
  96.    
  97.      TH0=0xf8;//每2ms刷新一次狀態記錄,刷新8次即可得到一個字節(8次)的狀態(由于人按下按鍵的最快時間一般不低于20ms,所以16ms可以滿足檢測)  
  98.      TL0=0x30;  
  99.    
  100.     keybuf = (keybuf <<1) |KEY;//移位加或進行狀態記錄      
  101.     if(keybuf == 0x00)//八位全為0為按下轉態  
  102.     {  
  103.         KeySta = 0;  
  104.     }  
  105.     else if(keybuf == 0xFF)//八位全為1認為彈起狀態  
  106.     {  
  107.         KeySta = 1;  
  108.     }  
  109.     else//其余情況KeySta不變,認為抖動狀態  
  110.     {  
  111.     }  
  112.   
  113. }  
  114. //=================*  
復制代碼

完整的Word格式文檔51黑下載地址:
08-單片機最小系統和消抖.docx (222.77 KB, 下載次數: 10)







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品成人在线 | 91亚洲精品国偷拍自产在线观看 | 日韩中文字幕2019 | 欧美综合国产精品久久丁香 | 亚洲国产网址 | 日韩av免费在线观看 | 久久国产日本 | 2018中文字幕第一页 | 久久久女女女女999久久 | 国产精品91视频 | 精品91视频| 国产欧美日韩一区二区三区在线观看 | 欧美精品在线免费观看 | 99精品视频网 | 一区二区三区视频免费看 | 日本精品一区 | 狠狠干在线 | 成人免费看片 | 亚洲视频在线看 | 亚洲电影免费 | 久久久精品一区二区三区 | 精品一区二区三区在线观看 | 天堂一区二区三区 | 国产午夜精品理论片a大结局 | 欧美精品久久 | 久久久久亚洲 | 国产一区二区三区在线免费 | 妖精视频一区二区三区 | 国产精品美女久久久久久免费 | 天天射夜夜操 | 久久91av | 一区二区三区精品视频 | 国产精品一区二区三区久久 | 亚洲自拍一区在线观看 | 久久91精品久久久久久9鸭 | 精品国产欧美一区二区三区成人 | 日日夜夜精品视频 | 天天射天天操天天干 | 在线国产视频观看 | 天天操综合网 | 日本一二区视频 |