日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

4x4矩阵键盘工作原理及扫描程序_AVR单片机扫描4X4矩阵键盘并数码管显示程序

發布時間:2024/9/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4x4矩阵键盘工作原理及扫描程序_AVR单片机扫描4X4矩阵键盘并数码管显示程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/*

program name :?? keyboard ;

功能描述 :? 掃描16個按鍵(4X4),并把鍵值顯示在數碼管上(兩位);

要點 :? 在掃描按鍵時運用了比較復雜的兩個for()循環嵌套式

掃描方案,大大減少了程序量,循環嵌套方案讓我糾結了好久,

鍵值有0~9,上,下,左,右,確認,清零;

體會:? 又一個里程碑,淚奔啊...我似乎成了 代碼男神? 啊...;

實驗用時:? 約等于14小時(每天2小時X7天);

完成時間: 2013-11-19 23:58:22

*/

#include

#include

#define uint8? unsigned char????? //宏定義8位數據類型;

#define uint16 unsigned int?????? //宏定義16位數據類型;

//? 0 , 1? ,? 2? , 3? , 4? , 5? , 6? ,

uint8 ak[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

//??? 7? , 8? , 9 , 上? , 下?? 左 , 右? ;

0x07,0x7f,0x6f,0x62 ,0x54,0x21,0x0c};

uint8? ge=8,shi=8 ,si=0;

void bit(uint8 h)??? //數碼管位選使能函數;

{

PORTB|=0X02;?? //數碼管位選置1(透明狀態);

if(h==0)

{

PORTB&=0XFD;?? //清零(鎖存狀態);

}

}

void dat(uint8 u)?? //數碼管數據使能函數;

{

PORTB|=0X01;

if(u==0)

{

PORTB&=0XFE;

}

}

void buzz(uint8 k)??? //蜂鳴器函數;

{

if(k==0)

{

PORTC&=~(0X80);

}

else? PORTC|=0X80;

}

void delay(uint8 j)????????? //1=1000個計數周期;

{

uint16? h=0;

while(j--)

{

for(h=0;h<1000;h++);

}

}

void mega16()?????? //初始化各個IO口;

{

DDRA=0XFF;??? //PA輸出;

DDRB=0XFF;??? //PB輸出;

PORTA=0X00;?? //PA 輸出全0;

delay(1);???? //延時一下,1000個計數周期;

bit(0);????????? //數碼管共陰極全零;

PORTA=0X3F;??? //數碼管數據口裝載數據顯示0;

PORTB=1<<2;??? //打開led流水燈燈;

dat(0);??????? //鎖存數碼管數據口數據,八個數碼管顯示0;

delay(30);??? //延時一下;

DDRD=0X0F;?? //PD口高四位輸入,第四位輸出;

PORTD=0XFF;? //PD輸入口內部上拉,輸出口輸出全1;

DDRC=0XFF;?? //PC口全部輸出模式;

PORTC=0X00;?? //PC口輸出全零;

}

void led()

{

static uint8 g=0;

PORTA=0Xff;? //向數碼管輸入顯示數據時,必先將共陰極全部置一,

//否則數碼管會出現陰影;

bit(0);???? //八個數碼管共陰極置一(低電平有效);

switch(g)

{? case 0:? PORTA=ak[ge] ;dat(0);PORTA=0XFE;break;//數碼管個位;

case 1:? PORTA=ak[shi];dat(0);PORTA=0XFD;break; //數碼管十位;

default: break;?? //否則...

}

bit(0);

g++;

if(g==2)

{

g=0;

}

}

shu(uint8 c)

{

if(c<=2) {c++;}? //1~3;

else if(c==3) {ge=10;shi=10; return 0;}?? //上;

else if(c==11){ge=c ; shi=c; return 0;}?? //下;

else if(c==7) {ge=12,shi=12; return 0;}?? //左;

else if(c==15) {ge=13,shi=13; return 0;}?? //右;

else if(c==13){return 0;}????? //enter 確認;? ;

else if(c==14){ge=0; shi=0;? return 0;}? //清零;

else if((c>=8)&&(c<=10)){c-=1;}? //7~9;

else if(c==12){ge=0;return 0;}

else { ;}??? //4~6;

ge=c; shi=0;

}

key()

{

uint8? i=0 ,y=0,temp=0x10 ,v=0,ke=0 ,en[]={0xfe,0xfd,0xfb,0xf7};

//? temp用于檢測每一行某個鍵是否按下; en數組是四列檢測;

for(v=0;v<4;v++)???? //v每加一代表檢測一列;

{

PORTD=en[v];???? //檢測四列;

temp=0x10;

for(y=0;y<4;y++)??? //y每加一,代表檢測一列中的一個按鍵;

{

if((PIND&temp)==0)??? //如果有鍵被按下,進入;

{

for(i=0;i<250;i++){led();}?? //去抖延時并且掃描數碼管;

if((PIND&temp)==0)??????? //再次確認有鍵被按下;

{

buzz(1);????? //蜂鳴器開;

for(i=0;i<200;i++){led();}?? //鳴響延時;

for(i=0;i<200;i++){led();}?? //鳴響延時;

buzz(0);????? //蜂鳴器關;

//===============生成鍵值部分================

if(v==1)y+=3;?????? //檢測到第二行;??????? //

else if(v==2)y+=6;? //檢測到第三行;??????? //

else if(v==3)y+=9;? //檢測到第四行;??????? //

else {;}????????? //檢測到第一行;??????? //

ke=v+y;??? //生成鍵值;???????????????????? //

//===========================================

shu(ke);??? // 發送鍵值;

while((PIND&temp)==0)led();?? //等待按鍵彈起;

for(i=0;i<250;i++){led();}??? //等待一下;

while((PIND&temp)==0)led();?? //再次確認一下按鍵是否彈起;

return 0;??? //結束函數;

}

}

temp=temp<<1;? //左移一下代表檢測下一個按鍵;

}

}

}

void main(void)

{

mega16();? //初始化各個IO口;

buzz(1);?? //蜂鳴器開;

delay(15); //延時1.5萬計數周期;

buzz(0);?? //蜂鳴器關;

PORTA=0xff;?? //載入全1;

bit(0);?????? //把全1數據鎖存在數碼管共陰極(數碼管滅);

delay(15);?? //延時1.5萬計數周期;

while(1)

{

led();? //掃描數碼管;

key();? //掃描鍵盤;

}

}

總結

以上是生活随笔為你收集整理的4x4矩阵键盘工作原理及扫描程序_AVR单片机扫描4X4矩阵键盘并数码管显示程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩激情视频在线观看 | 国产精品麻豆一区二区 | 我和岳m愉情xxxⅹ视频 | 驯服少爷漫画免费观看下拉式漫画 | 青青成人网 | 国产一区二区三区在线观看 | 老司机深夜福利在线观看 | 狠狠躁夜夜躁人人爽天天高潮 | 午夜资源网 | 在线观看黄色动漫 | 五月天综合社区 | 91黄色片 | 久久久久久999 | 欧美精品久久久久 | 国模少妇一区二区 | 一区二区三区在线视频播放 | 视频在线一区 | 国产又粗又硬又黄的视频 | 成人免费在线小视频 | 中文字字幕在线观看 | 欧美亚洲综合一区 | 亚洲美女性视频 | 国产夜色视频 | 免费黄色大片网站 | a√天堂资源 | 91在线视频免费观看 | 国产国语性生话播放 | 又欲又污又肉又黄短文 | 久国产精品 | 91视频一区二区 | 欧美a级免费| 日本成人在线免费视频 | 欧美天天性 | www.av在线免费观看 | a激情| 91亚洲精华国产精华精华液 | 超碰资源在线 | 黑人巨大国产9丨视频 | 亚洲在线免费视频 | 亚洲免费精品 | 久久中文字幕人妻熟av女蜜柚m | 99资源网| 亚洲熟妇av乱码在线观看 | 狐狸视频污| 亚洲制服丝袜av | 欧美激情一区二区在线 | 天天插天天插 | 亚洲天堂2021av| 亚洲人成777| 国产中文欧美日韩在线 | 日韩一级在线观看 | 精品国产乱码一区二区 | jiizzyou欧美2| 日韩精品一区二区三 | 精品福利在线 | 国产成人av一区二区三区在线观看 | 毛片视频网站 | 男同av在线观看一区二区三区 | 深爱激情久久 | 国产黑丝精品 | 青青伊人av | 久久免费观看视频 | 高潮爽爆喷水h | 久久中文一区 | 六月丁香色婷婷 | 河北彩花av在线播放 | 久久都是精品 | 一本之道久久 | 国产美女一区二区 | 国产精品麻豆一区二区三区 | 亚洲色吧 | 一本一道久久综合狠狠老精东影业 | 色偷偷资源网 | 狠狠人妻久久久久久综合 | 亚洲欧美乱日韩乱国产 | 丰满岳乱妇国产精品一区 | 日韩精品视频三区 | 美女网站黄页 | 自拍偷拍日韩精品 | 少妇激情偷人三级 | 男女黄床上色视频 | 日批大全| 高潮毛片无遮挡免费看 | 欧美少妇喷水 | 蜜臀av一区二区三区有限公司 | 91宅男| 久精品视频 | 日韩中文字幕网址 | 成人免费在线 | 悠悠色影院 | 樱桃视频污污 | 国产女主播在线观看 | 成人在线免费观看网址 | 国产一区二区久久精品 | aa爱做片免费 | jizz视频| 高潮久久久| 91免费视频网址 | 国产午夜精品理论片 |