日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

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

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

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

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


  實(shí)物圖:

利用51單片機(jī)制作的按鍵次數(shù)計(jì)數(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};
  //共陽(yáng)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; //定時(shí)器0中斷打開
  TMOD = 0x1; //設(shè)定時(shí)器0為模式1,16位模式
  TH0=0xB1;
  TL0=0xDF; //設(shè)定時(shí)值為20000us(20ms)
  TR0 = 1; //開始定時(shí)
  while(1);
  }
  //定時(shí)器0中斷外理中鍵掃描和顯示
  void KeyAndDis_Time0(void) interrupt 1 using 2
  {
  TH0=0xB1;
  TL0=0xDF; //設(shè)定時(shí)值為20000us(20ms)
  NewKeyUP = Key_UP; //取新的鍵值
  NewKeyDOWN = Key_DOWN;
  if (!OldKeyUP && NewKeyUP) //鍵放開時(shí),這里的中斷為20ms左右(定時(shí)值非自動(dòng)裝載所以多于20ms)
  Count++;
  if (!OldKeyDOWN && NewKeyDOWN)
  Count--; //這里Conut為int 沒有做負(fù)數(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) //延時(shí)510微秒
  {
  #pragma asm
  MOV R0,#7DH
  MOV R1,#02H
  TSR1:
  DJNZ R0,TSR1
  MOV R0,#7DH
  DJNZ R1,TSR1
  #pragma endasm
  }
  (可以自行修改調(diào)整程序以適合自己的電路.)



  
3次

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

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

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

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

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

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

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

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

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