音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

利用AT89C51單片機制作的按鍵次數(shù)計數(shù)器

出處:feng993032 發(fā)布于:2011-09-03 11:14:54 | 6750 次閱讀

  該計數(shù)器用于對按鍵次數(shù)的計算,比如鼠標中的微按鈕或其它按鈕做QC測試用.該程序為匯編延時程序,用了取兩次定時中斷的鍵值做比較以達到簡單防抖動和取健值的目的.本計數(shù)器的計數(shù)范圍為0-999999,的頻率為50Hz.
  該電路的主要電路是用AT89C51組成的按鍵取值電路,S3S4分別控制計數(shù)值的加減.3906控制數(shù)碼管使用的是共陽極.
  原理圖:

利用51單片機制作的按鍵次數(shù)計數(shù)器原理圖


  實物圖:

利用51單片機制作的按鍵次數(shù)計數(shù)器實物圖


  程序如下:
  #include <AT89X51.H>
  #define Key_UP P3_6 //上調(diào)
  #define Key_DOWN P3_7 //下調(diào)
  #define LED P0
  #define LED1 P2_2 //LED控制
  #define LED2 P2_3 //LED控制
  #define LED3 P2_4 //LED控制
  #define LED4 P2_5 //LED控制
  #define LED5 P2_6 //LED控制
  #define LED6 P2_7 //LED控制
  unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  //共陽0-9的LED筆劃
  static unsigned char bdata Key; //可位尋址的狀態(tài)寄存器
  sbit NewKeyUP = Key ^ 0;
  sbit NewKeyDOWN = Key ^ 1;
  sbit OldKeyUP = Key ^ 2;
  sbit OldKeyDOWN = Key ^ 3;
  static unsigned long data Count;
  static unsigned char LEDN[6];
  void main(void)
  {
  void Delay_510(void);
  Count = 0; //初始化變量
  Key = 0;
  EA = 1; //允許CPU中斷
  ET0 = 1; //定時器0中斷打開
  TMOD = 0x1; //設定時器0為模式1,16位模式
  TH0=0xB1;
  TL0=0xDF; //設定時值為20000us(20ms)
  TR0 = 1; //開始定時
  while(1);
  }
  //定時器0中斷外理中鍵掃描和顯示
  void KeyAndDis_Time0(void) interrupt 1 using 2
  {
  TH0=0xB1;
  TL0=0xDF; //設定時值為20000us(20ms)
  NewKeyUP = Key_UP; //取新的鍵值
  NewKeyDOWN = Key_DOWN;
  if (!OldKeyUP && NewKeyUP) //鍵放開時,這里的中斷為20ms左右(定時值非自動裝載所以多于20ms)
  Count++;
  if (!OldKeyDOWN && NewKeyDOWN)
  Count--; //這里Conut為int 沒有做負數(shù)等處理,有需要自行加上
  if (Count>999999)
  Count = 999999;
  LEDN[5]=Count/100000;
  LEDN[4] = (Count-100000*(long)LEDN[5])/10000;
  LEDN[3] = (Count-100000*(long)LEDN[5]-10000*(long)LEDN[4])/1000;
  LEDN[2] = (Count-100000*(long)LEDN[5]-10000*(long)LEDN[4]-1000*(long)LEDN[3])/100;
  LEDN[1] = (Count-100000*(long)LEDN[5]-10000*(long)LEDN[4]-1000*(long)LEDN[3]-100*(long)LEDN[2])/10;
  LEDN[0] = (Count-100000*(long)LEDN[5]-10000*(long)LEDN[4]-1000*(long)LEDN[3]-100*(long)LEDN[2]-10*(long)LEDN[1]);
  LED=LEDDis[LEDN[5]];
  LED6 = 0;
  Delay_510();
  LED6 = 1;
  LED=LEDDis[LEDN[4]];
  LED5 = 0;
  Delay_510();
  LED5 = 1;
  LED=LEDDis[LEDN[3]];
  LED4 = 0;
  Delay_510();
  LED4 = 1;
  LED=LEDDis[LEDN[2]];
  LED3 = 0;
  Delay_510();
  LED3 = 1;
  LED=LEDDis[LEDN[1]];
  LED2 = 0;
  Delay_510();
  LED2 = 1;
  LED=LEDDis[LEDN[0]];
  LED1 = 0;
  Delay_510();
  LED1 = 1;
  OldKeyUP = NewKeyUP;
  OldKeyDOWN = NewKeyDOWN;
  }
  void Delay_510(void) //延時510微秒
  {
  #pragma asm
  MOV R0,#7DH
  MOV R1,#02H
  TSR1:
  DJNZ R0,TSR1
  MOV R0,#7DH
  DJNZ R1,TSR1
  #pragma endasm
  }
  (可以自行修改調(diào)整程序以適合自己的電路.)



  
3次

版權與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權均屬于維庫電子市場網(wǎng),轉載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關法律責任。

本網(wǎng)轉載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉載時,必須保留本網(wǎng)注明的作品出處,并自負版權等法律責任。

如涉及作品內(nèi)容、版權等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權利。

OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務:
賣家服務:
技術客服:

0571-85317607

網(wǎng)站技術支持

13606545031

客服在線時間周一至周五
9:00-17:30

關注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!