国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

歷史上的今天

今天是:2025年05月12日(星期一)

正在發(fā)生

2018年05月12日 | AVR單片機(ATMEGA16)矩陣鍵盤掃描程序

發(fā)布者:和諧共融 來源: eefocus關鍵字:AVR單片機  ATMEGA16  矩陣鍵盤  掃描程序 手機看文章 掃描二維碼
隨時隨地手機看文章

程序思路與缺陷參考:51單片機(AT89C52)矩陣鍵盤檢測程序

#include  

typedef unsigned char uchar;  

typedef unsigned int uint;  

#define dula_h  PORTD|=0x01  

#define dula_l  PORTD&=0xfe  

#define wela_h  PORTD|=0x02  

#define wela_l  PORTD&=0xfd  

#define keyport PORTB  

#define keypin (PINB)  

#define keydre DDRB  

#define keystate0 0     //按鍵確認狀態(tài)  

#define keystate1 1     //按鍵無動作狀態(tài)  

char keystate=1;    //按鍵狀態(tài)初始化為按鍵無動作狀態(tài)  

uchar keynum=0;  

void delayms(uint z)      //1ms  

{  

 uint x,y;  

 for(x=z;x>0;x--)  

                 for(y=157;y>0;y--);  

}  

uchar table[]={ //共陽數(shù)碼管  

0xc0,0xf9,0xa4,0xb0,  

0x99,0x92,0x82,0xf8,  

0x80,0x90,0x88,0x83,  

0xc6,0xa1,0x86,0x8e};  

void smg(void)  

{  

    dula_l;  

    wela_l;  

    PORTC=0x01;  

    wela_h;  

    wela_l;  

    PORTC=table[keynum];  

    dula_h;  

    dula_l;  

    delayms(1);  

  

    PORTC=0x02;  

    wela_h;  

    wela_l;  

    PORTC=table[keynum];  

    dula_h;  

    dula_l;  

    delayms(1);  

  

    PORTC=0x04;  

    wela_h;  

    wela_l;  

    PORTC=table[keynum];  

    dula_h;  

    dula_l;  

    delayms(1);  

  

    PORTC=0x08;  

    wela_h;  

    wela_l;  

    PORTC=table[keynum];  

    dula_h;  

    dula_l;   

    delayms(1);  

  

    PORTC=0x10;  

    wela_h;  

    wela_l;  

    PORTC=table[keynum];  

    dula_h;  

    dula_l;  

    delayms(1);  

  

    PORTC=0x20;  

    wela_h;  

    wela_l;  

    PORTC=table[keynum];  

    dula_h;  

    dula_l;  

    delayms(1);  

  

    PORTC=0x40;  

    wela_h;  

    wela_l;  

    PORTC=table[keynum];  

    dula_h;  

    dula_l;  

    delayms(1);  

  

    PORTC=0x80;  

    wela_h;  

    wela_l;  

    PORTC=table[keynum];  

    dula_h;  

    dula_l;  

    delayms(1);  

}  

void keyscan(void)  

{  

    uchar temp1,temp2,column,row;  

    switch(keystate)          

    {  

        case keystate0: //keystate0,按鍵按下確認狀態(tài),下一狀態(tài)為keystate1(按鍵無動作狀態(tài))  

            keydre=0xff;  

            keyport=0x0f;   

            keydre=0xf0;   

            temp1=keypin;  

            keydre=0xff;  

            keyport=0xf0;   

            keydre=0x0f;  

            temp2=keypin;             

            if((temp1|temp2)!=0xff)  

            {  

                temp1|=temp2;  

                if(!(temp1&0x80))  

                    row=3;  

                else   

                    if(!(temp1&0x40))  

                        row=2;    

                    else  

                        if(!(temp1&0x20))  

                            row=1;  

                        else  

                            if(!(temp1&0x10))  

                                row=0;  

                if(!(temp1&0x08))  

                    column=3;  

                else   

                    if(!(temp1&0x04))  

                        column=2;     

                    else  

                        if(!(temp1&0x02))  

                            column=1;  

                        else  

                            if(!(temp1&0x01))  

                                column=0;  

                keynum=column*4+row;  

                while(!(keyport==0x0f|keyport==0xf0));  

                keystate=keystate1;  

                break;                    

            }  

            else  

                keystate=keystate1;  

            break;  

        case keystate1: //keystate1,按鍵無動作狀態(tài),下一狀態(tài)為keystate0(按鍵無動作狀態(tài))  

            keydre=0xff;  

            keyport=0x0f;  //輸出0x0f  

            keydre=0xf0;   

            temp1=keypin;  

            keydre=0xff;  

            keyport=0xf0;   //輸出0xf0  

            keydre=0x0f;  

            temp2=keypin;             

            if((temp1|temp2)!=0xff)  

            {  

                keystate=keystate0;  

            }  

            else  

                keystate=keystate1;  

            break;  

    }  

}  

void main(void)  

{  

    DDRC=0xff;   

    DDRD|=0x03;  

    while(1)  

    {  

        keyscan();  

        smg();  

    }  

}  



關鍵字:AVR單片機  ATMEGA16  矩陣鍵盤  掃描程序 引用地址:AVR單片機(ATMEGA16)矩陣鍵盤掃描程序

上一篇:IAR FOR AVR中精確軟件延時方法
下一篇:AVR 看門狗使用

推薦閱讀

全球觸控面板大廠日本寫真印刷(Nissha)10日于日股盤后發(fā)布新聞稿宣布,因智能手機用觸控面板需求預估將在Q2(4-6月)急減、工廠稼動率低下,故今年度(2018年1-12月)合并營收目標自原先預估的2, 270億日圓下修至2,170億日圓、合并營益目標自150億日圓下修至102億日圓、合并純益目標也自原先預估的110億日圓下修至70億日圓。Nissha將今年度組件部門(觸控面板...
帶屏智能音箱在2019年似乎是個趨勢。最近,有設計師對帶屏音箱進行了一番大膽“重制”,讓產(chǎn)品本身又多了種形態(tài),一起來看?! ∶麨?ldquo;AI Assistant”的工業(yè)設計作品于今年2月發(fā)布。初看之下,其外形與我們常見的帶屏音箱相似,甚至有幾分神似Nest Hub Max?! 〕薃I語音助理這個必備功能,它最有趣的特點是屏幕可以與音箱主體分離,屏幕能變身為獨立...
許久之前在某寶入手一塊二手mini2440開發(fā)板,因為忙畢業(yè)設計也沒空玩玩,這幾天在等PCB印刷出來的時間拿出來學習一下。第一步配置好開發(fā)環(huán)境:交叉編譯器,使用的是友善之臂光盤里的arm-linux-gcc-4.4.3.tar.bz,VMware 裝的是ubuntu 1404,但是一直不成功,好像是1404版本有點bug,也嘗試過arm-2009q3, 后來索性重新裝了ubuntu 1604,后來交叉編譯器...

史海拾趣

問答坊 | AI 解惑

本版塊的發(fā)展成長思路!

作為一個子版塊,只是想到的是越來越精!很多比較基礎的東西在dsp,fpga,pcb,嵌入式里面應該能夠找到答案!由于dsp設計的知識比較多,而且密集,所以,我想更多的的是致力于他們的交叉應用上!更多的是實際的例子,啟發(fā)大家的思路,論文可能居多 ...…

查看全部問答∨

高清網(wǎng)絡攝像機將成為高清監(jiān)控時代最主要的IP前端

根據(jù)美國電影電視工程師協(xié)會(SMPTE)、國際電聯(lián)(ITU)和我國國家廣電的相關定義,真正的高清視頻格式目前主要有三種:720P(1280*720分辨率,16:9寬屏顯示,逐行掃描/60Hz);1080i(1920*1080分辨率,16:9寬屏顯示,隔行掃描/60Hz);1080P(192 ...…

查看全部問答∨

流水線技術在高速數(shù)字電路設計中的應用

流水線技術在高速數(shù)字電路設計中的應用,一篇不錯的論文…

查看全部問答∨

郎咸平:從產(chǎn)業(yè)鏈分工看大學生就業(yè)困難

郎咸平:從產(chǎn)業(yè)鏈分工看大學生就業(yè)困難 http://view.news.qq.com/a/20080723/000001.htm…

查看全部問答∨

wince 中的.rc文件修改后編譯后問題

我在wince 4.2下,修改了public/common/oak/startui/下的驅(qū)動中的startui.rc文件,但是命令行編譯后,又進行重編譯,在進行操作時他的對話框還是默認的大小。不知道是什么原因,請高手指教。謝謝!…

查看全部問答∨

求tinyOS API

小弟現(xiàn)在正在學tinyOS,看過現(xiàn)在市面上最流行的幾份教材,第一個是市面上唯一的中文版的教材,學會了blink.還有發(fā)送和接受數(shù)據(jù)的兩個部分。還有一份是nesC 1.1 語言參考手冊, 講tinyos的結構的。還有一份英文版的tinyOS/nesC programming reference ...…

查看全部問答∨

請問作為一個初學者,該如何學習WINCE的相關知識?

由于再過2個月,就要去公司實習,公司相關部門的工程師通知我要先開始熟悉wince系統(tǒng)和窗口控件設計,并了解vs2005. 我以前完全沒有接觸過wince操作系統(tǒng),希望大家能夠推薦幾本適合初學者的經(jīng)典書籍,并指點一些學習步驟和計劃?!?

查看全部問答∨

COMBOBOX 如何獲得焦點?

我想在COMBOBOX獲得焦點的時候進行一些操作。我用的方法是if(GetFoucs()->GetDlgCtrlID==IDC_XXX)可是光標已經(jīng)明明在COMBOBOX上了但是感覺并沒有獲得焦點。同樣的代碼放到EDIT空間或者ListBox控件上都沒有問題。 求解答。謝謝各位了?!?

查看全部問答∨

2440,bootloader問題

我的bsp里面有stepldr和eboot, 我想讓eboot跑起來, 但把stepldr.nb1燒寫到flash中后,在dnw上顯示的卻是亂碼?。。?! 這個是串口的初始代碼: void Uart_Init(void) {    int i;     rUFCON1 = 0x0;     ...…

查看全部問答∨

一段小程序 有小惑 求指點

module count4(out,reset,clk); output[3:0] out; input[3:0] reset,clk; reg[3:0] out; always @(posedge clk)    begin    if(reset)  out<=0;    else out<=out+1;    end endmodul ...…

查看全部問答∨
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved