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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1731|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)最小系統(tǒng)與按鍵消抖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:403543 發(fā)表于 2018-10-5 20:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
日常連載8

單片機(jī)最小系統(tǒng):
  • MCU
  • 晶振
  • 復(fù)位電路
  • 電源接口
晶振:
              

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

復(fù)位電路:
1、上電復(fù)位分析
                            2、復(fù)位時(shí)間計(jì)算  t = 1.2RC(1.2*電阻*電容)
         3、手動(dòng)復(fù)位分析
  • 1.2*4700*0.0000001=564us
圖中R60是當(dāng)按鍵按下的一瞬間,電容需要放電,如果沒(méi)有這個(gè)電阻,會(huì)產(chǎn)生很大的電流產(chǎn)生電磁干擾,降低系統(tǒng)的穩(wěn)定性,故加了這個(gè)電阻給電容放電保持系統(tǒng)的穩(wěn)定。

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


單片機(jī)源程序:

  1.     /*————備注:———————*
  2.     平臺(tái):Keil4  STC89C52RC  
  3.     功能:
  4.     作者:西片                                         
  5.     聯(lián)系方式: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. //====引腳說(shuō)明=====*  
  25. sbit LSA=P2^2;  
  26. sbit LSB=P2^3;  
  27. sbit LSC=P2^4;  
  28. sbit key1=P1^7;//將矩陣鍵盤(pán)變?yōu)楠?dú)立按鍵,讓第一行的按鍵左端均為低電平,然后通過(guò)列的一個(gè)高低電平判斷按鍵是否按下  
  29. sbit KEY=P1^3;//第一個(gè)按鍵對(duì)應(yīng)的列  
  30. //=================*  
  31.    
  32. bit KeySta=1;//按鍵狀態(tài)標(biāo)志位  
  33.    
  34. //====全局變量=====*  
  35. //=================*  
  36.    
  37.    
  38. //====編碼數(shù)組=====*  
  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,加無(wú)顯示碼  
  41. //=================*  
  42.    
  43.    
  44. //====定時(shí)器0設(shè)定==*  
  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. //====要添加的函數(shù)=*  
  58. //=================*  
  59.    
  60.    
  61. //====主函數(shù)=======*  
  62. void main()  
  63. {         
  64.      bit backup = 1;//備份上一次的狀態(tài),判斷狀態(tài)是否變化,和怎樣變化。從0到1表示已經(jīng)松開(kāi),從1到0表示在按下  
  65.      uchar cnt=0;  
  66.      LSA=0;  
  67.      LSB=0;  
  68.      LSC=0;//點(diǎn)亮第一個(gè)數(shù)碼管(最右邊的)  
  69.      key1=0;  
  70.      P0=smgduan[cnt];  
  71.      SetT0();  
  72.      while(1)      
  73.      {  
  74.          if(KeySta != backup)  
  75.         {  
  76.              if(backup == 0) //從0到1的變化表示按鍵已經(jīng)松開(kāi),可以執(zhí)行操作  
  77.              {  
  78.                  cnt++;  
  79.                  if(cnt >= 16)  
  80.                  {  
  81.                      cnt = 0;  
  82.                  }  
  83.                  P0 = smgduan[cnt];  
  84.              }  
  85.              backup = KeySta;//記錄上一次的狀態(tài)留作下一次的對(duì)比  
  86.         }      
  87.      }  
  88. }  
  89. //=================*  
  90.    
  91.    
  92. //====定時(shí)器0中斷==*  
  93. void Timer0()interrupt 1  
  94. {     
  95.      static uchar keybuf = 0xFF;//定義一個(gè)靜態(tài)變量以記錄按鍵8次狀態(tài)是否都相同,相同則為穩(wěn)定態(tài),認(rèn)定不是抖動(dòng)。按鍵掃描緩沖區(qū),保存一段時(shí)間內(nèi)的掃描值。  
  96.    
  97.      TH0=0xf8;//每2ms刷新一次狀態(tài)記錄,刷新8次即可得到一個(gè)字節(jié)(8次)的狀態(tài)(由于人按下按鍵的最快時(shí)間一般不低于20ms,所以16ms可以滿足檢測(cè))  
  98.      TL0=0x30;  
  99.    
  100.     keybuf = (keybuf <<1) |KEY;//移位加或進(jìn)行狀態(tài)記錄      
  101.     if(keybuf == 0x00)//八位全為0為按下轉(zhuǎn)態(tài)  
  102.     {  
  103.         KeySta = 0;  
  104.     }  
  105.     else if(keybuf == 0xFF)//八位全為1認(rèn)為彈起狀態(tài)  
  106.     {  
  107.         KeySta = 1;  
  108.     }  
  109.     else//其余情況KeySta不變,認(rèn)為抖動(dòng)狀態(tài)  
  110.     {  
  111.     }  
  112.   
  113. }  
  114. //=================*  
復(fù)制代碼

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


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品久久久久久 | 成人精品国产一区二区4080 | 久草中文在线 | 日本黄色不卡视频 | 亚洲精品白浆高清久久久久久 | 狠狠干美女 | 91porn国产成人福利 | 午夜一级做a爰片久久毛片 精品综合 | 久久99深爱久久99精品 | 午夜在线小视频 | 国产高清视频一区 | 国产精品揄拍一区二区 | 国产精品视频网站 | 欧美国产日韩在线观看成人 | 日韩欧美一区在线 | 欧美视频在线一区 | 国产不卡在线 | 欧美日韩成人一区二区 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 成人精品在线观看 | 天天干人人 | 男女网站免费观看 | 国产精品久久久久久久久久久久久 | 91高清在线视频 | 久久综合久 | 亚洲国产看片 | 欧美中文字幕在线观看 | 日韩精品无码一区二区三区 | 91原创视频| 午夜天堂精品久久久久 | 欧美一区二区在线免费观看 | 男人天堂av网 | 午夜激情视频在线 | av中文网| 免费a国产| 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 欧美福利视频 | 黄色骚片| 亚洲一区在线日韩在线深爱 | 国产精品美女www爽爽爽视频 | 国产精品一区一区 |