欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4878|回復(fù): 39
收起左側(cè)

有沒(méi)有學(xué)長(zhǎng)教個(gè)單片機(jī)按鍵流水燈的題

  [復(fù)制鏈接]
ID:404823 發(fā)表于 2018-10-23 19:34 | 顯示全部樓層 |閱讀模式
P3.2 開(kāi)始,按此鍵8個(gè)流水燈由上而下循環(huán)流動(dòng); P3.3 停止,按此鍵led全滅.  P3.4上,按此鍵led由上而下流動(dòng) ;  P3.5下,按此鍵led由下而上流動(dòng);
老師布置的作業(yè),課上聽(tīng)的稀里糊涂的。望大神們教教萌新,細(xì)節(jié)你們自己可以定,作業(yè)的全部?jī)?nèi)容就是這個(gè)
回復(fù)

使用道具 舉報(bào)

ID:157238 發(fā)表于 2018-10-23 20:15 | 顯示全部樓層
檢測(cè)按鍵,編寫(xiě)亮燈子程序
檢測(cè)按鍵的電平變化,當(dāng)連接按鍵的引腳發(fā)生電位變化時(shí)進(jìn)入子程序執(zhí)行燈操作。
回復(fù)

使用道具 舉報(bào)

ID:414277 發(fā)表于 2018-10-23 20:53 | 顯示全部樓層
檢測(cè)按鍵的狀態(tài),然后左移或者右移P0的值,或者讓P0的值等于定值,究竟是0x00,還是0xff,要根據(jù)你的開(kāi)發(fā)板來(lái)定
回復(fù)

使用道具 舉報(bào)

ID:398075 發(fā)表于 2018-10-23 21:01 | 顯示全部樓層
這個(gè)看你用的LED的情況
回復(fù)

使用道具 舉報(bào)

ID:398075 發(fā)表于 2018-10-23 21:02 | 顯示全部樓層
還可以使用中斷來(lái)進(jìn)行流水燈的變化
回復(fù)

使用道具 舉報(bào)

ID:244223 發(fā)表于 2018-10-23 21:03 | 顯示全部樓層
看原理圖做啊,看一下你用的板子的led燈是給什么電平亮,然后在頭文件下定義一個(gè)標(biāo)志位flag賦值0(看你這個(gè)要求最好定義成int什么的不要bit),在按鍵中(P32中把flag置為1)(P33置為2)(P34置為3)(P35置為4),然后在主函數(shù)中判斷flag的值,執(zhí)行你們老師給你們的要求
回復(fù)

使用道具 舉報(bào)

ID:414305 發(fā)表于 2018-10-23 21:28 | 顯示全部樓層
這個(gè)應(yīng)該是最基礎(chǔ)的吧
回復(fù)

使用道具 舉報(bào)

ID:414305 發(fā)表于 2018-10-23 21:36 | 顯示全部樓層
這個(gè)應(yīng)該是最基礎(chǔ)的,P3.2  P3.3  P3.4  P3.5分別使用 if 判斷,或者用switch 。單片機(jī)要用心學(xué),學(xué)好了很有用
回復(fù)

使用道具 舉報(bào)

ID:414328 發(fā)表于 2018-10-23 22:04 | 顯示全部樓層
很多教材有這樣的例程,你可以多看看。
回復(fù)

使用道具 舉報(bào)

ID:414330 發(fā)表于 2018-10-23 22:14 | 顯示全部樓層
這個(gè)我會(huì)的,你加我私信我qq 1004890607
回復(fù)

使用道具 舉報(bào)

ID:413530 發(fā)表于 2018-10-23 23:41 | 顯示全部樓層
需要用到左移右移函數(shù),也可以直接延時(shí)函數(shù)一個(gè)一個(gè)燈的編程,按鍵可以用外部中斷來(lái)控制或者if函數(shù),按鍵注意松手檢測(cè)
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-10-24 09:12 | 顯示全部樓層
高手們說(shuō)了這么多,就是沒(méi)有程序啊,我不是高手,不過(guò)這個(gè)問(wèn)題我能解決。
#include<reg51.h>
#include<intrins.h>       

#define GPIO_LED P2

sbit k1=P3^2;
sbit k2=P3^3;
sbit k3=P3^4;
sbit k4=P3^5;

void Delay10ms(unsigned int c);

void main(void)
{
        unsigned int i,n;
        while(1)
        {       
                if(k1==0)
                {
                        Delay10ms(1);
                        if(k1==0)
                        {
                                n=1;
                                GPIO_LED=0xfe;
                                while((i<50)&&(k1==0))
                            {
                                    Delay10ms(1);
                                    i++;
                            }
                            i=0;
                        }
                }
                if(k2==0)
                {
                        Delay10ms(1);
                        if(k2==0)
                        {
                                n=2;
                                GPIO_LED=0xff;
                                while((i<50)&&(k2==0))
                            {
                                    Delay10ms(1);
                                    i++;
                            }
                            i=0;
                        }
                }
                if(k3==0)
                {
                        Delay10ms(1);
                        if(k3==0)
                        {
                                n=3;
                                GPIO_LED=0x7f;
                                while((i<50)&&(k3==0))
                            {
                                    Delay10ms(1);
                                    i++;
                            }
                            i=0;
                        }
                }
                if(k4==0)
                {
                        Delay10ms(1);
                        if(k4==0)
                        {
                                n=4;
                                GPIO_LED=0xff;
                                while((i<50)&&(k3==0))
                            {
                                    Delay10ms(1);
                                    i++;
                            }
                            i=0;
                        }
                }
                if (n==1)
                {
                        GPIO_LED=_crol_(GPIO_LED,1);
                        Delay10ms(50);
                }
                if (n==3)
                {
                        GPIO_LED=_cror_(GPIO_LED,1);
                        Delay10ms(50);
                }
        }               
}

void Delay10ms(unsigned int c)
{
    unsigned char a,b;
    for(c;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

你沒(méi)有說(shuō)你的電路是怎么樣的,按鍵我可以按照你說(shuō)的寫(xiě)(程序調(diào)試是我的板子,按鍵IO口有點(diǎn)不一樣,發(fā)給你的程序,已經(jīng)按照你的按鍵修改了),LED燈就沒(méi)法照你說(shuō)的寫(xiě)了(我的板子是P2口)。按鍵時(shí),動(dòng)作慢點(diǎn),就可以達(dá)成效果。
回復(fù)

使用道具 舉報(bào)

ID:343796 發(fā)表于 2018-10-24 09:34 | 顯示全部樓層
寫(xiě)個(gè)燈的亮滅數(shù)組,在循環(huán)就可以了
回復(fù)

使用道具 舉報(bào)

ID:414476 發(fā)表于 2018-10-24 10:14 | 顯示全部樓層
while中循環(huán)檢測(cè)按鍵電平值
回復(fù)

使用道具 舉報(bào)

ID:412932 發(fā)表于 2018-10-24 10:40 | 顯示全部樓層
檢測(cè)按鍵的狀態(tài),然后左移或者右移P0的值,或者讓P0的值等于定值,究竟是0x00,還是0xff,
回復(fù)

使用道具 舉報(bào)

16#
無(wú)效樓層,該帖已經(jīng)被刪除
17#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:414527 發(fā)表于 2018-10-24 11:16 | 顯示全部樓層
就寫(xiě)幾個(gè)數(shù)組就可以了
回復(fù)

使用道具 舉報(bào)

ID:317622 發(fā)表于 2018-10-24 11:20 | 顯示全部樓層
檢測(cè)按鍵,編寫(xiě)亮燈子程序 檢測(cè)按鍵的電平變化,當(dāng)連接按鍵的引腳發(fā)生電位變化時(shí)進(jìn)入子程序執(zhí)行燈操作。
回復(fù)

使用道具 舉報(bào)

20#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:414530 發(fā)表于 2018-10-24 11:23 | 顯示全部樓層
也沒(méi)說(shuō)是匯編還是C啊
回復(fù)

使用道具 舉報(bào)

ID:413123 發(fā)表于 2018-10-24 11:23 | 顯示全部樓層
先檢測(cè)P端口狀態(tài),編寫(xiě)流水燈,通過(guò)左移右移來(lái)定值
回復(fù)

使用道具 舉報(bào)

ID:414604 發(fā)表于 2018-10-24 14:09 | 顯示全部樓層
利用高低電平
回復(fù)

使用道具 舉報(bào)

ID:241273 發(fā)表于 2018-10-24 15:31 | 顯示全部樓層
搜索51單片機(jī)教程100例
回復(fù)

使用道具 舉報(bào)

ID:404823 發(fā)表于 2018-10-24 17:19 | 顯示全部樓層
感謝各位大佬,已經(jīng)寫(xiě)好了
回復(fù)

使用道具 舉報(bào)

ID:404823 發(fā)表于 2018-10-24 17:20 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2018-10-24 09:12
高手們說(shuō)了這么多,就是沒(méi)有程序啊,我不是高手,不過(guò)這個(gè)問(wèn)題我能解決。
#include
#include       

非常感謝,還是你最實(shí)在0.0
回復(fù)

使用道具 舉報(bào)

ID:404823 發(fā)表于 2018-10-24 21:15 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2018-10-24 09:12
高手們說(shuō)了這么多,就是沒(méi)有程序啊,我不是高手,不過(guò)這個(gè)問(wèn)題我能解決。
#include
#include       

為什么k1==0延時(shí)之后還要有有if(k==0),
GPIO_LED=0xfe; 是讓led滅還是亮
能解釋下這個(gè)嗎? 為什么i要<50
while((i<50)&&(k1==0))
                            {
                                    Delay10ms(1);
                                    i++;
                            }
                            i=0;
為什么滅燈鍵k2要有延時(shí),不能直接全滅嗎?
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-10-25 08:39 | 顯示全部樓層
趕緊的別墨跡 發(fā)表于 2018-10-24 21:15
為什么k1==0延時(shí)之后還要有有if(k==0),
GPIO_LED=0xfe; 是讓led滅還是亮
能解釋下這個(gè)嗎? 為什么i要

前面發(fā)的程序,有點(diǎn)小瑕疵,是因?yàn)橄嗤绦蚪Y(jié)構(gòu)復(fù)制粘貼的原因,修改后重發(fā),并回答你的問(wèn)題。
第一:修改小瑕疵后的程序:
#include<reg51.h>
#include<intrins.h>        

#define GPIO_LED P2

sbit k1=P3^2;
sbit k2=P3^3;
sbit k3=P3^4;
sbit k4=P3^5;

void Delay10ms(unsigned int c);

void main(void)
{
        unsigned int i,n;
        while(1)
        {        
                if(k1==0)
                {
                        Delay10ms(1);
                        if(k1==0)
                        {
                                n=1;
                                GPIO_LED=0xfe;
                                while((i<50)&&(k1==0))
                            {
                                    Delay10ms(1);
                                    i++;
                            }
                            i=0;
                        }
                }
                if(k2==0)
                {
                        Delay10ms(1);
                        if(k2==0)
                        {
                                n=2;
                                GPIO_LED=0xff;
                                while((i<50)&&(k2==0))
                            {
                                    Delay10ms(1);
                                    i++;
                            }
                            i=0;
                        }
                }
                if(k3==0)
                {
                        Delay10ms(1);
                        if(k3==0)
                        {
                                n=3;
                                GPIO_LED=0x7f;
                                while((i<50)&&(k3==0))
                            {
                                    Delay10ms(1);
                                    i++;
                            }
                            i=0;
                        }
                }
                if(k4==0)
                {
                        Delay10ms(1);
                        if(k4==0)
                        {
                                n=4;
                                GPIO_LED=0xff;
                                while((i<50)&&(k4==0))
                            {
                                    Delay10ms(1);
                                    i++;
                            }
                            i=0;
                        }
                }
                if (n==1)
                {
                        GPIO_LED=_crol_(GPIO_LED,1);
                        Delay10ms(50);
                }
                if (n==3)
                {
                        GPIO_LED=_cror_(GPIO_LED,1);
                        Delay10ms(50);
                }
        }               
}

void Delay10ms(unsigned int c)
{
    unsigned char a,b;
    for(c;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

第二:關(guān)于你的問(wèn)題:
(1)為什么if (k1==0)延時(shí)后,還要有if (k1==0)
這是為了按鍵消抖,按下一個(gè)鍵,可不是你眼睛看到的一開(kāi)一關(guān),會(huì)有很多次的開(kāi)關(guān),叫抖動(dòng),所以要延時(shí)一會(huì),讓開(kāi)關(guān)接觸穩(wěn)定后,再判斷,這里消抖,叫按下消抖。
(2)while也是為了消除抖動(dòng),這次上松鍵抖動(dòng)。至于50,這個(gè)值可以大點(diǎn),也可以小點(diǎn),只是為了讓按鍵松開(kāi)后穩(wěn)定,另一個(gè)原因是不讓這種情況出現(xiàn)——你按著鍵就是不松開(kāi),那樣程序就死在這里了,有了50次的限制,程序可以跳出來(lái),不會(huì)“死”。
(3)我的單片機(jī)開(kāi)發(fā)板上,LED都是負(fù)極接在單片機(jī)IO口上的,即高電平燈滅,低電平燈亮(我看到的絕大多數(shù)板子都是這樣接的,原因可能是——單片機(jī)低電平時(shí)能通過(guò)的電流大一些吧)。所以,0xfe,就是11111110,最低位燈亮,以后的移動(dòng),就向高位移動(dòng)。后面設(shè)置0x7f,就是01111111,最高位燈亮,以后就向低位移動(dòng)。你只說(shuō)燈的循環(huán)亮,沒(méi)有說(shuō)同時(shí)有幾個(gè)燈亮,我就設(shè)置的一個(gè)燈亮循環(huán)。

從你提的問(wèn)題上看,你需要學(xué)習(xí)的東西還有很多,不僅僅是這個(gè)程序問(wèn)題。呵呵,這次有我給你做作業(yè),下次呢?我現(xiàn)在知道了,為什么那些高手不給你寫(xiě)程序,因?yàn)槟菢邮窃诤δ悖屇悴粚W(xué)習(xí)——考個(gè)大學(xué),特別是搞自動(dòng)化專(zhuān)業(yè)的,好好珍惜吧!我害你一次了,呵呵,下次不再害你了。
回復(fù)

使用道具 舉報(bào)

ID:415377 發(fā)表于 2018-10-25 18:08 | 顯示全部樓層
就是將與LED燈相連的端口控制,然后利用中斷延時(shí)就可以了
回復(fù)

使用道具 舉報(bào)

ID:415377 發(fā)表于 2018-10-25 18:09 | 顯示全部樓層
代碼在這里:
回復(fù)

使用道具 舉報(bào)

ID:415377 發(fā)表于 2018-10-25 18:10 | 顯示全部樓層
代碼如下:#include"reg51.h" #include"intrins.h"//移位函數(shù) #include"stdio.h" #define uchar unsigned char #define uint unsigned int sbit on1=P1^2; sbit off1=P1^3; sbit shang=P1^4; sbit xia=P1^5; void off(int temp); void on(int temp); void up(int temp); void down(int temp); void delayms(uint j)//延時(shí)函數(shù) {  uint i;         for(;j>0;j--)         {i=250;    while(--i);    i=249;          while(--i);           }  } void off(int temp) {  while(1)          { P0=0xff;              if(on1==0)                                  on(temp);      } } void on(int temp) {   while(1)               {   P0=temp;//點(diǎn)亮P0.0                          if(off1==0)                                   off(temp);                          if(shang==0)                                  up(temp);                          if(xia==0)                                  down(temp);                            delayms(300);                           temp=_crol_(temp,1);//左移一位                  }   } void up(int temp) {            while(1)               {P0=temp;//點(diǎn)亮P0.0                                 if(xia==0)                                   down(temp);                                 if(on1==0)                 on(temp);                          if(off1==0)                                  off(temp);                          delayms(300);                            temp=_crol_(temp,1);//左移一位             }                          } void down(int temp) {                          while(1)                      { P0=temp;//點(diǎn)亮P0.7                                   if(on1==0)                            on(temp);                                 if(shang==0)                                         up(temp);                            if(off1==0)                                  off(temp);       delayms(300);                           temp=_cror_(temp,1);//右移一位                                   } } main() {  uchar s1=0xfe;          P0=0xff;         while(1)                 { if(off1==0)                  off(s1);                 if(on1==0)                    on(s1);   }  }
回復(fù)

使用道具 舉報(bào)

ID:97574 發(fā)表于 2018-10-25 20:21 | 顯示全部樓層
如果流水燈不用定時(shí)器實(shí)現(xiàn)的話(huà)就比較麻煩點(diǎn),需要在軟件延時(shí)里面插入按鍵監(jiān)控,有按鍵按下的時(shí)候跳出延時(shí)函數(shù)
回復(fù)

使用道具 舉報(bào)

ID:415470 發(fā)表于 2018-10-25 20:45 | 顯示全部樓層
看原理圖做啊,看一下你用的板子的led燈是給什么電平亮,然后在頭文件下定義一個(gè)標(biāo)志位flag賦值0(看你這個(gè)要求最好定義成int什么的不要bit),在按鍵中(P32中把flag置為1)(P33置為2)(P34置為3)(P35置為4),然后在主函數(shù)中判斷flag的值,執(zhí)行你們老師給你們的要求
回復(fù)

使用道具 舉報(bào)

ID:415470 發(fā)表于 2018-10-25 20:46 | 顯示全部樓層

看原理圖做啊,看一下你用的板子的led燈是給什么電平亮,然后在頭文件下定義一個(gè)標(biāo)志位flag賦值0(看你這個(gè)要求最好定義成int什么的不要bit),在按鍵中(P32中把flag置為1)(P33置為2)(P34置為3)(P35置為4),然后在主函數(shù)中判斷flag的值,執(zhí)行你們老師給你們的要求1^2; sbit off1=P1^3; sbit shang=P1^4; sbit xia=P1^5; void off(int temp); void on(int temp); void up(int temp); void down(int temp); void delayms(uint j)//延時(shí)函數(shù) {  uint i;         for(;j>0;j--)         {i=250;    while(--i);    i=249;          while(--i);           }  } void off(int temp) {  while(1)          { P0=0xff;              if(on1==0)                                  on(temp);      } } void on(int temp) {   while(1)               {   P0=temp;//點(diǎn)亮P0.0                          if(off1==0)                                   off(temp);                          if(shang==0)                                  up(temp);                          if(xia==0)                                  down(temp);                            delayms(300);                           temp=_crol_(temp,1);//左移一位                  }   } void up(int temp) {            while(1)               {P0=temp;//點(diǎn)亮P0.
回復(fù)

使用道具 舉報(bào)

ID:415540 發(fā)表于 2018-10-25 22:45 | 顯示全部樓層
很簡(jiǎn)單的
回復(fù)

使用道具 舉報(bào)

ID:384396 發(fā)表于 2018-10-26 20:00 | 顯示全部樓層
檢測(cè)按鍵,編寫(xiě)亮燈子程序
檢測(cè)按鍵的電平變化,當(dāng)連接按鍵的引腳發(fā)生電位變化時(shí)進(jìn)入子程序執(zhí)行燈操作。
回復(fù)

使用道具 舉報(bào)

ID:416106 發(fā)表于 2018-10-27 00:19 | 顯示全部樓層

搜索51單片機(jī)教程100例
回復(fù)

使用道具 舉報(bào)

ID:291477 發(fā)表于 2018-10-27 08:12 | 顯示全部樓層
這是四個(gè)按鍵 控制LED移位的小程序,稍加改動(dòng)就可以使用了#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit s1=P1^4; sbit s2=P1^5; sbit s3=P1^6; sbit s4=P1^7; void delay(uint z) {         uint x,y;         for(x=z;x>0;x--)                 for(y=110;y>0;y--); } void keycan() {         uint i;         if(s1==0)         {                 delay(30);                 if(s1==0)                 {                         i++;                         switch(i)                         {                                 case 1:                                                 P0=0x7f;                                                 break;                                 case 2:                                                 P0=0xbf;                                                 break;                                 case 3:                                                 P0=0xdf;                                                 break;                                 case 4:                                                 P0=0xef;                                                 break;                                 case 5:                                                 P0=0xf7;                                                 break;                                 case 6:                                                 P0=0xfb;                                                 break;                                 case 7:                                                 P0=0xfd;                                                 break;                                 case 8:                                                 P0=0xfe;                                                 break;                                 default:i=0;                         }                         while(!s1);                 }         }         if(s2==0)         {                 delay(30);                 if(s2==0)                 {                         i++;                         switch(i)                         {                                 case 1:                                                 P0=0xfd;                                                 break;                                 case 2:                                                 P0=0xfb;                                                 break;                                 case 3:                                                 P0=0xf7;                                                 break;                                 case 4:                                                 P0=0xef;                                                 break;                                 case 5:                                                 P0=0xdf;                                                 break;                                 case 6:                                                 P0=0xbf;                                                 break;                                 case 7:                                                 P0=0x7f;                                                 break;                                 case 8:                                                 P0=0xfe;                                                 break;                                 default:i=0;                         }                 while(!s2);                 }         } } void keycan1() {         uint i;         if(s3==0)         {                 delay(30);                 if(s3==0)                 {                         i++;                         switch(i)                         {                                 case 1:                                                 P2=0x7f;                                                 break;                                 case 2:                                                 P2=0xbf;                                                 break;                                 case 3:                                                 P2=0xdf;                                                 break;                                 case 4:                                                 P2=0xef;                                                 break;                                 case 5:                                                 P2=0xf7;                                                 break;                                 case 6:                                                 P2=0xfb;                                                 break;                                 case 7:                                                 P2=0xfd;                                                 break;                                 case 8:                                                 P2=0xfe;                                                 break;                                 default:i=0;                         }                         while(!s3);                 }         }         if(s4==0)         {                 delay(30);                 if(s4==0)                 {                         i++;                         switch(i)                         {                                 case 1:                                                 P2=0xfd;                                                 break;                                 case 2:                                                 P2=0xfb;                                                 break;                                 case 3:                                                 P2=0xf7;                                                 break;                                 case 4:                                                 P2=0xef;                                                 break;                                 case 5:                                                 P2=0xdf;                                                 break;                                 case 6:                                                 P2=0xbf;                                                 break;                                 case 7:                                                 P2=0x7f;                                                 break;                                 case 8:                                                 P2=0xfe;                                                 break;                                 default:i=0;                         }                         while(!s4);                 }         } } void main() {         P0=0xfe;         P2=0xfe;         while(1)         {                 keycan();                 keycan1();         } }
回復(fù)

使用道具 舉報(bào)

ID:291477 發(fā)表于 2018-10-27 08:13 | 顯示全部樓層
這是通過(guò) K1-K4 控制LED移位的小程序看一下稍加改動(dòng)就好了
回復(fù)

使用道具 舉報(bào)

ID:291477 發(fā)表于 2018-10-27 08:14 | 顯示全部樓層
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit s1=P1^4;
sbit s2=P1^5;
sbit s3=P1^6;
sbit s4=P1^7;
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void keycan()
{
        uint i;
        if(s1==0)
        {
                delay(30);
                if(s1==0)
                {
                        i++;
                        switch(i)
                        {
                                case 1:
                                                P0=0x7f;
                                                break;
                                case 2:
                                                P0=0xbf;
                                                break;
                                case 3:
                                                P0=0xdf;
                                                break;
                                case 4:
                                                P0=0xef;
                                                break;
                                case 5:
                                                P0=0xf7;
                                                break;
                                case 6:
                                                P0=0xfb;
                                                break;
                                case 7:
                                                P0=0xfd;
                                                break;
                                case 8:
                                                P0=0xfe;
                                                break;
                                default:i=0;
                        }
                        while(!s1);
                }
        }
        if(s2==0)
        {
                delay(30);
                if(s2==0)
                {
                        i++;
                        switch(i)
                        {
                                case 1:
                                                P0=0xfd;
                                                break;
                                case 2:
                                                P0=0xfb;
                                                break;
                                case 3:
                                                P0=0xf7;
                                                break;
                                case 4:
                                                P0=0xef;
                                                break;
                                case 5:
                                                P0=0xdf;
                                                break;
                                case 6:
                                                P0=0xbf;
                                                break;
                                case 7:
                                                P0=0x7f;
                                                break;
                                case 8:
                                                P0=0xfe;
                                                break;
                                default:i=0;
                        }
                while(!s2);
                }
        }
}
void keycan1()
{
        uint i;
        if(s3==0)
        {
                delay(30);
                if(s3==0)
                {
                        i++;
                        switch(i)
                        {
                                case 1:
                                                P2=0x7f;
                                                break;
                                case 2:
                                                P2=0xbf;
                                                break;
                                case 3:
                                                P2=0xdf;
                                                break;
                                case 4:
                                                P2=0xef;
                                                break;
                                case 5:
                                                P2=0xf7;
                                                break;
                                case 6:
                                                P2=0xfb;
                                                break;
                                case 7:
                                                P2=0xfd;
                                                break;
                                case 8:
                                                P2=0xfe;
                                                break;
                                default:i=0;
                        }
                        while(!s3);
                }
        }
        if(s4==0)
        {
                delay(30);
                if(s4==0)
                {
                        i++;
                        switch(i)
                        {
                                case 1:
                                                P2=0xfd;
                                                break;
                                case 2:
                                                P2=0xfb;
                                                break;
                                case 3:
                                                P2=0xf7;
                                                break;
                                case 4:
                                                P2=0xef;
                                                break;
                                case 5:
                                                P2=0xdf;
                                                break;
                                case 6:
                                                P2=0xbf;
                                                break;
                                case 7:
                                                P2=0x7f;
                                                break;
                                case 8:
                                                P2=0xfe;
                                                break;
                                default:i=0;
                        }
                        while(!s4);
                }
        }
}
void main()
{
        P0=0xfe;
        P2=0xfe;
        while(1)
        {
                keycan();
                keycan1();
        }
}
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表