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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于AVR的4*4矩陣鍵盤掃描與LED顯示程序

作者:佚名   來源:本站原創(chuàng)   點擊數:  更新時間:2012年04月03日   【字體:

/**************
此程序在別人的基礎上進行了一些修改,能應用到我的開發(fā)板中,
并與我自制的外接按鍵和LED燈配合使用,在此感謝原創(chuàng)者!!!
硬件:M16
作用:當按下按鍵時顯示相對應的按鍵控制的LED燈
頻率:8.000000MHZ
開發(fā)板:EasyAVR M16 v12
編譯軟件:ICCAVR6.31A
下載軟件:AVRstudio4.14
編寫人:伍建忠
編寫日期:2011.10.14
修改日期:
************/
#include<iom16v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
uint key_num=20;
//以下為左右移動參數宏定義
#define crol(a,n)a=(a<>(8-n))
#define cror(a,n)a=(a>>n)|(a<<(8-n))
void delay(void)
 {
  uint i;
  for(i=1;i<100;i++);
 }
void delay_1ms(void)
 {
  uint i;
  for(i=1;i<(uint)(8*143-2);i++);
 }
void delay_ms(uint time)
 {
  uint i=0;
  while(i)
   {
    delay_1ms();
 i++;
   }
 }
void port_init(void)
 {
  DDRA=0xff;
  PORTA=0xff;
  DDRB=0x00;
  PORTB=0x00;
  DDRC=0xff;//
  PORTC=0xff;//
  DDRD=0xf0;//D口低四位為輸入,置高電平。
  PORTD=0x00;//高四位為輸出,置低電平。
 }
uchar key_scan(void)
 {
  uchar i,j;
  DDRD=0xf0;
  PORTD=0x00;//初始運行時輸出全為0
  if((PIND&0x0f)==0x0f)//判斷有無按鍵按下
  return 20;
  else
  {
   delay_ms(10);
   if((PIND&0x0f)==0x0f)//第二次判斷,必不可少
   return 20;
   else
    {
  for(i=4;i<8;i++)//掃描行線
  {
   PORTD=~(1<<i)|0x0f;//行線上是否有拉低
   for(j=0;j<4;j++)//掃描列線
    {
     if((PIND&(1<<j))==0)//列線上有無按鍵按下
   key_num=((i-4)*4+j);//確定按鍵值
    }
  }
  return key_num;//無鍵按下則返回初始狀態(tài)
 }
  }
 }
void led_display(void)//按鍵按下時在LED上顯示相應的狀態(tài)
 {
  switch(key_num)
   {
    case 0: PORTA=0xfe; PORTD=0xee; break;
 case 1: PORTA=0xfc; PORTD=0xde; break;
 case 2: PORTA=0xf8; PORTD=0xbe; break;
 case 3: PORTA=0xf0; PORTD=0x7e; break;
 case 4: PORTA=0xe0; PORTD=0xed; break;
 case 5: PORTA=0xc0; PORTD=0xdd; break;
 case 6: PORTA=0x07; PORTD=0xbd; break;
 case 7: PORTA=0x55; PORTD=0x7d; break;
 case 8: PORTA=0xaa; PORTD=0xeb; break;
 case 9: PORTA=0xcc; PORTD=0xdb; break;
 case 10: PORTA=0xbb; PORTD=0xbb; break;
 case 11: PORTA=0x77; PORTD=0x7b; break;
 case 12: PORTA=0xf0; PORTD=0xe7; break;
 case 13: PORTA=0x66; PORTD=0xd7; break;
 case 14: PORTA=0xee; PORTD=0xd7; break;
 case 15: PORTA=0xdd; PORTD=0x77; break;
 default: break;
 key_num=16;
   }
 }
void main(void)
 {
  #ifdef debag1
   key_code=2;
   #endif
   port_init();//調用端口初始化函數
   while(1)
    {
  key_scan();//調用按鍵掃描函數
  led_display();//調用顯示函數
 }
 }    

關閉窗口

相關文章

主站蜘蛛池模板: 久久免费高清 | 成人激情视频免费观看 | 欧美三区视频 | 精品国产乱码久久久久久蜜退臀 | 欧美在线精品一区 | 亚洲欧美精品在线观看 | 日韩一区二区在线播放 | 亚洲欧美另类在线 | 成人免费观看视频 | 午夜视频在线观看视频 | 美女一级a毛片免费观看97 | 日韩精品一区中文字幕 | 毛片免费视频 | 999国产精品视频免费 | 殴美一级片 | 久久精品国产免费 | 天天澡天天操 | 一区二区三区四区日韩 | 中文字幕乱码亚洲精品一区 | 午夜小视频在线播放 | 国产精品一区二区福利视频 | 殴美黄色录像 | 成人免费在线观看 | 男人天堂国产 | 国产精品免费在线 | 成人在线电影在线观看 | 亚洲成人精品久久久 | 久久久久久99 | 日韩视频在线观看中文字幕 | 久久蜜桃资源一区二区老牛 | 人人爽日日躁夜夜躁尤物 | 日韩欧美久久精品 | 九九综合 | 国内精品一区二区三区 | 亚洲国产69 | 久久国产精品久久久久久 | 国产成人a亚洲精品 | 国产探花在线精品一区二区 | www.久草.com | 请别相信他免费喜剧电影在线观看 | www.蜜桃av|